ngx-kit 4.0.0 → 6.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.
Files changed (68) hide show
  1. package/README.md +3 -2
  2. package/angle-selector/README.md +34 -0
  3. package/box-shadow/README.md +33 -0
  4. package/color-picker/README.md +52 -0
  5. package/data-table/README.md +120 -0
  6. package/date-picker/README.md +74 -0
  7. package/dialog/README.md +94 -169
  8. package/drawer-menu/README.md +76 -0
  9. package/dropzone/README.md +59 -0
  10. package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
  11. package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
  12. package/fesm2022/ngx-kit-box-shadow.mjs +28 -27
  13. package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
  14. package/fesm2022/ngx-kit-color-picker.mjs +173 -43
  15. package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
  16. package/fesm2022/ngx-kit-data-table.mjs +446 -191
  17. package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
  18. package/fesm2022/ngx-kit-date-picker.mjs +120 -86
  19. package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
  20. package/fesm2022/ngx-kit-dialog.mjs +38 -7
  21. package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
  22. package/fesm2022/ngx-kit-drawer-menu.mjs +190 -0
  23. package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -0
  24. package/fesm2022/ngx-kit-dropzone.mjs +272 -0
  25. package/fesm2022/ngx-kit-dropzone.mjs.map +1 -0
  26. package/fesm2022/ngx-kit-form-field.mjs +87 -0
  27. package/fesm2022/ngx-kit-form-field.mjs.map +1 -0
  28. package/fesm2022/ngx-kit-gallery.mjs +419 -0
  29. package/fesm2022/ngx-kit-gallery.mjs.map +1 -0
  30. package/fesm2022/ngx-kit-gradient-picker.mjs +12 -4
  31. package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
  32. package/fesm2022/ngx-kit-image-editor.mjs +501 -0
  33. package/fesm2022/ngx-kit-image-editor.mjs.map +1 -0
  34. package/fesm2022/ngx-kit-menu.mjs +9 -4
  35. package/fesm2022/ngx-kit-menu.mjs.map +1 -1
  36. package/fesm2022/ngx-kit-message.mjs +58 -24
  37. package/fesm2022/ngx-kit-message.mjs.map +1 -1
  38. package/fesm2022/ngx-kit-notify.mjs +10 -4
  39. package/fesm2022/ngx-kit-notify.mjs.map +1 -1
  40. package/fesm2022/ngx-kit-shared.mjs +184 -88
  41. package/fesm2022/ngx-kit-shared.mjs.map +1 -1
  42. package/fesm2022/ngx-kit-time-picker.mjs +562 -0
  43. package/fesm2022/ngx-kit-time-picker.mjs.map +1 -0
  44. package/fesm2022/ngx-kit.mjs.map +1 -1
  45. package/gallery/README.md +71 -0
  46. package/gradient-picker/README.md +41 -0
  47. package/image-editor/README.md +44 -0
  48. package/menu/README.md +85 -0
  49. package/message/README.md +70 -0
  50. package/notify/README.md +56 -0
  51. package/package.json +25 -1
  52. package/shared/README.md +117 -0
  53. package/styles/all.css +27 -0
  54. package/styles/image-viewer.css +12 -0
  55. package/types/ngx-kit-box-shadow.d.ts +1 -2
  56. package/types/ngx-kit-data-table.d.ts +290 -147
  57. package/types/ngx-kit-date-picker.d.ts +1 -1
  58. package/types/ngx-kit-dialog.d.ts +1 -0
  59. package/types/ngx-kit-drawer-menu.d.ts +101 -0
  60. package/types/ngx-kit-dropzone.d.ts +84 -0
  61. package/types/ngx-kit-form-field.d.ts +31 -0
  62. package/types/ngx-kit-gallery.d.ts +168 -0
  63. package/types/ngx-kit-image-editor.d.ts +175 -0
  64. package/types/ngx-kit-menu.d.ts +1 -0
  65. package/types/ngx-kit-message.d.ts +14 -3
  66. package/types/ngx-kit-notify.d.ts +2 -1
  67. package/types/ngx-kit-shared.d.ts +70 -15
  68. package/types/ngx-kit-time-picker.d.ts +150 -0
@@ -12,6 +12,7 @@ interface NgxNotifyPayload {
12
12
  options: NgxNotifyOptions;
13
13
  onClose: EventEmitter<INotifyEnd>;
14
14
  onFinish: EventEmitter<INotifyEnd>;
15
+ close: () => void;
15
16
  }
16
17
  interface INotifyEnd {
17
18
  id: string;
@@ -111,7 +112,6 @@ declare class NgxNotificationComponent implements OnInit, OnDestroy {
111
112
  onMouseLeave(): void;
112
113
  onTap(): void;
113
114
  escapeHtml(input?: string): string;
114
- ngOnDestroyCleanup(): void;
115
115
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxNotificationComponent, never>;
116
116
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxNotificationComponent, "ngx-notification", never, { "payload": { "alias": "payload"; "required": true; "isSignal": true; }; "containerClass": { "alias": "containerClass"; "required": false; }; }, { "onClose": "onClose"; "onFinish": "onFinish"; }, never, never, true, never>;
117
117
  }
@@ -129,6 +129,7 @@ declare class NgxNotifyService {
129
129
  configureContainer(position: NgxNotifyOptions['position'], containerClass: string): void;
130
130
  show(message: string, description?: string, type?: NgxNotifyType, options?: NgxNotifyOptions): NgxNotifyPayload;
131
131
  private _createAndShow;
132
+ private close;
132
133
  private removeNode;
133
134
  private removeEl;
134
135
  private _showNextIfPossible;
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, EventEmitter, ElementRef, ChangeDetectorRef, InjectionToken, ComponentRef, TemplateRef, Type, ViewContainerRef, ApplicationRef, OnDestroy, EmbeddedViewRef } from '@angular/core';
2
+ import { OnInit, OnDestroy, EventEmitter, ElementRef, ChangeDetectorRef, InjectionToken, ComponentRef, TemplateRef, Type, ViewContainerRef, ApplicationRef, EmbeddedViewRef } from '@angular/core';
3
3
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors, FormControl } from '@angular/forms';
4
4
 
5
5
  interface IValue {
@@ -13,7 +13,7 @@ declare class ValueModel {
13
13
  thumb?: HTMLElement;
14
14
  color?: string;
15
15
  }
16
- declare class RangeSliderComponent implements OnInit, ControlValueAccessor, Validator {
16
+ declare class RangeSliderComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {
17
17
  private changeDetectorRef;
18
18
  /**
19
19
  * The step value for the slider
@@ -57,8 +57,10 @@ declare class RangeSliderComponent implements OnInit, ControlValueAccessor, Vali
57
57
  protected _validatorOnChange: () => void;
58
58
  private sliderRect?;
59
59
  private thumbRect?;
60
+ private stopDrag?;
60
61
  constructor(changeDetectorRef: ChangeDetectorRef);
61
62
  ngOnInit(): void;
63
+ ngOnDestroy(): void;
62
64
  private generateId;
63
65
  writeValue(items?: IValue[]): void;
64
66
  validate(control: AbstractControl): ValidationErrors | null;
@@ -67,14 +69,12 @@ declare class RangeSliderComponent implements OnInit, ControlValueAccessor, Vali
67
69
  registerOnTouched(fn: any): void;
68
70
  setDisabledState?(disabled: boolean): void;
69
71
  private updateRects;
70
- onDrag(ev: MouseEvent | TouchEvent): void;
71
72
  onResize(): void;
72
73
  dragStart(ev: MouseEvent | TouchEvent, index: number): void;
73
74
  addnewRangeOnSliderClick(event: MouseEvent | TouchEvent): void;
74
75
  private updateThumbPosition;
75
76
  updateAllThumbPositions(): void;
76
77
  setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect): void;
77
- onDragEnd(ev: MouseEvent | TouchEvent): void;
78
78
  valueChanged(): void;
79
79
  static ɵfac: i0.ɵɵFactoryDeclaration<RangeSliderComponent, never>;
80
80
  static ɵcmp: i0.ɵɵComponentDeclaration<RangeSliderComponent, "range-slider", never, { "step": { "alias": "step"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "background": { "alias": "background"; "required": false; }; "isBgTransparent": { "alias": "isBgTransparent"; "required": false; }; "addNewRangeOnClick": { "alias": "addNewRangeOnClick"; "required": false; }; "selectedIndex": { "alias": "selectedIndex"; "required": false; }; }, { "change": "change"; "selectedIndexChange": "selectedIndexChange"; }, never, ["*"], true, never>;
@@ -85,7 +85,7 @@ interface IPosition {
85
85
  y: number;
86
86
  }
87
87
 
88
- declare class SaturationComponent implements ControlValueAccessor {
88
+ declare class SaturationComponent implements ControlValueAccessor, OnDestroy {
89
89
  width?: number;
90
90
  height?: number;
91
91
  color: string;
@@ -108,7 +108,9 @@ declare class SaturationComponent implements ControlValueAccessor {
108
108
  protected _validatorOnChange: () => void;
109
109
  private saturationRect?;
110
110
  private thumbRect?;
111
+ private stopDrag?;
111
112
  constructor();
113
+ ngOnDestroy(): void;
112
114
  private updateRects;
113
115
  writeValue(val?: IPosition | null): void;
114
116
  validate(control: AbstractControl): ValidationErrors | null;
@@ -118,16 +120,14 @@ declare class SaturationComponent implements ControlValueAccessor {
118
120
  setDisabledState?(disabled: boolean): void;
119
121
  dragStart(ev: MouseEvent | TouchEvent): void;
120
122
  onResize(): void;
121
- onDrag(ev: MouseEvent | TouchEvent): void;
122
123
  private updatePosition;
123
- onDragEnd(ev: MouseEvent | TouchEvent): void;
124
124
  setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect): void;
125
125
  valueChanged(value: IPosition): void;
126
126
  static ɵfac: i0.ɵɵFactoryDeclaration<SaturationComponent, never>;
127
127
  static ɵcmp: i0.ɵɵComponentDeclaration<SaturationComponent, "saturation", never, { "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "color": { "alias": "color"; "required": false; }; "step": { "alias": "step"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
128
128
  }
129
129
 
130
- declare class SliderComponent implements OnInit, ControlValueAccessor, Validator {
130
+ declare class SliderComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {
131
131
  step: number;
132
132
  min: number;
133
133
  max: number;
@@ -145,8 +145,11 @@ declare class SliderComponent implements OnInit, ControlValueAccessor, Validator
145
145
  protected _validatorOnChange: () => void;
146
146
  private sliderRect?;
147
147
  private thumbRect?;
148
+ private stopDrag?;
149
+ private readonly cd;
148
150
  constructor();
149
151
  ngOnInit(): void;
152
+ ngOnDestroy(): void;
150
153
  private updateRects;
151
154
  writeValue(val?: number | string | null): void;
152
155
  validate(control: AbstractControl): ValidationErrors | null;
@@ -155,11 +158,9 @@ declare class SliderComponent implements OnInit, ControlValueAccessor, Validator
155
158
  registerOnTouched(fn: any): void;
156
159
  setDisabledState?(disabled: boolean): void;
157
160
  dragStart(ev: MouseEvent | TouchEvent): void;
158
- onDrag(ev: MouseEvent | TouchEvent): void;
159
161
  onResize(): void;
160
162
  private updatePosition;
161
163
  setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect): void;
162
- onDragEnd(ev: MouseEvent | TouchEvent): void;
163
164
  valueChanged(value: number): void;
164
165
  static ɵfac: i0.ɵɵFactoryDeclaration<SliderComponent, never>;
165
166
  static ɵcmp: i0.ɵɵComponentDeclaration<SliderComponent, "slider", never, { "step": { "alias": "step"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "background": { "alias": "background"; "required": false; }; "isBgTransparent": { "alias": "isBgTransparent"; "required": false; }; }, { "change": "change"; }, never, ["*"], true, never>;
@@ -172,12 +173,41 @@ declare function getOffsetPosition(evt: MouseEvent | TouchEvent, parent: HTMLEle
172
173
  y: number;
173
174
  };
174
175
 
176
+ /**
177
+ * تمام کامپوننت‌های قابل‌درگ کتابخانه (saturation، slider، range-slider،
178
+ * box-shadow) قبلاً یک الگوی تکراری داشتن:
179
+ *
180
+ * @HostListener('document:mousemove', ['$event'])
181
+ * @HostListener('document:touchmove', ['$event'])
182
+ * onDrag(ev) { if (!this.isDragging) return; ... }
183
+ *
184
+ * مشکل: این listenerها برای کل عمر کامپوننت روی `document` باقی می‌مونن —
185
+ * حتی وقتی اصلاً دراگی در حال انجام نیست. یعنی روی صفحه‌ای با چند تا
186
+ * color-picker/slider، هر حرکت موس/انگشت روی کل صفحه (نه فقط روی خودِ
187
+ * اسلایدر) باعث اجرای N تابع (به تعداد اینستنس‌ها) می‌شه که هرکدوم هم چرخه‌ی
188
+ * زون انگیولار رو تریگر می‌کنن — یک مشکل واقعی پرفورمنس، مخصوصاً در صفحاتی
189
+ * با چند نمونه هم‌زمان یا حرکت زیاد موس.
190
+ *
191
+ * این تابع جایگزین اون الگو می‌شه: listenerها فقط در طول یک دراگِ واقعی
192
+ * (بین mousedown/touchstart تا mouseup/touchend) روی document اضافه می‌شن و
193
+ * بلافاصله بعدش پاک می‌شن.
194
+ *
195
+ * یه فایده‌ی جانبیِ مهم دیگه هم داره: روی touchmove مقدار `{ passive: false }`
196
+ * ست می‌شه و preventDefault صدا زده می‌شه، پس در حین درگ کردنِ thumb روی
197
+ * موبایل، صفحه اسکرول نمی‌خوره (باگی که با @HostListener قبلی وجود داشت،
198
+ * چون هیچ‌جا preventDefault روی touchmove صدا زده نمی‌شد).
199
+ */
200
+ interface DragSessionCallbacks {
201
+ onMove: (ev: MouseEvent | TouchEvent) => void;
202
+ onEnd?: (ev: MouseEvent | TouchEvent) => void;
203
+ }
204
+ /** با فراخوانی این تابع (مثلاً داخل dragStart) یک نشست‌ درگ شروع می‌شه. */
205
+ declare function startDragSession({ onMove, onEnd }: DragSessionCallbacks): () => void;
206
+
175
207
  declare const WINDOW: InjectionToken<Window | null>;
176
208
 
177
209
  declare function randomStrnig(extraLength?: number, useNumeric?: boolean): string;
178
210
 
179
- declare function IsRtl(doc: Document): boolean;
180
-
181
211
  declare function makeConfetti(doc: Document, wrap: HTMLElement): void;
182
212
 
183
213
  declare class BrowserService {
@@ -189,6 +219,31 @@ declare class BrowserService {
189
219
  static ɵprov: i0.ɵɵInjectableDeclaration<BrowserService>;
190
220
  }
191
221
 
222
+ type Direction = 'ltr' | 'rtl';
223
+ /**
224
+ * جهت صفحه را به‌صورت خودکار و زنده تشخیص می‌دهد — بدون این‌که کاربرِ این
225
+ * سرویس مجبور باشد چیزی به آن بدهد. هر تغییری در attribute های dir/class
226
+ * روی <html> یا <body> (چه از طریق Angular، چه با یک تم‌سوییچر خارج از
227
+ * Angular) بلافاصله signal را آپدیت می‌کند.
228
+ *
229
+ * نکته: effect() اینجا جواب نمی‌دهد چون هیچ‌کدام از این مقادیر (attribute
230
+ * روی DOM) یک Signal نیستند؛ effect فقط به تغییر Signalها reactive است، نه
231
+ * به تغییرات دلخواه DOM. برای گوش‌دادن به تغییرات DOM باید از MutationObserver
232
+ * استفاده کرد و مقدار را دستی داخل یک Signal نوشت (که دقیقاً کاری است که
233
+ * این سرویس انجام می‌دهد).
234
+ */
235
+ declare class DirectionService {
236
+ private readonly doc;
237
+ private readonly destroyRef;
238
+ private readonly _direction;
239
+ /** جهت جاری، به‌صورت Signal فقط-خواندنی. */
240
+ readonly direction: i0.Signal<Direction>;
241
+ readonly isRtl: i0.Signal<boolean>;
242
+ constructor();
243
+ static ɵfac: i0.ɵɵFactoryDeclaration<DirectionService, never>;
244
+ static ɵprov: i0.ɵɵInjectableDeclaration<DirectionService>;
245
+ }
246
+
192
247
  declare class OverlayRef<T> {
193
248
  private readonly dialogEl;
194
249
  private readonly teardownFn;
@@ -231,11 +286,11 @@ declare const FOCUSABLE_SELECTOR = "button, [href], input, select, textarea, [ta
231
286
  declare const DIALOG_OVERLAY_CLASSNAME = "ngx-ui-overlay";
232
287
  declare class OverlayService implements OnDestroy {
233
288
  private readonly overlayStacks;
234
- private zIndexCounter;
235
289
  private listenersAttached;
236
290
  private resizeRafPending;
237
291
  private readonly doc;
238
292
  private readonly abortController;
293
+ private readonly directionService;
239
294
  ngOnDestroy(): void;
240
295
  open<T>(options: OverlayOptions<T>): OverlayRef<T>;
241
296
  openTemplate(options: TemplateOptions): OverlayRef<any>;
@@ -276,5 +331,5 @@ interface OverlayInstance {
276
331
  cleanup: () => void;
277
332
  }
278
333
 
279
- export { BrowserService, DIALOG_OVERLAY_CLASSNAME, FOCUSABLE_SELECTOR, IsRtl, OverlayRef, OverlayService, RangeSliderComponent, SaturationComponent, SliderComponent, ValueModel, WINDOW, getOffsetPosition, makeConfetti, mergeConfig, randomStrnig };
280
- export type { Alignment, BaseOverlayOptions, IPosition, IValue, OverlayInstance, OverlayOptions, Placement, Point, TemplateOptions };
334
+ export { BrowserService, DIALOG_OVERLAY_CLASSNAME, DirectionService, FOCUSABLE_SELECTOR, OverlayRef, OverlayService, RangeSliderComponent, SaturationComponent, SliderComponent, ValueModel, WINDOW, getOffsetPosition, makeConfetti, mergeConfig, randomStrnig, startDragSession };
335
+ export type { Alignment, BaseOverlayOptions, Direction, DragSessionCallbacks, IPosition, IValue, OverlayInstance, OverlayOptions, Placement, Point, TemplateOptions };
@@ -0,0 +1,150 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit, ElementRef } from '@angular/core';
3
+ import { BrowserService } from 'ngx-kit/shared';
4
+ import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
5
+
6
+ declare class NgxTimePickerConfig {
7
+ cancelButtonText: string;
8
+ confirmButtonText: string;
9
+ amText: string;
10
+ pmText: string;
11
+ format: '12' | '24';
12
+ minuteStep: number;
13
+ autoSwitchToMinute: boolean;
14
+ }
15
+
16
+ declare type NgxTimePickerMode = 'hour' | 'minute';
17
+
18
+ declare class NgxInputTimePickerComponent implements ControlValueAccessor, Validator, OnInit {
19
+ protected readonly browserService: BrowserService;
20
+ readonly change: _angular_core.OutputEmitterRef<string | null>;
21
+ readonly cancel: _angular_core.OutputEmitterRef<void>;
22
+ protected readonly config: NgxTimePickerConfig;
23
+ isDisabled: boolean;
24
+ /**
25
+ * Time value.
26
+ *
27
+ * Example:
28
+ * 14:35
29
+ */
30
+ readonly value: _angular_core.ModelSignal<string>;
31
+ /**
32
+ * 12h or 24h.
33
+ */
34
+ readonly format: _angular_core.InputSignal<"12" | "24">;
35
+ readonly amOrPm: _angular_core.ModelSignal<"AM" | "PM" | undefined>;
36
+ /**
37
+ * Minute step.
38
+ */
39
+ readonly minuteStep: _angular_core.InputSignal<number>;
40
+ /**
41
+ * Whether the clock is disabled.
42
+ */
43
+ readonly disabled: _angular_core.InputSignal<boolean>;
44
+ /**
45
+ * Whether to automatically switch from hour to minute.
46
+ */
47
+ readonly autoSwitchToMinute: _angular_core.InputSignal<boolean>;
48
+ readonly clock: _angular_core.Signal<ElementRef<SVGSVGElement> | undefined>;
49
+ readonly mode: _angular_core.WritableSignal<NgxTimePickerMode>;
50
+ private dragging;
51
+ readonly parsedTime: _angular_core.Signal<{
52
+ hour: number;
53
+ minute: number;
54
+ }>;
55
+ readonly displayHour: _angular_core.Signal<number>;
56
+ readonly displayMinute: _angular_core.Signal<number>;
57
+ readonly hourNumbers: _angular_core.Signal<number[]>;
58
+ readonly minuteNumbers: _angular_core.Signal<number[]>;
59
+ readonly hourAngle: _angular_core.Signal<number>;
60
+ readonly minuteAngle: _angular_core.Signal<number>;
61
+ readonly currentAngle: _angular_core.Signal<number>;
62
+ readonly handLength: _angular_core.Signal<58 | 86>;
63
+ readonly handEnd: _angular_core.Signal<{
64
+ x: number;
65
+ y: number;
66
+ }>;
67
+ readonly selectedPosition: _angular_core.Signal<{
68
+ x: number;
69
+ y: number;
70
+ }>;
71
+ protected _onChange: (value: string) => void;
72
+ protected _onTouched: () => void;
73
+ protected _validatorOnChange: () => void;
74
+ constructor();
75
+ ngOnInit(): void;
76
+ writeValue(value: string): void;
77
+ validate(control: AbstractControl): ValidationErrors | null;
78
+ registerOnChange(fn: any): void;
79
+ registerOnTouched(fn: any): void;
80
+ registerOnValidatorChange?(fn: () => void): void;
81
+ setDisabledState(disabled: boolean): void;
82
+ startPointer(event: PointerEvent): void;
83
+ movePointer(event: PointerEvent): void;
84
+ endPointer(event: PointerEvent): void;
85
+ selectHour(hour: number): void;
86
+ selectMinute(minute: number): void;
87
+ setMode(mode: NgxTimePickerMode): void;
88
+ private updateFromPointer;
89
+ private updateHourFromAngle;
90
+ private updateMinuteFromAngle;
91
+ private setTime;
92
+ isSelectedHour(hour: number): boolean;
93
+ isSelectedMinute(minute: number): boolean;
94
+ formatHour(hour: number): string;
95
+ formatMinute(minute: number): string;
96
+ numberPosition(index: number, total: number, radius?: number): {
97
+ x: number;
98
+ y: number;
99
+ };
100
+ hourPosition(hour: number, inner?: boolean): {
101
+ x: number;
102
+ y: number;
103
+ };
104
+ minutePosition(minute: number): {
105
+ x: number;
106
+ y: number;
107
+ };
108
+ ok(): void;
109
+ close(): void;
110
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxInputTimePickerComponent, never>;
111
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxInputTimePickerComponent, "ngx-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "amOrPm": { "alias": "amOrPm"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoSwitchToMinute": { "alias": "autoSwitchToMinute"; "required": false; "isSignal": true; }; }, { "change": "change"; "cancel": "cancel"; "value": "valueChange"; "amOrPm": "amOrPmChange"; }, never, never, true, never>;
112
+ }
113
+
114
+ declare class NgxInputTimePicker implements ControlValueAccessor, Validator {
115
+ private el;
116
+ protected readonly config: NgxTimePickerConfig;
117
+ openOnCLick: _angular_core.InputSignal<boolean>;
118
+ readonly change: _angular_core.OutputEmitterRef<string | null>;
119
+ protected readonly value: _angular_core.WritableSignal<string>;
120
+ readonly format: _angular_core.InputSignal<"12" | "24">;
121
+ readonly amOrPm: _angular_core.ModelSignal<"AM" | "PM" | undefined>;
122
+ private pickerRef?;
123
+ protected _onChange: (value: string | null | undefined) => void;
124
+ protected _onTouched: () => void;
125
+ protected _validatorOnChange: () => void;
126
+ private isDisabled;
127
+ private readonly overlayService;
128
+ private readonly viewContainerRef;
129
+ private readonly renderer;
130
+ constructor(el: ElementRef<HTMLInputElement>);
131
+ ngOnDestroy(): void;
132
+ onClick(ev: Event): void;
133
+ onInput(event: Event): void;
134
+ onBlur(): void;
135
+ writeValue(value: string): void;
136
+ registerOnChange(fn: any): void;
137
+ registerOnTouched(fn: any): void;
138
+ registerOnValidatorChange?(fn: () => void): void;
139
+ setDisabledState(disabled: boolean): void;
140
+ toggle(): void;
141
+ private destroy;
142
+ private emitChange;
143
+ validate(control: AbstractControl): ValidationErrors | null;
144
+ protected _formatValue(): void;
145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxInputTimePicker, never>;
146
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxInputTimePicker, "[ngxInputTimePicker]", ["ngxInputTimePicker"], { "openOnCLick": { "alias": "openOnCLick"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "amOrPm": { "alias": "amOrPm"; "required": false; "isSignal": true; }; }, { "change": "change"; "amOrPm": "amOrPmChange"; }, never, never, true, never>;
147
+ }
148
+
149
+ export { NgxInputTimePicker, NgxInputTimePickerComponent };
150
+ export type { NgxTimePickerMode };