@ngbase/adk 0.1.9 → 0.1.10

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.
@@ -1,14 +1,19 @@
1
+ import { Signal } from '@angular/core';
1
2
  export declare class SelectionModel<T> {
2
3
  multiple: boolean;
4
+ items: Signal<T[]>;
3
5
  readonly selected: import("@angular/core").WritableSignal<T[]>;
4
- readonly hasValue: import("@angular/core").Signal<boolean>;
5
- readonly isEmpty: import("@angular/core").Signal<boolean>;
6
- constructor(multiple?: boolean, selected?: T[]);
6
+ readonly hasValue: Signal<boolean>;
7
+ readonly isEmpty: Signal<boolean>;
8
+ readonly isAllSelected: Signal<boolean>;
9
+ readonly isIndeterminate: Signal<boolean>;
10
+ constructor(multiple?: boolean, selected?: T[], items?: Signal<T[]>);
7
11
  clear(): void;
8
12
  select(item: T): void;
9
13
  deselect(item: T): void;
10
14
  selectAll(items: T[]): void;
11
15
  isSelected(item: T): boolean;
12
16
  toggle(item: T): void;
17
+ toggleAll(): void;
13
18
  sort(fn: (a: T, b: T) => number): void;
14
19
  }
@@ -30,7 +30,7 @@ export declare class NgbDatepickerTrigger<D> {
30
30
  readonly format: import("@angular/core").InputSignal<string>;
31
31
  readonly fieldFormat: import("@angular/core").InputSignal<string>;
32
32
  readonly dateFilter: import("@angular/core").InputSignal<(date: D) => boolean>;
33
- readonly pickerType: import("@angular/core").InputSignal<"date" | "month" | "year">;
33
+ readonly pickerType: import("@angular/core").InputSignal<"year" | "month" | "date">;
34
34
  readonly pickerTemplate: import("@angular/core").InputSignal<TemplateRef<any> | null>;
35
35
  private displayFormat;
36
36
  close?: VoidFunction;
@@ -16,14 +16,14 @@ export declare class NgbDatePicker<D> {
16
16
  private dialogRef;
17
17
  readonly adapter: import("@ngbase/adk/datepicker").NgbAdpterInterface<D>;
18
18
  readonly dateFilter: import("@angular/core").InputSignal<(date: D) => boolean>;
19
- readonly pickerType: import("@angular/core").InputSignal<"date" | "month" | "year">;
19
+ readonly pickerType: import("@angular/core").InputSignal<"year" | "month" | "date">;
20
20
  readonly allyGroup: import("@angular/core").Signal<AccessibleGroup | undefined>;
21
21
  readonly noOfCalendar: import("@angular/core").ModelSignal<number>;
22
22
  readonly range: import("@angular/core").ModelSignal<boolean>;
23
23
  readonly time: import("@angular/core").WritableSignal<boolean>;
24
24
  readonly format: import("@angular/core").WritableSignal<string>;
25
25
  readonly template: import("@angular/core").WritableSignal<TemplateRef<any> | null>;
26
- readonly showType: import("@angular/core").WritableSignal<"date" | "month" | "year">;
26
+ readonly showType: import("@angular/core").WritableSignal<"year" | "month" | "date">;
27
27
  readonly selectedDates: import("@angular/core").WritableSignal<[D | null, D | null]>;
28
28
  readonly times: import("@angular/core").WritableSignal<[string | null, string | null]>;
29
29
  readonly startDate: import("@angular/core").Signal<D>;
@@ -7,7 +7,7 @@ class NgbChipRemove {
7
7
  this.chip = inject((NgbChip));
8
8
  }
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbChipRemove, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbChipRemove, isStandalone: true, selector: "[ngbChipRemove]", host: { attributes: { "type": "button" }, listeners: { "click": "chip.close.emit()" }, properties: { "attr.data-dir": "chip.dir.isRtl() ? \"rtl\" : \"ltr\"" } }, ngImport: i0 }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbChipRemove, isStandalone: true, selector: "[ngbChipRemove]", host: { attributes: { "type": "button" }, listeners: { "click": "chip.close.emit($event)" }, properties: { "attr.data-dir": "chip.dir.isRtl() ? \"rtl\" : \"ltr\"" } }, ngImport: i0 }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbChipRemove, decorators: [{
13
13
  type: Directive,
@@ -15,7 +15,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
15
15
  selector: '[ngbChipRemove]',
16
16
  host: {
17
17
  type: 'button',
18
- '(click)': 'chip.close.emit()',
18
+ '(click)': 'chip.close.emit($event)',
19
19
  '[attr.data-dir]': 'chip.dir.isRtl() ? "rtl" : "ltr"',
20
20
  },
21
21
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-chip.mjs","sources":["../../../projects/adk/chip/chip.ts","../../../projects/adk/chip/chip-group.ts","../../../projects/adk/chip/ngbase-adk-chip.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, input, output } from '@angular/core';\nimport { Directionality } from '@ngbase/adk/bidi';\n\n@Directive({\n selector: '[ngbChipRemove]',\n host: {\n type: 'button',\n '(click)': 'chip.close.emit()',\n '[attr.data-dir]': 'chip.dir.isRtl() ? \"rtl\" : \"ltr\"',\n },\n})\nexport class NgbChipRemove {\n readonly chip = inject(NgbChip<any>);\n}\n\n@Directive({\n selector: '[ngbChip]',\n})\nexport class NgbChip<T = any> {\n readonly dir = inject(Directionality);\n\n readonly removable = input(true, { transform: booleanAttribute });\n readonly value = input<T>();\n readonly close = output();\n}\n\nexport function aliasChip(chip: typeof NgbChip) {\n return { provide: NgbChip, useExisting: chip };\n}\n","import { contentChildren, Directive, effect, untracked } from '@angular/core';\n// import { Autocomplete } from '@ngbase/adk/autocomplete';\nimport { NgbChip } from './chip';\n\n@Directive({\n selector: '[ngbChipGroup]',\n})\nexport class NgbChipGroup<T> {\n readonly chips = contentChildren(NgbChip<T>);\n // readonly autoComplete = inject(Autocomplete);\n\n // constructor() {\n // effect(() => {\n // const chips = this.chips();\n // untracked(() => {\n // chips.forEach(chip => {\n // chip.close.subscribe(() => {\n // this.autoComplete.removeValue(chip.value());\n // });\n // });\n // });\n // });\n // }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-chip.mjs","sources":["../../../projects/adk/chip/chip.ts","../../../projects/adk/chip/chip-group.ts","../../../projects/adk/chip/ngbase-adk-chip.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, input, output } from '@angular/core';\nimport { Directionality } from '@ngbase/adk/bidi';\n\n@Directive({\n selector: '[ngbChipRemove]',\n host: {\n type: 'button',\n '(click)': 'chip.close.emit($event)',\n '[attr.data-dir]': 'chip.dir.isRtl() ? \"rtl\" : \"ltr\"',\n },\n})\nexport class NgbChipRemove {\n readonly chip = inject(NgbChip<any>);\n}\n\n@Directive({\n selector: '[ngbChip]',\n})\nexport class NgbChip<T = any> {\n readonly dir = inject(Directionality);\n\n readonly removable = input(true, { transform: booleanAttribute });\n readonly value = input<T>();\n readonly close = output();\n}\n\nexport function aliasChip(chip: typeof NgbChip) {\n return { provide: NgbChip, useExisting: chip };\n}\n","import { contentChildren, Directive, effect, untracked } from '@angular/core';\n// import { Autocomplete } from '@ngbase/adk/autocomplete';\nimport { NgbChip } from './chip';\n\n@Directive({\n selector: '[ngbChipGroup]',\n})\nexport class NgbChipGroup<T> {\n readonly chips = contentChildren(NgbChip<T>);\n // readonly autoComplete = inject(Autocomplete);\n\n // constructor() {\n // effect(() => {\n // const chips = this.chips();\n // untracked(() => {\n // chips.forEach(chip => {\n // chip.close.subscribe(() => {\n // this.autoComplete.removeValue(chip.value());\n // });\n // });\n // });\n // });\n // }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { signal, computed } from '@angular/core';
2
2
 
3
3
  class SelectionModel {
4
- constructor(multiple = false, selected = []) {
4
+ constructor(multiple = false, selected = [], items = signal([])) {
5
5
  this.multiple = multiple;
6
+ this.items = items;
6
7
  this.selected = signal([]);
7
8
  this.hasValue = computed(() => this.selected().length > 0);
8
9
  this.isEmpty = computed(() => this.selected().length === 0);
10
+ this.isAllSelected = computed(() => this.selected().length > 0 && this.selected().length === this.items().length);
11
+ this.isIndeterminate = computed(() => this.selected().length > 0 && !this.isAllSelected());
9
12
  this.selected.set(selected);
10
13
  }
11
14
  clear() {
@@ -26,6 +29,10 @@ class SelectionModel {
26
29
  toggle(item) {
27
30
  this.selected.update(selected => selected.includes(item) ? selected.filter(i => i !== item) : [...selected, item]);
28
31
  }
32
+ toggleAll() {
33
+ const isAll = this.isIndeterminate() || !this.isAllSelected();
34
+ this.selected.update(x => isAll ? (this.multiple ? [...x, ...this.items()] : this.items()) : []);
35
+ }
29
36
  sort(fn) {
30
37
  this.selected.update(selected => selected.sort(fn));
31
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-collections.mjs","sources":["../../../projects/adk/collections/SelectionModel.ts","../../../projects/adk/collections/ngbase-adk-collections.ts"],"sourcesContent":["import { computed, signal } from '@angular/core';\n\nexport class SelectionModel<T> {\n readonly selected = signal<T[]>([]);\n readonly hasValue = computed(() => this.selected().length > 0);\n readonly isEmpty = computed(() => this.selected().length === 0);\n\n constructor(\n public multiple = false,\n selected: T[] = [],\n ) {\n this.selected.set(selected);\n }\n\n clear() {\n this.selected.set([]);\n }\n\n select(item: T) {\n this.selected.update(selected => (this.multiple ? [...selected, item] : [item]));\n }\n\n deselect(item: T) {\n this.selected.update(selected => (this.multiple ? selected.filter(i => i !== item) : []));\n }\n\n selectAll(items: T[]) {\n this.selected.update(selected => (this.multiple ? [...selected, ...items] : items));\n }\n\n isSelected(item: T) {\n return this.selected().includes(item);\n }\n\n toggle(item: T) {\n this.selected.update(selected =>\n selected.includes(item) ? selected.filter(i => i !== item) : [...selected, item],\n );\n }\n\n sort(fn: (a: T, b: T) => number) {\n this.selected.update(selected => selected.sort(fn));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,cAAc,CAAA;AAKzB,IAAA,WAAA,CACS,QAAW,GAAA,KAAK,EACvB,QAAA,GAAgB,EAAE,EAAA;QADX,IAAQ,CAAA,QAAA,GAAR,QAAQ;AALR,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAM,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;AAM7D,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAG7B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGvB,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGlF,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;;AAG3F,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;;AAGrF,IAAA,UAAU,CAAC,IAAO,EAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAGvC,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CACjF;;AAGH,IAAA,IAAI,CAAC,EAA0B,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;AAEtD;;AC3CD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngbase-adk-collections.mjs","sources":["../../../projects/adk/collections/SelectionModel.ts","../../../projects/adk/collections/ngbase-adk-collections.ts"],"sourcesContent":["import { computed, signal, Signal } from '@angular/core';\n\nexport class SelectionModel<T> {\n readonly selected = signal<T[]>([]);\n readonly hasValue = computed(() => this.selected().length > 0);\n readonly isEmpty = computed(() => this.selected().length === 0);\n readonly isAllSelected = computed(\n () => this.selected().length > 0 && this.selected().length === this.items().length,\n );\n readonly isIndeterminate = computed(() => this.selected().length > 0 && !this.isAllSelected());\n\n constructor(\n public multiple = false,\n selected: T[] = [],\n public items: Signal<T[]> = signal([]),\n ) {\n this.selected.set(selected);\n }\n\n clear() {\n this.selected.set([]);\n }\n\n select(item: T) {\n this.selected.update(selected => (this.multiple ? [...selected, item] : [item]));\n }\n\n deselect(item: T) {\n this.selected.update(selected => (this.multiple ? selected.filter(i => i !== item) : []));\n }\n\n selectAll(items: T[]) {\n this.selected.update(selected => (this.multiple ? [...selected, ...items] : items));\n }\n\n isSelected(item: T) {\n return this.selected().includes(item);\n }\n\n toggle(item: T) {\n this.selected.update(selected =>\n selected.includes(item) ? selected.filter(i => i !== item) : [...selected, item],\n );\n }\n\n toggleAll() {\n const isAll = this.isIndeterminate() || !this.isAllSelected();\n this.selected.update(x =>\n isAll ? (this.multiple ? [...x, ...this.items()] : this.items()) : [],\n );\n }\n\n sort(fn: (a: T, b: T) => number) {\n this.selected.update(selected => selected.sort(fn));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,cAAc,CAAA;IASzB,WACS,CAAA,QAAA,GAAW,KAAK,EACvB,QAAgB,GAAA,EAAE,EACX,KAAqB,GAAA,MAAM,CAAC,EAAE,CAAC,EAAA;QAF/B,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAER,IAAK,CAAA,KAAA,GAAL,KAAK;AAXL,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAM,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAC/B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CACnF;QACQ,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAO5F,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAG7B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;;AAGvB,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;;AAGlF,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;;AAG3F,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;;AAGrF,IAAA,UAAU,CAAC,IAAO,EAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAGvC,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CACjF;;IAGH,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IACpB,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CACtE;;AAGH,IAAA,IAAI,CAAC,EAA0B,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;AAEtD;;ACvDD;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, input, contentChild, TemplateRef, viewChild, ViewContainerRef, effect, InjectionToken, Injector, IterableDiffers, contentChildren, untracked } from '@angular/core';
2
+ import { inject, Directive, input, contentChild, TemplateRef, viewChild, ViewContainerRef, effect, untracked, InjectionToken, Injector, IterableDiffers, contentChildren, signal, computed, model, output } from '@angular/core';
3
3
 
4
4
  class NgbHead {
5
5
  constructor() {
@@ -7,14 +7,14 @@ class NgbHead {
7
7
  this.sticky = this.column.sticky;
8
8
  }
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHead, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbHead, isStandalone: true, selector: "[ngbHead]", host: { properties: { "class": "column.sticky() === 'start' ? 'sticky left-0 border-r z-10' : column.sticky() === 'end' ? 'sticky right-0 border-l z-10' : ''" } }, ngImport: i0 }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbHead, isStandalone: true, selector: "[ngbHead]", host: { properties: { "attr.data-sticky": "column.sticky() || undefined" } }, ngImport: i0 }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHead, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[ngbHead]',
16
16
  host: {
17
- '[class]': `column.sticky() === 'start' ? 'sticky left-0 border-r z-10' : column.sticky() === 'end' ? 'sticky right-0 border-l z-10' : ''`,
17
+ '[attr.data-sticky]': 'column.sticky() || undefined',
18
18
  },
19
19
  }]
20
20
  }] });
@@ -75,11 +75,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
75
75
 
76
76
  class NgbHeadRowDef {
77
77
  constructor() {
78
- this.ngbHeadRowDef = input();
78
+ this.ngbHeadRowDef = input.required();
79
79
  this.ngbHeadRowDefSticky = input();
80
80
  }
81
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHeadRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbHeadRowDef, isStandalone: true, selector: "[ngbHeadRowDef]", inputs: { ngbHeadRowDef: { classPropertyName: "ngbHeadRowDef", publicName: "ngbHeadRowDef", isSignal: true, isRequired: false, transformFunction: null }, ngbHeadRowDefSticky: { classPropertyName: "ngbHeadRowDefSticky", publicName: "ngbHeadRowDefSticky", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbHeadRowDef, isStandalone: true, selector: "[ngbHeadRowDef]", inputs: { ngbHeadRowDef: { classPropertyName: "ngbHeadRowDef", publicName: "ngbHeadRowDef", isSignal: true, isRequired: true, transformFunction: null }, ngbHeadRowDefSticky: { classPropertyName: "ngbHeadRowDefSticky", publicName: "ngbHeadRowDefSticky", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
83
83
  }
84
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHeadRowDef, decorators: [{
85
85
  type: Directive,
@@ -89,25 +89,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
89
89
  }] });
90
90
  class NgbHeadRow {
91
91
  constructor() {
92
- this.def = inject(ROW_TOKEN);
92
+ this.headDef = inject(NgbHeadRowDef);
93
93
  this.table = inject(NgbTable);
94
- this.container = viewChild('container', { read: ViewContainerRef });
94
+ this.container = viewChild.required('container', { read: ViewContainerRef });
95
95
  this.ref = new Map();
96
- this.headDef = inject(NgbHeadRowDef);
97
96
  effect(() => {
98
97
  const columns = this.table.columns();
99
- this.ref.forEach((ref, column) => {
100
- if (!columns.includes(column)) {
101
- ref.destroy();
102
- this.ref.delete(column);
103
- return;
104
- }
105
- });
106
- const cols = this.headDef.ngbHeadRowDef();
107
- columns.forEach((column, index) => {
108
- if (!cols?.includes(column.ngbColumn())) {
109
- if (this.ref.has(column)) {
110
- const ref = this.ref.get(column);
98
+ const displayColumns = this.headDef.ngbHeadRowDef();
99
+ columns.forEach(column => {
100
+ const index = displayColumns.indexOf(column.ngbColumn());
101
+ if (index === -1) {
102
+ const ref = this.ref.get(column);
103
+ if (ref) {
111
104
  ref.destroy();
112
105
  this.ref.delete(column);
113
106
  }
@@ -115,9 +108,13 @@ class NgbHeadRow {
115
108
  }
116
109
  if (!this.ref.has(column)) {
117
110
  // maintain the order of the columns
118
- const ref = this.container().createEmbeddedView(column.heads(), undefined, { index });
111
+ const ref = untracked(() => this.container().createEmbeddedView(column.heads(), undefined, { index }));
119
112
  this.ref.set(column, ref);
120
113
  }
114
+ else {
115
+ const ref = this.ref.get(column);
116
+ this.container().move(ref, index);
117
+ }
121
118
  });
122
119
  });
123
120
  }
@@ -125,66 +122,67 @@ class NgbHeadRow {
125
122
  this.container().clear();
126
123
  }
127
124
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHeadRow, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
128
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbHeadRow, isStandalone: true, selector: "[ngbHeadRow]", host: { properties: { "attr.data-sticky": "headDef.ngbHeadRowDefSticky()" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0 }); }
125
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbHeadRow, isStandalone: true, selector: "[ngbHeadRow]", host: { properties: { "attr.data-sticky": "headDef.ngbHeadRowDefSticky() || undefined" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0 }); }
129
126
  }
130
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbHeadRow, decorators: [{
131
128
  type: Directive,
132
129
  args: [{
133
130
  selector: '[ngbHeadRow]',
134
131
  host: {
135
- '[attr.data-sticky]': 'headDef.ngbHeadRowDefSticky()',
132
+ '[attr.data-sticky]': 'headDef.ngbHeadRowDefSticky() || undefined',
136
133
  },
137
134
  }]
138
135
  }], ctorParameters: () => [] });
136
+ function aliasHeadRow(headRow) {
137
+ return { provide: NgbHeadRow, useExisting: headRow };
138
+ }
139
139
 
140
- const ROW_TOKEN = new InjectionToken('ROW_TOKEN');
140
+ const TABLE_ROW_DATA = new InjectionToken('TABLE_ROW_DATA');
141
141
  class NgbTable {
142
142
  constructor() {
143
143
  this.injector = inject(Injector);
144
144
  this.differs = inject(IterableDiffers);
145
- this.thead = viewChild('thead', { read: ViewContainerRef });
146
- this.tbody = viewChild('tbody', { read: ViewContainerRef });
145
+ this.thead = viewChild.required('thead', { read: ViewContainerRef });
146
+ this.tbody = viewChild.required('tbody', { read: ViewContainerRef });
147
147
  this.bodyRowDef = contentChildren(NgbBodyRowDef, { read: TemplateRef });
148
- this.headRowDef = contentChild(NgbHeadRowDef, { read: TemplateRef });
148
+ this.headRowDef = contentChild.required(NgbHeadRowDef, { read: TemplateRef });
149
149
  this.columns = contentChildren(NgbColumn);
150
+ this.plugins = signal(new Set());
150
151
  this.data = input.required();
151
152
  this.trackBy = input((_, item) => item);
153
+ this.pluggedData = computed(() => {
154
+ return Array.from(this.plugins()).reduce((acc, plugin) => plugin(acc), this.data());
155
+ });
152
156
  this._values = new WeakMap();
153
- this.valuesTracker = new Map();
154
- let headerRendered = false;
155
- effect(() => {
157
+ effect(cleanup => {
158
+ const headRowDef = this.headRowDef();
156
159
  const thead = this.thead();
160
+ // append head row
161
+ const injector = Injector.create({ providers: [], parent: this.injector });
162
+ thead.createEmbeddedView(headRowDef, {}, { injector });
163
+ cleanup(() => thead.clear());
164
+ });
165
+ effect(() => {
157
166
  const tbody = this.tbody();
158
- const headRowDef = this.headRowDef();
159
167
  const bodyRowDefs = this.bodyRowDef();
160
- const data = this.data();
168
+ const data = this.pluggedData();
161
169
  this._dataDiffers ??= this.differs.find([]).create(this.trackBy());
162
170
  const changes = this._dataDiffers?.diff(data);
163
171
  if (!changes) {
164
172
  return;
165
173
  }
166
- // append head row
167
- if (!headerRendered) {
168
- const value = null;
169
- const injector = Injector.create({
170
- providers: [{ provide: ROW_TOKEN, useValue: value }],
171
- parent: this.injector,
172
- });
173
- thead.createEmbeddedView(headRowDef, { $implicit: value }, { injector });
174
- headerRendered = true;
175
- }
176
174
  const len = bodyRowDefs.length;
177
175
  changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {
178
176
  if (item.previousIndex == null) {
179
177
  const value = item.item;
180
- this.valuesTracker.set(this.trackBy()(currentIndex, item.item), value);
178
+ const data = signal(value);
181
179
  const injector = Injector.create({
182
- providers: [{ provide: ROW_TOKEN, useValue: value }],
180
+ providers: [{ provide: TABLE_ROW_DATA, useValue: data }],
183
181
  parent: this.injector,
184
182
  });
185
183
  const i = currentIndex * len;
186
184
  for (let j = 0; j < len; j++) {
187
- const ref = tbody.createEmbeddedView(bodyRowDefs[j], { $implicit: value }, { injector, index: i + j });
185
+ const ref = tbody.createEmbeddedView(bodyRowDefs[j], { $implicit: value, _data: data }, { injector, index: i + j });
188
186
  this._values.set(ref, item.item);
189
187
  }
190
188
  }
@@ -205,9 +203,11 @@ class NgbTable {
205
203
  });
206
204
  // update rows
207
205
  changes.forEachIdentityChange(record => {
208
- const id = this.trackBy()(record.currentIndex, record.item);
209
- const value = this.valuesTracker.get(id);
210
- value?.data.set(record.item);
206
+ const ref = tbody.get(record.currentIndex);
207
+ if (ref) {
208
+ const context = ref.context;
209
+ context._data.set(record.item);
210
+ }
211
211
  });
212
212
  this._updateItemIndexContext();
213
213
  });
@@ -234,18 +234,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
234
234
  selector: 'table[ngbTable]',
235
235
  }]
236
236
  }], ctorParameters: () => [] });
237
+ function aliasTable(table) {
238
+ return { provide: NgbTable, useExisting: table };
239
+ }
237
240
  class TableOutletContext {
238
241
  constructor(data) {
239
242
  this.$implicit = data;
243
+ this._data = signal(data);
240
244
  }
241
245
  }
242
246
 
243
247
  class NgbBodyRowDef {
244
248
  constructor() {
245
- this.ngbBodyRowDefColumns = input([]);
249
+ this.ngbBodyRowDefColumns = input.required();
246
250
  }
247
251
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBodyRowDef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
248
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbBodyRowDef, isStandalone: true, selector: "[ngbBodyRowDef]", inputs: { ngbBodyRowDefColumns: { classPropertyName: "ngbBodyRowDefColumns", publicName: "ngbBodyRowDefColumns", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
252
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbBodyRowDef, isStandalone: true, selector: "[ngbBodyRowDef]", inputs: { ngbBodyRowDefColumns: { classPropertyName: "ngbBodyRowDefColumns", publicName: "ngbBodyRowDefColumns", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
249
253
  }
250
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbBodyRowDef, decorators: [{
251
255
  type: Directive,
@@ -253,38 +257,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
253
257
  }] });
254
258
  class NgbBodyRow {
255
259
  constructor() {
256
- this.def = inject(ROW_TOKEN);
260
+ this.rowData = inject(TABLE_ROW_DATA);
257
261
  this.table = inject(NgbTable);
258
262
  this.rowDef = inject(NgbBodyRowDef);
259
- this.container = viewChild('container', { read: ViewContainerRef });
263
+ this.container = viewChild.required('container', { read: ViewContainerRef });
260
264
  this.ref = new Map();
261
265
  effect(() => {
262
- const data = this.def;
263
- const rows = this.table.columns();
264
- // Remove rows that are no longer in the definition
265
- this.ref.forEach((ref, row) => {
266
- if (!rows.includes(row)) {
267
- ref.destroy();
268
- this.ref.delete(row);
269
- }
270
- });
266
+ const data = this.rowData();
267
+ const columns = this.table.columns();
271
268
  const cols = this.rowDef.ngbBodyRowDefColumns();
272
- rows.forEach((row, index) => {
273
- if (!cols?.includes(row.ngbColumn())) {
274
- if (this.ref.has(row)) {
275
- const ref = this.ref.get(row);
269
+ columns.forEach(row => {
270
+ const index = cols.indexOf(row.ngbColumn());
271
+ if (index === -1) {
272
+ const ref = this.ref.get(row);
273
+ if (ref) {
276
274
  ref.destroy();
277
275
  this.ref.delete(row);
278
276
  }
279
277
  return;
280
278
  }
281
- if (this.ref.has(row)) {
282
- const ref = this.ref.get(row);
279
+ let ref = this.ref.get(row);
280
+ if (ref) {
281
+ // move the row to the new index
282
+ this.container().move(ref, index);
283
283
  ref.context.$implicit = data;
284
284
  ref.markForCheck();
285
285
  return;
286
286
  }
287
- const ref = untracked(() => {
287
+ ref = untracked(() => {
288
288
  // maintain the order of the columns
289
289
  return this.container().createEmbeddedView(row.cells(), { $implicit: data }, { index });
290
290
  });
@@ -305,23 +305,137 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
305
305
  selector: '[ngbBodyRow]',
306
306
  }]
307
307
  }], ctorParameters: () => [] });
308
+ function aliasBodyRow(row) {
309
+ return { provide: NgbBodyRow, useExisting: row };
310
+ }
308
311
 
309
- const TableComponents = [
310
- NgbBodyRow,
311
- NgbBodyRowDef,
312
- NgbCell,
313
- NgbCellDef,
314
- NgbHead,
315
- NgbHeadDef,
316
- NgbHeadRow,
317
- NgbHeadRowDef,
318
- NgbColumn,
319
- NgbTable,
320
- ];
312
+ class NgbSort {
313
+ constructor() {
314
+ this.table = inject(NgbTable);
315
+ this.sortFn = input();
316
+ this.disableClear = input(false);
317
+ this.sortColumn = model('');
318
+ this.sortDirection = model('');
319
+ this.sortMode = input('client');
320
+ this.sortChange = output();
321
+ this.defaultSortFn = (data, column, direction) => {
322
+ let sorted = [...data];
323
+ if (direction && column) {
324
+ sorted = sorted.sort((a, b) => {
325
+ const aValue = a[column];
326
+ const bValue = b[column];
327
+ if (aValue === bValue)
328
+ return 0;
329
+ if (aValue === null || aValue === undefined)
330
+ return 1;
331
+ if (bValue === null || bValue === undefined)
332
+ return -1;
333
+ const comparison = aValue < bValue ? -1 : 1;
334
+ return direction === 'asc' ? comparison : -comparison;
335
+ });
336
+ }
337
+ return sorted;
338
+ };
339
+ effect(cleanup => {
340
+ if (this.sortMode() === 'client') {
341
+ const sortFn = untracked(() => this.sortFn() || this.defaultSortFn);
342
+ const fn = (data) => sortFn(data, this.sortColumn(), this.sortDirection());
343
+ this.table.plugins.update(plugins => new Set([...plugins, fn]));
344
+ cleanup(() => {
345
+ this.table.plugins.update(plugins => new Set([...plugins].filter(plugin => plugin !== fn)));
346
+ });
347
+ }
348
+ });
349
+ }
350
+ sort(column, direction) {
351
+ let currentDirection = this.sortDirection();
352
+ const currentColumn = this.sortColumn();
353
+ let newDirection;
354
+ let newColumn;
355
+ if (direction !== undefined) {
356
+ newDirection = direction;
357
+ newColumn = column;
358
+ }
359
+ else if (currentColumn === column) {
360
+ if (currentDirection === 'asc') {
361
+ newDirection = 'desc';
362
+ newColumn = column;
363
+ }
364
+ else if (currentDirection === 'desc') {
365
+ if (this.disableClear()) {
366
+ newDirection = 'asc';
367
+ newColumn = column;
368
+ }
369
+ else {
370
+ newDirection = '';
371
+ newColumn = '';
372
+ }
373
+ }
374
+ else {
375
+ newDirection = 'asc';
376
+ newColumn = column;
377
+ }
378
+ }
379
+ else {
380
+ newDirection = 'asc';
381
+ newColumn = column;
382
+ }
383
+ this.sortColumn.set(newColumn);
384
+ this.sortDirection.set(newDirection);
385
+ this.sortChange.emit({
386
+ active: newColumn,
387
+ direction: newDirection,
388
+ });
389
+ }
390
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbSort, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
391
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbSort, isStandalone: true, selector: "[ngbSort]", inputs: { sortFn: { classPropertyName: "sortFn", publicName: "sortFn", isSignal: true, isRequired: false, transformFunction: null }, disableClear: { classPropertyName: "disableClear", publicName: "disableClear", isSignal: true, isRequired: false, transformFunction: null }, sortColumn: { classPropertyName: "sortColumn", publicName: "sortColumn", isSignal: true, isRequired: false, transformFunction: null }, sortDirection: { classPropertyName: "sortDirection", publicName: "sortDirection", isSignal: true, isRequired: false, transformFunction: null }, sortMode: { classPropertyName: "sortMode", publicName: "sortMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortColumn: "sortColumnChange", sortDirection: "sortDirectionChange", sortChange: "sortChange" }, exportAs: ["ngbSort"], ngImport: i0 }); }
392
+ }
393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbSort, decorators: [{
394
+ type: Directive,
395
+ args: [{
396
+ selector: '[ngbSort]',
397
+ exportAs: 'ngbSort',
398
+ }]
399
+ }], ctorParameters: () => [] });
400
+ class NgbSortHeader {
401
+ constructor() {
402
+ this.sort = inject(NgbSort);
403
+ this.column = inject(NgbColumn);
404
+ this.disableClear = input(false);
405
+ this.sortDirection = computed(() => {
406
+ return this.column.ngbColumn() === this.sort.sortColumn()
407
+ ? this.sort.sortDirection()
408
+ : undefined;
409
+ });
410
+ }
411
+ setDirections(direction) {
412
+ this.sort.sort(this.column.ngbColumn(), direction);
413
+ }
414
+ toggle() {
415
+ this.sort.sort(this.column.ngbColumn(), this.sortDirection() === 'asc' ? 'desc' : this.sortDirection() === 'desc' ? '' : 'asc');
416
+ }
417
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbSortHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
418
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbSortHeader, isStandalone: true, selector: "[ngbSortHeader]", inputs: { disableClear: { classPropertyName: "disableClear", publicName: "disableClear", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-sort": "sortDirection()" } }, ngImport: i0 }); }
419
+ }
420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbSortHeader, decorators: [{
421
+ type: Directive,
422
+ args: [{
423
+ selector: '[ngbSortHeader]',
424
+ host: {
425
+ '[attr.aria-sort]': 'sortDirection()',
426
+ },
427
+ }]
428
+ }] });
429
+ function aliasSort(directive) {
430
+ return { provide: NgbSort, useExisting: directive };
431
+ }
432
+ function aliasSortHeader(directive) {
433
+ return { provide: NgbSortHeader, useExisting: directive };
434
+ }
321
435
 
322
436
  /**
323
437
  * Generated bundle index. Do not edit.
324
438
  */
325
439
 
326
- export { NgbBodyRow, NgbBodyRowDef, NgbCell, NgbCellDef, NgbColumn, NgbHead, NgbHeadDef, NgbHeadRow, NgbHeadRowDef, NgbTable, TableComponents };
440
+ export { NgbBodyRow, NgbBodyRowDef, NgbCell, NgbCellDef, NgbColumn, NgbHead, NgbHeadDef, NgbHeadRow, NgbHeadRowDef, NgbSort, NgbSortHeader, NgbTable, aliasBodyRow, aliasHeadRow, aliasSort, aliasSortHeader, aliasTable };
327
441
  //# sourceMappingURL=ngbase-adk-table.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngbase-adk-table.mjs","sources":["../../../projects/adk/table/head-cell.ts","../../../projects/adk/table/column.ts","../../../projects/adk/table/body-cell.ts","../../../projects/adk/table/head-row.ts","../../../projects/adk/table/table.ts","../../../projects/adk/table/body-row.ts","../../../projects/adk/table/public-api.ts","../../../projects/adk/table/ngbase-adk-table.ts"],"sourcesContent":["import { Directive, inject } from '@angular/core';\nimport { NgbColumn } from './column';\n\n@Directive({\n selector: '[ngbHead]',\n host: {\n '[class]': `column.sticky() === 'start' ? 'sticky left-0 border-r z-10' : column.sticky() === 'end' ? 'sticky right-0 border-l z-10' : ''`,\n },\n})\nexport class NgbHead {\n readonly column = inject(NgbColumn);\n readonly sticky = this.column.sticky;\n}\n\n@Directive({\n selector: '[ngbHeadDef]',\n})\nexport class NgbHeadDef {}\n","import { Directive, input, contentChild, TemplateRef } from '@angular/core';\nimport { NgbCellDef } from './body-cell';\nimport { NgbHeadDef } from './head-cell';\n\n@Directive({\n selector: '[ngbColumn]',\n})\nexport class NgbColumn {\n readonly ngbColumn = input.required<string>();\n readonly sticky = input<'start' | 'end' | ''>('');\n readonly cells = contentChild(NgbCellDef, { read: TemplateRef });\n readonly heads = contentChild(NgbHeadDef, { read: TemplateRef });\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbColumn } from './column';\n\n@Directive({\n selector: '[ngbCell]',\n host: {\n '[class]': `column.sticky() === 'start' ? 'sticky left-0 border-r z-10' : column.sticky() === 'end' ? 'sticky right-0 border-l z-10' : ''`,\n },\n})\nexport class NgbCell {\n readonly column = inject(NgbColumn);\n}\n\n@Directive({\n selector: '[ngbCellDef]',\n})\nexport class NgbCellDef {}\n","import {\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n input,\n OnDestroy,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgbColumn } from './column';\nimport { NgbTable, ROW_TOKEN } from './table';\n\n@Directive({\n selector: '[ngbHeadRowDef]',\n})\nexport class NgbHeadRowDef {\n readonly ngbHeadRowDef = input<string[]>();\n readonly ngbHeadRowDefSticky = input();\n}\n\n@Directive({\n selector: '[ngbHeadRow]',\n host: {\n '[attr.data-sticky]': 'headDef.ngbHeadRowDefSticky()',\n },\n})\nexport class NgbHeadRow implements OnDestroy {\n def = inject(ROW_TOKEN);\n table = inject(NgbTable);\n container = viewChild('container', { read: ViewContainerRef });\n ref = new Map<NgbColumn, EmbeddedViewRef<any>>();\n headDef = inject(NgbHeadRowDef);\n\n constructor() {\n effect(() => {\n const columns = this.table.columns();\n this.ref.forEach((ref, column) => {\n if (!columns.includes(column)) {\n ref.destroy();\n this.ref.delete(column);\n return;\n }\n });\n const cols = this.headDef.ngbHeadRowDef();\n columns.forEach((column, index) => {\n if (!cols?.includes(column.ngbColumn())) {\n if (this.ref.has(column)) {\n const ref = this.ref.get(column);\n ref!.destroy();\n this.ref.delete(column);\n }\n return;\n }\n if (!this.ref.has(column)) {\n // maintain the order of the columns\n const ref = this.container()!.createEmbeddedView(column.heads()!, undefined, { index });\n this.ref.set(column, ref);\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.container()!.clear();\n }\n}\n","import {\n contentChild,\n contentChildren,\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n InjectionToken,\n Injector,\n input,\n IterableDiffer,\n IterableDiffers,\n TemplateRef,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgbColumn } from './column';\n\nimport { NgbBodyRowDef } from './body-row';\nimport { NgbHeadRowDef } from './head-row';\n\nexport const ROW_TOKEN = new InjectionToken<any>('ROW_TOKEN');\n\n@Directive({\n selector: 'table[ngbTable]',\n})\nexport class NgbTable<T> {\n private readonly injector = inject(Injector);\n private readonly differs = inject(IterableDiffers);\n\n private readonly thead = viewChild('thead', { read: ViewContainerRef });\n private readonly tbody = viewChild('tbody', { read: ViewContainerRef });\n private readonly bodyRowDef = contentChildren(NgbBodyRowDef, { read: TemplateRef });\n private readonly headRowDef = contentChild(NgbHeadRowDef, { read: TemplateRef });\n readonly columns = contentChildren(NgbColumn);\n\n readonly data = input.required<T[]>();\n readonly trackBy = input<(index: number, item: T) => any>((_, item) => item);\n\n private _dataDiffers?: IterableDiffer<T>;\n private readonly _values = new WeakMap<EmbeddedViewRef<TableOutletContext<T>>, T>();\n private readonly valuesTracker = new Map<string, any>();\n\n constructor() {\n let headerRendered = false;\n effect(() => {\n const thead = this.thead()!;\n const tbody = this.tbody()!;\n const headRowDef = this.headRowDef()!;\n const bodyRowDefs = this.bodyRowDef()!;\n const data = this.data();\n\n this._dataDiffers ??= this.differs.find([]).create(this.trackBy());\n const changes = this._dataDiffers?.diff(data);\n\n if (!changes) {\n return;\n }\n\n // append head row\n if (!headerRendered) {\n const value = null;\n const injector = Injector.create({\n providers: [{ provide: ROW_TOKEN, useValue: value }],\n parent: this.injector,\n });\n thead.createEmbeddedView(headRowDef, { $implicit: value }, { injector });\n headerRendered = true;\n }\n\n const len = bodyRowDefs.length;\n\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n const value = item.item;\n this.valuesTracker.set(this.trackBy()(currentIndex!, item.item), value);\n const injector = Injector.create({\n providers: [{ provide: ROW_TOKEN, useValue: value }],\n parent: this.injector,\n });\n const i = currentIndex! * len;\n for (let j = 0; j < len; j++) {\n const ref = tbody.createEmbeddedView(\n bodyRowDefs[j],\n { $implicit: value },\n { injector, index: i + j },\n );\n this._values.set(ref, item.item);\n }\n } else if (currentIndex == null) {\n for (let i = 0; i < len; i++) {\n const ref = tbody.get(adjustedPreviousIndex! * len);\n ref?.destroy();\n }\n // tbody.remove(adjustedPreviousIndex!);\n } else {\n // based on current and previous index we need to check whether we need to do 1 or -1\n for (let i = 0; i < len; i++) {\n const ref = tbody.get(adjustedPreviousIndex! * len + i);\n tbody.move(ref!, currentIndex! * len + i);\n }\n }\n });\n\n // update rows\n changes.forEachIdentityChange(record => {\n const id = this.trackBy()(record.currentIndex!, record.item);\n const value = this.valuesTracker.get(id)!;\n value?.data.set(record.item);\n });\n\n this._updateItemIndexContext();\n });\n }\n\n private _updateItemIndexContext() {\n const viewContainer = this.tbody()!;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex) as any;\n const context = viewRef.context as TableOutletContext<T>;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n context.index = renderIndex;\n }\n }\n}\n\nexport class TableOutletContext<T> {\n $implicit: T;\n index?: number;\n count?: number;\n first?: boolean;\n last?: boolean;\n even?: boolean;\n odd?: boolean;\n constructor(data: T) {\n this.$implicit = data;\n }\n}\n","import {\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n input,\n OnDestroy,\n untracked,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgbColumn } from './column';\nimport { NgbTable, ROW_TOKEN } from './table';\n\n@Directive({ selector: '[ngbBodyRowDef]' })\nexport class NgbBodyRowDef {\n readonly ngbBodyRowDefColumns = input<string[]>([]);\n context: any;\n}\n\n@Directive({\n selector: '[ngbBodyRow]',\n})\nexport class NgbBodyRow implements OnDestroy {\n readonly def = inject(ROW_TOKEN);\n readonly table = inject(NgbTable);\n readonly rowDef = inject(NgbBodyRowDef);\n\n readonly container = viewChild('container', { read: ViewContainerRef });\n readonly ref = new Map<NgbColumn, EmbeddedViewRef<any>>();\n\n constructor() {\n effect(() => {\n const data = this.def;\n const rows = this.table.columns();\n // Remove rows that are no longer in the definition\n this.ref.forEach((ref, row) => {\n if (!rows.includes(row)) {\n ref.destroy();\n this.ref.delete(row);\n }\n });\n\n const cols = this.rowDef.ngbBodyRowDefColumns();\n rows.forEach((row, index) => {\n if (!cols?.includes(row.ngbColumn())) {\n if (this.ref.has(row)) {\n const ref = this.ref.get(row);\n ref!.destroy();\n this.ref.delete(row);\n }\n return;\n }\n if (this.ref.has(row)) {\n const ref = this.ref.get(row);\n ref!.context.$implicit = data;\n ref!.markForCheck();\n return;\n }\n\n const ref = untracked(() => {\n // maintain the order of the columns\n return this.container()!.createEmbeddedView(row.cells()!, { $implicit: data }, { index });\n });\n this.ref.set(row, ref);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.container()!.clear();\n this.ref.clear();\n }\n}\n","import { NgbCell, NgbCellDef } from './body-cell';\nimport { NgbBodyRow, NgbBodyRowDef } from './body-row';\nimport { NgbColumn } from './column';\nimport { NgbHead, NgbHeadDef } from './head-cell';\nimport { NgbHeadRow, NgbHeadRowDef } from './head-row';\nimport { NgbTable } from './table';\n\nconst TableComponents = [\n NgbBodyRow,\n NgbBodyRowDef,\n NgbCell,\n NgbCellDef,\n NgbHead,\n NgbHeadDef,\n NgbHeadRow,\n NgbHeadRowDef,\n NgbColumn,\n NgbTable,\n];\n\nexport {\n NgbBodyRow,\n NgbBodyRowDef,\n NgbCell,\n NgbCellDef,\n NgbHead,\n NgbHeadDef,\n NgbHeadRow,\n NgbHeadRowDef,\n NgbColumn,\n NgbTable,\n TableComponents,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngbase-adk-table.mjs","sources":["../../../projects/adk/table/head-cell.ts","../../../projects/adk/table/column.ts","../../../projects/adk/table/body-cell.ts","../../../projects/adk/table/head-row.ts","../../../projects/adk/table/table.ts","../../../projects/adk/table/body-row.ts","../../../projects/adk/table/sort.ts","../../../projects/adk/table/ngbase-adk-table.ts"],"sourcesContent":["import { Directive, inject } from '@angular/core';\nimport { NgbColumn } from './column';\n\n@Directive({\n selector: '[ngbHead]',\n host: {\n '[attr.data-sticky]': 'column.sticky() || undefined',\n },\n})\nexport class NgbHead {\n readonly column = inject(NgbColumn);\n readonly sticky = this.column.sticky;\n}\n\n@Directive({\n selector: '[ngbHeadDef]',\n})\nexport class NgbHeadDef {}\n","import { Directive, input, contentChild, TemplateRef } from '@angular/core';\nimport { NgbCellDef } from './body-cell';\nimport { NgbHeadDef } from './head-cell';\n\n@Directive({\n selector: '[ngbColumn]',\n})\nexport class NgbColumn {\n readonly ngbColumn = input.required<string>();\n readonly sticky = input<'start' | 'end' | ''>('');\n readonly cells = contentChild(NgbCellDef, { read: TemplateRef });\n readonly heads = contentChild(NgbHeadDef, { read: TemplateRef });\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbColumn } from './column';\n\n@Directive({\n selector: '[ngbCell]',\n host: {\n '[class]': `column.sticky() === 'start' ? 'sticky left-0 border-r z-10' : column.sticky() === 'end' ? 'sticky right-0 border-l z-10' : ''`,\n },\n})\nexport class NgbCell {\n readonly column = inject(NgbColumn);\n}\n\n@Directive({\n selector: '[ngbCellDef]',\n})\nexport class NgbCellDef {}\n","import {\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n input,\n OnDestroy,\n untracked,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgbColumn } from './column';\nimport { NgbTable } from './table';\n\n@Directive({\n selector: '[ngbHeadRowDef]',\n})\nexport class NgbHeadRowDef {\n readonly ngbHeadRowDef = input.required<string[]>();\n readonly ngbHeadRowDefSticky = input();\n}\n\n@Directive({\n selector: '[ngbHeadRow]',\n host: {\n '[attr.data-sticky]': 'headDef.ngbHeadRowDefSticky() || undefined',\n },\n})\nexport class NgbHeadRow implements OnDestroy {\n readonly headDef = inject(NgbHeadRowDef);\n readonly table = inject(NgbTable);\n readonly container = viewChild.required('container', { read: ViewContainerRef });\n readonly ref = new Map<NgbColumn, EmbeddedViewRef<any>>();\n\n constructor() {\n effect(() => {\n const columns = this.table.columns();\n const displayColumns = this.headDef.ngbHeadRowDef();\n columns.forEach(column => {\n const index = displayColumns.indexOf(column.ngbColumn());\n if (index === -1) {\n const ref = this.ref.get(column);\n if (ref) {\n ref.destroy();\n this.ref.delete(column);\n }\n return;\n }\n if (!this.ref.has(column)) {\n // maintain the order of the columns\n const ref = untracked(() =>\n this.container().createEmbeddedView(column.heads()!, undefined, { index }),\n );\n this.ref.set(column, ref);\n } else {\n const ref = this.ref.get(column);\n this.container().move(ref!, index);\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.container().clear();\n }\n}\n\nexport function aliasHeadRow(headRow: typeof NgbHeadRow) {\n return { provide: NgbHeadRow, useExisting: headRow };\n}\n","import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n InjectionToken,\n Injector,\n input,\n IterableDiffer,\n IterableDiffers,\n signal,\n TemplateRef,\n viewChild,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { NgbColumn } from './column';\n\nimport { NgbBodyRowDef } from './body-row';\nimport { NgbHeadRowDef } from './head-row';\n\nexport const TABLE_ROW_DATA = new InjectionToken<WritableSignal<any>>('TABLE_ROW_DATA');\n\n@Directive({\n selector: 'table[ngbTable]',\n})\nexport class NgbTable<T> {\n private readonly injector = inject(Injector);\n private readonly differs = inject(IterableDiffers);\n\n private readonly thead = viewChild.required('thead', { read: ViewContainerRef });\n private readonly tbody = viewChild.required('tbody', { read: ViewContainerRef });\n private readonly bodyRowDef = contentChildren(NgbBodyRowDef, { read: TemplateRef });\n private readonly headRowDef = contentChild.required(NgbHeadRowDef, { read: TemplateRef });\n readonly columns = contentChildren(NgbColumn);\n\n readonly plugins = signal<Set<(data: T[]) => T[]>>(new Set());\n readonly data = input.required<T[]>();\n readonly trackBy = input<(index: number, item: T) => any>((_, item) => item);\n\n private readonly pluggedData = computed(() => {\n return Array.from(this.plugins()).reduce((acc, plugin) => plugin(acc), this.data());\n });\n private _dataDiffers?: IterableDiffer<T>;\n private readonly _values = new WeakMap<EmbeddedViewRef<TableOutletContext<T>>, T>();\n\n constructor() {\n effect(cleanup => {\n const headRowDef = this.headRowDef();\n const thead = this.thead();\n\n // append head row\n const injector = Injector.create({ providers: [], parent: this.injector });\n thead.createEmbeddedView(headRowDef, {}, { injector });\n cleanup(() => thead.clear());\n });\n\n effect(() => {\n const tbody = this.tbody()!;\n const bodyRowDefs = this.bodyRowDef();\n const data = this.pluggedData();\n\n this._dataDiffers ??= this.differs.find([]).create(this.trackBy());\n const changes = this._dataDiffers?.diff(data);\n\n if (!changes) {\n return;\n }\n\n const len = bodyRowDefs.length;\n\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n const value = item.item;\n const data = signal(value);\n const injector = Injector.create({\n providers: [{ provide: TABLE_ROW_DATA, useValue: data }],\n parent: this.injector,\n });\n const i = currentIndex! * len;\n for (let j = 0; j < len; j++) {\n const ref = tbody.createEmbeddedView(\n bodyRowDefs[j],\n { $implicit: value, _data: data },\n { injector, index: i + j },\n );\n this._values.set(ref, item.item);\n }\n } else if (currentIndex == null) {\n for (let i = 0; i < len; i++) {\n const ref = tbody.get(adjustedPreviousIndex! * len);\n ref?.destroy();\n }\n // tbody.remove(adjustedPreviousIndex!);\n } else {\n // based on current and previous index we need to check whether we need to do 1 or -1\n for (let i = 0; i < len; i++) {\n const ref = tbody.get(adjustedPreviousIndex! * len + i);\n tbody.move(ref!, currentIndex! * len + i);\n }\n }\n });\n\n // update rows\n changes.forEachIdentityChange(record => {\n const ref = tbody.get(record.currentIndex!) as any;\n if (ref) {\n const context = ref.context as TableOutletContext<T>;\n context._data.set(record.item);\n }\n });\n\n this._updateItemIndexContext();\n });\n }\n\n private _updateItemIndexContext() {\n const viewContainer = this.tbody()!;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex) as any;\n const context = viewRef.context as TableOutletContext<T>;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n context.index = renderIndex;\n }\n }\n}\n\nexport function aliasTable(table: typeof NgbTable) {\n return { provide: NgbTable, useExisting: table };\n}\n\nexport class TableOutletContext<T> {\n _data: WritableSignal<T>;\n $implicit: T;\n index?: number;\n count?: number;\n first?: boolean;\n last?: boolean;\n even?: boolean;\n odd?: boolean;\n constructor(data: T) {\n this.$implicit = data;\n this._data = signal(data);\n }\n}\n","import {\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n input,\n OnDestroy,\n untracked,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgbColumn } from './column';\nimport { NgbTable, TABLE_ROW_DATA } from './table';\n\n@Directive({ selector: '[ngbBodyRowDef]' })\nexport class NgbBodyRowDef {\n readonly ngbBodyRowDefColumns = input.required<string[]>();\n context: any;\n}\n\n@Directive({\n selector: '[ngbBodyRow]',\n})\nexport class NgbBodyRow implements OnDestroy {\n readonly rowData = inject(TABLE_ROW_DATA);\n readonly table = inject(NgbTable);\n readonly rowDef = inject(NgbBodyRowDef);\n\n readonly container = viewChild.required('container', { read: ViewContainerRef });\n readonly ref = new Map<NgbColumn, EmbeddedViewRef<any>>();\n\n constructor() {\n effect(() => {\n const data = this.rowData();\n const columns = this.table.columns();\n\n const cols = this.rowDef.ngbBodyRowDefColumns();\n columns.forEach(row => {\n const index = cols.indexOf(row.ngbColumn());\n if (index === -1) {\n const ref = this.ref.get(row);\n if (ref) {\n ref.destroy();\n this.ref.delete(row);\n }\n return;\n }\n let ref = this.ref.get(row);\n if (ref) {\n // move the row to the new index\n this.container().move(ref, index);\n ref.context.$implicit = data;\n ref.markForCheck();\n return;\n }\n\n ref = untracked(() => {\n // maintain the order of the columns\n return this.container().createEmbeddedView(row.cells()!, { $implicit: data }, { index });\n });\n this.ref.set(row, ref);\n });\n });\n }\n\n ngOnDestroy(): void {\n this.container().clear();\n this.ref.clear();\n }\n}\n\nexport function aliasBodyRow(row: typeof NgbBodyRow) {\n return { provide: NgbBodyRow, useExisting: row };\n}\n","import {\n computed,\n Directive,\n effect,\n inject,\n input,\n model,\n output,\n untracked,\n} from '@angular/core';\nimport { NgbTable } from './table';\nimport { NgbColumn } from './column';\n\nexport type SortDirection = 'asc' | 'desc' | '';\n\nexport interface Sort {\n active: string;\n direction: SortDirection;\n}\n\nexport type SortFn<T> = (data: T[], column: string, direction: SortDirection) => T[];\n\n@Directive({\n selector: '[ngbSort]',\n exportAs: 'ngbSort',\n})\nexport class NgbSort<T> {\n private readonly table = inject(NgbTable);\n\n readonly sortFn = input<SortFn<T>>();\n readonly disableClear = input<boolean>(false);\n\n readonly sortColumn = model<string>('');\n readonly sortDirection = model<SortDirection>('');\n readonly sortMode = input<'client' | 'server'>('client');\n readonly sortChange = output<Sort>();\n\n constructor() {\n effect(cleanup => {\n if (this.sortMode() === 'client') {\n const sortFn = untracked(() => this.sortFn() || this.defaultSortFn);\n const fn = (data: T[]) => sortFn(data, this.sortColumn(), this.sortDirection());\n this.table.plugins.update(plugins => new Set([...plugins, fn]));\n cleanup(() => {\n this.table.plugins.update(\n plugins => new Set([...plugins].filter(plugin => plugin !== fn)),\n );\n });\n }\n });\n }\n\n private defaultSortFn: SortFn<T> = (data: T[], column: string, direction: SortDirection) => {\n let sorted = [...data];\n if (direction && column) {\n sorted = sorted.sort((a, b) => {\n const aValue = a[column as keyof T];\n const bValue = b[column as keyof T];\n\n if (aValue === bValue) return 0;\n if (aValue === null || aValue === undefined) return 1;\n if (bValue === null || bValue === undefined) return -1;\n\n const comparison = aValue < bValue ? -1 : 1;\n return direction === 'asc' ? comparison : -comparison;\n });\n }\n return sorted;\n };\n\n sort(column: string, direction?: SortDirection) {\n let currentDirection = this.sortDirection();\n const currentColumn = this.sortColumn();\n\n let newDirection: SortDirection;\n let newColumn: string;\n\n if (direction !== undefined) {\n newDirection = direction;\n newColumn = column;\n } else if (currentColumn === column) {\n if (currentDirection === 'asc') {\n newDirection = 'desc';\n newColumn = column;\n } else if (currentDirection === 'desc') {\n if (this.disableClear()) {\n newDirection = 'asc';\n newColumn = column;\n } else {\n newDirection = '';\n newColumn = '';\n }\n } else {\n newDirection = 'asc';\n newColumn = column;\n }\n } else {\n newDirection = 'asc';\n newColumn = column;\n }\n\n this.sortColumn.set(newColumn);\n this.sortDirection.set(newDirection);\n\n this.sortChange.emit({\n active: newColumn,\n direction: newDirection,\n });\n }\n}\n\n@Directive({\n selector: '[ngbSortHeader]',\n host: {\n '[attr.aria-sort]': 'sortDirection()',\n },\n})\nexport class NgbSortHeader<T extends NgbSort<U>, U = any> {\n readonly sort = inject<T>(NgbSort as any);\n readonly column = inject(NgbColumn);\n\n readonly disableClear = input<boolean>(false);\n readonly sortDirection = computed(() => {\n return this.column.ngbColumn() === this.sort.sortColumn()\n ? this.sort.sortDirection()\n : undefined;\n });\n\n setDirections(direction: SortDirection) {\n this.sort.sort(this.column.ngbColumn(), direction);\n }\n\n toggle() {\n this.sort.sort(\n this.column.ngbColumn(),\n this.sortDirection() === 'asc' ? 'desc' : this.sortDirection() === 'desc' ? '' : 'asc',\n );\n }\n}\n\nexport function aliasSort(directive: typeof NgbSort) {\n return { provide: NgbSort, useExisting: directive };\n}\n\nexport function aliasSortHeader(directive: typeof NgbSortHeader<any, any>) {\n return { provide: NgbSortHeader, useExisting: directive };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngbase/adk",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/ng-base/ngbase.git"
@@ -40,30 +40,30 @@
40
40
  "types": "./accordion/index.d.ts",
41
41
  "default": "./fesm2022/ngbase-adk-accordion.mjs"
42
42
  },
43
- "./autocomplete": {
44
- "types": "./autocomplete/index.d.ts",
45
- "default": "./fesm2022/ngbase-adk-autocomplete.mjs"
46
- },
47
43
  "./bidi": {
48
44
  "types": "./bidi/index.d.ts",
49
45
  "default": "./fesm2022/ngbase-adk-bidi.mjs"
50
46
  },
51
- "./avatar": {
52
- "types": "./avatar/index.d.ts",
53
- "default": "./fesm2022/ngbase-adk-avatar.mjs"
47
+ "./autocomplete": {
48
+ "types": "./autocomplete/index.d.ts",
49
+ "default": "./fesm2022/ngbase-adk-autocomplete.mjs"
54
50
  },
55
51
  "./breadcrumb": {
56
52
  "types": "./breadcrumb/index.d.ts",
57
53
  "default": "./fesm2022/ngbase-adk-breadcrumb.mjs"
58
54
  },
59
- "./cache": {
60
- "types": "./cache/index.d.ts",
61
- "default": "./fesm2022/ngbase-adk-cache.mjs"
55
+ "./avatar": {
56
+ "types": "./avatar/index.d.ts",
57
+ "default": "./fesm2022/ngbase-adk-avatar.mjs"
62
58
  },
63
59
  "./carousel": {
64
60
  "types": "./carousel/index.d.ts",
65
61
  "default": "./fesm2022/ngbase-adk-carousel.mjs"
66
62
  },
63
+ "./cache": {
64
+ "types": "./cache/index.d.ts",
65
+ "default": "./fesm2022/ngbase-adk-cache.mjs"
66
+ },
67
67
  "./checkbox": {
68
68
  "types": "./checkbox/index.d.ts",
69
69
  "default": "./fesm2022/ngbase-adk-checkbox.mjs"
@@ -224,6 +224,10 @@
224
224
  "types": "./toggle/index.d.ts",
225
225
  "default": "./fesm2022/ngbase-adk-toggle.mjs"
226
226
  },
227
+ "./toggle-group": {
228
+ "types": "./toggle-group/index.d.ts",
229
+ "default": "./fesm2022/ngbase-adk-toggle-group.mjs"
230
+ },
227
231
  "./tooltip": {
228
232
  "types": "./tooltip/index.d.ts",
229
233
  "default": "./fesm2022/ngbase-adk-tooltip.mjs"
@@ -247,10 +251,6 @@
247
251
  "./virtualizer": {
248
252
  "types": "./virtualizer/index.d.ts",
249
253
  "default": "./fesm2022/ngbase-adk-virtualizer.mjs"
250
- },
251
- "./toggle-group": {
252
- "types": "./toggle-group/index.d.ts",
253
- "default": "./fesm2022/ngbase-adk-toggle-group.mjs"
254
254
  }
255
255
  }
256
256
  }
@@ -17,7 +17,7 @@ import { Chip, ChipGroup } from '<%= basepath %>/chip';
17
17
 
18
18
  - **Outputs:**
19
19
 
20
- - `close`: void - Emits when the chip is closed
20
+ - `close`: PointerEvent - Emits when the close button is clicked
21
21
 
22
22
  ## Usage
23
23
 
@@ -4,7 +4,10 @@ import { ɵFocusStyles as focusStyles } from '<%= basepath %>/checkbox';
4
4
  @Directive({
5
5
  selector: '[<%= name %>InputStyle]',
6
6
  host: {
7
- class: `mis inline-block rounded-lg bg-transparent px-2.5 py-2 border font-normal min-h-10 ${focusStyles.focus} ${focusStyles.within}`,
7
+ '[class]':
8
+ "'mis inline-block rounded-lg bg-transparent px-2.5 py-2 border font-normal min-h-10 ' + focusStyles.focus + ' ' + focusStyles.within",
8
9
  },
9
10
  })
10
- export class InputStyle {}
11
+ export class InputStyle {
12
+ readonly focusStyles = focusStyles;
13
+ }
@@ -1,6 +1,6 @@
1
1
  import { Directive } from '@angular/core';
2
2
  import { NgbList, NgbListActionGroup, provideList } from '@ngbase/adk/list';
3
- import { FocusStyle } from '../checkbox/focus-style.directive';
3
+ import { ɵFocusStyle as FocusStyle } from '<%= basepath %>/checkbox';
4
4
 
5
5
  @Directive({
6
6
  selector: '[<%= name %>ListStyle]',
@@ -1,5 +1,11 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
2
+ import {
3
+ booleanAttribute,
4
+ ChangeDetectionStrategy,
5
+ Component,
6
+ Directive,
7
+ input,
8
+ } from '@angular/core';
3
9
  import { FormsModule } from '@angular/forms';
4
10
  import { Icon } from '<%= basepath %>/icon';
5
11
  import { provideIcons } from '@ng-icons/core';
@@ -13,6 +19,7 @@ import {
13
19
  } from '@ngbase/adk/select';
14
20
  import { Option } from './option';
15
21
  import { SelectInput } from './select-input';
22
+ import { PopoverOptions } from '@ngbase/adk/popover';
16
23
 
17
24
  @Directive({
18
25
  selector: '[<%= name %>SelectOption]',
@@ -48,7 +55,9 @@ export class SelectOption<T> {}
48
55
  {{ cValue() || placeholder() }}
49
56
  </ng-content>
50
57
  </span>
51
- <<%= name %>-icon name="lucideChevronsUpDown" class="ml-0.5 text-muted-foreground" />
58
+ @if (!noIcon()) {
59
+ <<%= name %>-icon name="lucideChevronsUpDown" class="ml-0.5 text-muted-foreground" />
60
+ }
52
61
  </button>
53
62
 
54
63
  <!-- Options template -->
@@ -92,8 +101,8 @@ export class SelectOption<T> {}
92
101
  },
93
102
  })
94
103
  export class Select<T> extends NgbSelect<T> {
95
- override defaultOptions = {
104
+ readonly noIcon = input(false, { transform: booleanAttribute });
105
+ override defaultOptions: Partial<PopoverOptions> = {
96
106
  sideOffset: 16,
97
- offset1: 0,
98
107
  };
99
108
  }
@@ -1,5 +1,10 @@
1
- import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, Directive, input } from '@angular/core';
2
2
  import {
3
+ aliasBodyRow,
4
+ aliasHeadRow,
5
+ aliasSort,
6
+ aliasSortHeader,
7
+ aliasTable,
3
8
  NgbBodyRow,
4
9
  NgbBodyRowDef,
5
10
  NgbCell,
@@ -9,13 +14,22 @@ import {
9
14
  NgbHeadDef,
10
15
  NgbHeadRow,
11
16
  NgbHeadRowDef,
17
+ NgbSort,
18
+ NgbSortHeader,
12
19
  NgbTable,
13
20
  } from '@ngbase/adk/table';
21
+ import { Select, Option, SelectTrigger } from '<%= basepath %>/select';
22
+ import { FormField, InputSuffix } from '<%= basepath %>/form-field';
23
+ import { Icon } from '<%= basepath %>/icon';
24
+ import { provideIcons } from '@ng-icons/core';
25
+ import { lucideArrowDown, lucideArrowUp, lucideChevronsUpDown } from '@ng-icons/lucide';
26
+ import { Button } from '<%= basepath %>/button';
27
+ import { NgTemplateOutlet } from '@angular/common';
14
28
 
15
29
  @Component({
16
30
  selector: 'table[<%= name %>Table]',
17
31
  changeDetection: ChangeDetectionStrategy.OnPush,
18
- providers: [{ provide: NgbTable, useExisting: Table }],
32
+ providers: [aliasTable(Table)],
19
33
  template: `
20
34
  <thead>
21
35
  <ng-container #thead />
@@ -25,7 +39,7 @@ import {
25
39
  </tbody>
26
40
  `,
27
41
  host: {
28
- class: 'w-full text-sm',
42
+ class: 'w-full text-sm border-separate border-spacing-0',
29
43
  },
30
44
  })
31
45
  export class Table<T> extends NgbTable<T> {}
@@ -61,10 +75,10 @@ export class BodyRowDef {}
61
75
  @Component({
62
76
  selector: '[<%= name %>BodyRow]',
63
77
  changeDetection: ChangeDetectionStrategy.OnPush,
64
- providers: [{ provide: NgbBodyRow, useExisting: BodyRow }],
78
+ providers: [aliasBodyRow(BodyRow)],
65
79
  template: `<ng-container #container />`,
66
80
  host: {
67
- class: '[&:not(:last-child)]:border-b hover:bg-muted h-12',
81
+ class: '[&:not(:last-child)>td]:border-b hover:bg-muted h-12',
68
82
  },
69
83
  })
70
84
  export class BodyRow extends NgbBodyRow {}
@@ -79,14 +93,12 @@ export class Column {}
79
93
 
80
94
  // Head Cell
81
95
 
82
- @Component({
96
+ @Directive({
83
97
  selector: '[<%= name %>Head]',
84
- changeDetection: ChangeDetectionStrategy.OnPush,
85
98
  hostDirectives: [NgbHead],
86
- template: `<ng-content />`,
87
99
  host: {
88
100
  class:
89
- 'px-4 py-2 text-left align-middle font-medium text-muted-foreground border-b bg-background',
101
+ 'px-4 py-2 text-left align-middle font-medium text-muted-foreground border-b bg-background [&[data-sticky]]:sticky [&[data-sticky]]:!z-20 [&[data-sticky="start"]]:left-0 [&[data-sticky="end"]]:right-0 [&[data-sticky="start"]]:border-r [&[data-sticky="end"]]:border-l',
90
102
  },
91
103
  })
92
104
  export class Head {}
@@ -102,10 +114,10 @@ export class HeadDef {}
102
114
  @Component({
103
115
  selector: '[<%= name %>HeadRow]',
104
116
  changeDetection: ChangeDetectionStrategy.OnPush,
105
- providers: [{ provide: NgbHeadRow, useExisting: HeadRow }],
117
+ providers: [aliasHeadRow(HeadRow)],
106
118
  template: `<ng-container #container />`,
107
119
  host: {
108
- class: `h-10 [&[data-sticky=true]]:sticky [&[data-sticky=true]]:top-0 [&[data-sticky=true]]:bg-background`,
120
+ class: `h-10 [&[data-sticky]>th]:sticky [&[data-sticky]>th]:top-0 [&[data-sticky]>th]:bg-background [&[data-sticky]>th]:z-10`,
109
121
  },
110
122
  })
111
123
  export class HeadRow extends NgbHeadRow {}
@@ -120,3 +132,49 @@ export class HeadRow extends NgbHeadRow {}
120
132
  ],
121
133
  })
122
134
  export class HeadRowDef {}
135
+
136
+ @Directive({
137
+ selector: '[<%= name %>Sort]',
138
+ providers: [aliasSort(Sort)],
139
+ })
140
+ export class Sort extends NgbSort<any> {
141
+ readonly mode = input<'selection' | 'toggle'>('toggle');
142
+ }
143
+
144
+ @Component({
145
+ selector: '[<%= name %>SortHeader]',
146
+ changeDetection: ChangeDetectionStrategy.OnPush,
147
+ viewProviders: [provideIcons({ lucideChevronsUpDown, lucideArrowDown, lucideArrowUp })],
148
+ providers: [aliasSortHeader(SortHeader)],
149
+ imports: [Select, Option, SelectTrigger, FormField, InputSuffix, Icon, Button, NgTemplateOutlet],
150
+ template: `
151
+ <ng-template #temp><ng-content /></ng-template>
152
+ @if (sort.mode() === 'selection') {
153
+ <<%= name %>-form-field class="[&>.mis]:h-8 [&>.mis]:min-h-8 [&>.mis]:border-none">
154
+ <<%= name %>-select noIcon>
155
+ <div <%= name %>SelectTrigger class="text-xs"><ng-container *ngTemplateOutlet="temp" /></div>
156
+ <<%= name %>-option value="asc" (click)="setDirections('asc')">Asc</<%= name %>-option>
157
+ <<%= name %>-option value="desc" (click)="setDirections('desc')">Desc</<%= name %>-option>
158
+ </<%= name %>-select>
159
+ <<%= name %>-icon <%= name %>Suffix [name]="directionIcon()" class="!ml-0.5 text-muted-foreground" />
160
+ </<%= name %>-form-field>
161
+ } @else {
162
+ <button <%= name %>Button="ghost" class="h-8 gap-0.5 !px-2" (click)="toggle()">
163
+ <ng-container *ngTemplateOutlet="temp" />
164
+ <<%= name %>-icon [name]="directionIcon()" />
165
+ </button>
166
+ }
167
+ `,
168
+ host: {
169
+ class: '!py-1 !px-2',
170
+ },
171
+ })
172
+ export class SortHeader extends NgbSortHeader<Sort> {
173
+ readonly directionIcon = computed(() => {
174
+ return this.sortDirection() === 'asc'
175
+ ? 'lucideArrowDown'
176
+ : this.sortDirection() === 'desc'
177
+ ? 'lucideArrowUp'
178
+ : 'lucideChevronsUpDown';
179
+ });
180
+ }
@@ -6,16 +6,20 @@ export declare class NgbBodyRowDef {
6
6
  readonly ngbBodyRowDefColumns: import("@angular/core").InputSignal<string[]>;
7
7
  context: any;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbBodyRowDef, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBodyRowDef, "[ngbBodyRowDef]", never, { "ngbBodyRowDefColumns": { "alias": "ngbBodyRowDefColumns"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBodyRowDef, "[ngbBodyRowDef]", never, { "ngbBodyRowDefColumns": { "alias": "ngbBodyRowDefColumns"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
10
10
  }
11
11
  export declare class NgbBodyRow implements OnDestroy {
12
- readonly def: any;
12
+ readonly rowData: import("@angular/core").WritableSignal<any>;
13
13
  readonly table: NgbTable<any>;
14
14
  readonly rowDef: NgbBodyRowDef;
15
- readonly container: import("@angular/core").Signal<ViewContainerRef | undefined>;
15
+ readonly container: import("@angular/core").Signal<ViewContainerRef>;
16
16
  readonly ref: Map<NgbColumn, EmbeddedViewRef<any>>;
17
17
  constructor();
18
18
  ngOnDestroy(): void;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbBodyRow, never>;
20
20
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbBodyRow, "[ngbBodyRow]", never, {}, {}, never, never, true, never>;
21
21
  }
22
+ export declare function aliasBodyRow(row: typeof NgbBodyRow): {
23
+ provide: typeof NgbBodyRow;
24
+ useExisting: typeof NgbBodyRow;
25
+ };
@@ -3,19 +3,22 @@ import { NgbColumn } from './column';
3
3
  import { NgbTable } from './table';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class NgbHeadRowDef {
6
- readonly ngbHeadRowDef: import("@angular/core").InputSignal<string[] | undefined>;
6
+ readonly ngbHeadRowDef: import("@angular/core").InputSignal<string[]>;
7
7
  readonly ngbHeadRowDefSticky: import("@angular/core").InputSignal<unknown>;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbHeadRowDef, never>;
9
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgbHeadRowDef, "[ngbHeadRowDef]", never, { "ngbHeadRowDef": { "alias": "ngbHeadRowDef"; "required": false; "isSignal": true; }; "ngbHeadRowDefSticky": { "alias": "ngbHeadRowDefSticky"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbHeadRowDef, "[ngbHeadRowDef]", never, { "ngbHeadRowDef": { "alias": "ngbHeadRowDef"; "required": true; "isSignal": true; }; "ngbHeadRowDefSticky": { "alias": "ngbHeadRowDefSticky"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
10
  }
11
11
  export declare class NgbHeadRow implements OnDestroy {
12
- def: any;
13
- table: NgbTable<any>;
14
- container: import("@angular/core").Signal<ViewContainerRef | undefined>;
15
- ref: Map<NgbColumn, EmbeddedViewRef<any>>;
16
- headDef: NgbHeadRowDef;
12
+ readonly headDef: NgbHeadRowDef;
13
+ readonly table: NgbTable<any>;
14
+ readonly container: import("@angular/core").Signal<ViewContainerRef>;
15
+ readonly ref: Map<NgbColumn, EmbeddedViewRef<any>>;
17
16
  constructor();
18
17
  ngOnDestroy(): void;
19
18
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbHeadRow, never>;
20
19
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbHeadRow, "[ngbHeadRow]", never, {}, {}, never, never, true, never>;
21
20
  }
21
+ export declare function aliasHeadRow(headRow: typeof NgbHeadRow): {
22
+ provide: typeof NgbHeadRow;
23
+ useExisting: typeof NgbHeadRow;
24
+ };
@@ -1,8 +1,8 @@
1
1
  import { NgbCell, NgbCellDef } from './body-cell';
2
- import { NgbBodyRow, NgbBodyRowDef } from './body-row';
2
+ import { NgbBodyRow, NgbBodyRowDef, aliasBodyRow } from './body-row';
3
3
  import { NgbColumn } from './column';
4
4
  import { NgbHead, NgbHeadDef } from './head-cell';
5
- import { NgbHeadRow, NgbHeadRowDef } from './head-row';
6
- import { NgbTable } from './table';
7
- declare const TableComponents: (typeof NgbHeadDef)[];
8
- export { NgbBodyRow, NgbBodyRowDef, NgbCell, NgbCellDef, NgbHead, NgbHeadDef, NgbHeadRow, NgbHeadRowDef, NgbColumn, NgbTable, TableComponents, };
5
+ import { NgbHeadRow, NgbHeadRowDef, aliasHeadRow } from './head-row';
6
+ import { aliasSort, aliasSortHeader, NgbSort, NgbSortHeader } from './sort';
7
+ import { NgbTable, aliasTable } from './table';
8
+ export { NgbBodyRow, NgbBodyRowDef, NgbCell, NgbCellDef, NgbColumn, NgbHead, NgbHeadDef, NgbHeadRow, NgbHeadRowDef, NgbSort, NgbSortHeader, NgbTable, aliasBodyRow, aliasHeadRow, aliasSort, aliasSortHeader, aliasTable, };
@@ -0,0 +1,40 @@
1
+ import { NgbColumn } from './column';
2
+ import * as i0 from "@angular/core";
3
+ export type SortDirection = 'asc' | 'desc' | '';
4
+ export interface Sort {
5
+ active: string;
6
+ direction: SortDirection;
7
+ }
8
+ export type SortFn<T> = (data: T[], column: string, direction: SortDirection) => T[];
9
+ export declare class NgbSort<T> {
10
+ private readonly table;
11
+ readonly sortFn: import("@angular/core").InputSignal<SortFn<T> | undefined>;
12
+ readonly disableClear: import("@angular/core").InputSignal<boolean>;
13
+ readonly sortColumn: import("@angular/core").ModelSignal<string>;
14
+ readonly sortDirection: import("@angular/core").ModelSignal<SortDirection>;
15
+ readonly sortMode: import("@angular/core").InputSignal<"client" | "server">;
16
+ readonly sortChange: import("@angular/core").OutputEmitterRef<Sort>;
17
+ constructor();
18
+ private defaultSortFn;
19
+ sort(column: string, direction?: SortDirection): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbSort<any>, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbSort<any>, "[ngbSort]", ["ngbSort"], { "sortFn": { "alias": "sortFn"; "required": false; "isSignal": true; }; "disableClear": { "alias": "disableClear"; "required": false; "isSignal": true; }; "sortColumn": { "alias": "sortColumn"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "sortMode": { "alias": "sortMode"; "required": false; "isSignal": true; }; }, { "sortColumn": "sortColumnChange"; "sortDirection": "sortDirectionChange"; "sortChange": "sortChange"; }, never, never, true, never>;
22
+ }
23
+ export declare class NgbSortHeader<T extends NgbSort<U>, U = any> {
24
+ readonly sort: T;
25
+ readonly column: NgbColumn;
26
+ readonly disableClear: import("@angular/core").InputSignal<boolean>;
27
+ readonly sortDirection: import("@angular/core").Signal<SortDirection | undefined>;
28
+ setDirections(direction: SortDirection): void;
29
+ toggle(): void;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgbSortHeader<any, any>, never>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgbSortHeader<any, any>, "[ngbSortHeader]", never, { "disableClear": { "alias": "disableClear"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
32
+ }
33
+ export declare function aliasSort(directive: typeof NgbSort): {
34
+ provide: typeof NgbSort;
35
+ useExisting: typeof NgbSort;
36
+ };
37
+ export declare function aliasSortHeader(directive: typeof NgbSortHeader<any, any>): {
38
+ provide: typeof NgbSortHeader;
39
+ useExisting: typeof NgbSortHeader<any, any>;
40
+ };
package/table/table.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { InjectionToken } from '@angular/core';
1
+ import { InjectionToken, WritableSignal } from '@angular/core';
2
2
  import { NgbColumn } from './column';
3
3
  import * as i0 from "@angular/core";
4
- export declare const ROW_TOKEN: InjectionToken<any>;
4
+ export declare const TABLE_ROW_DATA: InjectionToken<WritableSignal<any>>;
5
5
  export declare class NgbTable<T> {
6
6
  private readonly injector;
7
7
  private readonly differs;
@@ -10,17 +10,23 @@ export declare class NgbTable<T> {
10
10
  private readonly bodyRowDef;
11
11
  private readonly headRowDef;
12
12
  readonly columns: import("@angular/core").Signal<readonly NgbColumn[]>;
13
+ readonly plugins: WritableSignal<Set<(data: T[]) => T[]>>;
13
14
  readonly data: import("@angular/core").InputSignal<T[]>;
14
15
  readonly trackBy: import("@angular/core").InputSignal<(index: number, item: T) => any>;
16
+ private readonly pluggedData;
15
17
  private _dataDiffers?;
16
18
  private readonly _values;
17
- private readonly valuesTracker;
18
19
  constructor();
19
20
  private _updateItemIndexContext;
20
21
  static ɵfac: i0.ɵɵFactoryDeclaration<NgbTable<any>, never>;
21
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<NgbTable<any>, "table[ngbTable]", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, {}, ["bodyRowDef", "headRowDef", "columns"], never, true, never>;
22
23
  }
24
+ export declare function aliasTable(table: typeof NgbTable): {
25
+ provide: typeof NgbTable;
26
+ useExisting: typeof NgbTable;
27
+ };
23
28
  export declare class TableOutletContext<T> {
29
+ _data: WritableSignal<T>;
24
30
  $implicit: T;
25
31
  index?: number;
26
32
  count?: number;