ngx-kit 6.2.0 → 7.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 (71) hide show
  1. package/README.md +3 -3
  2. package/angle-selector/README.md +34 -34
  3. package/box-shadow/README.md +33 -33
  4. package/color-picker/README.md +52 -49
  5. package/data-table/README.md +120 -113
  6. package/date-picker/README.md +74 -69
  7. package/dialog/README.md +92 -92
  8. package/drag-resize/README.md +55 -0
  9. package/drawer-menu/README.md +125 -77
  10. package/dropzone/README.md +422 -422
  11. package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
  12. package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
  13. package/fesm2022/ngx-kit-box-shadow.mjs +2 -2
  14. package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
  15. package/fesm2022/ngx-kit-color-picker.mjs +265 -73
  16. package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
  17. package/fesm2022/ngx-kit-data-table.mjs +2 -2
  18. package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
  19. package/fesm2022/ngx-kit-date-picker.mjs +11 -11
  20. package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
  21. package/fesm2022/ngx-kit-dialog.mjs +3 -3
  22. package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
  23. package/fesm2022/ngx-kit-drag-resize.mjs +1664 -0
  24. package/fesm2022/ngx-kit-drag-resize.mjs.map +1 -0
  25. package/fesm2022/ngx-kit-drawer-menu.mjs +424 -158
  26. package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -1
  27. package/fesm2022/ngx-kit-dropzone.mjs +2 -2
  28. package/fesm2022/ngx-kit-dropzone.mjs.map +1 -1
  29. package/fesm2022/ngx-kit-form-field.mjs +3 -5
  30. package/fesm2022/ngx-kit-form-field.mjs.map +1 -1
  31. package/fesm2022/ngx-kit-gallery.mjs +2 -2
  32. package/fesm2022/ngx-kit-gallery.mjs.map +1 -1
  33. package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
  34. package/fesm2022/ngx-kit-grid-layout.mjs +927 -0
  35. package/fesm2022/ngx-kit-grid-layout.mjs.map +1 -0
  36. package/fesm2022/ngx-kit-image-editor.mjs +2 -2
  37. package/fesm2022/ngx-kit-image-editor.mjs.map +1 -1
  38. package/fesm2022/ngx-kit-menu.mjs +8 -8
  39. package/fesm2022/ngx-kit-menu.mjs.map +1 -1
  40. package/fesm2022/ngx-kit-message.mjs +2 -2
  41. package/fesm2022/ngx-kit-message.mjs.map +1 -1
  42. package/fesm2022/ngx-kit-notify.mjs +2 -2
  43. package/fesm2022/ngx-kit-notify.mjs.map +1 -1
  44. package/fesm2022/ngx-kit-shared.mjs +54 -3
  45. package/fesm2022/ngx-kit-shared.mjs.map +1 -1
  46. package/fesm2022/ngx-kit-time-picker.mjs +2 -2
  47. package/fesm2022/ngx-kit-time-picker.mjs.map +1 -1
  48. package/fesm2022/ngx-kit-virtual-scroll.mjs +392 -0
  49. package/fesm2022/ngx-kit-virtual-scroll.mjs.map +1 -0
  50. package/fesm2022/ngx-kit-webflow.mjs +709 -0
  51. package/fesm2022/ngx-kit-webflow.mjs.map +1 -0
  52. package/gallery/README.md +71 -71
  53. package/gradient-picker/README.md +41 -41
  54. package/grid-layout/README.md +64 -0
  55. package/image-editor/README.md +12 -12
  56. package/menu/README.md +85 -85
  57. package/message/README.md +70 -70
  58. package/notify/README.md +56 -58
  59. package/package.json +17 -1
  60. package/shared/README.md +117 -117
  61. package/time-picker/README.md +89 -95
  62. package/types/ngx-kit-color-picker.d.ts +72 -16
  63. package/types/ngx-kit-date-picker.d.ts +2 -1
  64. package/types/ngx-kit-drag-resize.d.ts +368 -0
  65. package/types/ngx-kit-drawer-menu.d.ts +148 -88
  66. package/types/ngx-kit-grid-layout.d.ts +310 -0
  67. package/types/ngx-kit-image-editor.d.ts +1 -1
  68. package/types/ngx-kit-shared.d.ts +12 -1
  69. package/types/ngx-kit-virtual-scroll.d.ts +179 -0
  70. package/types/ngx-kit-webflow.d.ts +286 -0
  71. package/virtual-scroll/README.md +199 -0
@@ -1,95 +1,89 @@
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.
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 type="text" formControlName="time" ngxInputTimePicker #dp="ngxInputTimePicker" />
34
+ <button (click)="dp.toggle()">Open</button>
35
+ ```
36
+
37
+ `[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'`.
38
+
39
+ 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):
40
+
41
+ ```html
42
+ @if (form.get('time')?.hasError('invalid')) {
43
+ <div class="text-danger">Invalid time</div>
44
+ } @if (form.get('time')?.hasError('required')) {
45
+ <div class="text-danger">Time is required</div>
46
+ }
47
+ ```
48
+
49
+ ## Usage — inline (always visible)
50
+
51
+ ```html
52
+ <ngx-time-picker format="24" [(value)]="time" (change)="onTimeChange($event)"></ngx-time-picker>
53
+ ```
54
+
55
+ ## API
56
+
57
+ ### `[ngxInputTimePicker]`
58
+
59
+ | Input | Type | Default | Description |
60
+ | ------------- | -------------- | ----------- | ----------------------------------------------- |
61
+ | `openOnCLick` | `boolean` | `true` | Open the popup when the input itself is clicked |
62
+ | `format` | `'12' \| '24'` | from config | |
63
+
64
+ | Output | Type | Description |
65
+ | -------- | ------------------------------ | ------------------------------------- |
66
+ | `change` | `EventEmitter<string \| null>` | Emitted when the user confirms a time |
67
+
68
+ | Member | Description |
69
+ | ---------- | -------------------------------------------- |
70
+ | `toggle()` | Opens the popup if closed, closes it if open |
71
+
72
+ ### `<ngx-time-picker>`
73
+
74
+ | Input | Type | Default | Description |
75
+ | ------------------------ | -------------- | ----------- | ------------------------------------------------------------ |
76
+ | `value` (model, two-way) | `string` | `'12:00'` | Bind with `[(value)]` |
77
+ | `format` | `'12' \| '24'` | from config | |
78
+ | `minuteStep` | `number` | from config | |
79
+ | `disabled` | `boolean` | `false` | |
80
+ | `autoSwitchToMinute` | `boolean` | from config | Switch to minute-selection mode right after picking the hour |
81
+
82
+ | Output | Type | Description |
83
+ | -------- | ------------------------------ | -------------------------------- |
84
+ | `change` | `EventEmitter<string \| null>` | Emitted when "OK" is pressed |
85
+ | `cancel` | `EventEmitter<void>` | Emitted when "Cancel" is pressed |
86
+
87
+ ## Dark mode and RTL
88
+
89
+ Supported automatically.
@@ -178,41 +178,97 @@ declare class NgxInputColorComponent implements OnInit, OnDestroy, ControlValueA
178
178
  }
179
179
 
180
180
  declare class NgxInputColor implements AfterViewInit, OnDestroy, ControlValueAccessor, Validator {
181
- private el;
182
- private renderer;
183
- private viewContainerRef;
184
- private overlayService;
181
+ private readonly el;
182
+ private readonly renderer;
183
+ private readonly viewContainerRef;
184
+ private readonly overlayService;
185
185
  setInputBackgroundColor: boolean;
186
186
  defaultInspector: ColorInspector;
187
187
  simpleMode: boolean;
188
188
  outputType: OutputType;
189
189
  theme: 'light' | 'dark' | 'auto';
190
190
  private useAlphaChannel;
191
- set setUseAlphaChannel(val: boolean);
192
- private boundInputHandler;
193
- private _targetInput?;
194
- set ngxInputColor(el: HTMLInputElement | ElementRef<HTMLInputElement> | null | undefined | '');
191
+ set setUseAlphaChannel(value: boolean);
192
+ /**
193
+ * Input target.
194
+ *
195
+ * Supported:
196
+ *
197
+ * <input ngxInputColor>
198
+ *
199
+ * or
200
+ *
201
+ * <div [ngxInputColor]="inputElement"></div>
202
+ *
203
+ * or
204
+ *
205
+ * <div [ngxInputColor]="inputRef"></div>
206
+ */
207
+ set ngxInputColor(element: HTMLInputElement | ElementRef<HTMLInputElement> | null | undefined | '');
195
208
  change: EventEmitter<string>;
196
209
  private color?;
197
210
  private pickerRef?;
211
+ private _targetInput?;
212
+ private explicitTargetInput;
198
213
  private isHostInput;
199
- inValid: boolean;
214
+ private removeInputListener?;
215
+ private disabled;
216
+ private invalid;
200
217
  protected _onChange: (value: string) => void;
201
218
  protected _onTouched: () => void;
202
- _onValidateChange: () => void;
203
- constructor(el: ElementRef, renderer: Renderer2, viewContainerRef: ViewContainerRef, overlayService: OverlayService);
219
+ private _onValidateChange;
220
+ constructor(el: ElementRef<HTMLElement>, renderer: Renderer2, viewContainerRef: ViewContainerRef, overlayService: OverlayService);
204
221
  ngAfterViewInit(): void;
205
222
  ngOnDestroy(): void;
206
- onClick(ev: Event): void;
207
- writeValue(value: any): void;
208
- registerOnChange(fn: any): void;
209
- registerOnTouched(fn: any): void;
223
+ /**
224
+ * Open the custom color picker.
225
+ */
226
+ onHostClick(event: Event): void;
227
+ /**
228
+ * Called by Angular Forms.
229
+ *
230
+ * IMPORTANT:
231
+ * writeValue must NEVER call _onChange().
232
+ */
233
+ writeValue(value: unknown): void;
234
+ registerOnChange(fn: (value: string) => void): void;
235
+ registerOnTouched(fn: () => void): void;
210
236
  setDisabledState(disabled: boolean): void;
211
237
  registerOnValidatorChange(fn: () => void): void;
212
- validate(control: AbstractControl): ValidationErrors | null;
238
+ validate(_control: AbstractControl): ValidationErrors | null;
239
+ private bindTargetInput;
240
+ private removeTargetInputListener;
241
+ /**
242
+ * Handles native input changes.
243
+ *
244
+ * This is deliberately NOT implemented using writeValue(),
245
+ * because this is a user-originated value and therefore
246
+ * must propagate through ControlValueAccessor.
247
+ */
248
+ private handleInputEvent;
213
249
  private toggleColorPicker;
214
250
  private destroyColorPicker;
251
+ /**
252
+ * User-originated/custom-picker value.
253
+ *
254
+ * This is the ONLY place where _onChange is called.
255
+ */
215
256
  private emitChange;
257
+ /**
258
+ * Synchronize all visual representations.
259
+ */
260
+ private syncView;
261
+ /**
262
+ * input[type=color] only accepts a 6-digit RGB hex value.
263
+ *
264
+ * Therefore even if the selected color contains alpha,
265
+ * the native color input receives #RRGGBB.
266
+ */
267
+ private getNativeInputColor;
268
+ private getViewColor;
269
+ private syncHostBackground;
270
+ private notifyValidatorChange;
271
+ private isInputElement;
216
272
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxInputColor, never>;
217
273
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgxInputColor, "[ngxInputColor]", never, { "setInputBackgroundColor": { "alias": "setInputBackgroundColor"; "required": false; }; "defaultInspector": { "alias": "defaultInspector"; "required": false; }; "simpleMode": { "alias": "simpleMode"; "required": false; }; "outputType": { "alias": "outputType"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "setUseAlphaChannel": { "alias": "useAlphaChannel"; "required": false; }; "ngxInputColor": { "alias": "ngxInputColor"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
218
274
  }
@@ -312,6 +312,7 @@ interface EventInteractionState {
312
312
  declare class NgxCalendarComponent extends NgxDatePickerBase implements OnInit {
313
313
  defaultLocalization: NgxCalendarLocalization;
314
314
  localize: i0.InputSignal<NgxCalendarLocalization>;
315
+ resizeAndMovable: i0.InputSignal<boolean>;
315
316
  _config: NgxDatePickerConfig;
316
317
  set config(val: NgxDatePickerConfig);
317
318
  set locale(val: string);
@@ -399,7 +400,7 @@ declare class NgxCalendarComponent extends NgxDatePickerBase implements OnInit {
399
400
  private readonly defaultHeight;
400
401
  minHeight: number;
401
402
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxCalendarComponent, never>;
402
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxCalendarComponent, "ngx-calendar", never, { "localize": { "alias": "localize"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; "events": { "alias": "events"; "required": false; }; }, { "dateChange": "dateChange"; "selectEvent": "selectEvent"; "eventChange": "eventChange"; "eventsChange": "eventsChange"; }, never, never, true, never>;
403
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxCalendarComponent, "ngx-calendar", never, { "localize": { "alias": "localize"; "required": false; "isSignal": true; }; "resizeAndMovable": { "alias": "resizeAndMovable"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; "events": { "alias": "events"; "required": false; }; }, { "dateChange": "dateChange"; "selectEvent": "selectEvent"; "eventChange": "eventChange"; "eventsChange": "eventsChange"; }, never, never, true, never>;
403
404
  }
404
405
 
405
406
  declare class NgxInputDatePickerComponent extends NgxDatePickerBase implements ControlValueAccessor, Validator, OnInit {