@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.
- package/collections/SelectionModel.d.ts +8 -3
- package/datepicker/datepicker-trigger.d.ts +1 -1
- package/datepicker/datepicker.d.ts +2 -2
- package/fesm2022/ngbase-adk-chip.mjs +2 -2
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-collections.mjs +8 -1
- package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +195 -81
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/package.json +15 -15
- package/schematics/components/files/chip/chip-llm.md.template +1 -1
- package/schematics/components/files/form-field/input-style.directive.ts.template +5 -2
- package/schematics/components/files/list/list.ts.template +1 -1
- package/schematics/components/files/select/select.ts.template +13 -4
- package/schematics/components/files/table/table.ts.template +69 -11
- package/table/body-row.d.ts +7 -3
- package/table/head-row.d.ts +10 -7
- package/table/public-api.d.ts +5 -5
- package/table/sort.d.ts +40 -0
- package/table/table.d.ts +9 -3
|
@@ -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:
|
|
5
|
-
readonly isEmpty:
|
|
6
|
-
|
|
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<"
|
|
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<"
|
|
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<"
|
|
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":";;;;MAWa,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;AASW,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,EAAC,OAAY,EAAC;AACrC;8GAFY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,
|
|
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;
|
|
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,
|
|
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: { "
|
|
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
|
-
'[
|
|
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:
|
|
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.
|
|
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.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
|
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
|
-
|
|
154
|
-
|
|
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.
|
|
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
|
-
|
|
178
|
+
const data = signal(value);
|
|
181
179
|
const injector = Injector.create({
|
|
182
|
-
providers: [{ provide:
|
|
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
|
|
209
|
-
|
|
210
|
-
|
|
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:
|
|
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.
|
|
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.
|
|
263
|
-
const
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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
|
-
|
|
282
|
-
|
|
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
|
-
|
|
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
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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,
|
|
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.
|
|
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
|
-
"./
|
|
52
|
-
"types": "./
|
|
53
|
-
"default": "./fesm2022/ngbase-adk-
|
|
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
|
-
"./
|
|
60
|
-
"types": "./
|
|
61
|
-
"default": "./fesm2022/ngbase-adk-
|
|
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
|
}
|
|
@@ -4,7 +4,10 @@ import { ɵFocusStyles as focusStyles } from '<%= basepath %>/checkbox';
|
|
|
4
4
|
@Directive({
|
|
5
5
|
selector: '[<%= name %>InputStyle]',
|
|
6
6
|
host: {
|
|
7
|
-
class:
|
|
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 '
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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: [
|
|
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: [
|
|
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
|
-
@
|
|
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: [
|
|
117
|
+
providers: [aliasHeadRow(HeadRow)],
|
|
106
118
|
template: `<ng-container #container />`,
|
|
107
119
|
host: {
|
|
108
|
-
class: `h-10 [&[data-sticky
|
|
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
|
+
}
|
package/table/body-row.d.ts
CHANGED
|
@@ -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":
|
|
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
|
|
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
|
|
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
|
+
};
|
package/table/head-row.d.ts
CHANGED
|
@@ -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[]
|
|
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":
|
|
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
|
-
|
|
13
|
-
table: NgbTable<any>;
|
|
14
|
-
container: import("@angular/core").Signal<ViewContainerRef
|
|
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
|
+
};
|
package/table/public-api.d.ts
CHANGED
|
@@ -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 {
|
|
7
|
-
|
|
8
|
-
export { NgbBodyRow, NgbBodyRowDef, NgbCell, NgbCellDef, NgbHead, NgbHeadDef, NgbHeadRow, NgbHeadRowDef,
|
|
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, };
|
package/table/sort.d.ts
ADDED
|
@@ -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
|
|
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;
|