ngx-kit 6.0.1 → 6.1.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/angle-selector/README.md +11 -11
- package/box-shadow/README.md +10 -10
- package/color-picker/README.md +20 -23
- package/data-table/README.md +34 -41
- package/date-picker/README.md +21 -26
- package/dialog/README.md +31 -33
- package/drawer-menu/README.md +51 -50
- package/dropzone/README.md +395 -32
- package/fesm2022/ngx-kit-box-shadow.mjs +2 -2
- package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
- package/fesm2022/ngx-kit-color-picker.mjs +2 -2
- package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-data-table.mjs +68 -26
- package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
- package/fesm2022/ngx-kit-dropzone.mjs +274 -29
- package/fesm2022/ngx-kit-dropzone.mjs.map +1 -1
- package/fesm2022/ngx-kit-form-field.mjs +129 -64
- package/fesm2022/ngx-kit-form-field.mjs.map +1 -1
- package/fesm2022/ngx-kit-gallery.mjs +2 -2
- package/fesm2022/ngx-kit-gallery.mjs.map +1 -1
- package/fesm2022/ngx-kit-gradient-picker.mjs +2 -2
- package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-image-editor.mjs +33 -10
- package/fesm2022/ngx-kit-image-editor.mjs.map +1 -1
- package/fesm2022/ngx-kit-message.mjs +5 -0
- package/fesm2022/ngx-kit-message.mjs.map +1 -1
- package/fesm2022/ngx-kit-time-picker.mjs +17 -4
- package/fesm2022/ngx-kit-time-picker.mjs.map +1 -1
- package/gallery/README.md +29 -29
- package/gradient-picker/README.md +16 -16
- package/image-editor/README.md +19 -19
- package/menu/README.md +27 -27
- package/message/README.md +34 -34
- package/notify/README.md +25 -23
- package/package.json +1 -1
- package/shared/README.md +32 -32
- package/time-picker/README.md +95 -0
- package/types/ngx-kit-data-table.d.ts +25 -5
- package/types/ngx-kit-dropzone.d.ts +129 -18
- package/types/ngx-kit-form-field.d.ts +65 -27
- package/types/ngx-kit-image-editor.d.ts +23 -3
- package/types/ngx-kit-time-picker.d.ts +19 -14
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# ngx-kit/time-picker
|
|
2
|
+
|
|
3
|
+
An analog clock time picker (MUI-style), usable either inline or as a popup attached to a text input, with 12h/24h format support and a configurable minute step.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install ngx-kit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Setup (optional)
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// app.config.ts
|
|
15
|
+
import { provideTimePicker } from 'ngx-kit/time-picker';
|
|
16
|
+
|
|
17
|
+
export const appConfig: ApplicationConfig = {
|
|
18
|
+
providers: [
|
|
19
|
+
provideTimePicker({
|
|
20
|
+
format: '24',
|
|
21
|
+
minuteStep: 5,
|
|
22
|
+
confirmButtonText: 'Done',
|
|
23
|
+
}),
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`provideTimePicker` only needs the fields you want to override — everything else falls back to the defaults (`confirmButtonText: 'Ok'`, `cancelButtonText: 'Cancel'`, `amText: 'AM'`, `pmText: 'PM'`, `format: '12'`, `minuteStep: 1`, `autoSwitchToMinute: true`).
|
|
29
|
+
|
|
30
|
+
## Usage — popup attached to an input
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<input
|
|
34
|
+
type="text"
|
|
35
|
+
formControlName="time"
|
|
36
|
+
ngxInputTimePicker
|
|
37
|
+
#dp="ngxInputTimePicker"
|
|
38
|
+
/>
|
|
39
|
+
<button (click)="dp.toggle()">Open</button>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`[ngxInputTimePicker]` is a full `ControlValueAccessor` + `Validator`, so it works with `ngModel`/`formControl`/`formControlName`. The value is always a string in `HH:MM` (24h) form, e.g. `'14:35'`.
|
|
43
|
+
|
|
44
|
+
If the typed text isn't a valid time, the control gets a `{ invalid: true }` error (in addition to whatever built-in validators like `Validators.required` you add yourself):
|
|
45
|
+
|
|
46
|
+
```html
|
|
47
|
+
@if (form.get('time')?.hasError('invalid')) {
|
|
48
|
+
<div class="text-danger">Invalid time</div>
|
|
49
|
+
}
|
|
50
|
+
@if (form.get('time')?.hasError('required')) {
|
|
51
|
+
<div class="text-danger">Time is required</div>
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Usage — inline (always visible)
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<ngx-time-picker format="24" [(value)]="time" (change)="onTimeChange($event)"></ngx-time-picker>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## API
|
|
62
|
+
|
|
63
|
+
### `[ngxInputTimePicker]`
|
|
64
|
+
|
|
65
|
+
| Input | Type | Default | Description |
|
|
66
|
+
| --- | --- | --- | --- |
|
|
67
|
+
| `openOnCLick` | `boolean` | `true` | Open the popup when the input itself is clicked |
|
|
68
|
+
| `format` | `'12' \| '24'` | from config | |
|
|
69
|
+
|
|
70
|
+
| Output | Type | Description |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| `change` | `EventEmitter<string \| null>` | Emitted when the user confirms a time |
|
|
73
|
+
|
|
74
|
+
| Member | Description |
|
|
75
|
+
| --- | --- |
|
|
76
|
+
| `toggle()` | Opens the popup if closed, closes it if open |
|
|
77
|
+
|
|
78
|
+
### `<ngx-time-picker>`
|
|
79
|
+
|
|
80
|
+
| Input | Type | Default | Description |
|
|
81
|
+
| --- | --- | --- | --- |
|
|
82
|
+
| `value` (model, two-way) | `string` | `'12:00'` | Bind with `[(value)]` |
|
|
83
|
+
| `format` | `'12' \| '24'` | from config | |
|
|
84
|
+
| `minuteStep` | `number` | from config | |
|
|
85
|
+
| `disabled` | `boolean` | `false` | |
|
|
86
|
+
| `autoSwitchToMinute` | `boolean` | from config | Switch to minute-selection mode right after picking the hour |
|
|
87
|
+
|
|
88
|
+
| Output | Type | Description |
|
|
89
|
+
| --- | --- | --- |
|
|
90
|
+
| `change` | `EventEmitter<string \| null>` | Emitted when "OK" is pressed |
|
|
91
|
+
| `cancel` | `EventEmitter<void>` | Emitted when "Cancel" is pressed |
|
|
92
|
+
|
|
93
|
+
## Dark mode and RTL
|
|
94
|
+
|
|
95
|
+
Supported automatically.
|
|
@@ -21,7 +21,8 @@ interface PageState {
|
|
|
21
21
|
}
|
|
22
22
|
/** هر بار سرور باید صفحهی جدید را (در حالت lazy) واکشی کند، امیت میشود. */
|
|
23
23
|
interface LazyLoadEvent<T> extends PageState {
|
|
24
|
-
sorts
|
|
24
|
+
sorts?: SortMeta<T>[];
|
|
25
|
+
sorting?: string;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
interface PaginationLabel {
|
|
@@ -59,7 +60,7 @@ type RendererExtraInputs<C extends Type<any>> = {
|
|
|
59
60
|
[K in keyof InstanceOf<C> as K extends 'value' | 'row' | 'field' ? never : InstanceOf<C>[K] extends () => any ? K : never]?: UnwrapSignal<InstanceOf<C>[K]>;
|
|
60
61
|
};
|
|
61
62
|
type ColumnAlign = 'start' | 'center' | 'end';
|
|
62
|
-
type TableCellFormatter<T extends object = object> = (value:
|
|
63
|
+
type TableCellFormatter<T extends object = object> = (value: any, row: T, field: TableFieldBase<T>) => any;
|
|
63
64
|
interface CellTemplateContext<T extends object> {
|
|
64
65
|
$implicit: T;
|
|
65
66
|
row: T;
|
|
@@ -71,7 +72,14 @@ interface CellTemplateContext<T extends object> {
|
|
|
71
72
|
interface TableFieldBase<T extends object> {
|
|
72
73
|
column: Extract<keyof T, string>;
|
|
73
74
|
title: string;
|
|
74
|
-
|
|
75
|
+
/**
|
|
76
|
+
* عرضِ این ستون. عدد یعنی پیکسل (`160` = `160px`)؛ رشته یعنی هر مقدار
|
|
77
|
+
* معتبرِ CSS length برای flex-basis (`'20%'`, `'12rem'`, ...). اگه اصلاً
|
|
78
|
+
* ندید، این ستون flex میشه (`flex: 1 1 0`) و فضای باقیموندهی جدول رو پر
|
|
79
|
+
* میکنه — دقیقاً برخلافِ ستونهایی که width دارن (که `flex: 0 0 <width>`
|
|
80
|
+
* میگیرن و ثابت میمونن).
|
|
81
|
+
*/
|
|
82
|
+
width?: number | string;
|
|
75
83
|
minWidth?: number;
|
|
76
84
|
maxWidth?: number;
|
|
77
85
|
resizable?: boolean;
|
|
@@ -144,6 +152,7 @@ type ResolvedTableOptions = Required<Omit<NgxTableOptions, 'labels' | 'renderers
|
|
|
144
152
|
labels: Required<TableLabels>;
|
|
145
153
|
renderers: RendererRegistry;
|
|
146
154
|
formatters: Readonly<Record<string, TableCellFormatter<any>>>;
|
|
155
|
+
lazy: boolean;
|
|
147
156
|
};
|
|
148
157
|
|
|
149
158
|
declare const NGX_TABLE_CONFIG_DEFAULT: ResolvedTableOptions;
|
|
@@ -210,6 +219,7 @@ declare class ColumnResize {
|
|
|
210
219
|
readonly direction: _angular_core.InputSignal<"ltr" | "rtl">;
|
|
211
220
|
readonly resizing: _angular_core.OutputEmitterRef<number>;
|
|
212
221
|
readonly resizeEnd: _angular_core.OutputEmitterRef<number>;
|
|
222
|
+
private readonly elementRef;
|
|
213
223
|
private dragging;
|
|
214
224
|
private startX;
|
|
215
225
|
private baseWidth;
|
|
@@ -248,9 +258,12 @@ declare class NgxTable<T extends object> implements OnInit, AfterContentInit {
|
|
|
248
258
|
readonly operationWidth: _angular_core.InputSignal<number>;
|
|
249
259
|
readonly numWidth: _angular_core.InputSignal<number>;
|
|
250
260
|
readonly pageSize: _angular_core.InputSignal<number>;
|
|
261
|
+
readonly page: _angular_core.InputSignal<number>;
|
|
262
|
+
readonly pageChange: _angular_core.OutputEmitterRef<number>;
|
|
251
263
|
readonly loading: _angular_core.InputSignal<boolean>;
|
|
252
264
|
readonly multiSort: _angular_core.InputSignal<boolean | undefined>;
|
|
253
265
|
readonly lazy: _angular_core.InputSignal<boolean>;
|
|
266
|
+
readonly resizable: _angular_core.InputSignal<boolean>;
|
|
254
267
|
/** پیشفرض بر اساس ایندکس؛ برای جلوگیری از گمشدن state سطرها هنگام سورت،
|
|
255
268
|
* یک شناسهی یکتا بدهید: [trackBy]="(i, row) => row.id" */
|
|
256
269
|
readonly trackBy: _angular_core.InputSignal<(index: number, row: T) => unknown>;
|
|
@@ -260,7 +273,7 @@ declare class NgxTable<T extends object> implements OnInit, AfterContentInit {
|
|
|
260
273
|
field: string;
|
|
261
274
|
width: number;
|
|
262
275
|
}>;
|
|
263
|
-
protected readonly
|
|
276
|
+
protected readonly pageIndex: _angular_core.WritableSignal<number>;
|
|
264
277
|
protected readonly pageSizeS: _angular_core.WritableSignal<number>;
|
|
265
278
|
protected readonly sorts: _angular_core.WritableSignal<SortMeta<T>[]>;
|
|
266
279
|
protected readonly widths: _angular_core.WritableSignal<Record<string, number>>;
|
|
@@ -287,6 +300,13 @@ declare class NgxTable<T extends object> implements OnInit, AfterContentInit {
|
|
|
287
300
|
protected onPaginate(event: PageEvent): void;
|
|
288
301
|
private emitLazyIfNeeded;
|
|
289
302
|
protected columnWidth(column: string): number;
|
|
303
|
+
/**
|
|
304
|
+
* مقدار CSS `flex` واقعیِ این ستون:
|
|
305
|
+
* - اگه دستی ریسایز شده یا width عددی داره → `0 0 <px>` (ثابت، بدون رشد/کوچکشدن)
|
|
306
|
+
* - اگه width رشتهای داره (مثلاً '20%') → `0 0 <رشته>` (ثابت، هر واحد CSS معتبری)
|
|
307
|
+
* - اگه اصلاً width نداره → `1 1 0` (رشد میکنه تا فضای باقیموندهی جدول رو پر کنه)
|
|
308
|
+
*/
|
|
309
|
+
protected columnFlex(field: TableField<T, any>): string;
|
|
290
310
|
protected columnMin(field: TableField<T, any>): number;
|
|
291
311
|
protected columnMax(field: TableField<T, any>): number;
|
|
292
312
|
protected isResizable(field: TableField<T, any>): boolean;
|
|
@@ -302,7 +322,7 @@ declare class NgxTable<T extends object> implements OnInit, AfterContentInit {
|
|
|
302
322
|
* شود (مثلاً بعد از عوضشدن صفحه)، entry آن هم خودکار پاک میشود. */
|
|
303
323
|
protected getRendererInputs(row: T, field: TableField<T, any>): Record<string, unknown>;
|
|
304
324
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxTable<any>, never>;
|
|
305
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxTable<any>, "ngx-table", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": true; "isSignal": true; }; "showRecordNumber": { "alias": "showRecordNumber"; "required": false; "isSignal": true; }; "operations": { "alias": "operations"; "required": false; "isSignal": true; }; "operationWidth": { "alias": "operationWidth"; "required": false; "isSignal": true; }; "numWidth": { "alias": "numWidth"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "lazyLoad": "lazyLoad"; "sortChange": "sortChange"; "columnResize": "columnResize"; }, ["cellTemplates"], never, true, never>;
|
|
325
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxTable<any>, "ngx-table", never, { "fields": { "alias": "fields"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "totalRecords": { "alias": "totalRecords"; "required": true; "isSignal": true; }; "showRecordNumber": { "alias": "showRecordNumber"; "required": false; "isSignal": true; }; "operations": { "alias": "operations"; "required": false; "isSignal": true; }; "operationWidth": { "alias": "operationWidth"; "required": false; "isSignal": true; }; "numWidth": { "alias": "numWidth"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "lazyLoad": "lazyLoad"; "sortChange": "sortChange"; "columnResize": "columnResize"; }, ["cellTemplates"], never, true, never>;
|
|
306
326
|
}
|
|
307
327
|
|
|
308
328
|
declare class NgxPagination {
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { OnDestroy, InjectionToken } from '@angular/core';
|
|
3
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
type NgxDropzoneFileStatus = 'pending' | 'accepted' | 'uploading' | 'uploaded' | 'error' | 'canceled';
|
|
7
|
+
interface NgxDropzoneFile<TResponse = unknown> {
|
|
5
8
|
/** شناسهی یکتا برای track کردن توی @for و امکان حذف تکی */
|
|
6
9
|
id: string;
|
|
7
10
|
file: File;
|
|
8
11
|
/** فقط برای فایلهای تصویری پر میشه (object URL) */
|
|
9
12
|
previewUrl?: string;
|
|
10
|
-
status:
|
|
13
|
+
status: NgxDropzoneFileStatus;
|
|
14
|
+
/** Upload progress, from 0 to 100. */
|
|
15
|
+
progress: number;
|
|
16
|
+
/** Response returned by the upload adapter. */
|
|
17
|
+
response?: TResponse;
|
|
18
|
+
/** Upload error, if the request failed. */
|
|
19
|
+
error?: unknown;
|
|
11
20
|
/** در صورت رد شدن، دلیلش */
|
|
12
21
|
rejectionReason?: NgxDropzoneRejectionReason;
|
|
13
22
|
}
|
|
@@ -17,19 +26,57 @@ interface NgxDropzoneRejectedFile {
|
|
|
17
26
|
reason: NgxDropzoneRejectionReason;
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
interface NgxDropzoneUploadRequest {
|
|
30
|
+
/** Target endpoint. */
|
|
31
|
+
url: string;
|
|
32
|
+
/** Multipart form field name used for the file. */
|
|
33
|
+
alias: string;
|
|
34
|
+
file: File;
|
|
35
|
+
/** Optional additional multipart fields. */
|
|
36
|
+
data?: Record<string, string | Blob | number | boolean>;
|
|
37
|
+
/** Optional request headers. */
|
|
38
|
+
headers?: HttpHeaders | Record<string, string | string[]>;
|
|
39
|
+
/** Send cookies/auth information for cross-origin requests. */
|
|
40
|
+
withCredentials?: boolean;
|
|
41
|
+
}
|
|
42
|
+
type NgxDropzoneUploadEvent<TResponse = unknown> = {
|
|
43
|
+
type: 'progress';
|
|
44
|
+
loaded: number;
|
|
45
|
+
total?: number;
|
|
46
|
+
percent: number;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'response';
|
|
49
|
+
response: TResponse;
|
|
50
|
+
status: number;
|
|
51
|
+
headers?: HttpHeaders;
|
|
52
|
+
};
|
|
20
53
|
/**
|
|
21
|
-
*
|
|
22
|
-
* دیگهای، حتی shared)، signal-based و OnPush.
|
|
54
|
+
* Upload adapter used by ngx-dropzone.
|
|
23
55
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
56
|
+
* Implement this interface when the default HttpClient implementation is not
|
|
57
|
+
* suitable (for example, when the host application uses Axios, fetch, tus,
|
|
58
|
+
* S3 multipart upload, etc.).
|
|
59
|
+
*/
|
|
60
|
+
interface NgxDropzoneUploadService {
|
|
61
|
+
upload<TResponse = unknown>(request: NgxDropzoneUploadRequest): Observable<NgxDropzoneUploadEvent<TResponse>>;
|
|
62
|
+
}
|
|
63
|
+
interface NgxDropzoneUploadProgressEvent {
|
|
64
|
+
item: NgxDropzoneFileLike;
|
|
65
|
+
loaded: number;
|
|
66
|
+
total?: number;
|
|
67
|
+
percent: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Deliberately small structural type so consumers do not have to depend on a
|
|
71
|
+
* concrete response type.
|
|
32
72
|
*/
|
|
73
|
+
interface NgxDropzoneFileLike {
|
|
74
|
+
id: string;
|
|
75
|
+
file: File;
|
|
76
|
+
progress: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
type NgxDropzoneUploadMode = 'all' | 'single';
|
|
33
80
|
declare class NgxDropzoneComponent implements OnDestroy {
|
|
34
81
|
/** الگوی accept مثل input[type=file]: "image/*", ".pdf,.docx" و ... */
|
|
35
82
|
accept: _angular_core.InputSignal<string>;
|
|
@@ -41,16 +88,55 @@ declare class NgxDropzoneComponent implements OnDestroy {
|
|
|
41
88
|
disabled: _angular_core.InputSignal<boolean>;
|
|
42
89
|
/** نمایش لیست/پیشنمایش فایلهای انتخابشده داخل خودِ کامپوننت */
|
|
43
90
|
showFileList: _angular_core.InputSignal<boolean>;
|
|
91
|
+
/** Upload endpoint. */
|
|
92
|
+
uploadUrl: _angular_core.InputSignal<string>;
|
|
93
|
+
/** Multipart form-data field name. */
|
|
94
|
+
uploadAlias: _angular_core.InputSignal<string>;
|
|
95
|
+
/** Automatically enqueue newly accepted files for upload. */
|
|
96
|
+
autoUpload: _angular_core.InputSignal<boolean>;
|
|
97
|
+
/** Maximum number of simultaneous uploads. */
|
|
98
|
+
maxParallel: _angular_core.InputSignal<number>;
|
|
99
|
+
/**
|
|
100
|
+
* Manual upload behavior:
|
|
101
|
+
* - all: one "Upload all" action uploads all pending files.
|
|
102
|
+
* - single: every pending row gets its own Upload button.
|
|
103
|
+
*/
|
|
104
|
+
uploadMode: _angular_core.InputSignal<NgxDropzoneUploadMode>;
|
|
105
|
+
/** Extra multipart form fields sent with every file. */
|
|
106
|
+
uploadData: _angular_core.InputSignal<Record<string, string | number | boolean | Blob>>;
|
|
107
|
+
/** Optional request headers. */
|
|
108
|
+
uploadHeaders: _angular_core.InputSignal<Record<string, string | string[]>>;
|
|
109
|
+
/** Send credentials/cookies with the upload request. */
|
|
110
|
+
uploadWithCredentials: _angular_core.InputSignal<boolean>;
|
|
44
111
|
filesAdded: _angular_core.OutputEmitterRef<File[]>;
|
|
45
112
|
filesRejected: _angular_core.OutputEmitterRef<NgxDropzoneRejectedFile[]>;
|
|
46
|
-
/** کل لیست فعلی (بعد از هر تغییر) — برای binding راحتتر */
|
|
47
113
|
filesChange: _angular_core.OutputEmitterRef<File[]>;
|
|
48
|
-
|
|
114
|
+
/** Emitted when an individual upload starts. */
|
|
115
|
+
uploadStarted: _angular_core.OutputEmitterRef<NgxDropzoneFile<unknown>>;
|
|
116
|
+
/** Emitted for every upload progress update. */
|
|
117
|
+
uploadProgress: _angular_core.OutputEmitterRef<NgxDropzoneUploadProgressEvent>;
|
|
118
|
+
/** Emitted after a file is successfully uploaded. */
|
|
119
|
+
uploadSuccess: _angular_core.OutputEmitterRef<NgxDropzoneFile<unknown>>;
|
|
120
|
+
/** Emitted when an upload fails. */
|
|
121
|
+
uploadError: _angular_core.OutputEmitterRef<{
|
|
122
|
+
item: NgxDropzoneFile;
|
|
123
|
+
error: unknown;
|
|
124
|
+
}>;
|
|
125
|
+
protected readonly files: _angular_core.WritableSignal<NgxDropzoneFile<unknown>[]>;
|
|
49
126
|
protected readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
50
127
|
private dragCounter;
|
|
128
|
+
private readonly uploadService;
|
|
51
129
|
private readonly fileInput;
|
|
130
|
+
private readonly uploadSubscriptions;
|
|
131
|
+
private readonly uploadQueue;
|
|
132
|
+
private activeUploads;
|
|
133
|
+
private readonly activeUploadIds;
|
|
134
|
+
protected readonly pendingCount: _angular_core.Signal<number>;
|
|
135
|
+
protected readonly hasUploadConfiguration: _angular_core.Signal<boolean>;
|
|
52
136
|
protected readonly hint: _angular_core.Signal<string>;
|
|
53
137
|
protected formatSize(bytes: number): string;
|
|
138
|
+
protected isPending(item: NgxDropzoneFile): boolean;
|
|
139
|
+
protected trackById(_index: number, item: NgxDropzoneFile): string;
|
|
54
140
|
ngOnDestroy(): void;
|
|
55
141
|
protected onDragEnter(ev: DragEvent): void;
|
|
56
142
|
protected onDragOver(ev: DragEvent): void;
|
|
@@ -60,12 +146,37 @@ declare class NgxDropzoneComponent implements OnDestroy {
|
|
|
60
146
|
protected onKeydown(ev: KeyboardEvent): void;
|
|
61
147
|
protected onFileInputChange(ev: Event): void;
|
|
62
148
|
protected removeFile(id: string): void;
|
|
149
|
+
protected uploadAll(): void;
|
|
150
|
+
protected uploadSingle(id: string): void;
|
|
151
|
+
protected retryUpload(id: string): void;
|
|
63
152
|
private handleIncomingFiles;
|
|
153
|
+
private enqueueUploads;
|
|
154
|
+
private pumpQueue;
|
|
155
|
+
private startUpload;
|
|
156
|
+
private markUploadError;
|
|
157
|
+
private finishUpload;
|
|
158
|
+
private updateFile;
|
|
64
159
|
private emitCurrentFiles;
|
|
65
160
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDropzoneComponent, never>;
|
|
66
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDropzoneComponent, "ngx-dropzone", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showFileList": { "alias": "showFileList"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "filesRejected": "filesRejected"; "filesChange": "filesChange"; }, never, ["[dropzone-icon]", "*"], true, never>;
|
|
161
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDropzoneComponent, "ngx-dropzone", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showFileList": { "alias": "showFileList"; "required": false; "isSignal": true; }; "uploadUrl": { "alias": "uploadUrl"; "required": false; "isSignal": true; }; "uploadAlias": { "alias": "uploadAlias"; "required": false; "isSignal": true; }; "autoUpload": { "alias": "autoUpload"; "required": false; "isSignal": true; }; "maxParallel": { "alias": "maxParallel"; "required": false; "isSignal": true; }; "uploadMode": { "alias": "uploadMode"; "required": false; "isSignal": true; }; "uploadData": { "alias": "uploadData"; "required": false; "isSignal": true; }; "uploadHeaders": { "alias": "uploadHeaders"; "required": false; "isSignal": true; }; "uploadWithCredentials": { "alias": "uploadWithCredentials"; "required": false; "isSignal": true; }; }, { "filesAdded": "filesAdded"; "filesRejected": "filesRejected"; "filesChange": "filesChange"; "uploadStarted": "uploadStarted"; "uploadProgress": "uploadProgress"; "uploadSuccess": "uploadSuccess"; "uploadError": "uploadError"; }, never, ["[dropzone-icon]", "*"], true, never>;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
declare class NgxDropzoneHttpUploadService implements NgxDropzoneUploadService {
|
|
165
|
+
private readonly http;
|
|
166
|
+
upload<TResponse = unknown>(request: NgxDropzoneUploadRequest): Observable<NgxDropzoneUploadEvent<TResponse>>;
|
|
167
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDropzoneHttpUploadService, never>;
|
|
168
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NgxDropzoneHttpUploadService>;
|
|
67
169
|
}
|
|
68
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Upload adapter used by ngx-dropzone.
|
|
173
|
+
*
|
|
174
|
+
* Default: Angular HttpClient.
|
|
175
|
+
* Override this token at application/component level to use Axios or any
|
|
176
|
+
* other upload implementation.
|
|
177
|
+
*/
|
|
178
|
+
declare const NGX_DROPZONE_UPLOAD_SERVICE: InjectionToken<NgxDropzoneUploadService>;
|
|
179
|
+
|
|
69
180
|
/**
|
|
70
181
|
* چک میکنه یه فایل با pattern رشتهای accept (مثل input[type=file])
|
|
71
182
|
* مطابقت داره یا نه. پشتیبانی میشه از:
|
|
@@ -80,5 +191,5 @@ declare function formatBytes(bytes: number): string;
|
|
|
80
191
|
/** استخراج فایلهای واقعی از یک DataTransfer، شامل پیمایش بازگشتیِ پوشهها (وقتی مرورگر پشتیبانی کنه) */
|
|
81
192
|
declare function extractFilesFromDataTransfer(dataTransfer: DataTransfer): Promise<File[]>;
|
|
82
193
|
|
|
83
|
-
export { NgxDropzoneComponent, extractFilesFromDataTransfer, formatBytes, matchesAccept };
|
|
84
|
-
export type { NgxDropzoneFile, NgxDropzoneRejectedFile, NgxDropzoneRejectionReason };
|
|
194
|
+
export { NGX_DROPZONE_UPLOAD_SERVICE, NgxDropzoneComponent, NgxDropzoneHttpUploadService, extractFilesFromDataTransfer, formatBytes, matchesAccept };
|
|
195
|
+
export type { NgxDropzoneFile, NgxDropzoneFileLike, NgxDropzoneFileStatus, NgxDropzoneRejectedFile, NgxDropzoneRejectionReason, NgxDropzoneUploadEvent, NgxDropzoneUploadMode, NgxDropzoneUploadProgressEvent, NgxDropzoneUploadRequest, NgxDropzoneUploadService };
|
|
@@ -1,31 +1,69 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { AfterViewInit, ElementRef, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as ngx_kit_form_field from 'ngx-kit/form-field';
|
|
4
4
|
|
|
5
5
|
declare class NgxFormField {
|
|
6
|
-
readonly
|
|
7
|
-
readonly label:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
readonly
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
readonly
|
|
18
|
-
readonly
|
|
19
|
-
readonly
|
|
20
|
-
readonly
|
|
21
|
-
readonly
|
|
22
|
-
readonly
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
6
|
+
protected readonly ref: ngx_kit_form_field.MgxFormFieldRef;
|
|
7
|
+
readonly label: i0.InputSignal<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Forces the label to float even when the control is empty.
|
|
10
|
+
* Similar to Material's floatLabel behavior.
|
|
11
|
+
*/
|
|
12
|
+
readonly float: i0.InputSignal<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Explicit state overrides are useful when the projected control
|
|
15
|
+
* is managed by Angular Forms.
|
|
16
|
+
*/
|
|
17
|
+
readonly invalid: i0.InputSignal<boolean>;
|
|
18
|
+
readonly required: i0.InputSignal<boolean>;
|
|
19
|
+
readonly disabled: i0.InputSignal<boolean>;
|
|
20
|
+
readonly readonly: i0.InputSignal<boolean>;
|
|
21
|
+
readonly hintVisible: i0.Signal<boolean>;
|
|
22
|
+
readonly errorVisible: i0.Signal<boolean>;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxFormField, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgxFormField, "ngx-form-field", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "float": { "alias": "float"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, ["[ngxPrefix],ngx-prefix", "[ngxInput],ngx-input", "[ngxSuffix],ngx-suffix", "[ngxHint],ngx-hint", "[ngxError],ngx-error"], true, never>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
declare class NgxInput implements AfterViewInit {
|
|
28
|
+
private readonly el;
|
|
29
|
+
private readonly ref;
|
|
30
|
+
readonly hasValue: i0.WritableSignal<boolean>;
|
|
31
|
+
ngAfterViewInit(): void;
|
|
32
|
+
protected onInput(): void;
|
|
33
|
+
protected onChange(): void;
|
|
34
|
+
protected onBlur(): void;
|
|
35
|
+
private syncValue;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxInput, never>;
|
|
37
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxInput, "[ngxInput],ngx-input", never, {}, {}, never, never, true, never>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class NgxError {
|
|
41
|
+
readonly el: ElementRef<HTMLElement>;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxError, never>;
|
|
43
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxError, "[ngxError],ngx-error", never, {}, {}, never, never, true, never>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
declare class NgxHint {
|
|
47
|
+
readonly el: ElementRef<HTMLElement>;
|
|
48
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxHint, never>;
|
|
49
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxHint, "[ngxHint],ngx-hint", never, {}, {}, never, never, true, never>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare class NgxPrefix {
|
|
53
|
+
readonly el: ElementRef<HTMLElement>;
|
|
54
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxPrefix, never>;
|
|
55
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxPrefix, "[ngxPrefix],ngx-prefix", never, {}, {}, never, never, true, never>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
declare class NgxSuffix {
|
|
59
|
+
readonly el: ElementRef<HTMLElement>;
|
|
60
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxSuffix, never>;
|
|
61
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxSuffix, "[ngxSuffix],ngx-suffix", never, {}, {}, never, never, true, never>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare const MX_FORM_FIELD: InjectionToken<MgxFormFieldRef>;
|
|
65
|
+
declare class MgxFormFieldRef {
|
|
66
|
+
readonly value: i0.WritableSignal<string>;
|
|
29
67
|
}
|
|
30
68
|
|
|
31
|
-
export { NgxFormField };
|
|
69
|
+
export { MX_FORM_FIELD, MgxFormFieldRef, NgxError, NgxFormField, NgxHint, NgxInput, NgxPrefix, NgxSuffix };
|
|
@@ -53,6 +53,24 @@ declare class NgxPointerDragDirective {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
type Corner = 'nw' | 'ne' | 'sw' | 'se';
|
|
56
|
+
|
|
57
|
+
declare class NgxImageEditorLocalization {
|
|
58
|
+
LoadingImage: string;
|
|
59
|
+
Rotation: string;
|
|
60
|
+
Brightness: string;
|
|
61
|
+
Contrast: string;
|
|
62
|
+
Saturation: string;
|
|
63
|
+
Filter: string;
|
|
64
|
+
None: string;
|
|
65
|
+
Grayscale: string;
|
|
66
|
+
Sepia: string;
|
|
67
|
+
Invert: string;
|
|
68
|
+
Cartoon: string;
|
|
69
|
+
Cancel: string;
|
|
70
|
+
Save: string;
|
|
71
|
+
Saving: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
56
74
|
/**
|
|
57
75
|
* ویرایشگر تصویر: کراپ + چرخش + روشنایی/کنتراست/اشباع + فیلترهای آماده
|
|
58
76
|
* (سیاهوسفید، سپیا، معکوس، کارتونی) + فشردهسازی خروجی. کاملاً روی Canvas
|
|
@@ -65,7 +83,7 @@ type Corner = 'nw' | 'ne' | 'sw' | 'se';
|
|
|
65
83
|
* save()، رندر نهایی از روی تصویر اصلیِ کامل انجام میشه.
|
|
66
84
|
*/
|
|
67
85
|
declare class NgxImageEditorComponent {
|
|
68
|
-
source: _angular_core.InputSignal<string |
|
|
86
|
+
source: _angular_core.InputSignal<string | File | Blob | null>;
|
|
69
87
|
/** قفل نسبتِ کراپ (مثلاً ۱ برای آواتار مربعی)؛ undefined یعنی آزاد */
|
|
70
88
|
aspectRatio: _angular_core.InputSignal<number | undefined>;
|
|
71
89
|
outputMaxWidth: _angular_core.InputSignal<number | undefined>;
|
|
@@ -73,6 +91,9 @@ declare class NgxImageEditorComponent {
|
|
|
73
91
|
outputType: _angular_core.InputSignal<"image/jpeg" | "image/png" | "image/webp">;
|
|
74
92
|
/** حداکثر عرض نمایشِ ناحیهی کراپ روی صفحه (پیکسل) */
|
|
75
93
|
displayMaxWidth: _angular_core.InputSignal<number>;
|
|
94
|
+
quality: _angular_core.InputSignal<number>;
|
|
95
|
+
defaultLocalization: NgxImageEditorLocalization;
|
|
96
|
+
localize: _angular_core.InputSignal<NgxImageEditorLocalization>;
|
|
76
97
|
saved: _angular_core.OutputEmitterRef<NgxImageEditorResult>;
|
|
77
98
|
cancelled: _angular_core.OutputEmitterRef<void>;
|
|
78
99
|
protected readonly loading: _angular_core.WritableSignal<boolean>;
|
|
@@ -85,7 +106,6 @@ declare class NgxImageEditorComponent {
|
|
|
85
106
|
protected readonly contrast: _angular_core.WritableSignal<number>;
|
|
86
107
|
protected readonly saturation: _angular_core.WritableSignal<number>;
|
|
87
108
|
protected readonly filterPreset: _angular_core.WritableSignal<NgxImageFilterPreset>;
|
|
88
|
-
protected readonly quality: _angular_core.WritableSignal<number>;
|
|
89
109
|
protected readonly crop: _angular_core.WritableSignal<NgxCropRect>;
|
|
90
110
|
protected readonly adjustments: _angular_core.Signal<NgxImageEditorAdjustments>;
|
|
91
111
|
/** تصویرِ (کوچیکشدهیِ) چرخیده — پایهی نمایش صحنهی کراپ */
|
|
@@ -117,7 +137,7 @@ declare class NgxImageEditorComponent {
|
|
|
117
137
|
protected cancel(): void;
|
|
118
138
|
save(): Promise<void>;
|
|
119
139
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxImageEditorComponent, never>;
|
|
120
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxImageEditorComponent, "ngx-image-editor", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "outputMaxWidth": { "alias": "outputMaxWidth"; "required": false; "isSignal": true; }; "outputMaxHeight": { "alias": "outputMaxHeight"; "required": false; "isSignal": true; }; "outputType": { "alias": "outputType"; "required": false; "isSignal": true; }; "displayMaxWidth": { "alias": "displayMaxWidth"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
140
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxImageEditorComponent, "ngx-image-editor", never, { "source": { "alias": "source"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "outputMaxWidth": { "alias": "outputMaxWidth"; "required": false; "isSignal": true; }; "outputMaxHeight": { "alias": "outputMaxHeight"; "required": false; "isSignal": true; }; "outputType": { "alias": "outputType"; "required": false; "isSignal": true; }; "displayMaxWidth": { "alias": "displayMaxWidth"; "required": false; "isSignal": true; }; "quality": { "alias": "quality"; "required": false; "isSignal": true; }; "localize": { "alias": "localize"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, true, never>;
|
|
121
141
|
}
|
|
122
142
|
|
|
123
143
|
/** یه File/Blob/data-URL/URL رو به یک HTMLImageElement بارگذاریشده تبدیل میکنه */
|
|
@@ -1,25 +1,16 @@
|
|
|
1
|
+
import * as ngx_kit_time_picker from 'ngx-kit/time-picker';
|
|
1
2
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnInit, ElementRef } from '@angular/core';
|
|
3
|
+
import { OnInit, ElementRef, InjectionToken, Provider } from '@angular/core';
|
|
3
4
|
import { BrowserService } from 'ngx-kit/shared';
|
|
4
5
|
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
5
6
|
|
|
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
7
|
declare type NgxTimePickerMode = 'hour' | 'minute';
|
|
17
8
|
|
|
18
9
|
declare class NgxInputTimePickerComponent implements ControlValueAccessor, Validator, OnInit {
|
|
19
10
|
protected readonly browserService: BrowserService;
|
|
20
11
|
readonly change: _angular_core.OutputEmitterRef<string | null>;
|
|
21
12
|
readonly cancel: _angular_core.OutputEmitterRef<void>;
|
|
22
|
-
protected readonly config: NgxTimePickerConfig;
|
|
13
|
+
protected readonly config: ngx_kit_time_picker.NgxTimePickerConfig;
|
|
23
14
|
isDisabled: boolean;
|
|
24
15
|
/**
|
|
25
16
|
* Time value.
|
|
@@ -113,7 +104,7 @@ declare class NgxInputTimePickerComponent implements ControlValueAccessor, Valid
|
|
|
113
104
|
|
|
114
105
|
declare class NgxInputTimePicker implements ControlValueAccessor, Validator {
|
|
115
106
|
private el;
|
|
116
|
-
protected readonly config: NgxTimePickerConfig;
|
|
107
|
+
protected readonly config: ngx_kit_time_picker.NgxTimePickerConfig;
|
|
117
108
|
openOnCLick: _angular_core.InputSignal<boolean>;
|
|
118
109
|
readonly change: _angular_core.OutputEmitterRef<string | null>;
|
|
119
110
|
protected readonly value: _angular_core.WritableSignal<string>;
|
|
@@ -145,5 +136,19 @@ declare class NgxInputTimePicker implements ControlValueAccessor, Validator {
|
|
|
145
136
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxInputTimePicker, "[ngxInputTimePicker]", ["ngxInputTimePicker"], { "openOnCLick": { "alias": "openOnCLick"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, never, true, never>;
|
|
146
137
|
}
|
|
147
138
|
|
|
148
|
-
|
|
139
|
+
declare class NgxTimePickerConfig {
|
|
140
|
+
cancelButtonText: string;
|
|
141
|
+
confirmButtonText: string;
|
|
142
|
+
amText: string;
|
|
143
|
+
pmText: string;
|
|
144
|
+
format: '12' | '24';
|
|
145
|
+
minuteStep: number;
|
|
146
|
+
autoSwitchToMinute: boolean;
|
|
147
|
+
}
|
|
148
|
+
declare const DEFAULT_TIME_PICKER_CONFIG: NgxTimePickerConfig;
|
|
149
|
+
declare const NGX_TIME_PICKER_CONFIG: InjectionToken<NgxTimePickerConfig>;
|
|
150
|
+
|
|
151
|
+
declare function provideTimePicker(config: Partial<NgxTimePickerConfig>): Provider[];
|
|
152
|
+
|
|
153
|
+
export { DEFAULT_TIME_PICKER_CONFIG, NGX_TIME_PICKER_CONFIG, NgxInputTimePicker, NgxInputTimePickerComponent, NgxTimePickerConfig, provideTimePicker };
|
|
149
154
|
export type { NgxTimePickerMode };
|