@hug/ngx-time-picker 3.0.6 → 21.0.0

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/CHANGELOG.md CHANGED
@@ -1,8 +1,20 @@
1
- ## 3.0.6 (2025-11-06)
1
+ # 21.0.0 (2026-01-07)
2
+
3
+ ### ⚠️ Breaking Changes
4
+
5
+ - ⚠️ align lib versions with angular ([6454157](https://github.com/DSI-HUG/ngx-components/commit/6454157))
6
+
7
+ ### 🚀 Features
8
+
9
+ - ⚠️ align lib versions with angular ([6454157](https://github.com/DSI-HUG/ngx-components/commit/6454157))
2
10
 
3
11
  ### 🌱 Dependencies
4
12
 
5
- - **@hug/ngx-numeric-stepper**: upgraded to `v3.0.6`
13
+ - **@hug/ngx-numeric-stepper**: upgraded to `v21.0.0`
14
+
15
+ ### ❤️ Thank You
16
+
17
+ - Guillaume Marcel
6
18
 
7
19
  ## 3.0.1 (2025-03-13)
8
20
 
@@ -1 +1 @@
1
- {"version":3,"file":"hug-ngx-time-picker-testing.mjs","sources":["../../../projects/time-picker/testing/time-picker-harness.ts","../../../projects/time-picker/testing/hug-ngx-time-picker-testing.ts"],"sourcesContent":["import { HarnessPredicate, TestKey } from '@angular/cdk/testing';\nimport { MatFormFieldControlHarness } from '@angular/material/form-field/testing/control';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nimport { NgxTimePickerHarnessFilters } from './time-picker-harness-filters';\n\n/** Harness for interacting with a ngx time picker in tests. */\nexport class NgxTimePickerHarness extends MatFormFieldControlHarness {\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public static hostSelector = 'ngx-time-picker';\n\n static with(options: NgxTimePickerHarnessFilters = {}): HarnessPredicate<NgxTimePickerHarness> {\n return new HarnessPredicate(NgxTimePickerHarness, options).addOption('value', options.value, (harness, value) => HarnessPredicate.stringMatches(harness.getValue(), value));\n }\n\n public async getHoursInput(): Promise<MatInputHarness> {\n return (await this.locatorFactory.harnessLoaderFor('.hours')).getHarness(MatInputHarness.with({ selector: '[matInput]' }));\n }\n\n public async getMinutesInput(): Promise<MatInputHarness> {\n return (await this.locatorFactory.harnessLoaderFor('.minutes')).getHarness(MatInputHarness.with({ selector: '[matInput]' }));\n }\n\n public async setValue(value: string): Promise<void> {\n const hoursMinutes = value.split(':');\n\n if (hoursMinutes[0].length) {\n await this.getHoursInput().then(async hoursInput => {\n await hoursInput.host().then(async hoursElement => {\n await hoursElement.clear();\n await hoursInput.setValue(hoursMinutes[0]);\n await hoursInput.blur();\n });\n });\n }\n\n if (hoursMinutes[1].length) {\n await this.getMinutesInput().then(async minutesInput => {\n await minutesInput.host().then(async minutesElement => {\n await minutesElement.clear();\n await minutesInput.setValue(hoursMinutes[1]);\n await minutesElement.blur();\n });\n });\n }\n }\n\n public async getValue(): Promise<string> {\n return this.getHoursValue().then(hoursValue => this.getMinutesValue().then(minutesValue => `${hoursValue}:${minutesValue}`));\n }\n\n public async getHoursValue(): Promise<string> {\n return this.getHoursInput().then(hoursInput => hoursInput.getValue());\n }\n\n public async getMinutesValue(): Promise<string> {\n return this.getMinutesInput().then(minutesInput => minutesInput.getValue());\n }\n\n public async sendKeysToHoursInput(...keys: readonly TestKey[]): Promise<void> {\n return this.getHoursInput().then(async hoursInput => {\n await hoursInput.host().then(async hoursElement => {\n await hoursElement.sendKeys(...keys);\n });\n });\n }\n\n public async sendKeysToMinutesInput(...keys: readonly TestKey[]): Promise<void> {\n return this.getMinutesInput().then(async minutesInput => {\n await minutesInput.host().then(async minutesElement => {\n await minutesElement.sendKeys(...keys);\n });\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hug-ngx-time-picker-testing.mjs","sources":["../../../projects/time-picker/testing/time-picker-harness.ts","../../../projects/time-picker/testing/hug-ngx-time-picker-testing.ts"],"sourcesContent":["import { HarnessPredicate, TestKey } from '@angular/cdk/testing';\nimport { MatFormFieldControlHarness } from '@angular/material/form-field/testing/control';\nimport { MatInputHarness } from '@angular/material/input/testing';\n\nimport { NgxTimePickerHarnessFilters } from './time-picker-harness-filters';\n\n/** Harness for interacting with a ngx time picker in tests. */\nexport class NgxTimePickerHarness extends MatFormFieldControlHarness {\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public static hostSelector = 'ngx-time-picker';\n\n static with(options: NgxTimePickerHarnessFilters = {}): HarnessPredicate<NgxTimePickerHarness> {\n return new HarnessPredicate(NgxTimePickerHarness, options).addOption('value', options.value, (harness, value) => HarnessPredicate.stringMatches(harness.getValue(), value));\n }\n\n public async getHoursInput(): Promise<MatInputHarness> {\n return (await this.locatorFactory.harnessLoaderFor('.hours')).getHarness(MatInputHarness.with({ selector: '[matInput]' }));\n }\n\n public async getMinutesInput(): Promise<MatInputHarness> {\n return (await this.locatorFactory.harnessLoaderFor('.minutes')).getHarness(MatInputHarness.with({ selector: '[matInput]' }));\n }\n\n public async setValue(value: string): Promise<void> {\n const hoursMinutes = value.split(':');\n\n if (hoursMinutes[0].length) {\n await this.getHoursInput().then(async hoursInput => {\n await hoursInput.host().then(async hoursElement => {\n await hoursElement.clear();\n await hoursInput.setValue(hoursMinutes[0]);\n await hoursInput.blur();\n });\n });\n }\n\n if (hoursMinutes[1].length) {\n await this.getMinutesInput().then(async minutesInput => {\n await minutesInput.host().then(async minutesElement => {\n await minutesElement.clear();\n await minutesInput.setValue(hoursMinutes[1]);\n await minutesElement.blur();\n });\n });\n }\n }\n\n public async getValue(): Promise<string> {\n return this.getHoursValue().then(hoursValue => this.getMinutesValue().then(minutesValue => `${hoursValue}:${minutesValue}`));\n }\n\n public async getHoursValue(): Promise<string> {\n return this.getHoursInput().then(hoursInput => hoursInput.getValue());\n }\n\n public async getMinutesValue(): Promise<string> {\n return this.getMinutesInput().then(minutesInput => minutesInput.getValue());\n }\n\n public async sendKeysToHoursInput(...keys: readonly TestKey[]): Promise<void> {\n return this.getHoursInput().then(async hoursInput => {\n await hoursInput.host().then(async hoursElement => {\n await hoursElement.sendKeys(...keys);\n });\n });\n }\n\n public async sendKeysToMinutesInput(...keys: readonly TestKey[]): Promise<void> {\n return this.getMinutesInput().then(async minutesInput => {\n await minutesInput.host().then(async minutesElement => {\n await minutesElement.sendKeys(...keys);\n });\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -180,10 +180,10 @@ class NgxTimePickerComponent {
180
180
  }
181
181
  onChangeCallback = (_a) => undefined;
182
182
  onTouchedCallback = () => undefined;
183
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.8", ngImport: i0, type: NgxTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.8", type: NgxTimePickerComponent, isStandalone: true, selector: "ngx-time-picker", inputs: { mode: "mode", forceNullValue: "forceNullValue", appearance: "appearance", autoFocus: "autoFocus", defaultPlaceholderHours: "defaultPlaceholderHours", defaultPlaceholderMinutes: "defaultPlaceholderMinutes", time: "time", step: "step", disabled: "disabled" }, outputs: { timeChange: "timeChange" }, viewQueries: [{ propertyName: "hours", first: true, predicate: ["hours"], descendants: true }, { propertyName: "minutes", first: true, predicate: ["minutes"], descendants: true }], ngImport: i0, template: "<!-- Hours -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"hours\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [style.display]=\"mode === 'minutesOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"hours\"\n #hours\n matInput\n [attr.hours]=\"hoursValue\"\n type=\"text\"\n [ngModel]=\"hoursValue | number: '2.'\"\n (ngModelChange)=\"hoursChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n (keydown)=\"hoursKeyDown$.next($event)\"\n [disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderHours\"\n (click)=\"hours.select()\" />\n <ngx-numeric-stepper\n (increment)=\"hoursChange$.next((hoursValue || 0) + 1)\"\n (decrement)=\"hoursChange$.next((hoursValue || 0) - 1)\"></ngx-numeric-stepper>\n</mat-form-field>\n\n<!-- Separator -->\n<span class=\"time-separator\" [style.display]=\"mode === 'minutesOnly' || mode === 'hoursOnly' ? 'none' : 'block'\">\n :\n</span>\n\n<!-- Minutes -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"minutes\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [style.display]=\"mode === 'hoursOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"minutes\"\n #minutes\n matInput\n [attr.minutes]=\"minutesValue\"\n type=\"text\"\n [ngModel]=\"minutesValue | number: '2.'\"\n (ngModelChange)=\"minutesChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderMinutes\"\n (click)=\"minutes.select()\" />\n <ngx-numeric-stepper\n (increment)=\"minutesChange$.next((minutesValue || 0) + _step)\"\n (decrement)=\"minutesChange$.next((minutesValue || 0) - _step)\"></ngx-numeric-stepper>\n</mat-form-field>\n", styles: ["ngx-time-picker{display:flex;flex-direction:row;align-items:baseline;justify-content:center}ngx-time-picker:not([inform]) .mat-form-field-appearance-outline .mat-mdc-form-field-wrapper{padding-bottom:0}ngx-time-picker:not([inform]) .mat-form-field-appearance-outline .mat-mdc-form-field-wrapper .mat-mdc-form-field-infix{border-bottom:.7em solid transparent}ngx-time-picker mat-form-field[ngx-numeric-stepper-form-field]{width:52px}ngx-time-picker .time-separator{width:4px;font-size:14.5px;line-height:17px;margin:0 8px}\n"], dependencies: [{ kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: NgxNumericStepperComponent, selector: "ngx-numeric-stepper", inputs: ["layout", "input", "arrowIcons", "showOnInit"], outputs: ["increment", "decrement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgxTimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: NgxTimePickerComponent, isStandalone: true, selector: "ngx-time-picker", inputs: { mode: "mode", forceNullValue: "forceNullValue", appearance: "appearance", autoFocus: "autoFocus", defaultPlaceholderHours: "defaultPlaceholderHours", defaultPlaceholderMinutes: "defaultPlaceholderMinutes", time: "time", step: "step", disabled: "disabled" }, outputs: { timeChange: "timeChange" }, viewQueries: [{ propertyName: "hours", first: true, predicate: ["hours"], descendants: true }, { propertyName: "minutes", first: true, predicate: ["minutes"], descendants: true }], ngImport: i0, template: "<!-- Hours -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"hours\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [style.display]=\"mode === 'minutesOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"hours\"\n #hours\n matInput\n [attr.hours]=\"hoursValue\"\n type=\"text\"\n [ngModel]=\"hoursValue | number: '2.'\"\n (ngModelChange)=\"hoursChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n (keydown)=\"hoursKeyDown$.next($event)\"\n [disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderHours\"\n (click)=\"hours.select()\" />\n <ngx-numeric-stepper\n (increment)=\"hoursChange$.next((hoursValue || 0) + 1)\"\n (decrement)=\"hoursChange$.next((hoursValue || 0) - 1)\"></ngx-numeric-stepper>\n</mat-form-field>\n\n<!-- Separator -->\n<span class=\"time-separator\" [style.display]=\"mode === 'minutesOnly' || mode === 'hoursOnly' ? 'none' : 'block'\">\n :\n</span>\n\n<!-- Minutes -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"minutes\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [style.display]=\"mode === 'hoursOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"minutes\"\n #minutes\n matInput\n [attr.minutes]=\"minutesValue\"\n type=\"text\"\n [ngModel]=\"minutesValue | number: '2.'\"\n (ngModelChange)=\"minutesChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderMinutes\"\n (click)=\"minutes.select()\" />\n <ngx-numeric-stepper\n (increment)=\"minutesChange$.next((minutesValue || 0) + _step)\"\n (decrement)=\"minutesChange$.next((minutesValue || 0) - _step)\"></ngx-numeric-stepper>\n</mat-form-field>\n", styles: ["ngx-time-picker{display:flex;flex-direction:row;align-items:baseline;justify-content:center}ngx-time-picker:not([inform]) .mat-form-field-appearance-outline .mat-mdc-form-field-wrapper{padding-bottom:0}ngx-time-picker:not([inform]) .mat-form-field-appearance-outline .mat-mdc-form-field-wrapper .mat-mdc-form-field-infix{border-bottom:.7em solid transparent}ngx-time-picker mat-form-field[ngx-numeric-stepper-form-field]{width:52px}ngx-time-picker .time-separator{width:4px;font-size:14.5px;line-height:17px;margin:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: NgxNumericStepperComponent, selector: "ngx-numeric-stepper", inputs: ["layout", "input", "arrowIcons", "showOnInit"], outputs: ["increment", "decrement"] }, { kind: "pipe", type: DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
185
185
  }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.8", ngImport: i0, type: NgxTimePickerComponent, decorators: [{
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: NgxTimePickerComponent, decorators: [{
187
187
  type: Component,
188
188
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ngx-time-picker', encapsulation: ViewEncapsulation.None, standalone: true, imports: [
189
189
  DecimalPipe,
@@ -1 +1 @@
1
- {"version":3,"file":"hug-ngx-time-picker.mjs","sources":["../../../projects/time-picker/src/time-picker.component.ts","../../../projects/time-picker/src/time-picker.component.html","../../../projects/time-picker/src/hug-ngx-time-picker.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { DecimalPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxNumericStepperComponent } from '@hug/ngx-numeric-stepper';\nimport { set } from 'date-fns';\nimport { debounceTime, distinctUntilChanged, EMPTY, map, mergeWith, Subject, switchMap, tap, timer } from 'rxjs';\n\nexport type NgxTimePickerDisplayMode = 'fullTime' | 'fullTimeWithHoursDisabled' | 'fullTimeWithMinutesDisabled' | 'hoursOnly' | 'minutesOnly';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ngx-time-picker',\n styleUrls: ['./time-picker.component.scss'],\n templateUrl: './time-picker.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DecimalPipe,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n NgxNumericStepperComponent\n ]\n})\nexport class NgxTimePickerComponent implements ControlValueAccessor {\n @ViewChild('hours') public hours?: ElementRef<HTMLInputElement>;\n @ViewChild('minutes') public minutes?: ElementRef<HTMLInputElement>;\n\n @Output() public readonly timeChange = new EventEmitter<Date>();\n\n /** Display mode for the time-picker */\n @Input() public mode: NgxTimePickerDisplayMode = 'fullTime';\n\n /**\n * Force the hour or minute to be null (only if the other field is disabled)\n *\n * For instance, if set to true and the hours are disabled, the minutes input value will be null\n * This is useful to force the user to provide a value\n */\n @Input() public forceNullValue = false;\n\n @Input() public appearance: MatFormFieldAppearance = 'outline';\n\n @Input()\n public set autoFocus(value: BooleanInput) {\n this._autoFocus = coerceBooleanProperty(value);\n }\n\n @Input() public defaultPlaceholderHours = '_ _';\n @Input() public defaultPlaceholderMinutes = '_ _';\n\n @Input()\n public set time(value: Date | undefined) {\n this.writeValue(value);\n }\n\n public get time(): Date | undefined {\n return this.value;\n }\n\n /** Step of the arrows */\n @Input()\n public set step(value: NumberInput) {\n this._step = coerceNumberProperty(value);\n this.changeDetectorRef.markForCheck();\n }\n\n /** To get the step of the minutes arrows */\n public get step(): NumberInput {\n return this._step;\n }\n\n /** Disabled property setter. Can be string or empty so you can use it like : <time-picker disabled></time-picker> */\n @Input()\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this.changeDetectorRef.markForCheck();\n }\n\n /** To get disabled attribute. */\n public get disabled(): BooleanInput {\n return this._disabled;\n }\n\n public readonly hoursChange$ = new Subject<Event | number>();\n public readonly minutesChange$ = new Subject<Event | number>();\n public readonly hoursKeyDown$ = new Subject<KeyboardEvent>();\n\n protected changeDetectorRef = inject(ChangeDetectorRef);\n protected control = inject(NgControl, { optional: true, self: true });\n protected _step = 1;\n\n private _disabled = false;\n private _value?: Date;\n private _autoFocus = true;\n\n public constructor() {\n if (this.control) {\n this.control.valueAccessor = this;\n }\n\n const hoursChange$ = this.hoursChange$.pipe(\n distinctUntilChanged(),\n map(hours => {\n if (typeof hours === 'object') {\n const value = (hours.target as HTMLInputElement).value;\n return [value !== undefined ? parseInt(value, 10) : undefined, true] as const;\n }\n return [!isNaN(hours) ? hours : 0, false] as const;\n }),\n tap(([hours, _isEvent]) => {\n const newValue = this.value ? new Date(this.value.getTime()) : new Date();\n\n if (hours !== undefined) {\n newValue.setHours(hours);\n }\n\n if (this.mode === 'fullTime' || this.mode === 'fullTimeWithMinutesDisabled' || this.mode === 'hoursOnly') {\n this.value = newValue;\n }\n\n this.changeDetectorRef.markForCheck();\n })\n );\n\n const minutesChange$ = this.minutesChange$.pipe(\n distinctUntilChanged(),\n map(event => {\n let minutes: number | undefined;\n if (typeof event === 'object') {\n const value = (event.target as HTMLInputElement).value;\n minutes = value !== undefined ? parseInt(value, 10) : undefined;\n } else {\n minutes = event;\n }\n\n return minutes && !isNaN(minutes) && minutes || 0;\n }),\n tap(minutes => {\n const newValue = this.value ? new Date(this.value.getTime()) : new Date();\n\n if (minutes < 0) {\n minutes += 60;\n } else if (minutes >= 60) {\n minutes -= 60;\n }\n newValue.setMinutes(minutes);\n\n if (this.mode === 'fullTime' || this.mode === 'fullTimeWithHoursDisabled' || this.mode === 'minutesOnly') {\n this.value = newValue;\n }\n\n this.changeDetectorRef.markForCheck();\n })\n );\n\n const setFocusToNextInput$ = this.hoursKeyDown$.pipe(\n debounceTime(200),\n switchMap(event => {\n const inputElement = this.hours?.nativeElement;\n if (!inputElement) {\n return EMPTY;\n }\n\n if (event.key && !event.ctrlKey && !event.shiftKey && !event.altKey && !['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab', 'Enter', 'Control', 'Shift'].includes(event.key)) {\n const regex = /^(\\d|[01]\\d|2[0-3])$/;\n const [selectionStart, selectionEnd] = [inputElement.selectionStart || 0, inputElement.selectionEnd || 0].sort((a, b) => a - b);\n const inputValue = inputElement.value || '';\n if (regex.test(inputValue) && this._autoFocus && inputValue.length === 2 && this.minutes?.nativeElement && inputElement === document.activeElement && selectionStart === 2 && selectionEnd === 2) {\n this.minutes.nativeElement.focus();\n return timer(0).pipe(\n tap(() => {\n this.minutes?.nativeElement.select();\n })\n );\n }\n }\n\n return EMPTY;\n })\n );\n\n hoursChange$.pipe(\n mergeWith(minutesChange$, setFocusToNextInput$),\n takeUntilDestroyed()\n ).subscribe();\n }\n\n // ************* ControlValueAccessor Implementation **************\n /** set accessor including call the onchange callback */\n public set value(v: Date | undefined) {\n if (v !== this._value) {\n this.writeValue(v);\n this.onChangeCallback(v);\n this.timeChange.emit(v);\n }\n }\n\n /** get accessor */\n public get value(): Date | undefined {\n return this._value;\n }\n\n /** From ControlValueAccessor interface */\n public writeValue(value: Date | undefined): void {\n if ((value ?? null) !== (this._value ?? null)) {\n if (value instanceof Date) {\n this._value = value ? new Date(value.getTime()) : set(new Date(), { hours: 0, minutes: 0, seconds: 0 });\n } else {\n this._value = value;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /** From ControlValueAccessor interface */\n public registerOnChange(fn: (_a: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n /** From ControlValueAccessor interface */\n public registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n // ************* End of ControlValueAccessor Implementation **************\n\n protected get hoursValue(): number | undefined {\n if (!this.value || (this.forceNullValue && this.mode === 'fullTimeWithMinutesDisabled' && !!this.control?.pristine)) {\n return undefined;\n }\n return this.value.getHours();\n }\n\n protected get minutesValue(): number | undefined {\n if (!this.value || (this.forceNullValue && this.mode === 'fullTimeWithHoursDisabled' && !!this.control?.pristine)) {\n return undefined;\n }\n return this.value.getMinutes();\n }\n\n protected onChangeCallback = (_a: unknown): void => undefined;\n protected onTouchedCallback = (): void => undefined;\n}\n","<!-- Hours -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"hours\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [style.display]=\"mode === 'minutesOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"hours\"\n #hours\n matInput\n [attr.hours]=\"hoursValue\"\n type=\"text\"\n [ngModel]=\"hoursValue | number: '2.'\"\n (ngModelChange)=\"hoursChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n (keydown)=\"hoursKeyDown$.next($event)\"\n [disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderHours\"\n (click)=\"hours.select()\" />\n <ngx-numeric-stepper\n (increment)=\"hoursChange$.next((hoursValue || 0) + 1)\"\n (decrement)=\"hoursChange$.next((hoursValue || 0) - 1)\"></ngx-numeric-stepper>\n</mat-form-field>\n\n<!-- Separator -->\n<span class=\"time-separator\" [style.display]=\"mode === 'minutesOnly' || mode === 'hoursOnly' ? 'none' : 'block'\">\n :\n</span>\n\n<!-- Minutes -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"minutes\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [style.display]=\"mode === 'hoursOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"minutes\"\n #minutes\n matInput\n [attr.minutes]=\"minutesValue\"\n type=\"text\"\n [ngModel]=\"minutesValue | number: '2.'\"\n (ngModelChange)=\"minutesChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderMinutes\"\n (click)=\"minutes.select()\" />\n <ngx-numeric-stepper\n (increment)=\"minutesChange$.next((minutesValue || 0) + _step)\"\n (decrement)=\"minutesChange$.next((minutesValue || 0) - _step)\"></ngx-numeric-stepper>\n</mat-form-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hug-ngx-time-picker.mjs","sources":["../../../projects/time-picker/src/time-picker.component.ts","../../../projects/time-picker/src/time-picker.component.html","../../../projects/time-picker/src/hug-ngx-time-picker.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { DecimalPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgxNumericStepperComponent } from '@hug/ngx-numeric-stepper';\nimport { set } from 'date-fns';\nimport { debounceTime, distinctUntilChanged, EMPTY, map, mergeWith, Subject, switchMap, tap, timer } from 'rxjs';\n\nexport type NgxTimePickerDisplayMode = 'fullTime' | 'fullTimeWithHoursDisabled' | 'fullTimeWithMinutesDisabled' | 'hoursOnly' | 'minutesOnly';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'ngx-time-picker',\n styleUrls: ['./time-picker.component.scss'],\n templateUrl: './time-picker.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [\n DecimalPipe,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n NgxNumericStepperComponent\n ]\n})\nexport class NgxTimePickerComponent implements ControlValueAccessor {\n @ViewChild('hours') public hours?: ElementRef<HTMLInputElement>;\n @ViewChild('minutes') public minutes?: ElementRef<HTMLInputElement>;\n\n @Output() public readonly timeChange = new EventEmitter<Date>();\n\n /** Display mode for the time-picker */\n @Input() public mode: NgxTimePickerDisplayMode = 'fullTime';\n\n /**\n * Force the hour or minute to be null (only if the other field is disabled)\n *\n * For instance, if set to true and the hours are disabled, the minutes input value will be null\n * This is useful to force the user to provide a value\n */\n @Input() public forceNullValue = false;\n\n @Input() public appearance: MatFormFieldAppearance = 'outline';\n\n @Input()\n public set autoFocus(value: BooleanInput) {\n this._autoFocus = coerceBooleanProperty(value);\n }\n\n @Input() public defaultPlaceholderHours = '_ _';\n @Input() public defaultPlaceholderMinutes = '_ _';\n\n @Input()\n public set time(value: Date | undefined) {\n this.writeValue(value);\n }\n\n public get time(): Date | undefined {\n return this.value;\n }\n\n /** Step of the arrows */\n @Input()\n public set step(value: NumberInput) {\n this._step = coerceNumberProperty(value);\n this.changeDetectorRef.markForCheck();\n }\n\n /** To get the step of the minutes arrows */\n public get step(): NumberInput {\n return this._step;\n }\n\n /** Disabled property setter. Can be string or empty so you can use it like : <time-picker disabled></time-picker> */\n @Input()\n public set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this.changeDetectorRef.markForCheck();\n }\n\n /** To get disabled attribute. */\n public get disabled(): BooleanInput {\n return this._disabled;\n }\n\n public readonly hoursChange$ = new Subject<Event | number>();\n public readonly minutesChange$ = new Subject<Event | number>();\n public readonly hoursKeyDown$ = new Subject<KeyboardEvent>();\n\n protected changeDetectorRef = inject(ChangeDetectorRef);\n protected control = inject(NgControl, { optional: true, self: true });\n protected _step = 1;\n\n private _disabled = false;\n private _value?: Date;\n private _autoFocus = true;\n\n public constructor() {\n if (this.control) {\n this.control.valueAccessor = this;\n }\n\n const hoursChange$ = this.hoursChange$.pipe(\n distinctUntilChanged(),\n map(hours => {\n if (typeof hours === 'object') {\n const value = (hours.target as HTMLInputElement).value;\n return [value !== undefined ? parseInt(value, 10) : undefined, true] as const;\n }\n return [!isNaN(hours) ? hours : 0, false] as const;\n }),\n tap(([hours, _isEvent]) => {\n const newValue = this.value ? new Date(this.value.getTime()) : new Date();\n\n if (hours !== undefined) {\n newValue.setHours(hours);\n }\n\n if (this.mode === 'fullTime' || this.mode === 'fullTimeWithMinutesDisabled' || this.mode === 'hoursOnly') {\n this.value = newValue;\n }\n\n this.changeDetectorRef.markForCheck();\n })\n );\n\n const minutesChange$ = this.minutesChange$.pipe(\n distinctUntilChanged(),\n map(event => {\n let minutes: number | undefined;\n if (typeof event === 'object') {\n const value = (event.target as HTMLInputElement).value;\n minutes = value !== undefined ? parseInt(value, 10) : undefined;\n } else {\n minutes = event;\n }\n\n return minutes && !isNaN(minutes) && minutes || 0;\n }),\n tap(minutes => {\n const newValue = this.value ? new Date(this.value.getTime()) : new Date();\n\n if (minutes < 0) {\n minutes += 60;\n } else if (minutes >= 60) {\n minutes -= 60;\n }\n newValue.setMinutes(minutes);\n\n if (this.mode === 'fullTime' || this.mode === 'fullTimeWithHoursDisabled' || this.mode === 'minutesOnly') {\n this.value = newValue;\n }\n\n this.changeDetectorRef.markForCheck();\n })\n );\n\n const setFocusToNextInput$ = this.hoursKeyDown$.pipe(\n debounceTime(200),\n switchMap(event => {\n const inputElement = this.hours?.nativeElement;\n if (!inputElement) {\n return EMPTY;\n }\n\n if (event.key && !event.ctrlKey && !event.shiftKey && !event.altKey && !['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab', 'Enter', 'Control', 'Shift'].includes(event.key)) {\n const regex = /^(\\d|[01]\\d|2[0-3])$/;\n const [selectionStart, selectionEnd] = [inputElement.selectionStart || 0, inputElement.selectionEnd || 0].sort((a, b) => a - b);\n const inputValue = inputElement.value || '';\n if (regex.test(inputValue) && this._autoFocus && inputValue.length === 2 && this.minutes?.nativeElement && inputElement === document.activeElement && selectionStart === 2 && selectionEnd === 2) {\n this.minutes.nativeElement.focus();\n return timer(0).pipe(\n tap(() => {\n this.minutes?.nativeElement.select();\n })\n );\n }\n }\n\n return EMPTY;\n })\n );\n\n hoursChange$.pipe(\n mergeWith(minutesChange$, setFocusToNextInput$),\n takeUntilDestroyed()\n ).subscribe();\n }\n\n // ************* ControlValueAccessor Implementation **************\n /** set accessor including call the onchange callback */\n public set value(v: Date | undefined) {\n if (v !== this._value) {\n this.writeValue(v);\n this.onChangeCallback(v);\n this.timeChange.emit(v);\n }\n }\n\n /** get accessor */\n public get value(): Date | undefined {\n return this._value;\n }\n\n /** From ControlValueAccessor interface */\n public writeValue(value: Date | undefined): void {\n if ((value ?? null) !== (this._value ?? null)) {\n if (value instanceof Date) {\n this._value = value ? new Date(value.getTime()) : set(new Date(), { hours: 0, minutes: 0, seconds: 0 });\n } else {\n this._value = value;\n }\n\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /** From ControlValueAccessor interface */\n public registerOnChange(fn: (_a: unknown) => void): void {\n this.onChangeCallback = fn;\n }\n\n /** From ControlValueAccessor interface */\n public registerOnTouched(fn: () => void): void {\n this.onTouchedCallback = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n // ************* End of ControlValueAccessor Implementation **************\n\n protected get hoursValue(): number | undefined {\n if (!this.value || (this.forceNullValue && this.mode === 'fullTimeWithMinutesDisabled' && !!this.control?.pristine)) {\n return undefined;\n }\n return this.value.getHours();\n }\n\n protected get minutesValue(): number | undefined {\n if (!this.value || (this.forceNullValue && this.mode === 'fullTimeWithHoursDisabled' && !!this.control?.pristine)) {\n return undefined;\n }\n return this.value.getMinutes();\n }\n\n protected onChangeCallback = (_a: unknown): void => undefined;\n protected onTouchedCallback = (): void => undefined;\n}\n","<!-- Hours -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"hours\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [style.display]=\"mode === 'minutesOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"hours\"\n #hours\n matInput\n [attr.hours]=\"hoursValue\"\n type=\"text\"\n [ngModel]=\"hoursValue | number: '2.'\"\n (ngModelChange)=\"hoursChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n (keydown)=\"hoursKeyDown$.next($event)\"\n [disabled]=\"disabled || mode === 'fullTimeWithHoursDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderHours\"\n (click)=\"hours.select()\" />\n <ngx-numeric-stepper\n (increment)=\"hoursChange$.next((hoursValue || 0) + 1)\"\n (decrement)=\"hoursChange$.next((hoursValue || 0) - 1)\"></ngx-numeric-stepper>\n</mat-form-field>\n\n<!-- Separator -->\n<span class=\"time-separator\" [style.display]=\"mode === 'minutesOnly' || mode === 'hoursOnly' ? 'none' : 'block'\">\n :\n</span>\n\n<!-- Minutes -->\n<mat-form-field\n [appearance]=\"appearance\"\n class=\"minutes\"\n [class.disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [style.display]=\"mode === 'hoursOnly' ? 'none' : 'block'\">\n <input\n aria-label=\"minutes\"\n #minutes\n matInput\n [attr.minutes]=\"minutesValue\"\n type=\"text\"\n [ngModel]=\"minutesValue | number: '2.'\"\n (ngModelChange)=\"minutesChange$.next($event)\"\n [ngModelOptions]=\"{ updateOn: 'blur' }\"\n [disabled]=\"disabled || mode === 'fullTimeWithMinutesDisabled'\"\n [maxLength]=\"2\"\n autocomplete=\"off\"\n [placeholder]=\"defaultPlaceholderMinutes\"\n (click)=\"minutes.select()\" />\n <ngx-numeric-stepper\n (increment)=\"minutesChange$.next((minutesValue || 0) + _step)\"\n (decrement)=\"minutesChange$.next((minutesValue || 0) - _step)\"></ngx-numeric-stepper>\n</mat-form-field>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hug/ngx-time-picker",
3
- "version": "3.0.6",
3
+ "version": "21.0.0",
4
4
  "description": "HUG Angular - time picker component",
5
5
  "homepage": "https://github.com/dsi-hug/ngx-components",
6
6
  "license": "GPL-3.0-only",
@@ -21,33 +21,34 @@
21
21
  ],
22
22
  "sideEffects": false,
23
23
  "peerDependencies": {
24
- "@angular/common": ">=19 <20",
25
- "@angular/core": ">=19 <20",
26
- "@angular/cdk": ">=19 <20",
27
- "@angular/forms": ">=19 <20",
28
- "@angular/material": ">=19 <20",
29
- "rxjs": ">= 7.4.0",
24
+ "@angular/cdk": ">=21 <22",
25
+ "@angular/common": ">=21 <22",
26
+ "@angular/core": ">=21 <22",
27
+ "@angular/forms": ">=21 <22",
28
+ "@angular/material": ">=21 <22",
29
+ "@hug/ngx-numeric-stepper": "^21.0.0",
30
30
  "date-fns": "^2.30.0",
31
- "@hug/ngx-numeric-stepper": "^3.0.6"
31
+ "rxjs": "^7.8.2",
32
+ "zone.js": "^0.16.0"
32
33
  },
33
34
  "dependencies": {
34
- "tslib": "^2.7.0"
35
+ "tslib": "^2.8.1"
35
36
  },
36
37
  "publishConfig": {
37
38
  "access": "public"
38
39
  },
39
40
  "module": "fesm2022/hug-ngx-time-picker.mjs",
40
- "typings": "index.d.ts",
41
+ "typings": "types/hug-ngx-time-picker.d.ts",
41
42
  "exports": {
42
43
  "./package.json": {
43
44
  "default": "./package.json"
44
45
  },
45
46
  ".": {
46
- "types": "./index.d.ts",
47
+ "types": "./types/hug-ngx-time-picker.d.ts",
47
48
  "default": "./fesm2022/hug-ngx-time-picker.mjs"
48
49
  },
49
50
  "./testing": {
50
- "types": "./testing/index.d.ts",
51
+ "types": "./types/hug-ngx-time-picker-testing.d.ts",
51
52
  "default": "./fesm2022/hug-ngx-time-picker-testing.mjs"
52
53
  }
53
54
  }
@@ -1,9 +1,13 @@
1
- import { HarnessPredicate, TestKey } from '@angular/cdk/testing';
1
+ import { BaseHarnessFilters, HarnessPredicate, TestKey } from '@angular/cdk/testing';
2
2
  import { MatFormFieldControlHarness } from '@angular/material/form-field/testing/control';
3
3
  import { MatInputHarness } from '@angular/material/input/testing';
4
- import { NgxTimePickerHarnessFilters } from './time-picker-harness-filters';
4
+
5
+ interface NgxTimePickerHarnessFilters extends BaseHarnessFilters {
6
+ value?: string | RegExp;
7
+ }
8
+
5
9
  /** Harness for interacting with a ngx time picker in tests. */
6
- export declare class NgxTimePickerHarness extends MatFormFieldControlHarness {
10
+ declare class NgxTimePickerHarness extends MatFormFieldControlHarness {
7
11
  static hostSelector: string;
8
12
  static with(options?: NgxTimePickerHarnessFilters): HarnessPredicate<NgxTimePickerHarness>;
9
13
  getHoursInput(): Promise<MatInputHarness>;
@@ -15,3 +19,6 @@ export declare class NgxTimePickerHarness extends MatFormFieldControlHarness {
15
19
  sendKeysToHoursInput(...keys: readonly TestKey[]): Promise<void>;
16
20
  sendKeysToMinutesInput(...keys: readonly TestKey[]): Promise<void>;
17
21
  }
22
+
23
+ export { NgxTimePickerHarness };
24
+ export type { NgxTimePickerHarnessFilters };
@@ -1,11 +1,12 @@
1
1
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
- import { ChangeDetectorRef, ElementRef, EventEmitter } from '@angular/core';
2
+ import * as i0 from '@angular/core';
3
+ import { ElementRef, EventEmitter, ChangeDetectorRef } from '@angular/core';
3
4
  import { ControlValueAccessor, NgControl } from '@angular/forms';
4
5
  import { MatFormFieldAppearance } from '@angular/material/form-field';
5
6
  import { Subject } from 'rxjs';
6
- import * as i0 from "@angular/core";
7
- export type NgxTimePickerDisplayMode = 'fullTime' | 'fullTimeWithHoursDisabled' | 'fullTimeWithMinutesDisabled' | 'hoursOnly' | 'minutesOnly';
8
- export declare class NgxTimePickerComponent implements ControlValueAccessor {
7
+
8
+ type NgxTimePickerDisplayMode = 'fullTime' | 'fullTimeWithHoursDisabled' | 'fullTimeWithMinutesDisabled' | 'hoursOnly' | 'minutesOnly';
9
+ declare class NgxTimePickerComponent implements ControlValueAccessor {
9
10
  hours?: ElementRef<HTMLInputElement>;
10
11
  minutes?: ElementRef<HTMLInputElement>;
11
12
  readonly timeChange: EventEmitter<Date>;
@@ -60,3 +61,6 @@ export declare class NgxTimePickerComponent implements ControlValueAccessor {
60
61
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxTimePickerComponent, never>;
61
62
  static ɵcmp: i0.ɵɵComponentDeclaration<NgxTimePickerComponent, "ngx-time-picker", never, { "mode": { "alias": "mode"; "required": false; }; "forceNullValue": { "alias": "forceNullValue"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "defaultPlaceholderHours": { "alias": "defaultPlaceholderHours"; "required": false; }; "defaultPlaceholderMinutes": { "alias": "defaultPlaceholderMinutes"; "required": false; }; "time": { "alias": "time"; "required": false; }; "step": { "alias": "step"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "timeChange": "timeChange"; }, never, never, true, never>;
62
63
  }
64
+
65
+ export { NgxTimePickerComponent };
66
+ export type { NgxTimePickerDisplayMode };
package/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './time-picker.component';
@@ -1,2 +0,0 @@
1
- export * from './time-picker-harness';
2
- export * from './time-picker-harness-filters';
@@ -1,4 +0,0 @@
1
- import { BaseHarnessFilters } from '@angular/cdk/testing';
2
- export interface NgxTimePickerHarnessFilters extends BaseHarnessFilters {
3
- value?: string | RegExp;
4
- }