@toolbox-web/grid-angular 0.4.0 → 0.6.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 (96) hide show
  1. package/README.md +296 -16
  2. package/feature-registry-C-cKloXB.js +45 -0
  3. package/features/clipboard.d.ts +18 -0
  4. package/features/clipboard.d.ts.map +1 -0
  5. package/features/clipboard.js +3 -0
  6. package/features/column-virtualization.d.ts +16 -0
  7. package/features/column-virtualization.d.ts.map +1 -0
  8. package/features/column-virtualization.js +3 -0
  9. package/features/context-menu.d.ts +16 -0
  10. package/features/context-menu.d.ts.map +1 -0
  11. package/features/context-menu.js +3 -0
  12. package/features/editing.d.ts +16 -0
  13. package/features/editing.d.ts.map +1 -0
  14. package/features/editing.js +3 -0
  15. package/features/export.d.ts +17 -0
  16. package/features/export.d.ts.map +1 -0
  17. package/features/export.js +3 -0
  18. package/features/filtering.d.ts +17 -0
  19. package/features/filtering.d.ts.map +1 -0
  20. package/features/filtering.js +3 -0
  21. package/features/grouping-columns.d.ts +16 -0
  22. package/features/grouping-columns.d.ts.map +1 -0
  23. package/features/grouping-columns.js +3 -0
  24. package/features/grouping-rows.d.ts +16 -0
  25. package/features/grouping-rows.d.ts.map +1 -0
  26. package/features/grouping-rows.js +3 -0
  27. package/features/index.d.ts +1 -0
  28. package/features/index.d.ts.map +1 -0
  29. package/features/index.js +22 -0
  30. package/features/master-detail.d.ts +16 -0
  31. package/features/master-detail.d.ts.map +1 -0
  32. package/features/master-detail.js +3 -0
  33. package/features/pinned-columns.d.ts +19 -0
  34. package/features/pinned-columns.d.ts.map +1 -0
  35. package/features/pinned-columns.js +3 -0
  36. package/features/pinned-rows.d.ts +16 -0
  37. package/features/pinned-rows.d.ts.map +1 -0
  38. package/features/pinned-rows.js +3 -0
  39. package/features/pivot.d.ts +16 -0
  40. package/features/pivot.d.ts.map +1 -0
  41. package/features/pivot.js +3 -0
  42. package/features/print.d.ts +16 -0
  43. package/features/print.d.ts.map +1 -0
  44. package/features/print.js +3 -0
  45. package/features/reorder.d.ts +16 -0
  46. package/features/reorder.d.ts.map +1 -0
  47. package/features/reorder.js +3 -0
  48. package/features/responsive.d.ts +16 -0
  49. package/features/responsive.d.ts.map +1 -0
  50. package/features/responsive.js +3 -0
  51. package/features/row-reorder.d.ts +16 -0
  52. package/features/row-reorder.d.ts.map +1 -0
  53. package/features/row-reorder.js +3 -0
  54. package/features/selection.d.ts +16 -0
  55. package/features/selection.d.ts.map +1 -0
  56. package/features/selection.js +3 -0
  57. package/features/server-side.d.ts +16 -0
  58. package/features/server-side.d.ts.map +1 -0
  59. package/features/server-side.js +3 -0
  60. package/features/sorting.d.ts +16 -0
  61. package/features/sorting.d.ts.map +1 -0
  62. package/features/sorting.js +3 -0
  63. package/features/tree.d.ts +16 -0
  64. package/features/tree.d.ts.map +1 -0
  65. package/features/tree.js +3 -0
  66. package/features/undo-redo.d.ts +18 -0
  67. package/features/undo-redo.d.ts.map +1 -0
  68. package/features/undo-redo.js +3 -0
  69. package/features/visibility.d.ts +16 -0
  70. package/features/visibility.d.ts.map +1 -0
  71. package/features/visibility.js +3 -0
  72. package/index.d.ts +7 -0
  73. package/index.d.ts.map +1 -1
  74. package/index.js +1272 -294
  75. package/lib/angular-column-config.d.ts +1 -1
  76. package/lib/angular-grid-adapter.d.ts +1 -1
  77. package/lib/angular-grid-adapter.d.ts.map +1 -1
  78. package/lib/base-grid-editor.d.ts +145 -0
  79. package/lib/base-grid-editor.d.ts.map +1 -0
  80. package/lib/directives/grid-column-editor.directive.d.ts +17 -0
  81. package/lib/directives/grid-column-editor.directive.d.ts.map +1 -1
  82. package/lib/directives/grid-detail-view.directive.d.ts +1 -1
  83. package/lib/directives/grid-form-array.directive.d.ts +141 -0
  84. package/lib/directives/grid-form-array.directive.d.ts.map +1 -0
  85. package/lib/directives/grid.directive.d.ts +554 -3
  86. package/lib/directives/grid.directive.d.ts.map +1 -1
  87. package/lib/directives/index.d.ts +2 -0
  88. package/lib/directives/index.d.ts.map +1 -1
  89. package/lib/directives/structural-directives.d.ts +10 -0
  90. package/lib/directives/structural-directives.d.ts.map +1 -1
  91. package/lib/feature-registry.d.ts +72 -0
  92. package/lib/feature-registry.d.ts.map +1 -0
  93. package/lib/grid-type-registry.d.ts +1 -1
  94. package/lib/inject-grid.d.ts +109 -0
  95. package/lib/inject-grid.d.ts.map +1 -0
  96. package/package.json +12 -2
package/README.md CHANGED
@@ -14,6 +14,7 @@ Angular adapter for `@toolbox-web/grid` data grid component. Provides directives
14
14
  - ✅ **Template-driven editors** - Use `<ng-template>` for custom cell editors
15
15
  - ✅ **Component-class column config** - Specify component classes directly in `gridConfig.columns`
16
16
  - ✅ **Type-level defaults** - App-wide renderers/editors via `provideGridTypeDefaults()`
17
+ - ✅ **Reactive Forms integration** - Use `formControlName` and `formControl` bindings
17
18
  - ✅ **Auto-wiring** - Editor components just emit events, no manual binding needed
18
19
  - ✅ **Full type safety** - Typed template contexts (`GridCellContext`, `GridEditorContext`)
19
20
  - ✅ **Angular 17+** - Standalone components, signals support
@@ -149,13 +150,14 @@ export class MyGridComponent {}
149
150
 
150
151
  **Template Context:**
151
152
 
152
- | Variable | Type | Description |
153
- | ----------- | ---------- | -------------------------------------------- |
154
- | `$implicit` | `TValue` | The cell value (use with `let-value`) |
155
- | `row` | `TRow` | The full row data object |
156
- | `column` | `unknown` | The column configuration |
157
- | `onCommit` | `Function` | Callback to commit (optional with auto-wire) |
158
- | `onCancel` | `Function` | Callback to cancel (optional with auto-wire) |
153
+ | Variable | Type | Description |
154
+ | ----------- | ----------------- | ------------------------------------------------------ |
155
+ | `$implicit` | `TValue` | The cell value (use with `let-value`) |
156
+ | `row` | `TRow` | The full row data object |
157
+ | `column` | `unknown` | The column configuration |
158
+ | `onCommit` | `Function` | Callback to commit (optional with auto-wire) |
159
+ | `onCancel` | `Function` | Callback to cancel (optional with auto-wire) |
160
+ | `control` | `AbstractControl` | FormControl for cell (when using FormArray+FormGroups) |
159
161
 
160
162
  > **Auto-wiring:** If your editor component emits a `commit` event with the new value, the adapter automatically calls the grid's commit function. Similarly for `cancel`. This means you can skip the explicit `onCommit`/`onCancel` bindings!
161
163
 
@@ -485,19 +487,292 @@ Or import all plugins at once (larger bundle, but convenient):
485
487
  import { SelectionPlugin, FilteringPlugin } from '@toolbox-web/grid/all';
486
488
  ```
487
489
 
490
+ ## Reactive Forms Integration
491
+
492
+ The grid can be used as an Angular form control with `formControlName` or `formControl` bindings. This enables seamless integration with Angular's Reactive Forms system.
493
+
494
+ ### Basic Usage with FormControl
495
+
496
+ ```typescript
497
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
498
+ import { FormControl, ReactiveFormsModule } from '@angular/forms';
499
+ import { Grid, GridFormControl } from '@toolbox-web/grid-angular';
500
+ import { EditingPlugin } from '@toolbox-web/grid/plugins/editing';
501
+ import type { GridConfig } from '@toolbox-web/grid';
502
+
503
+ interface Employee {
504
+ name: string;
505
+ age: number;
506
+ }
507
+
508
+ @Component({
509
+ imports: [Grid, GridFormControl, ReactiveFormsModule],
510
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
511
+ template: `
512
+ <tbw-grid [formControl]="employeesControl" [gridConfig]="config" style="height: 400px; display: block;" />
513
+
514
+ <div>
515
+ <p>Form value: {{ employeesControl.value | json }}</p>
516
+ <p>Dirty: {{ employeesControl.dirty }}</p>
517
+ <p>Touched: {{ employeesControl.touched }}</p>
518
+ </div>
519
+ `,
520
+ })
521
+ export class MyComponent {
522
+ employeesControl = new FormControl<Employee[]>([
523
+ { name: 'Alice', age: 30 },
524
+ { name: 'Bob', age: 25 },
525
+ ]);
526
+
527
+ config: GridConfig<Employee> = {
528
+ columns: [
529
+ { field: 'name', header: 'Name', editable: true },
530
+ { field: 'age', header: 'Age', editable: true, type: 'number' },
531
+ ],
532
+ plugins: [new EditingPlugin({ editOn: 'dblclick' })],
533
+ };
534
+ }
535
+ ```
536
+
537
+ ### Usage with FormGroup
538
+
539
+ ```typescript
540
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
541
+ import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
542
+ import { Grid, GridFormControl } from '@toolbox-web/grid-angular';
543
+ import { EditingPlugin } from '@toolbox-web/grid/plugins/editing';
544
+
545
+ @Component({
546
+ imports: [Grid, GridFormControl, ReactiveFormsModule],
547
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
548
+ template: `
549
+ <form [formGroup]="form">
550
+ <tbw-grid formControlName="employees" [gridConfig]="config" style="height: 400px; display: block;" />
551
+ </form>
552
+ `,
553
+ })
554
+ export class MyComponent {
555
+ form = new FormGroup({
556
+ employees: new FormControl([
557
+ { name: 'Alice', age: 30 },
558
+ { name: 'Bob', age: 25 },
559
+ ]),
560
+ });
561
+
562
+ config = {
563
+ columns: [
564
+ { field: 'name', header: 'Name', editable: true },
565
+ { field: 'age', header: 'Age', editable: true },
566
+ ],
567
+ plugins: [new EditingPlugin()],
568
+ };
569
+ }
570
+ ```
571
+
572
+ ### How It Works
573
+
574
+ - **Form → Grid**: When the form value changes (e.g., via `setValue()` or `patchValue()`), the grid rows are updated
575
+ - **Grid → Form**: When a cell is edited and committed, the form value is updated with the new row data
576
+ - **Touched state**: The form becomes touched when the user clicks on the grid
577
+ - **Dirty state**: The form becomes dirty when any cell is edited
578
+ - **Disabled state**: When the form control is disabled, the grid adds a `.form-disabled` CSS class
579
+
580
+ ### Validation
581
+
582
+ You can add validators to validate the entire grid data:
583
+
584
+ ```typescript
585
+ import { Validators } from '@angular/forms';
586
+
587
+ employeesControl = new FormControl<Employee[]>([], [
588
+ Validators.required, // At least one row
589
+ Validators.minLength(2), // At least 2 rows
590
+ this.validateEmployees, // Custom validator
591
+ ]);
592
+
593
+ validateEmployees(control: FormControl<Employee[]>) {
594
+ const employees = control.value || [];
595
+ const hasInvalidAge = employees.some((e) => e.age < 18);
596
+ return hasInvalidAge ? { invalidAge: true } : null;
597
+ }
598
+ ```
599
+
600
+ ### CSS Classes
601
+
602
+ Angular's form system automatically adds these classes to the grid element:
603
+
604
+ - `.ng-valid` / `.ng-invalid` - Validation state
605
+ - `.ng-pristine` / `.ng-dirty` - Edit state
606
+ - `.ng-untouched` / `.ng-touched` - Touch state
607
+
608
+ Additionally, when the control is disabled:
609
+
610
+ - `.form-disabled` - Added by `GridFormControl`
611
+
612
+ You can style these states:
613
+
614
+ ```css
615
+ tbw-grid.ng-invalid.ng-touched {
616
+ border: 2px solid red;
617
+ }
618
+
619
+ tbw-grid.form-disabled {
620
+ opacity: 0.6;
621
+ pointer-events: none;
622
+ }
623
+ ```
624
+
625
+ ### Advanced: Cell-Level FormControls with FormArray
626
+
627
+ For fine-grained control over validation and form state at the cell level, use a `FormArray` of `FormGroup`s. This approach exposes the `FormControl` for each cell in the editor context, allowing custom editors to bind directly:
628
+
629
+ ```typescript
630
+ import { Component, CUSTOM_ELEMENTS_SCHEMA, input, output } from '@angular/core';
631
+ import { FormArray, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
632
+ import { Grid, GridFormControl, TbwEditor, TbwRenderer } from '@toolbox-web/grid-angular';
633
+ import { EditingPlugin } from '@toolbox-web/grid/plugins/editing';
634
+
635
+ // Custom editor that uses the FormControl directly
636
+ @Component({
637
+ selector: 'app-validated-input',
638
+ standalone: true,
639
+ imports: [ReactiveFormsModule],
640
+ template: `
641
+ @if (control()) {
642
+ <input [formControl]="control()" [class.is-invalid]="control()!.invalid && control()!.touched" />
643
+ @if (control()!.invalid && control()!.touched) {
644
+ <small class="error">{{ getErrorMessage() }}</small>
645
+ }
646
+ }
647
+ `,
648
+ styles: `
649
+ .is-invalid {
650
+ border-color: red;
651
+ }
652
+ .error {
653
+ color: red;
654
+ font-size: 0.8em;
655
+ }
656
+ `,
657
+ })
658
+ export class ValidatedInputComponent {
659
+ control = input<AbstractControl>();
660
+ commit = output<string>();
661
+
662
+ getErrorMessage(): string {
663
+ const ctrl = this.control();
664
+ if (ctrl?.hasError('required')) return 'Required';
665
+ if (ctrl?.hasError('min')) return 'Too low';
666
+ return 'Invalid';
667
+ }
668
+ }
669
+
670
+ @Component({
671
+ imports: [Grid, GridFormControl, TbwRenderer, TbwEditor, ReactiveFormsModule, ValidatedInputComponent],
672
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
673
+ template: `
674
+ <tbw-grid [formControl]="employeesArray" [gridConfig]="config">
675
+ <tbw-grid-column field="age" editable>
676
+ <span *tbwRenderer="let value">{{ value }}</span>
677
+ <!-- The 'control' property gives you the FormControl for this cell -->
678
+ <app-validated-input *tbwEditor="let value; control as ctrl" [control]="ctrl" />
679
+ </tbw-grid-column>
680
+ </tbw-grid>
681
+ `,
682
+ })
683
+ export class MyComponent {
684
+ // Use FormArray with FormGroups for cell-level control access
685
+ employeesArray = new FormArray([
686
+ new FormGroup({
687
+ name: new FormControl('Alice', Validators.required),
688
+ age: new FormControl(30, [Validators.required, Validators.min(18)]),
689
+ }),
690
+ new FormGroup({
691
+ name: new FormControl('Bob', Validators.required),
692
+ age: new FormControl(25, [Validators.required, Validators.min(18)]),
693
+ }),
694
+ ]);
695
+
696
+ config = {
697
+ columns: [
698
+ { field: 'name', header: 'Name', editable: true },
699
+ { field: 'age', header: 'Age', editable: true },
700
+ ],
701
+ plugins: [new EditingPlugin()],
702
+ };
703
+ }
704
+ ```
705
+
706
+ **Editor Context with FormControl:**
707
+
708
+ | Variable | Type | Description |
709
+ | ---------- | ----------------- | ------------------------------------------------------------------ |
710
+ | `value` | `TValue` | The cell value |
711
+ | `row` | `TRow` | The full row data |
712
+ | `control` | `AbstractControl` | The FormControl for this cell (if using FormArray with FormGroups) |
713
+ | `onCommit` | `Function` | Callback to commit the value |
714
+ | `onCancel` | `Function` | Callback to cancel editing |
715
+
716
+ > **Note:** The `control` property is only available when:
717
+ >
718
+ > - The grid is bound to a `FormArray` (not a `FormControl<T[]>`)
719
+ > - The `FormArray` contains `FormGroup` controls (not raw `FormControl`s)
720
+ > - The `FormGroup` has a control for the column's field name
721
+
722
+ ### Row-Level Validation
723
+
724
+ When using `FormArray` with `FormGroup`s, you can also access row-level validation state through the `FormArrayContext`. This is useful for styling entire rows based on their validation state or displaying row-level error summaries.
725
+
726
+ ```typescript
727
+ import { getFormArrayContext, type FormArrayContext } from '@toolbox-web/grid-angular';
728
+
729
+ // Get the context from a grid element
730
+ const context = getFormArrayContext(gridElement);
731
+
732
+ if (context?.hasFormGroups) {
733
+ // Check if row 0 is valid
734
+ const isValid = context.isRowValid(0); // true if all controls in row are valid
735
+
736
+ // Check if row has been touched
737
+ const isTouched = context.isRowTouched(0); // true if any control touched
738
+
739
+ // Check if row is dirty
740
+ const isDirty = context.isRowDirty(0); // true if any control changed
741
+
742
+ // Get all errors for a row
743
+ const errors = context.getRowErrors(0);
744
+ // Returns: { name: { required: true }, age: { min: { min: 18, actual: 15 } } }
745
+ // Or null if no errors
746
+
747
+ // Get the FormGroup for a row (for advanced use cases)
748
+ const formGroup = context.getRowFormGroup(0);
749
+ }
750
+ ```
751
+
752
+ **FormArrayContext Row Validation Methods:**
753
+
754
+ | Method | Return Type | Description |
755
+ | ---------------------- | --------------------------------- | -------------------------------------------- |
756
+ | `isRowValid(idx)` | `boolean` | True if all controls in row are valid |
757
+ | `isRowTouched(idx)` | `boolean` | True if any control in row is touched |
758
+ | `isRowDirty(idx)` | `boolean` | True if any control in row is dirty |
759
+ | `getRowErrors(idx)` | `Record<string, unknown> \| null` | Aggregated errors from all controls, or null |
760
+ | `getRowFormGroup(idx)` | `FormGroup \| undefined` | The FormGroup for the row |
761
+
488
762
  ## API Reference
489
763
 
490
764
  ### Exported Directives
491
765
 
492
- | Directive | Selector | Description |
493
- | ------------------ | ------------------------ | -------------------------------------- |
494
- | `Grid` | `tbw-grid` | Main directive, auto-registers adapter |
495
- | `TbwRenderer` | `*tbwRenderer` | Structural directive for cell views |
496
- | `TbwEditor` | `*tbwEditor` | Structural directive for cell editors |
497
- | `GridColumnView` | `tbw-grid-column-view` | Nested directive for cell views |
498
- | `GridColumnEditor` | `tbw-grid-column-editor` | Nested directive for cell editors |
499
- | `GridDetailView` | `tbw-grid-detail` | Master-detail panel template |
500
- | `GridToolPanel` | `tbw-grid-tool-panel` | Custom sidebar panel |
766
+ | Directive | Selector | Description |
767
+ | ------------------ | ---------------------------------------------------- | -------------------------------------- |
768
+ | `Grid` | `tbw-grid` | Main directive, auto-registers adapter |
769
+ | `GridFormControl` | `tbw-grid[formControlName]`, `tbw-grid[formControl]` | Reactive Forms integration |
770
+ | `TbwRenderer` | `*tbwRenderer` | Structural directive for cell views |
771
+ | `TbwEditor` | `*tbwEditor` | Structural directive for cell editors |
772
+ | `GridColumnView` | `tbw-grid-column-view` | Nested directive for cell views |
773
+ | `GridColumnEditor` | `tbw-grid-column-editor` | Nested directive for cell editors |
774
+ | `GridDetailView` | `tbw-grid-detail` | Master-detail panel template |
775
+ | `GridToolPanel` | `tbw-grid-tool-panel` | Custom sidebar panel |
501
776
 
502
777
  ### Type Registry
503
778
 
@@ -561,10 +836,15 @@ import type {
561
836
  AngularCellEditor,
562
837
  AngularColumnConfig,
563
838
  AngularGridConfig,
839
+ // Reactive Forms
840
+ FormArrayContext,
564
841
  } from '@toolbox-web/grid-angular';
565
842
 
566
843
  // Type guard for component class detection
567
844
  import { isComponentClass } from '@toolbox-web/grid-angular';
845
+
846
+ // Helper to access form context from grid element
847
+ import { getFormArrayContext } from '@toolbox-web/grid-angular';
568
848
  ```
569
849
 
570
850
  ### AngularGridAdapter
@@ -0,0 +1,45 @@
1
+ const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set();
2
+ function s(e, r) {
3
+ t.set(e, {
4
+ factory: r,
5
+ name: e
6
+ });
7
+ }
8
+ function u(e) {
9
+ return t.has(e);
10
+ }
11
+ function c(e) {
12
+ return t.get(e)?.factory;
13
+ }
14
+ function f() {
15
+ return Array.from(t.keys());
16
+ }
17
+ function d(e, r) {
18
+ const a = t.get(e);
19
+ if (!a) {
20
+ const n = typeof window < "u" && (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1");
21
+ !o.has(e) && n && (o.add(e), console.warn(
22
+ `[tbw-grid] Feature "${e}" input is set but the feature is not registered.
23
+ Add this import to enable it:
24
+
25
+ import '@toolbox-web/grid-angular/features/${i(e)}';
26
+ `
27
+ ));
28
+ return;
29
+ }
30
+ return a.factory(r);
31
+ }
32
+ function i(e) {
33
+ return e.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
34
+ }
35
+ function g() {
36
+ t.clear(), o.clear();
37
+ }
38
+ export {
39
+ g as a,
40
+ f as b,
41
+ d as c,
42
+ c as g,
43
+ u as i,
44
+ s as r
45
+ };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Clipboard feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `clipboard` input on Grid directive.
5
+ * Requires selection feature to be enabled.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import '@toolbox-web/grid-angular/features/selection';
10
+ * import '@toolbox-web/grid-angular/features/clipboard';
11
+ *
12
+ * <tbw-grid [selection]="'range'" [clipboard]="true" />
13
+ * ```
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/clipboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,3 @@
1
+ import { ClipboardPlugin as e } from "@toolbox-web/grid/plugins/clipboard";
2
+ import { r as i } from "../feature-registry-C-cKloXB.js";
3
+ i("clipboard", (r) => r === !0 ? new e() : new e(r ?? void 0));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Column virtualization feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `columnVirtualization` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/column-virtualization';
9
+ *
10
+ * <tbw-grid [columnVirtualization]="true" />
11
+ * ```
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=column-virtualization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-virtualization.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/column-virtualization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { ColumnVirtualizationPlugin as i } from "@toolbox-web/grid/plugins/column-virtualization";
2
+ import { r as t } from "../feature-registry-C-cKloXB.js";
3
+ t("columnVirtualization", (r) => r === !0 ? new i() : new i(r ?? void 0));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Context menu feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `contextMenu` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/context-menu';
9
+ *
10
+ * <tbw-grid [contextMenu]="true" />
11
+ * ```
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=context-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/context-menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { ContextMenuPlugin as r } from "@toolbox-web/grid/plugins/context-menu";
2
+ import { r as t } from "../feature-registry-C-cKloXB.js";
3
+ t("contextMenu", (e) => e === !0 ? new r() : new r(e ?? void 0));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Editing feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `editing` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/editing';
9
+ *
10
+ * <tbw-grid [editing]="'dblclick'" />
11
+ * ```
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=editing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editing.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/editing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { EditingPlugin as e } from "@toolbox-web/grid/plugins/editing";
2
+ import { r as t } from "../feature-registry-C-cKloXB.js";
3
+ t("editing", (r) => r === !0 ? new e({ editOn: "dblclick" }) : r === "click" || r === "dblclick" || r === "manual" ? new e({ editOn: r }) : new e(r ?? void 0));
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Export feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `exportFeature` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/export';
9
+ *
10
+ * <tbw-grid [exportFeature]="true" />
11
+ * <tbw-grid [exportFeature]="{ filename: 'data.csv' }" />
12
+ * ```
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,3 @@
1
+ import { ExportPlugin as e } from "@toolbox-web/grid/plugins/export";
2
+ import { r as t } from "../feature-registry-C-cKloXB.js";
3
+ t("export", (r) => r === !0 ? new e() : new e(r ?? void 0));
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Filtering feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `filtering` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/filtering';
9
+ *
10
+ * <tbw-grid [filtering]="true" />
11
+ * <tbw-grid [filtering]="{ debounceMs: 200 }" />
12
+ * ```
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=filtering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/filtering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,3 @@
1
+ import { FilteringPlugin as e } from "@toolbox-web/grid/plugins/filtering";
2
+ import { r as i } from "../feature-registry-C-cKloXB.js";
3
+ i("filtering", (r) => r === !0 ? new e() : new e(r ?? void 0));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Column grouping feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `groupingColumns` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/grouping-columns';
9
+ *
10
+ * <tbw-grid [groupingColumns]="{ columnGroups: [...] }" />
11
+ * ```
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=grouping-columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-columns.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/grouping-columns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { GroupingColumnsPlugin as e } from "@toolbox-web/grid/plugins/grouping-columns";
2
+ import { r as u } from "../feature-registry-C-cKloXB.js";
3
+ u("groupingColumns", (r) => r === !0 ? new e() : new e(r ?? void 0));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Row grouping feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `groupingRows` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/grouping-rows';
9
+ *
10
+ * <tbw-grid [groupingRows]="{ groupBy: ['department'] }" />
11
+ * ```
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=grouping-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grouping-rows.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/grouping-rows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,3 @@
1
+ import { GroupingRowsPlugin as o } from "@toolbox-web/grid/plugins/grouping-rows";
2
+ import { r as i } from "../feature-registry-C-cKloXB.js";
3
+ i("groupingRows", (r) => new o(r ?? void 0));
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,yBAAyB,CAAC;AACjC,OAAO,gBAAgB,CAAC;AACxB,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,aAAa,CAAC;AACrB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,iBAAiB,CAAC;AACzB,OAAO,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,WAAW,CAAC;AACnB,OAAO,cAAc,CAAC;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,eAAe,CAAC;AACvB,OAAO,WAAW,CAAC;AACnB,OAAO,QAAQ,CAAC;AAChB,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ import "./clipboard.js";
2
+ import "./column-virtualization.js";
3
+ import "./context-menu.js";
4
+ import "./editing.js";
5
+ import "./export.js";
6
+ import "./filtering.js";
7
+ import "./grouping-columns.js";
8
+ import "./grouping-rows.js";
9
+ import "./master-detail.js";
10
+ import "./pinned-columns.js";
11
+ import "./pinned-rows.js";
12
+ import "./pivot.js";
13
+ import "./print.js";
14
+ import "./reorder.js";
15
+ import "./responsive.js";
16
+ import "./row-reorder.js";
17
+ import "./selection.js";
18
+ import "./server-side.js";
19
+ import "./sorting.js";
20
+ import "./tree.js";
21
+ import "./undo-redo.js";
22
+ import "./visibility.js";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Master-detail feature for @toolbox-web/grid-angular
3
+ *
4
+ * Import this module to enable the `masterDetail` input on Grid directive.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import '@toolbox-web/grid-angular/features/master-detail';
9
+ *
10
+ * <tbw-grid [masterDetail]="{ detailRenderer: myRenderer }" />
11
+ * ```
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=master-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master-detail.d.ts","sourceRoot":"","sources":["../../../../libs/grid-angular/src/features/master-detail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}