@koobiq/components 18.37.0 → 18.38.1
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/core/locales/en-US.d.ts +6 -0
- package/core/locales/es-LA.d.ts +6 -0
- package/core/locales/formatters.d.ts +1 -0
- package/core/locales/locale-service.d.ts +37 -5
- package/core/locales/pt-BR.d.ts +6 -0
- package/core/locales/ru-RU.d.ts +6 -0
- package/core/locales/tk-TM.d.ts +6 -0
- package/core/pop-up/pop-up-trigger.d.ts +3 -1
- package/core/pop-up/pop-up.d.ts +1 -0
- package/core/validation/validation.d.ts +1 -1
- package/esm2022/core/locales/en-US.mjs +7 -1
- package/esm2022/core/locales/es-LA.mjs +7 -1
- package/esm2022/core/locales/formatters.mjs +4 -3
- package/esm2022/core/locales/locale-service.mjs +22 -9
- package/esm2022/core/locales/pt-BR.mjs +7 -1
- package/esm2022/core/locales/ru-RU.mjs +7 -1
- package/esm2022/core/locales/tk-TM.mjs +7 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +1 -1
- package/esm2022/core/pop-up/pop-up.mjs +36 -2
- package/esm2022/core/validation/validation.mjs +2 -2
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +3 -2
- package/esm2022/filter-bar/filters.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
- package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
- package/esm2022/input/input-number.mjs +17 -12
- package/esm2022/navbar/navbar-brand.component.mjs +105 -0
- package/esm2022/navbar/navbar-item.component.mjs +18 -168
- package/esm2022/navbar/navbar-toggle.component.mjs +88 -0
- package/esm2022/navbar/navbar.component.mjs +2 -2
- package/esm2022/navbar/navbar.module.mjs +4 -2
- package/esm2022/navbar/public-api.mjs +3 -1
- package/esm2022/navbar/vertical-navbar.component.mjs +28 -6
- package/esm2022/notification-center/notification-center.mjs +9 -33
- package/esm2022/popover/popover.component.mjs +9 -3
- package/esm2022/time-range/time-range.mjs +2 -2
- package/esm2022/title/title.directive.mjs +9 -2
- package/fesm2022/koobiq-components-core.mjs +90 -13
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +2 -1
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +4 -4
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +16 -11
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +789 -739
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +8 -32
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +8 -2
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +1 -1
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +8 -1
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/input/input-number.d.ts +3 -3
- package/navbar/_navbar-item_vertical.scss +44 -53
- package/navbar/_navbar-theme.scss +14 -35
- package/navbar/navbar-brand.component.d.ts +39 -0
- package/navbar/navbar-brand.scss +78 -48
- package/navbar/navbar-divider.scss +1 -1
- package/navbar/navbar-item.component.d.ts +4 -36
- package/navbar/navbar-toggle.component.d.ts +23 -0
- package/navbar/navbar-toggle.scss +64 -0
- package/navbar/navbar-tokens.scss +1 -0
- package/navbar/navbar.module.d.ts +8 -6
- package/navbar/public-api.d.ts +2 -0
- package/navbar/vertical-navbar.component.d.ts +20 -2
- package/navbar/vertical-navbar.scss +14 -10
- package/notification-center/notification-center.d.ts +12 -9
- package/package.json +4 -4
- package/popover/popover.component.d.ts +8 -1
- package/schematics/ng-add/index.js +2 -2
- package/title/title.directive.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-time-range.mjs","sources":["../../../packages/components/time-range/constants.ts","../../../packages/components/time-range/time-range.service.ts","../../../packages/components/time-range/time-range-editor.ts","../../../packages/components/time-range/time-range-editor.html","../../../packages/components/time-range/time-range-title.ts","../../../packages/components/time-range/time-range.ts","../../../packages/components/time-range/time-range-title-as-form-field.ts","../../../packages/components/time-range/module.ts","../../../packages/components/time-range/koobiq-components-time-range.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqCustomTimeRangeType, KbqTimeRangeType } from './types';\n\n/** Preset of selectable time ranges, provided by DI. */\nexport const KBQ_DEFAULT_TIME_RANGE_TYPES = new InjectionToken<KbqTimeRangeType[]>('KBQ_DEFAULT_TIME_RANGE_TYPES');\n\n/** Preset of custom time ranges, provided by DI. */\nexport const KBQ_CUSTOM_TIME_RANGE_TYPES = new InjectionToken<KbqCustomTimeRangeType[]>('KBQ_CUSTOM_TIME_RANGE_TYPES');\n\n/** Time range types in range editor if nothing provided */\nexport const defaultTimeRangeTypes: KbqTimeRangeType[] = [\n 'lastHour',\n 'last24Hours',\n 'last3Days',\n 'last7Days',\n 'last14Days',\n 'currentQuarter',\n 'currentYear',\n 'allTime',\n 'range'\n];\n\n/** @docs-private */\nexport function createMissingDateImplError(componentName: string, provider: string): Error {\n return Error(\n `${componentName}: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`\n );\n}\n\n/**\n * Validates that the 'from' date-time is not greater than the 'to' date-time in a range form.\n * Returns an error if the start date-time occurs after the end date-time.\n *\n * @param timeRangeService - Service used to manipulate date-time values.\n */\nexport const rangeValidator = <T>(timeRangeService: KbqTimeRangeService<T>): ValidatorFn => {\n return (control: AbstractControl) => {\n const form = control.value;\n\n if (!form.fromTime || !form.fromDate || !form.toTime || !form.toDate) {\n return null;\n }\n\n const fromDateTime = timeRangeService.combineDateAndTime(form.fromDate, form.fromTime);\n const toDateTime = timeRangeService.combineDateAndTime(form.toDate, form.toTime);\n\n return timeRangeService.dateAdapter.compareDate(fromDateTime, toDateTime) > 0\n ? { fromIsGreaterThanTo: fromDateTime }\n : null;\n };\n};\n","import { inject, Injectable } from '@angular/core';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport {\n createMissingDateImplError,\n defaultTimeRangeTypes,\n KBQ_CUSTOM_TIME_RANGE_TYPES,\n KBQ_DEFAULT_TIME_RANGE_TYPES\n} from './constants';\nimport {\n KbqCustomTimeRangeType,\n KbqRange,\n KbqRangeValue,\n KbqTimeRangeRange,\n KbqTimeRangeTranslationType,\n KbqTimeRangeType,\n KbqTimeRangeUnits\n} from './types';\n\n@Injectable()\nexport class KbqTimeRangeService<T> {\n readonly dateAdapter = inject<DateAdapter<T>>(DateAdapter);\n readonly dateFormatter = inject<DateFormatter<T>>(DateFormatter);\n\n readonly providedDefaultTimeRangeTypes =\n inject(KBQ_DEFAULT_TIME_RANGE_TYPES, { optional: true }) || defaultTimeRangeTypes;\n\n readonly customTimeRangeTypes = inject(KBQ_CUSTOM_TIME_RANGE_TYPES, { optional: true });\n\n readonly DEFAULT_RANGE_TYPE: KbqTimeRangeType = 'lastHour';\n\n readonly timeRangeConfig: Record<KbqTimeRangeType, Omit<KbqCustomTimeRangeType, 'type'>> = {\n lastMinute: { units: { minutes: -1 }, translationType: 'minutes' },\n last5Minutes: { units: { minutes: -5 }, translationType: 'minutes' },\n last15Minutes: { units: { minutes: -15 }, translationType: 'minutes' },\n last30Minutes: { units: { minutes: -30 }, translationType: 'minutes' },\n\n lastHour: { units: { hours: -1 }, translationType: 'hours' },\n last24Hours: { units: { hours: -24 }, translationType: 'hours' },\n\n last3Days: { units: { days: -3 }, translationType: 'days' },\n last7Days: { units: { days: -7 }, translationType: 'days' },\n last14Days: { units: { days: -14 }, translationType: 'days' },\n last30Days: { units: { days: -30 }, translationType: 'days' },\n\n last3Months: { units: { months: -3 }, translationType: 'months' },\n last12Months: { units: { months: -12 }, translationType: 'months' },\n\n allTime: { units: {}, translationType: 'other' },\n currentQuarter: { units: {}, translationType: 'other' },\n currentYear: { units: {}, translationType: 'other' },\n range: { units: {}, translationType: 'other' }\n };\n\n constructor() {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('KbqTimeRange', 'DateAdapter');\n }\n\n this.customTimeRangeTypes\n ?.filter(({ type }) => {\n return !this.timeRangeConfig[type];\n })\n .forEach((type) => this.add(type));\n }\n\n static range = (dateTimeISOString: string): KbqRange => ({\n startDateTime: dateTimeISOString\n });\n\n add({ type, ...customTimeRangeConfig }: KbqCustomTimeRangeType): void {\n this.timeRangeConfig[type] = customTimeRangeConfig;\n }\n\n getTimeRangeTypeUnits(type: KbqTimeRangeType): KbqTimeRangeUnits {\n return this.timeRangeConfig[type].units;\n }\n\n getTimeRangeUnitByType(type: KbqTimeRangeType): KbqTimeRangeTranslationType {\n return this.timeRangeConfig[type].translationType;\n }\n\n getDefaultRangeValue(): Required<KbqRangeValue<T>> {\n const from = this.dateAdapter!.addCalendarUnits(this.dateAdapter!.today(), { days: -1 });\n const to = this.dateAdapter!.today();\n\n return {\n fromTime: this.omitMilliseconds(from),\n fromDate: this.omitMilliseconds(from),\n toTime: this.omitMilliseconds(to),\n toDate: this.omitMilliseconds(to)\n };\n }\n\n getTimeRangeDefaultValue(\n rangeValue: KbqRangeValue<T>,\n availableTimeRangeTypes: KbqTimeRangeType[] = []\n ): KbqTimeRangeRange {\n const defaultType =\n availableTimeRangeTypes[0] ?? this.providedDefaultTimeRangeTypes[0] ?? this.DEFAULT_RANGE_TYPE;\n\n return {\n ...this.calculateTimeRange(defaultType, rangeValue || this.getDefaultRangeValue()),\n type: defaultType\n };\n }\n\n calculateTimeRange(type?: KbqTimeRangeType, rangeValue?: KbqRangeValue<T>): KbqRange {\n if (!type) {\n return {};\n }\n\n if (type === 'range') {\n const checkedRangeValue = rangeValue || this.getDefaultRangeValue();\n\n return {\n startDateTime:\n checkedRangeValue.fromDate && checkedRangeValue.fromTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.fromDate, checkedRangeValue.fromTime)\n )\n : '',\n endDateTime:\n checkedRangeValue.toDate && checkedRangeValue.toTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.toDate, checkedRangeValue.toTime)\n )\n : ''\n };\n }\n\n switch (this.getTimeRangeUnitByType(type)) {\n case 'other': {\n switch (type) {\n case 'currentQuarter':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'quarter'))\n );\n case 'currentYear':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'year'))\n );\n case 'allTime':\n default: {\n return this.timeRangeConfig[type].range ?? {};\n }\n }\n }\n default: {\n return this.lastUnitsRange(this.getTimeRangeTypeUnits(type));\n }\n }\n }\n\n combineDateAndTime(date: T, time: T): T {\n return this.dateAdapter!.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(time),\n this.dateAdapter.getMinutes(time),\n this.dateAdapter.getSeconds(time),\n this.dateAdapter.getMilliseconds(time)\n );\n }\n\n lastUnitsRange = (unitsInfo: KbqTimeRangeUnits): KbqRange =>\n KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.addCalendarUnits(this.dateAdapter.today(), unitsInfo))\n );\n\n checkAndCorrectTimeRangeValue(\n value: KbqTimeRangeRange | null | undefined,\n availableTimeRangeTypes: KbqTimeRangeType[],\n rangeValue: KbqRangeValue<T>\n ): KbqTimeRangeRange {\n let result =\n value && (!availableTimeRangeTypes.length || availableTimeRangeTypes.includes(value.type))\n ? value\n : this.getTimeRangeDefaultValue(rangeValue, availableTimeRangeTypes);\n\n if (!result.startDateTime || (result.type === 'range' && (!result.startDateTime || !result.endDateTime))) {\n result = {\n ...this.calculateTimeRange(result.type, rangeValue),\n type: result.type\n };\n }\n\n return result;\n }\n\n omitMilliseconds(date: T): T {\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(date),\n this.dateAdapter.getMinutes(date),\n this.dateAdapter.getSeconds(date),\n 0\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnInit,\n TemplateRef,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormGroupDirective,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { ErrorStateMatcher, KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqFieldset, KbqFieldsetItem, KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqRadioModule } from '@koobiq/components/radio';\nimport { KbqTimepicker, KbqTimepickerModule, TimeFormats } from '@koobiq/components/timepicker';\nimport { merge } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { rangeValidator } from './constants';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType,\n KbqTimeRangeTypeContext\n} from './types';\n\ninterface FormValue<T> {\n type: FormControl<KbqTimeRangeType>;\n fromTime: FormControl<T>;\n fromDate: FormControl<T>;\n toTime: FormControl<T>;\n toDate: FormControl<T>;\n}\n\nclass RangeErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!form?.invalid || !!control?.invalid;\n }\n}\n\n/** @docs-private */\n@Component({\n selector: 'kbq-time-range-editor',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n KbqFieldset,\n KbqFieldsetItem,\n KbqDatepickerModule,\n KbqFormFieldModule,\n KbqTimepickerModule,\n KbqRadioModule,\n KbqIcon\n ],\n templateUrl: './time-range-editor.html',\n host: {\n class: 'kbq-time-range__editor'\n },\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqTimeRangeEditor\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: KbqTimeRangeEditor\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqTimeRangeEditor<T> implements ControlValueAccessor, Validator, OnInit {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n\n /** The maximum selectable date. */\n readonly maxDate = input<T | null>(null);\n /** The minimum selectable date. */\n readonly minDate = input<T | null>(null);\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Provided value of selected range */\n readonly rangeValue = input<Required<KbqRangeValue<T>>>(this.timeRangeService.getDefaultRangeValue());\n readonly showRangeAsDefault = input.required<boolean>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n\n /** @docs-private */\n protected readonly isRangeVisible = computed(\n () => this.showRangeAsDefault() || this.availableTimeRangeTypes().includes('range')\n );\n\n /** @docs-private */\n protected readonly timeRangeTypesWithoutRange = computed<KbqTimeRangeOptionContext[]>(() => {\n const localeConfig = this.localeConfiguration();\n\n return this.availableTimeRangeTypes()\n .filter((type) => type !== 'range')\n .map((type) => ({\n type,\n translationType: this.timeRangeService.getTimeRangeUnitByType(type),\n units: this.timeRangeService.getTimeRangeTypeUnits(type),\n formattedValue: this.getFormattedOption(type, localeConfig)\n }));\n });\n\n /** @docs-private */\n protected readonly timepickerList = viewChildren<KbqTimepicker<T>>(KbqTimepicker);\n\n /** @docs-private */\n protected readonly form: FormGroup<FormValue<T>>;\n /** @docs-private */\n protected readonly timepickerFormat = TimeFormats.HHmmss;\n /** @docs-private */\n protected readonly rangeStateMatcher = new RangeErrorStateMatcher();\n\n private lastValidationErrorOnEmit: ValidationErrors | null = null;\n\n constructor() {\n const defaultRangeValue = this.rangeValue();\n\n this.form = new FormGroup(\n {\n type: new FormControl<KbqTimeRangeType>(this.timeRangeService.DEFAULT_RANGE_TYPE, {\n nonNullable: true\n }),\n fromTime: new FormControl<T>(defaultRangeValue.fromTime, { nonNullable: true }),\n fromDate: new FormControl<T>(defaultRangeValue.fromDate, { nonNullable: true }),\n toTime: new FormControl<T>(defaultRangeValue.toTime, { nonNullable: true }),\n toDate: new FormControl<T>(defaultRangeValue.toDate, { nonNullable: true })\n },\n { validators: rangeValidator(this.timeRangeService) }\n );\n\n const rangeControls = [\n this.form.controls.fromTime,\n this.form.controls.fromDate,\n this.form.controls.toTime,\n this.form.controls.toDate\n ];\n\n merge(...rangeControls.map((control) => control.statusChanges))\n .pipe(takeUntilDestroyed())\n .subscribe(() => (this.lastValidationErrorOnEmit = this.concatControlValidationErrors()));\n\n this.form.valueChanges\n .pipe(\n map((formValue) => formValue.type),\n distinctUntilChanged(),\n takeUntilDestroyed()\n )\n .subscribe((type) => {\n const isDisabled = type !== 'range';\n\n rangeControls.forEach((control) => {\n if (isDisabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n });\n\n this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((formValue) => {\n const range = this.mapTimeRange(formValue);\n\n if (range) this.onChange(range);\n });\n\n this.form.statusChanges.pipe(takeUntilDestroyed()).subscribe((status) => {\n const timepickerList = this.timepickerList();\n\n if (timepickerList.at(0)) {\n timepickerList.at(0)!.errorState = status === 'INVALID';\n }\n });\n }\n\n ngOnInit(): void {\n const defaultRangeValue = this.rangeValue();\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n this.form.setValue({\n type: (availableTimeRangeTypes.length && availableTimeRangeTypes[0]) || 'range',\n fromTime: defaultRangeValue.fromTime,\n fromDate: defaultRangeValue.fromDate,\n toTime: defaultRangeValue.toTime,\n toDate: defaultRangeValue.toDate\n });\n }\n\n /** @docs-private */\n validate(): ValidationErrors | null {\n return this.form.errors || this.lastValidationErrorOnEmit;\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value?: KbqTimeRangeRange): void {\n if (!value) return;\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n this.availableTimeRangeTypes(),\n this.form.value\n );\n\n this.form.controls.type.setValue(corrected.type);\n\n if (corrected.type === 'range' && corrected.startDateTime && corrected.endDateTime) {\n const from: T = this.timeRangeService.dateAdapter.deserialize(corrected.startDateTime);\n const to: T = this.timeRangeService.dateAdapter.deserialize(corrected.endDateTime);\n\n this.form.patchValue({\n fromTime: from,\n fromDate: from,\n toTime: to,\n toDate: to\n });\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private mapTimeRange({ type }: Partial<KbqTimeRangeTypeContext> & KbqRangeValue<T>): KbqTimeRangeRange | undefined {\n if (!type) return;\n\n return {\n type,\n ...this.timeRangeService.calculateTimeRange(type, {\n // use control.value, since via form.value control values can be undefined\n fromTime: this.form.controls.fromTime.value,\n fromDate: this.form.controls.fromDate.value,\n toDate: this.form.controls.toTime.value,\n toTime: this.form.controls.toTime.value\n })\n };\n }\n\n private getFormattedOption(type: KbqTimeRangeType, localeConfig: KbqTimeRangeLocaleConfig): string {\n const translationType = this.timeRangeService.getTimeRangeUnitByType(type);\n\n if (translationType === 'other') return '';\n\n const range = this.timeRangeService.calculateTimeRange(type);\n\n return this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(range.startDateTime!),\n this.timeRangeService.dateAdapter.today(),\n [translationType],\n false,\n localeConfig.durationTemplate.option\n );\n }\n\n private concatControlValidationErrors(): ValidationErrors | null {\n let result: ValidationErrors | null = this.form.errors;\n\n Object.values(this.form.controls).forEach((control: AbstractControl) => {\n if (control.errors) {\n result = {\n ...result,\n ...control.errors\n };\n }\n });\n\n return result;\n }\n}\n","<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, Injector, input, TemplateRef } from '@angular/core';\nimport { KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqTimeRangeCustomizableTitleContext, KbqTimeRangeRange, KbqTimeRangeTitleContext } from './types';\n\n/** @docs-private */\n@Component({\n standalone: true,\n selector: 'kbq-time-range-title',\n imports: [\n NgTemplateOutlet,\n KbqLinkModule,\n KbqIconModule\n ],\n template: `\n @if (titleTemplate()) {\n <ng-container *ngTemplateOutlet=\"titleTemplate()!; context: titleContext() ?? null; injector: injector\" />\n } @else {\n <a kbq-link pseudo>\n <span class=\"kbq-link__text\">{{ formattedDate() }}</span>\n\n <i kbq-icon=\"kbq-calendar-o_16\"></i>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitle {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n private readonly popover = inject(KbqPopoverTrigger, { host: true });\n protected readonly injector = inject(Injector);\n\n readonly timeRange = input.required<KbqTimeRangeRange | null>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n readonly titleTemplate = input<TemplateRef<any>>();\n\n protected readonly context = computed<KbqTimeRangeTitleContext | undefined>(() => {\n const timeRange = this.timeRange();\n\n if (!timeRange) return undefined;\n\n return {\n ...timeRange,\n ...this.timeRangeService.getTimeRangeTypeUnits(timeRange.type)\n };\n });\n\n protected readonly titleContext = computed<KbqTimeRangeCustomizableTitleContext | undefined>(() => {\n const context = this.context();\n const formattedDate = this.formattedDate();\n\n let customizableTitleContext = { formattedDate, popover: this.popover };\n\n if (context) {\n customizableTitleContext = { ...context, ...customizableTitleContext };\n }\n\n return {\n $implicit: customizableTitleContext,\n ...customizableTitleContext\n };\n });\n\n protected readonly formattedDate = computed(() => {\n const context = this.context();\n const localeConfiguration = this.localeConfiguration();\n\n if (!context) {\n return localeConfiguration.title.placeholder;\n }\n\n const timeRangeUnit = this.timeRangeService.getTimeRangeUnitByType(context.type);\n\n if (timeRangeUnit === 'other') {\n switch (context.type) {\n case 'range': {\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.rangeLongDate(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime ?? ''),\n this.timeRangeService.dateAdapter.deserialize(context.endDateTime ?? '')\n )\n );\n }\n case 'allTime': {\n return localeConfiguration.editor.allTime;\n }\n case 'currentQuarter': {\n return localeConfiguration.editor.currentQuarter;\n }\n case 'currentYear': {\n return localeConfiguration.editor.currentYear;\n }\n default: {\n return '';\n }\n }\n }\n\n if (!context.startDateTime) return '';\n\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime),\n this.timeRangeService.dateAdapter.today(),\n [timeRangeUnit],\n false,\n localeConfiguration.durationTemplate.title\n )\n );\n });\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n OnInit,\n output,\n Provider,\n signal,\n TemplateRef,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqTimeRangeLocaleConfig,\n PopUpPlacements,\n PopUpSizes,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeCustomizableTitleContext,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType\n} from './types';\n\n/** Localization configuration provider. */\nexport const KBQ_TIME_RANGE_LOCALE_CONFIGURATION = new InjectionToken<KbqTimeRangeLocaleConfig>(\n 'KBQ_TIME_RANGE_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.timeRange }\n);\n\n/** Utility provider for `KBQ_TIME_RANGE_LOCALE_CONFIGURATION`. */\nexport const kbqTimeRangeLocaleConfigurationProvider = (configuration: KbqTimeRangeLocaleConfig): Provider => ({\n provide: KBQ_TIME_RANGE_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n@Component({\n standalone: true,\n selector: 'kbq-time-range',\n template: `\n @let localeConfig = localeConfiguration();\n <kbq-time-range-title\n #popover=\"kbqPopover\"\n class=\"kbq-time-range__trigger\"\n kbqPopover\n kbqPopoverClass=\"kbq-time-range__popover\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqPopoverContent]=\"timeRangePopoverContent\"\n [kbqPopoverFooter]=\"timeRangePopoverFooter\"\n [kbqPopoverPlacement]=\"popupPlacement\"\n [kbqPopoverArrow]=\"arrow()\"\n [titleTemplate]=\"titleTemplate()\"\n [timeRange]=\"titleValue()\"\n [localeConfiguration]=\"localeConfig\"\n (kbqPopoverVisibleChange)=\"onVisibleChange($event)\"\n />\n\n <ng-template #timeRangePopoverContent>\n <kbq-time-range-editor\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [formControl]=\"rangeEditorControl\"\n [localeConfiguration]=\"localeConfig\"\n [showRangeAsDefault]=\"showRangeAsDefault()\"\n [rangeValue]=\"normalizedDefaultRangeValue()\"\n [availableTimeRangeTypes]=\"availableTimeRangeTypes()\"\n [optionTemplate]=\"optionTemplate()\"\n />\n </ng-template>\n\n <ng-template #timeRangePopoverFooter>\n <div class=\"kbq-time-range__buttons\" role=\"group\">\n <button\n kbq-button\n [color]=\"'contrast'\"\n [disabled]=\"rangeEditorControl.invalid\"\n (click)=\"onApply(popover)\"\n >\n {{ localeConfig.editor.apply }}\n </button>\n\n <button kbq-button (click)=\"onCancel(popover)\">{{ localeConfig.editor.cancel }}</button>\n </div>\n </ng-template>\n `,\n styleUrls: ['./time-range.scss'],\n imports: [\n ReactiveFormsModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqTimeRangeEditor,\n KbqTimeRangeTitle\n ],\n host: {\n class: 'kbq-time-range'\n },\n providers: [KbqTimeRangeService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqTimeRange<T> implements ControlValueAccessor, OnInit {\n private readonly timeRangeService = inject<KbqTimeRangeService<T>>(KbqTimeRangeService);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /** The minimum selectable date. */\n readonly minDate = input<T>();\n /** The maximum selectable date. */\n readonly maxDate = input<T>();\n /** provided value of selected range */\n readonly defaultRangeValue = input<KbqRangeValue<T>>();\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Customizable trigger output */\n readonly titleTemplate = input<TemplateRef<KbqTimeRangeCustomizableTitleContext>>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n /** Whether to show popover with arrow */\n readonly arrow = input(true, { transform: booleanAttribute });\n /**\n * Whether to show range in popover if not provided\n * @see availableTimeRangeTypes\n */\n readonly showRangeAsDefault = input(true);\n /** Whether component should fallback to default value if null provided */\n readonly nonNullable = input(true, { transform: booleanAttribute });\n\n /** Emit value update if provided value via formControl wasn't valid */\n readonly valueCorrected = output<KbqTimeRangeRange>();\n\n /**\n * Used to calculate time range.\n * @docs-private */\n protected readonly normalizedDefaultRangeValue = computed(() => ({\n ...this.timeRangeService.getDefaultRangeValue(),\n ...this.defaultRangeValue()\n }));\n\n /** @docs-private */\n protected readonly titleValue: WritableSignal<KbqTimeRangeRange | null>;\n /** @docs-private */\n protected readonly rangeEditorControl: FormControl<KbqTimeRangeRange>;\n\n /** @docs-private */\n protected readonly popoverSize = PopUpSizes.Medium;\n /** @docs-private */\n protected readonly popupPlacement = PopUpPlacements.BottomLeft;\n\n /** @docs-private */\n protected readonly localeConfiguration = signal(inject(KBQ_TIME_RANGE_LOCALE_CONFIGURATION));\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n const defaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n this.availableTimeRangeTypes()\n );\n\n this.titleValue = signal(this.nonNullable() ? defaultValue : null);\n this.rangeEditorControl = new FormControl<KbqTimeRangeRange>(defaultValue, { nonNullable: true });\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.localeConfiguration.set(this.localeService?.getParams('timeRange') ?? ruRULocaleData.timeRange);\n });\n\n toObservable(this.availableTimeRangeTypes)\n .pipe(takeUntilDestroyed())\n .subscribe(this.handleAvailableTypesChange);\n }\n\n ngOnInit(): void {\n // call again on init, so input signals values will be correct\n this.writeValue(this.ngControl?.value ?? null);\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value: KbqTimeRangeRange | null): void {\n const nonNullable = this.nonNullable();\n\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n availableTimeRangeTypes,\n this.normalizedDefaultRangeValue()\n );\n\n if (\n (value && value.type && !('startDateTime' in value && availableTimeRangeTypes.includes(value.type))) ||\n (nonNullable && value === null)\n ) {\n this.valueCorrected.emit(corrected);\n }\n\n this.titleValue.set(nonNullable || value !== null ? corrected : null);\n this.rangeEditorControl.setValue(corrected);\n }\n\n /** @docs-private */\n onApply(popover: KbqPopoverTrigger): void {\n this.titleValue.set(this.rangeEditorControl.value);\n this.onChange(this.rangeEditorControl.value);\n popover.hide();\n }\n\n /** @docs-private */\n onCancel(popover: KbqPopoverTrigger): void {\n popover.hide();\n }\n\n onVisibleChange(isVisible: boolean) {\n const titleValue = this.titleValue();\n\n if (!isVisible && titleValue) {\n this.rangeEditorControl.setValue(titleValue);\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (_value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private handleAvailableTypesChange = (types: KbqTimeRangeType[]): void => {\n if (types.includes(this.rangeEditorControl.value.type) || this.rangeEditorControl.value.type === 'range') {\n return;\n }\n\n const timeRangeDefaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n types.length ? types : ['range']\n );\n\n this.titleValue.set(timeRangeDefaultValue);\n this.rangeEditorControl.setValue(timeRangeDefaultValue);\n this.onChange(timeRangeDefaultValue);\n };\n}\n","import { ChangeDetectionStrategy, Component, Directive, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Observable, Subject } from 'rxjs';\nimport { KbqTimeRange } from './time-range';\n\n/** Directive for easy using styles of time-range placeholder publicly. */\n@Directive({\n standalone: true,\n selector: '[kbqTimeRangeTitlePlaceholder]',\n host: {\n class: 'kbq-time-range-title__placeholder'\n }\n})\nexport class KbqTimeRangeTitlePlaceholder {}\n\n/** Component simulates `KbqFormFieldControl` allowing to provide custom content inside `KbqFormField` */\n@Component({\n standalone: true,\n selector: 'kbq-time-range-title-as-control',\n template: `\n <ng-content />\n `,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqTimeRangeTitleAsControl\n }\n ],\n host: {\n '[attr.tabindex]': '0',\n class: 'kbq-time-range-title-as-form-field'\n },\n styles: `\n :host {\n &:focus-visible {\n outline: none;\n }\n display: flex;\n align-items: center;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitleAsControl implements KbqFormFieldControl<any> {\n private timeRange = inject(KbqTimeRange);\n\n /** @docs-private */\n controlType = 'select';\n /** @docs-private */\n stateChanges: Observable<void> = new Subject<void>();\n /** @docs-private */\n ngControl: NgControl | null = this.timeRange.ngControl;\n /** @docs-private */\n value: any;\n /** @docs-private */\n id: string;\n /** @docs-private */\n placeholder: string;\n /** @docs-private */\n focused: boolean;\n /** @docs-private */\n empty: boolean;\n /** @docs-private */\n required: boolean;\n /** @docs-private */\n disabled: boolean;\n /** @docs-private */\n errorState: boolean;\n /** @docs-private */\n onContainerClick(_event: MouseEvent): void {}\n /** @docs-private */\n focus(_options?: FocusOptions): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { KbqTimeRange } from './time-range';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeTitleAsControl, KbqTimeRangeTitlePlaceholder } from './time-range-title-as-form-field';\n\nconst COMPONENTS = [\n KbqTimeRange,\n KbqTimeRangeTitle,\n KbqTimeRangeEditor,\n KbqTimeRangeTitlePlaceholder,\n KbqTimeRangeTitleAsControl\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqTimeRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-time-range.mjs","sources":["../../../packages/components/time-range/constants.ts","../../../packages/components/time-range/time-range.service.ts","../../../packages/components/time-range/time-range-editor.ts","../../../packages/components/time-range/time-range-editor.html","../../../packages/components/time-range/time-range-title.ts","../../../packages/components/time-range/time-range.ts","../../../packages/components/time-range/time-range-title-as-form-field.ts","../../../packages/components/time-range/module.ts","../../../packages/components/time-range/koobiq-components-time-range.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqCustomTimeRangeType, KbqTimeRangeType } from './types';\n\n/** Preset of selectable time ranges, provided by DI. */\nexport const KBQ_DEFAULT_TIME_RANGE_TYPES = new InjectionToken<KbqTimeRangeType[]>('KBQ_DEFAULT_TIME_RANGE_TYPES');\n\n/** Preset of custom time ranges, provided by DI. */\nexport const KBQ_CUSTOM_TIME_RANGE_TYPES = new InjectionToken<KbqCustomTimeRangeType[]>('KBQ_CUSTOM_TIME_RANGE_TYPES');\n\n/** Time range types in range editor if nothing provided */\nexport const defaultTimeRangeTypes: KbqTimeRangeType[] = [\n 'lastHour',\n 'last24Hours',\n 'last3Days',\n 'last7Days',\n 'last14Days',\n 'currentQuarter',\n 'currentYear',\n 'allTime',\n 'range'\n];\n\n/** @docs-private */\nexport function createMissingDateImplError(componentName: string, provider: string): Error {\n return Error(\n `${componentName}: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`\n );\n}\n\n/**\n * Validates that the 'from' date-time is not greater than the 'to' date-time in a range form.\n * Returns an error if the start date-time occurs after the end date-time.\n *\n * @param timeRangeService - Service used to manipulate date-time values.\n */\nexport const rangeValidator = <T>(timeRangeService: KbqTimeRangeService<T>): ValidatorFn => {\n return (control: AbstractControl) => {\n const form = control.value;\n\n if (!form.fromTime || !form.fromDate || !form.toTime || !form.toDate) {\n return null;\n }\n\n const fromDateTime = timeRangeService.combineDateAndTime(form.fromDate, form.fromTime);\n const toDateTime = timeRangeService.combineDateAndTime(form.toDate, form.toTime);\n\n return timeRangeService.dateAdapter.compareDate(fromDateTime, toDateTime) > 0\n ? { fromIsGreaterThanTo: fromDateTime }\n : null;\n };\n};\n","import { inject, Injectable } from '@angular/core';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport {\n createMissingDateImplError,\n defaultTimeRangeTypes,\n KBQ_CUSTOM_TIME_RANGE_TYPES,\n KBQ_DEFAULT_TIME_RANGE_TYPES\n} from './constants';\nimport {\n KbqCustomTimeRangeType,\n KbqRange,\n KbqRangeValue,\n KbqTimeRangeRange,\n KbqTimeRangeTranslationType,\n KbqTimeRangeType,\n KbqTimeRangeUnits\n} from './types';\n\n@Injectable()\nexport class KbqTimeRangeService<T> {\n readonly dateAdapter = inject<DateAdapter<T>>(DateAdapter);\n readonly dateFormatter = inject<DateFormatter<T>>(DateFormatter);\n\n readonly providedDefaultTimeRangeTypes =\n inject(KBQ_DEFAULT_TIME_RANGE_TYPES, { optional: true }) || defaultTimeRangeTypes;\n\n readonly customTimeRangeTypes = inject(KBQ_CUSTOM_TIME_RANGE_TYPES, { optional: true });\n\n readonly DEFAULT_RANGE_TYPE: KbqTimeRangeType = 'lastHour';\n\n readonly timeRangeConfig: Record<KbqTimeRangeType, Omit<KbqCustomTimeRangeType, 'type'>> = {\n lastMinute: { units: { minutes: -1 }, translationType: 'minutes' },\n last5Minutes: { units: { minutes: -5 }, translationType: 'minutes' },\n last15Minutes: { units: { minutes: -15 }, translationType: 'minutes' },\n last30Minutes: { units: { minutes: -30 }, translationType: 'minutes' },\n\n lastHour: { units: { hours: -1 }, translationType: 'hours' },\n last24Hours: { units: { hours: -24 }, translationType: 'hours' },\n\n last3Days: { units: { days: -3 }, translationType: 'days' },\n last7Days: { units: { days: -7 }, translationType: 'days' },\n last14Days: { units: { days: -14 }, translationType: 'days' },\n last30Days: { units: { days: -30 }, translationType: 'days' },\n\n last3Months: { units: { months: -3 }, translationType: 'months' },\n last12Months: { units: { months: -12 }, translationType: 'months' },\n\n allTime: { units: {}, translationType: 'other' },\n currentQuarter: { units: {}, translationType: 'other' },\n currentYear: { units: {}, translationType: 'other' },\n range: { units: {}, translationType: 'other' }\n };\n\n constructor() {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('KbqTimeRange', 'DateAdapter');\n }\n\n this.customTimeRangeTypes\n ?.filter(({ type }) => {\n return !this.timeRangeConfig[type];\n })\n .forEach((type) => this.add(type));\n }\n\n static range = (dateTimeISOString: string): KbqRange => ({\n startDateTime: dateTimeISOString\n });\n\n add({ type, ...customTimeRangeConfig }: KbqCustomTimeRangeType): void {\n this.timeRangeConfig[type] = customTimeRangeConfig;\n }\n\n getTimeRangeTypeUnits(type: KbqTimeRangeType): KbqTimeRangeUnits {\n return this.timeRangeConfig[type].units;\n }\n\n getTimeRangeUnitByType(type: KbqTimeRangeType): KbqTimeRangeTranslationType {\n return this.timeRangeConfig[type].translationType;\n }\n\n getDefaultRangeValue(): Required<KbqRangeValue<T>> {\n const from = this.dateAdapter!.addCalendarUnits(this.dateAdapter!.today(), { days: -1 });\n const to = this.dateAdapter!.today();\n\n return {\n fromTime: this.omitMilliseconds(from),\n fromDate: this.omitMilliseconds(from),\n toTime: this.omitMilliseconds(to),\n toDate: this.omitMilliseconds(to)\n };\n }\n\n getTimeRangeDefaultValue(\n rangeValue: KbqRangeValue<T>,\n availableTimeRangeTypes: KbqTimeRangeType[] = []\n ): KbqTimeRangeRange {\n const defaultType =\n availableTimeRangeTypes[0] ?? this.providedDefaultTimeRangeTypes[0] ?? this.DEFAULT_RANGE_TYPE;\n\n return {\n ...this.calculateTimeRange(defaultType, rangeValue || this.getDefaultRangeValue()),\n type: defaultType\n };\n }\n\n calculateTimeRange(type?: KbqTimeRangeType, rangeValue?: KbqRangeValue<T>): KbqRange {\n if (!type) {\n return {};\n }\n\n if (type === 'range') {\n const checkedRangeValue = rangeValue || this.getDefaultRangeValue();\n\n return {\n startDateTime:\n checkedRangeValue.fromDate && checkedRangeValue.fromTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.fromDate, checkedRangeValue.fromTime)\n )\n : '',\n endDateTime:\n checkedRangeValue.toDate && checkedRangeValue.toTime\n ? this.dateAdapter.toIso8601(\n this.combineDateAndTime(checkedRangeValue.toDate, checkedRangeValue.toTime)\n )\n : ''\n };\n }\n\n switch (this.getTimeRangeUnitByType(type)) {\n case 'other': {\n switch (type) {\n case 'currentQuarter':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'quarter'))\n );\n case 'currentYear':\n return KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.startOf(this.dateAdapter.today(), 'year'))\n );\n case 'allTime':\n default: {\n return this.timeRangeConfig[type].range ?? {};\n }\n }\n }\n default: {\n return this.lastUnitsRange(this.getTimeRangeTypeUnits(type));\n }\n }\n }\n\n combineDateAndTime(date: T, time: T): T {\n return this.dateAdapter!.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(time),\n this.dateAdapter.getMinutes(time),\n this.dateAdapter.getSeconds(time),\n this.dateAdapter.getMilliseconds(time)\n );\n }\n\n lastUnitsRange = (unitsInfo: KbqTimeRangeUnits): KbqRange =>\n KbqTimeRangeService.range(\n this.dateAdapter.toIso8601(this.dateAdapter.addCalendarUnits(this.dateAdapter.today(), unitsInfo))\n );\n\n checkAndCorrectTimeRangeValue(\n value: KbqTimeRangeRange | null | undefined,\n availableTimeRangeTypes: KbqTimeRangeType[],\n rangeValue: KbqRangeValue<T>\n ): KbqTimeRangeRange {\n let result =\n value && (!availableTimeRangeTypes.length || availableTimeRangeTypes.includes(value.type))\n ? value\n : this.getTimeRangeDefaultValue(rangeValue, availableTimeRangeTypes);\n\n if (!result.startDateTime || (result.type === 'range' && (!result.startDateTime || !result.endDateTime))) {\n result = {\n ...this.calculateTimeRange(result.type, rangeValue),\n type: result.type\n };\n }\n\n return result;\n }\n\n omitMilliseconds(date: T): T {\n return this.dateAdapter.createDateTime(\n this.dateAdapter.getYear(date),\n this.dateAdapter.getMonth(date),\n this.dateAdapter.getDate(date),\n this.dateAdapter.getHours(date),\n this.dateAdapter.getMinutes(date),\n this.dateAdapter.getSeconds(date),\n 0\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n OnInit,\n TemplateRef,\n viewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n FormGroup,\n FormGroupDirective,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { ErrorStateMatcher, KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqFieldset, KbqFieldsetItem, KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqRadioModule } from '@koobiq/components/radio';\nimport { KbqTimepicker, KbqTimepickerModule, TimeFormats } from '@koobiq/components/timepicker';\nimport { merge } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { rangeValidator } from './constants';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType,\n KbqTimeRangeTypeContext\n} from './types';\n\ninterface FormValue<T> {\n type: FormControl<KbqTimeRangeType>;\n fromTime: FormControl<T>;\n fromDate: FormControl<T>;\n toTime: FormControl<T>;\n toDate: FormControl<T>;\n}\n\nclass RangeErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!form?.invalid || !!control?.invalid;\n }\n}\n\n/** @docs-private */\n@Component({\n selector: 'kbq-time-range-editor',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n ReactiveFormsModule,\n KbqFieldset,\n KbqFieldsetItem,\n KbqDatepickerModule,\n KbqFormFieldModule,\n KbqTimepickerModule,\n KbqRadioModule,\n KbqIcon\n ],\n templateUrl: './time-range-editor.html',\n host: {\n class: 'kbq-time-range__editor'\n },\n providers: [\n {\n multi: true,\n provide: NG_VALUE_ACCESSOR,\n useExisting: KbqTimeRangeEditor\n },\n {\n multi: true,\n provide: NG_VALIDATORS,\n useExisting: KbqTimeRangeEditor\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqTimeRangeEditor<T> implements ControlValueAccessor, Validator, OnInit {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n\n /** The maximum selectable date. */\n readonly maxDate = input<T | null>(null);\n /** The minimum selectable date. */\n readonly minDate = input<T | null>(null);\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Provided value of selected range */\n readonly rangeValue = input<Required<KbqRangeValue<T>>>(this.timeRangeService.getDefaultRangeValue());\n readonly showRangeAsDefault = input.required<boolean>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n\n /** @docs-private */\n protected readonly isRangeVisible = computed(\n () => this.showRangeAsDefault() || this.availableTimeRangeTypes().includes('range')\n );\n\n /** @docs-private */\n protected readonly timeRangeTypesWithoutRange = computed<KbqTimeRangeOptionContext[]>(() => {\n const localeConfig = this.localeConfiguration();\n\n return this.availableTimeRangeTypes()\n .filter((type) => type !== 'range')\n .map((type) => ({\n type,\n translationType: this.timeRangeService.getTimeRangeUnitByType(type),\n units: this.timeRangeService.getTimeRangeTypeUnits(type),\n formattedValue: this.getFormattedOption(type, localeConfig)\n }));\n });\n\n /** @docs-private */\n protected readonly timepickerList = viewChildren<KbqTimepicker<T>>(KbqTimepicker);\n\n /** @docs-private */\n protected readonly form: FormGroup<FormValue<T>>;\n /** @docs-private */\n protected readonly timepickerFormat = TimeFormats.HHmmss;\n /** @docs-private */\n protected readonly rangeStateMatcher = new RangeErrorStateMatcher();\n\n private lastValidationErrorOnEmit: ValidationErrors | null = null;\n\n constructor() {\n const defaultRangeValue = this.rangeValue();\n\n this.form = new FormGroup(\n {\n type: new FormControl<KbqTimeRangeType>(this.timeRangeService.DEFAULT_RANGE_TYPE, {\n nonNullable: true\n }),\n fromTime: new FormControl<T>(defaultRangeValue.fromTime, { nonNullable: true }),\n fromDate: new FormControl<T>(defaultRangeValue.fromDate, { nonNullable: true }),\n toTime: new FormControl<T>(defaultRangeValue.toTime, { nonNullable: true }),\n toDate: new FormControl<T>(defaultRangeValue.toDate, { nonNullable: true })\n },\n { validators: rangeValidator(this.timeRangeService) }\n );\n\n const rangeControls = [\n this.form.controls.fromTime,\n this.form.controls.fromDate,\n this.form.controls.toTime,\n this.form.controls.toDate\n ];\n\n merge(...rangeControls.map((control) => control.statusChanges))\n .pipe(takeUntilDestroyed())\n .subscribe(() => (this.lastValidationErrorOnEmit = this.concatControlValidationErrors()));\n\n this.form.valueChanges\n .pipe(\n map((formValue) => formValue.type),\n distinctUntilChanged(),\n takeUntilDestroyed()\n )\n .subscribe((type) => {\n const isDisabled = type !== 'range';\n\n rangeControls.forEach((control) => {\n if (isDisabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n });\n\n this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe((formValue) => {\n const range = this.mapTimeRange(formValue);\n\n if (range) this.onChange(range);\n });\n\n this.form.statusChanges.pipe(takeUntilDestroyed()).subscribe((status) => {\n const timepickerList = this.timepickerList();\n\n if (timepickerList.at(0)) {\n timepickerList.at(0)!.errorState = status === 'INVALID';\n }\n });\n }\n\n ngOnInit(): void {\n const defaultRangeValue = this.rangeValue();\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n this.form.setValue({\n type: (availableTimeRangeTypes.length && availableTimeRangeTypes[0]) || 'range',\n fromTime: defaultRangeValue.fromTime,\n fromDate: defaultRangeValue.fromDate,\n toTime: defaultRangeValue.toTime,\n toDate: defaultRangeValue.toDate\n });\n }\n\n /** @docs-private */\n validate(): ValidationErrors | null {\n return this.form.errors || this.lastValidationErrorOnEmit;\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value?: KbqTimeRangeRange): void {\n if (!value) return;\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n this.availableTimeRangeTypes(),\n this.form.value\n );\n\n this.form.controls.type.setValue(corrected.type);\n\n if (corrected.type === 'range' && corrected.startDateTime && corrected.endDateTime) {\n const from: T = this.timeRangeService.dateAdapter.deserialize(corrected.startDateTime);\n const to: T = this.timeRangeService.dateAdapter.deserialize(corrected.endDateTime);\n\n this.form.patchValue({\n fromTime: from,\n fromDate: from,\n toTime: to,\n toDate: to\n });\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private mapTimeRange({ type }: Partial<KbqTimeRangeTypeContext> & KbqRangeValue<T>): KbqTimeRangeRange | undefined {\n if (!type) return;\n\n return {\n type,\n ...this.timeRangeService.calculateTimeRange(type, {\n // use control.value, since via form.value control values can be undefined\n fromTime: this.form.controls.fromTime.value,\n fromDate: this.form.controls.fromDate.value,\n toDate: this.form.controls.toTime.value,\n toTime: this.form.controls.toTime.value\n })\n };\n }\n\n private getFormattedOption(type: KbqTimeRangeType, localeConfig: KbqTimeRangeLocaleConfig): string {\n const translationType = this.timeRangeService.getTimeRangeUnitByType(type);\n\n if (translationType === 'other') return '';\n\n const range = this.timeRangeService.calculateTimeRange(type);\n\n return this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(range.startDateTime!),\n this.timeRangeService.dateAdapter.today(),\n [translationType],\n false,\n localeConfig.durationTemplate.option\n );\n }\n\n private concatControlValidationErrors(): ValidationErrors | null {\n let result: ValidationErrors | null = this.form.errors;\n\n Object.values(this.form.controls).forEach((control: AbstractControl) => {\n if (control.errors) {\n result = {\n ...result,\n ...control.errors\n };\n }\n });\n\n return result;\n }\n}\n","<form [formGroup]=\"form\">\n <kbq-radio-group class=\"kbq-time-range-editor__container\" [formControl]=\"form.controls.type\">\n @let types = timeRangeTypesWithoutRange();\n\n @if (types.length) {\n <div class=\"kbq-time-range-editor__predefined\">\n @for (type of types; track type) {\n <kbq-radio-button class=\"kbq-time-range-editor__predefined-option\" [value]=\"type.type\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplate() || defaultOptionTemplate; context: { $implicit: type }\"\n />\n </kbq-radio-button>\n }\n </div>\n }\n\n @if (isRangeVisible()) {\n @let localeConfig = localeConfiguration();\n\n <div class=\"kbq-time-range-editor__range\" role=\"group\">\n @if (types.length) {\n <kbq-radio-button [value]=\"'range'\">{{ localeConfig.editor.rangeLabel }}</kbq-radio-button>\n }\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.from\">\n {{ localeConfig.editor.from }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.fromTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerFrom\"\n [formControl]=\"form.controls.fromDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerFrom\" />\n <kbq-datepicker #datepickerFrom [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n\n <div class=\"kbq-time-range-editor__date-time\">\n <span class=\"kbq-time-range-editor__date-time-prefix\" [attr.aria-label]=\"localeConfig.editor.to\">\n {{ localeConfig.editor.to }}\n </span>\n <kbq-fieldset>\n <kbq-form-field kbqFieldsetItem>\n <i kbq-icon=\"kbq-clock_16\" kbqPrefix [autoColor]=\"true\"></i>\n <input kbqTimepicker [format]=\"timepickerFormat\" [formControl]=\"form.controls.toTime\" />\n </kbq-form-field>\n\n <kbq-form-field>\n <input\n [min]=\"minDate()\"\n [max]=\"maxDate()\"\n [kbqDatepicker]=\"datepickerTo\"\n [formControl]=\"form.controls.toDate\"\n [errorStateMatcher]=\"rangeStateMatcher\"\n />\n <kbq-datepicker-toggle-icon kbqSuffix [for]=\"datepickerTo\" />\n <kbq-datepicker #datepickerTo [minDate]=\"minDate()\" [maxDate]=\"maxDate()\" />\n </kbq-form-field>\n </kbq-fieldset>\n </div>\n </div>\n }\n </kbq-radio-group>\n</form>\n\n<ng-template #defaultOptionTemplate let-context>\n @let localeConfig = localeConfiguration();\n @switch (context.translationType) {\n @case ('other') {\n @switch (context.type) {\n @case ('allTime') {\n {{ localeConfig.editor.allTime }}\n }\n @case ('currentQuarter') {\n {{ localeConfig.editor.currentQuarter }}\n }\n @case ('currentYear') {\n {{ localeConfig.editor.currentYear }}\n }\n }\n }\n @default {\n {{ context.formattedValue }}\n }\n }\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, Injector, input, TemplateRef } from '@angular/core';\nimport { KbqTimeRangeLocaleConfig } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeService } from './time-range.service';\nimport { KbqTimeRangeCustomizableTitleContext, KbqTimeRangeRange, KbqTimeRangeTitleContext } from './types';\n\n/** @docs-private */\n@Component({\n standalone: true,\n selector: 'kbq-time-range-title',\n imports: [\n NgTemplateOutlet,\n KbqLinkModule,\n KbqIconModule\n ],\n template: `\n @if (titleTemplate()) {\n <ng-container *ngTemplateOutlet=\"titleTemplate()!; context: titleContext() ?? null; injector: injector\" />\n } @else {\n <a kbq-link pseudo>\n <span class=\"kbq-link__text\">{{ formattedDate() }}</span>\n\n <i kbq-icon=\"kbq-calendar-o_16\"></i>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitle {\n private readonly timeRangeService = inject(KbqTimeRangeService);\n private readonly popover = inject(KbqPopoverTrigger, { host: true });\n protected readonly injector = inject(Injector);\n\n readonly timeRange = input.required<KbqTimeRangeRange | null>();\n readonly localeConfiguration = input.required<KbqTimeRangeLocaleConfig>();\n readonly titleTemplate = input<TemplateRef<any>>();\n\n protected readonly context = computed<KbqTimeRangeTitleContext | undefined>(() => {\n const timeRange = this.timeRange();\n\n if (!timeRange) return undefined;\n\n return {\n ...timeRange,\n ...this.timeRangeService.getTimeRangeTypeUnits(timeRange.type)\n };\n });\n\n protected readonly titleContext = computed<KbqTimeRangeCustomizableTitleContext | undefined>(() => {\n const context = this.context();\n const formattedDate = this.formattedDate();\n\n let customizableTitleContext = { formattedDate, popover: this.popover };\n\n if (context) {\n customizableTitleContext = { ...context, ...customizableTitleContext };\n }\n\n return {\n $implicit: customizableTitleContext,\n ...customizableTitleContext\n };\n });\n\n protected readonly formattedDate = computed(() => {\n const context = this.context();\n const localeConfiguration = this.localeConfiguration();\n\n if (!context) {\n return localeConfiguration.title.placeholder;\n }\n\n const timeRangeUnit = this.timeRangeService.getTimeRangeUnitByType(context.type);\n\n if (timeRangeUnit === 'other') {\n switch (context.type) {\n case 'range': {\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.rangeLongDate(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime ?? ''),\n this.timeRangeService.dateAdapter.deserialize(context.endDateTime ?? '')\n )\n );\n }\n case 'allTime': {\n return localeConfiguration.editor.allTime;\n }\n case 'currentQuarter': {\n return localeConfiguration.editor.currentQuarter;\n }\n case 'currentYear': {\n return localeConfiguration.editor.currentYear;\n }\n default: {\n return '';\n }\n }\n }\n\n if (!context.startDateTime) return '';\n\n return (\n localeConfiguration.title.for +\n ' ' +\n this.timeRangeService.dateFormatter.duration(\n this.timeRangeService.dateAdapter.deserialize(context.startDateTime),\n this.timeRangeService.dateAdapter.today(),\n [timeRangeUnit],\n false,\n localeConfiguration.durationTemplate.title\n )\n );\n });\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n OnInit,\n output,\n Provider,\n signal,\n TemplateRef,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport {\n KBQ_LOCALE_SERVICE,\n KbqTimeRangeLocaleConfig,\n PopUpPlacements,\n PopUpSizes,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeService } from './time-range.service';\nimport {\n KbqRangeValue,\n KbqTimeRangeCustomizableTitleContext,\n KbqTimeRangeOptionContext,\n KbqTimeRangeRange,\n KbqTimeRangeType\n} from './types';\n\n/** Localization configuration provider. */\nexport const KBQ_TIME_RANGE_LOCALE_CONFIGURATION = new InjectionToken<KbqTimeRangeLocaleConfig>(\n 'KBQ_TIME_RANGE_LOCALE_CONFIGURATION',\n { factory: () => ruRULocaleData.timeRange }\n);\n\n/** Utility provider for `KBQ_TIME_RANGE_LOCALE_CONFIGURATION`. */\nexport const kbqTimeRangeLocaleConfigurationProvider = (configuration: KbqTimeRangeLocaleConfig): Provider => ({\n provide: KBQ_TIME_RANGE_LOCALE_CONFIGURATION,\n useValue: configuration\n});\n\n@Component({\n standalone: true,\n selector: 'kbq-time-range',\n template: `\n @let localeConfig = localeConfiguration();\n <kbq-time-range-title\n #popover=\"kbqPopover\"\n class=\"kbq-time-range__trigger\"\n kbqPopover\n kbqPopoverClass=\"kbq-time-range__popover\"\n [kbqPopoverSize]=\"popoverSize\"\n [kbqPopoverContent]=\"timeRangePopoverContent\"\n [kbqPopoverFooter]=\"timeRangePopoverFooter\"\n [kbqPopoverPlacement]=\"popupPlacement\"\n [kbqPopoverArrow]=\"arrow()\"\n [titleTemplate]=\"titleTemplate()\"\n [timeRange]=\"titleValue()\"\n [localeConfiguration]=\"localeConfig\"\n (kbqPopoverVisibleChange)=\"onVisibleChange($event)\"\n />\n\n <ng-template #timeRangePopoverContent>\n <kbq-time-range-editor\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [formControl]=\"rangeEditorControl\"\n [localeConfiguration]=\"localeConfig\"\n [showRangeAsDefault]=\"showRangeAsDefault()\"\n [rangeValue]=\"normalizedDefaultRangeValue()\"\n [availableTimeRangeTypes]=\"availableTimeRangeTypes()\"\n [optionTemplate]=\"optionTemplate()\"\n />\n </ng-template>\n\n <ng-template #timeRangePopoverFooter>\n <div class=\"kbq-time-range__buttons\" role=\"group\">\n <button\n kbq-button\n [color]=\"'contrast'\"\n [disabled]=\"rangeEditorControl.invalid\"\n (click)=\"onApply(popover)\"\n >\n {{ localeConfig.editor.apply }}\n </button>\n\n <button kbq-button (click)=\"onCancel(popover)\">{{ localeConfig.editor.cancel }}</button>\n </div>\n </ng-template>\n `,\n styleUrls: ['./time-range.scss'],\n imports: [\n ReactiveFormsModule,\n KbqPopoverModule,\n KbqButtonModule,\n KbqTimeRangeEditor,\n KbqTimeRangeTitle\n ],\n host: {\n class: 'kbq-time-range'\n },\n providers: [KbqTimeRangeService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqTimeRange<T> implements ControlValueAccessor, OnInit {\n private readonly timeRangeService = inject<KbqTimeRangeService<T>>(KbqTimeRangeService);\n private readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /** The minimum selectable date. */\n readonly minDate = input<T>();\n /** The maximum selectable date. */\n readonly maxDate = input<T>();\n /** provided value of selected range */\n readonly defaultRangeValue = input<KbqRangeValue<T>>();\n /** Preset of selectable ranges */\n readonly availableTimeRangeTypes = input<KbqTimeRangeType[]>(this.timeRangeService.providedDefaultTimeRangeTypes);\n /** Customizable trigger output */\n readonly titleTemplate = input<TemplateRef<KbqTimeRangeCustomizableTitleContext>>();\n /** Customizable option output */\n readonly optionTemplate = input<TemplateRef<KbqTimeRangeOptionContext>>();\n /** Whether to show popover with arrow */\n readonly arrow = input(true, { transform: booleanAttribute });\n /**\n * Whether to show range in popover if not provided\n * @see availableTimeRangeTypes\n */\n readonly showRangeAsDefault = input(true);\n /** Whether component should fallback to default value if null provided */\n readonly nonNullable = input(true, { transform: booleanAttribute });\n\n /** Emit value update if provided value via formControl wasn't valid */\n readonly valueCorrected = output<KbqTimeRangeRange>();\n\n /**\n * Used to calculate time range.\n * @docs-private */\n protected readonly normalizedDefaultRangeValue = computed(() => ({\n ...this.timeRangeService.getDefaultRangeValue(),\n ...this.defaultRangeValue()\n }));\n\n /** @docs-private */\n protected readonly titleValue: WritableSignal<KbqTimeRangeRange | null>;\n /** @docs-private */\n protected readonly rangeEditorControl: FormControl<KbqTimeRangeRange>;\n\n /** @docs-private */\n protected readonly popoverSize = PopUpSizes.Medium;\n /** @docs-private */\n protected readonly popupPlacement = PopUpPlacements.BottomLeft;\n\n /** @docs-private */\n protected readonly localeConfiguration = signal(inject(KBQ_TIME_RANGE_LOCALE_CONFIGURATION));\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n\n const defaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n this.availableTimeRangeTypes()\n );\n\n this.titleValue = signal(this.nonNullable() ? defaultValue : null);\n this.rangeEditorControl = new FormControl<KbqTimeRangeRange>(defaultValue, { nonNullable: true });\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.localeConfiguration.set(this.localeService?.getParams('timeRange') ?? ruRULocaleData.timeRange);\n });\n\n toObservable(this.availableTimeRangeTypes)\n .pipe(takeUntilDestroyed())\n .subscribe(this.handleAvailableTypesChange);\n }\n\n ngOnInit(): void {\n // call again on init, so input signals values will be correct\n this.writeValue(this.ngControl?.value ?? null);\n }\n\n /** Implemented as part of ControlValueAccessor */\n writeValue(value: KbqTimeRangeRange | null): void {\n const nonNullable = this.nonNullable();\n\n const availableTimeRangeTypes = this.availableTimeRangeTypes();\n\n const corrected = this.timeRangeService.checkAndCorrectTimeRangeValue(\n value,\n availableTimeRangeTypes,\n this.normalizedDefaultRangeValue()\n );\n\n if (\n (value && value.type && !('startDateTime' in value && availableTimeRangeTypes.includes(value.type))) ||\n (nonNullable && value === null)\n ) {\n this.valueCorrected.emit(corrected);\n }\n\n this.titleValue.set(nonNullable || value !== null ? corrected : null);\n this.rangeEditorControl.setValue(corrected);\n }\n\n /** @docs-private */\n onApply(popover: KbqPopoverTrigger): void {\n this.titleValue.set(this.rangeEditorControl.value);\n this.onChange(this.rangeEditorControl.value);\n popover.hide();\n }\n\n /** @docs-private */\n onCancel(popover: KbqPopoverTrigger): void {\n popover.hide();\n }\n\n onVisibleChange(isVisible: boolean) {\n const titleValue = this.titleValue();\n\n if (!isVisible && titleValue) {\n this.rangeEditorControl.setValue(titleValue);\n }\n }\n\n /** @docs-private */\n onChange = (_value: KbqTimeRangeRange) => {};\n /** @docs-private */\n onTouch = () => {};\n /** Implemented as part of ControlValueAccessor */\n registerOnChange(fn: (_value: KbqTimeRangeRange) => void): void {\n this.onChange = fn;\n }\n /** Implemented as part of ControlValueAccessor */\n registerOnTouched(fn: () => void): void {\n this.onTouch = fn;\n }\n\n private handleAvailableTypesChange = (types: KbqTimeRangeType[]): void => {\n if (types.includes(this.rangeEditorControl.value.type) || this.rangeEditorControl.value.type === 'range') {\n return;\n }\n\n const timeRangeDefaultValue = this.timeRangeService.getTimeRangeDefaultValue(\n this.normalizedDefaultRangeValue(),\n types.length ? types : ['range']\n );\n\n this.titleValue.set(timeRangeDefaultValue);\n this.rangeEditorControl.setValue(timeRangeDefaultValue);\n this.onChange(timeRangeDefaultValue);\n };\n}\n","import { ChangeDetectionStrategy, Component, Directive, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { Observable, Subject } from 'rxjs';\nimport { KbqTimeRange } from './time-range';\n\n/** Directive for easy using styles of time-range placeholder publicly. */\n@Directive({\n standalone: true,\n selector: '[kbqTimeRangeTitlePlaceholder]',\n host: {\n class: 'kbq-time-range-title__placeholder'\n }\n})\nexport class KbqTimeRangeTitlePlaceholder {}\n\n/** Component simulates `KbqFormFieldControl` allowing to provide custom content inside `KbqFormField` */\n@Component({\n standalone: true,\n selector: 'kbq-time-range-title-as-control',\n template: `\n <ng-content />\n `,\n providers: [\n {\n provide: KbqFormFieldControl,\n useExisting: KbqTimeRangeTitleAsControl\n }\n ],\n host: {\n '[attr.tabindex]': '0',\n class: 'kbq-time-range-title-as-form-field'\n },\n styles: `\n :host {\n &:focus-visible {\n outline: none;\n }\n display: flex;\n align-items: center;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class KbqTimeRangeTitleAsControl implements KbqFormFieldControl<any> {\n private timeRange = inject(KbqTimeRange);\n\n /** @docs-private */\n controlType = 'select';\n /** @docs-private */\n stateChanges: Observable<void> = new Subject<void>();\n /** @docs-private */\n ngControl: NgControl | null = this.timeRange.ngControl;\n /** @docs-private */\n value: any;\n /** @docs-private */\n id: string;\n /** @docs-private */\n placeholder: string;\n /** @docs-private */\n focused: boolean;\n /** @docs-private */\n empty: boolean;\n /** @docs-private */\n required: boolean;\n /** @docs-private */\n disabled: boolean;\n /** @docs-private */\n errorState: boolean;\n /** @docs-private */\n onContainerClick(_event: MouseEvent): void {}\n /** @docs-private */\n focus(_options?: FocusOptions): void {}\n}\n","import { NgModule } from '@angular/core';\nimport { KbqTimeRange } from './time-range';\nimport { KbqTimeRangeEditor } from './time-range-editor';\nimport { KbqTimeRangeTitle } from './time-range-title';\nimport { KbqTimeRangeTitleAsControl, KbqTimeRangeTitlePlaceholder } from './time-range-title-as-form-field';\n\nconst COMPONENTS = [\n KbqTimeRange,\n KbqTimeRangeTitle,\n KbqTimeRangeEditor,\n KbqTimeRangeTitlePlaceholder,\n KbqTimeRangeTitleAsControl\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqTimeRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
|
@@ -16,11 +16,18 @@ class KbqTitleDirective extends KbqTooltipTrigger {
|
|
|
16
16
|
}
|
|
17
17
|
get isOverflown() {
|
|
18
18
|
/** For special cases where the difference is a fraction of a pixel */
|
|
19
|
-
if (this.
|
|
19
|
+
if (!this.isVerticalOverflown &&
|
|
20
|
+
(this.child.scrollWidth === 0 || this.parent.offsetWidth === this.child.scrollWidth)) {
|
|
20
21
|
return this.parent.getBoundingClientRect().width < this.child.getBoundingClientRect().width;
|
|
21
22
|
}
|
|
23
|
+
return this.isHorizontalOverflown || this.isVerticalOverflown;
|
|
24
|
+
}
|
|
25
|
+
get isHorizontalOverflown() {
|
|
22
26
|
return this.parent.offsetWidth < this.child.scrollWidth;
|
|
23
27
|
}
|
|
28
|
+
get isVerticalOverflown() {
|
|
29
|
+
return this.parent?.offsetHeight < this.child.scrollHeight;
|
|
30
|
+
}
|
|
24
31
|
get viewValue() {
|
|
25
32
|
return (this.parent?.textContent || '').trim();
|
|
26
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-title.mjs","sources":["../../../packages/components/title/title.directive.ts","../../../packages/components/title/title.module.ts","../../../packages/components/title/koobiq-components-title.ts"],"sourcesContent":["import { ContentObserver } from '@angular/cdk/observers';\nimport {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n Host,\n inject,\n Inject,\n OnDestroy,\n Optional\n} from '@angular/core';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject, Subscription, throttleTime } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[kbq-title]',\n exportAs: 'kbqTitle',\n host: {\n '(mouseenter)': 'handleElementEnter()',\n '(mouseleave)': 'hideTooltip()',\n '(window:resize)': 'resizeStream.next($event)'\n }\n})\nexport class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n private contentObserver = inject(ContentObserver);\n\n // todo need rename kbqTrigger in popover, tooltip and title. Here workaround for kbq-title and popover on one button\n set trigger(value: string) {\n super.trigger = value;\n }\n\n get trigger(): string {\n return PopUpTriggers.Hover;\n }\n\n get isOverflown(): boolean {\n /** For special cases where the difference is a fraction of a pixel */\n if (this.child.scrollWidth === 0 || this.parent.offsetWidth === this.child.scrollWidth) {\n return this.parent.getBoundingClientRect().width < this.child.getBoundingClientRect().width;\n }\n\n return this.parent.offsetWidth < this.child.scrollWidth;\n }\n\n get viewValue(): string {\n return (this.parent?.textContent || '').trim();\n }\n\n get parent(): HTMLElement {\n return this.parentContainer?.nativeElement || this.parentContainer;\n }\n\n get child(): HTMLElement {\n return this.childContainer.nativeElement || this.childContainer;\n }\n\n readonly resizeStream = new Subject<Event>();\n\n private readonly debounceInterval: number = 100;\n\n private resizeSubscription = Subscription.EMPTY;\n private contentObserverSubscription = Subscription.EMPTY;\n private focusMonitorSubscription = Subscription.EMPTY;\n\n @ContentChild('kbqTitleText', { descendants: true, static: true })\n private childContainer: ElementRef;\n\n @ContentChild('kbqTitleContainer')\n private parentContainer: ElementRef;\n\n constructor(@Host() @Optional() @Inject(KBQ_TITLE_TEXT_REF) private componentInstance?: KbqTitleTextRef) {\n super();\n }\n\n ngAfterViewInit() {\n this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef;\n this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef;\n this.content = this.viewValue;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.debounceInterval))\n .subscribe(() => (this.disabled = !this.isOverflown));\n\n this.contentObserverSubscription = this.contentObserver\n .observe(this.parent)\n .pipe(throttleTime(this.debounceInterval))\n .subscribe(() => {\n this.disabled = !this.isOverflown;\n this.content = this.viewValue;\n });\n\n this.focusMonitorSubscription = this.focusMonitor\n .monitor(this.elementRef)\n .subscribe((origin) => (origin === 'keyboard' ? this.handleElementEnter() : this.hideTooltip()));\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.resizeSubscription.unsubscribe();\n this.contentObserverSubscription.unsubscribe();\n this.focusMonitorSubscription.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n handleElementEnter() {\n this.disabled = !this.isOverflown;\n }\n\n hideTooltip() {\n this.disabled = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqTitleDirective } from './title.directive';\n\n@NgModule({\n imports: [KbqToolTipModule],\n declarations: [KbqTitleDirective],\n exports: [KbqTitleDirective]\n})\nexport class KbqTitleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AA0BM,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;;IAIpD,IAAI,OAAO,CAAC,KAAa,EAAA;AACrB,QAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,aAAa,CAAC,KAAK,CAAC;KAC9B;AAED,IAAA,IAAI,WAAW,GAAA;;QAEX,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"koobiq-components-title.mjs","sources":["../../../packages/components/title/title.directive.ts","../../../packages/components/title/title.module.ts","../../../packages/components/title/koobiq-components-title.ts"],"sourcesContent":["import { ContentObserver } from '@angular/cdk/observers';\nimport {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n Host,\n inject,\n Inject,\n OnDestroy,\n Optional\n} from '@angular/core';\nimport { KBQ_TITLE_TEXT_REF, KbqTitleTextRef, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject, Subscription, throttleTime } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[kbq-title]',\n exportAs: 'kbqTitle',\n host: {\n '(mouseenter)': 'handleElementEnter()',\n '(mouseleave)': 'hideTooltip()',\n '(window:resize)': 'resizeStream.next($event)'\n }\n})\nexport class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {\n private contentObserver = inject(ContentObserver);\n\n // todo need rename kbqTrigger in popover, tooltip and title. Here workaround for kbq-title and popover on one button\n set trigger(value: string) {\n super.trigger = value;\n }\n\n get trigger(): string {\n return PopUpTriggers.Hover;\n }\n\n get isOverflown(): boolean {\n /** For special cases where the difference is a fraction of a pixel */\n if (\n !this.isVerticalOverflown &&\n (this.child.scrollWidth === 0 || this.parent.offsetWidth === this.child.scrollWidth)\n ) {\n return this.parent.getBoundingClientRect().width < this.child.getBoundingClientRect().width;\n }\n\n return this.isHorizontalOverflown || this.isVerticalOverflown;\n }\n\n get isHorizontalOverflown(): boolean {\n return this.parent.offsetWidth < this.child.scrollWidth;\n }\n\n get isVerticalOverflown(): boolean {\n return this.parent?.offsetHeight < this.child.scrollHeight;\n }\n\n get viewValue(): string {\n return (this.parent?.textContent || '').trim();\n }\n\n get parent(): HTMLElement {\n return this.parentContainer?.nativeElement || this.parentContainer;\n }\n\n get child(): HTMLElement {\n return this.childContainer.nativeElement || this.childContainer;\n }\n\n readonly resizeStream = new Subject<Event>();\n\n private readonly debounceInterval: number = 100;\n\n private resizeSubscription = Subscription.EMPTY;\n private contentObserverSubscription = Subscription.EMPTY;\n private focusMonitorSubscription = Subscription.EMPTY;\n\n @ContentChild('kbqTitleText', { descendants: true, static: true })\n private childContainer: ElementRef;\n\n @ContentChild('kbqTitleContainer')\n private parentContainer: ElementRef;\n\n constructor(@Host() @Optional() @Inject(KBQ_TITLE_TEXT_REF) private componentInstance?: KbqTitleTextRef) {\n super();\n }\n\n ngAfterViewInit() {\n this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef;\n this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef;\n this.content = this.viewValue;\n\n this.resizeSubscription = this.resizeStream\n .pipe(debounceTime(this.debounceInterval))\n .subscribe(() => (this.disabled = !this.isOverflown));\n\n this.contentObserverSubscription = this.contentObserver\n .observe(this.parent)\n .pipe(throttleTime(this.debounceInterval))\n .subscribe(() => {\n this.disabled = !this.isOverflown;\n this.content = this.viewValue;\n });\n\n this.focusMonitorSubscription = this.focusMonitor\n .monitor(this.elementRef)\n .subscribe((origin) => (origin === 'keyboard' ? this.handleElementEnter() : this.hideTooltip()));\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n\n this.resizeSubscription.unsubscribe();\n this.contentObserverSubscription.unsubscribe();\n this.focusMonitorSubscription.unsubscribe();\n this.focusMonitor.stopMonitoring(this.elementRef);\n }\n\n handleElementEnter() {\n this.disabled = !this.isOverflown;\n }\n\n hideTooltip() {\n this.disabled = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqTitleDirective } from './title.directive';\n\n@NgModule({\n imports: [KbqToolTipModule],\n declarations: [KbqTitleDirective],\n exports: [KbqTitleDirective]\n})\nexport class KbqTitleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/input/input-number.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ElementRef, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';
|
|
2
2
|
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
-
import { KbqLocaleService } from '@koobiq/components/core';
|
|
3
|
+
import { KbqLocaleService, KbqNumberInputLocaleConfig } from '@koobiq/components/core';
|
|
4
4
|
import { KbqFormFieldControl } from '@koobiq/components/form-field';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -57,8 +57,8 @@ export declare class KbqNumberInput implements KbqFormFieldControl<any>, Control
|
|
|
57
57
|
get nativeElement(): HTMLInputElement;
|
|
58
58
|
get viewValue(): string;
|
|
59
59
|
get ngControl(): any;
|
|
60
|
-
protected get fractionSeparator():
|
|
61
|
-
protected get groupSeparator():
|
|
60
|
+
protected get fractionSeparator(): KbqNumberInputLocaleConfig['fractionSeparator'];
|
|
61
|
+
protected get groupSeparator(): KbqNumberInputLocaleConfig['groupSeparator'];
|
|
62
62
|
private control;
|
|
63
63
|
private config;
|
|
64
64
|
private valueFromPaste;
|
|
@@ -1,91 +1,78 @@
|
|
|
1
1
|
@use '../core/styles/common/tokens' as *;
|
|
2
2
|
|
|
3
3
|
.kbq-navbar-item.kbq-vertical {
|
|
4
|
+
height: 41px;
|
|
5
|
+
|
|
4
6
|
& .kbq-navbar-item__container {
|
|
5
7
|
gap: var(--kbq-size-m);
|
|
6
8
|
}
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
padding-right: var(--kbq-size-xl);
|
|
11
|
+
padding-left: var(--kbq-size-xl);
|
|
12
|
+
|
|
13
|
+
&:after {
|
|
14
|
+
top: 0;
|
|
15
|
+
right: var(--kbq-size-s);
|
|
16
|
+
bottom: 1px;
|
|
17
|
+
left: var(--kbq-size-s);
|
|
18
|
+
}
|
|
10
19
|
|
|
20
|
+
&.kbq-navbar-bento {
|
|
21
|
+
display: flex;
|
|
22
|
+
|
|
23
|
+
justify-content: start;
|
|
11
24
|
align-items: center;
|
|
12
25
|
|
|
13
|
-
|
|
14
|
-
padding-left: var(--kbq-size-xl);
|
|
26
|
+
height: var(--kbq-size-5xl);
|
|
15
27
|
|
|
16
|
-
|
|
28
|
+
padding-top: var(--kbq-size-s);
|
|
17
29
|
|
|
18
30
|
&:after {
|
|
19
|
-
top: var(--kbq-size-
|
|
20
|
-
|
|
21
|
-
bottom: var(--kbq-size-xxs);
|
|
22
|
-
left: var(--kbq-size-s);
|
|
31
|
+
top: var(--kbq-size-s);
|
|
32
|
+
bottom: 0;
|
|
23
33
|
}
|
|
34
|
+
}
|
|
24
35
|
|
|
25
|
-
|
|
26
|
-
|
|
36
|
+
&.kbq-expanded {
|
|
37
|
+
align-items: center;
|
|
27
38
|
|
|
28
|
-
|
|
39
|
+
gap: var(--kbq-size-m);
|
|
29
40
|
|
|
30
|
-
|
|
41
|
+
&.kbq-navbar-item_has-nested {
|
|
31
42
|
align-items: center;
|
|
32
43
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
z-index: 1;
|
|
37
|
-
|
|
38
|
-
padding: var(--kbq-size-s);
|
|
39
|
-
|
|
40
|
-
height: var(--kbq-size-5xl);
|
|
41
|
-
width: var(--kbq-size-5xl);
|
|
44
|
+
padding: 0 var(--kbq-size-m);
|
|
45
|
+
}
|
|
42
46
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
bottom: var(--kbq-size-s);
|
|
47
|
-
left: var(--kbq-size-s);
|
|
48
|
-
}
|
|
47
|
+
&.kbq-navbar-bento .kbq-navbar-item__title {
|
|
48
|
+
margin-left: -8px;
|
|
49
|
+
opacity: 0;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
&.kbq-navbar-
|
|
52
|
-
|
|
52
|
+
&.kbq-navbar-bento:hover,
|
|
53
|
+
&.kbq-navbar-bento.cdk-keyboard-focused {
|
|
54
|
+
& .kbq-navbar-item__title {
|
|
55
|
+
margin-left: 0;
|
|
56
|
+
opacity: 1;
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
transition:
|
|
59
|
+
opacity 150ms ease-out,
|
|
60
|
+
margin-left 150ms ease-out;
|
|
61
|
+
}
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
|
|
58
65
|
&.kbq-collapsed {
|
|
59
|
-
|
|
60
|
-
width: var(--kbq-size-5xl);
|
|
61
|
-
|
|
62
|
-
padding: var(--kbq-size-l);
|
|
66
|
+
width: var(--kbq-size-6xl);
|
|
63
67
|
|
|
64
68
|
justify-content: center;
|
|
65
69
|
|
|
66
|
-
&:after {
|
|
67
|
-
top: var(--kbq-size-s);
|
|
68
|
-
right: var(--kbq-size-s);
|
|
69
|
-
bottom: var(--kbq-size-s);
|
|
70
|
-
left: var(--kbq-size-s);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
&.kbq-navbar-bento {
|
|
74
|
-
padding-top: var(--kbq-size-xl);
|
|
75
|
-
padding-bottom: var(--kbq-size-m);
|
|
76
|
-
|
|
77
|
-
&:after {
|
|
78
|
-
top: var(--kbq-size-m);
|
|
79
|
-
bottom: var(--kbq-size-xxs);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
70
|
& .kbq-badge {
|
|
84
71
|
position: absolute;
|
|
85
72
|
|
|
86
73
|
z-index: 1;
|
|
87
74
|
|
|
88
|
-
top: var(--kbq-size-
|
|
75
|
+
top: calc(-1 * var(--kbq-size-3xs));
|
|
89
76
|
right: var(--kbq-size-xs);
|
|
90
77
|
}
|
|
91
78
|
|
|
@@ -100,3 +87,7 @@
|
|
|
100
87
|
align-items: center;
|
|
101
88
|
}
|
|
102
89
|
}
|
|
90
|
+
|
|
91
|
+
button.kbq-navbar-item.kbq-vertical {
|
|
92
|
+
width: 100%;
|
|
93
|
+
}
|