@recursyve/nice-selectable-list 19.0.0-beta.2 → 20.0.0-beta.3
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/fesm2022/recursyve-nice-selectable-list.mjs +21 -21
- package/fesm2022/recursyve-nice-selectable-list.mjs.map +1 -1
- package/index.d.ts +109 -1
- package/package.json +5 -5
- package/selectable-list/entity-checkbox.directive.d.ts +0 -17
- package/selectable-list/header-checkbox.directive.d.ts +0 -11
- package/selectable-list/index.d.ts +0 -6
- package/selectable-list/injector.d.ts +0 -4
- package/selectable-list/provider.d.ts +0 -15
- package/selectable-list/selectable-list.d.ts +0 -27
- package/selectable-list/store.d.ts +0 -37
|
@@ -7,14 +7,14 @@ import { filter, take } from 'rxjs';
|
|
|
7
7
|
|
|
8
8
|
class NiceSelectableListStore {
|
|
9
9
|
_config;
|
|
10
|
-
_entities = signal([]);
|
|
11
|
-
_activeEntity = signal(null);
|
|
12
|
-
_checkboxes = signal([]);
|
|
10
|
+
_entities = signal([], ...(ngDevMode ? [{ debugName: "_entities" }] : []));
|
|
11
|
+
_activeEntity = signal(null, ...(ngDevMode ? [{ debugName: "_activeEntity" }] : []));
|
|
12
|
+
_checkboxes = signal([], ...(ngDevMode ? [{ debugName: "_checkboxes" }] : []));
|
|
13
13
|
entities = this._entities.asReadonly();
|
|
14
14
|
activeEntity = this._activeEntity.asReadonly();
|
|
15
|
-
total = computed(() => this._entities().length);
|
|
16
|
-
entitiesIds = computed(() => this._entities().map((entity) => entity.id));
|
|
17
|
-
activeEntityId = computed(() => this._activeEntity()?.id ?? null);
|
|
15
|
+
total = computed(() => this._entities().length, ...(ngDevMode ? [{ debugName: "total" }] : []));
|
|
16
|
+
entitiesIds = computed(() => this._entities().map((entity) => entity.id), ...(ngDevMode ? [{ debugName: "entitiesIds" }] : []));
|
|
17
|
+
activeEntityId = computed(() => this._activeEntity()?.id ?? null, ...(ngDevMode ? [{ debugName: "activeEntityId" }] : []));
|
|
18
18
|
constructor(_config) {
|
|
19
19
|
this._config = _config;
|
|
20
20
|
}
|
|
@@ -189,10 +189,10 @@ function resolveNiceSelectableList(...args) {
|
|
|
189
189
|
|
|
190
190
|
const NICE_SELECTABLE_LIST_DIRECTIVE = new InjectionToken("_selectable_list_directive");
|
|
191
191
|
class SelectableListDirective {
|
|
192
|
-
name = input(null, { alias: "niceSelectableList" });
|
|
193
|
-
enableQueryParams = input(false);
|
|
194
|
-
checkboxes = contentChildren(NiceSelectableListEntityCheckboxDirective, { descendants: true });
|
|
195
|
-
_initialized = signal(false);
|
|
192
|
+
name = input(null, ...(ngDevMode ? [{ debugName: "name", alias: "niceSelectableList" }] : [{ alias: "niceSelectableList" }]));
|
|
193
|
+
enableQueryParams = input(false, ...(ngDevMode ? [{ debugName: "enableQueryParams" }] : []));
|
|
194
|
+
checkboxes = contentChildren(NiceSelectableListEntityCheckboxDirective, ...(ngDevMode ? [{ debugName: "checkboxes", descendants: true }] : [{ descendants: true }]));
|
|
195
|
+
_initialized = signal(false, ...(ngDevMode ? [{ debugName: "_initialized" }] : []));
|
|
196
196
|
initialized = this._initialized.asReadonly();
|
|
197
197
|
route = inject(ActivatedRoute);
|
|
198
198
|
router = inject(Router);
|
|
@@ -266,12 +266,12 @@ class SelectableListDirective {
|
|
|
266
266
|
this.selectableLists.setActiveFromSelected(params.selected);
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
270
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
269
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
270
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.1", type: SelectableListDirective, isStandalone: true, selector: "[niceSelectableList]", inputs: { name: { classPropertyName: "name", publicName: "niceSelectableList", isSignal: true, isRequired: false, transformFunction: null }, enableQueryParams: { classPropertyName: "enableQueryParams", publicName: "enableQueryParams", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
271
271
|
{ provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }
|
|
272
272
|
], queries: [{ propertyName: "checkboxes", predicate: NiceSelectableListEntityCheckboxDirective, descendants: true, isSignal: true }], ngImport: i0 });
|
|
273
273
|
}
|
|
274
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectableListDirective, decorators: [{
|
|
275
275
|
type: Directive,
|
|
276
276
|
args: [{
|
|
277
277
|
selector: "[niceSelectableList]",
|
|
@@ -301,8 +301,8 @@ class NiceSelectableListEntityCheckboxDirective {
|
|
|
301
301
|
matCheckbox = inject(MatCheckbox);
|
|
302
302
|
destroyRef = inject(DestroyRef);
|
|
303
303
|
niceSelectableList = injectNiceSelectableList();
|
|
304
|
-
selectableEntity = input.required();
|
|
305
|
-
isSelected = computed(() => this.niceSelectableList.isEntitySelected(this.selectableEntity())());
|
|
304
|
+
selectableEntity = input.required(...(ngDevMode ? [{ debugName: "selectableEntity" }] : []));
|
|
305
|
+
isSelected = computed(() => this.niceSelectableList.isEntitySelected(this.selectableEntity())(), ...(ngDevMode ? [{ debugName: "isSelected" }] : []));
|
|
306
306
|
constructor() {
|
|
307
307
|
effect(() => {
|
|
308
308
|
this.matCheckbox.checked = this.niceSelectableList.isEntitySelected(this.selectableEntity())();
|
|
@@ -330,10 +330,10 @@ class NiceSelectableListEntityCheckboxDirective {
|
|
|
330
330
|
this.matCheckbox.checked = false;
|
|
331
331
|
this.matCheckbox.change.emit({ checked: false, source: this.matCheckbox });
|
|
332
332
|
}
|
|
333
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
334
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
333
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceSelectableListEntityCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
334
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: NiceSelectableListEntityCheckboxDirective, isStandalone: true, selector: "mat-checkbox[niceSelectableListEntityCheckbox]", inputs: { selectableEntity: { classPropertyName: "selectableEntity", publicName: "selectableEntity", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
335
335
|
}
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceSelectableListEntityCheckboxDirective, decorators: [{
|
|
337
337
|
type: Directive,
|
|
338
338
|
args: [{
|
|
339
339
|
selector: "mat-checkbox[niceSelectableListEntityCheckbox]"
|
|
@@ -365,10 +365,10 @@ class NiceSelectableListHeaderCheckboxDirective {
|
|
|
365
365
|
}
|
|
366
366
|
});
|
|
367
367
|
}
|
|
368
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
369
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
368
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceSelectableListHeaderCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
369
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: NiceSelectableListHeaderCheckboxDirective, isStandalone: true, selector: "mat-checkbox[niceSelectableListHeaderCheckbox]", ngImport: i0 });
|
|
370
370
|
}
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
371
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NiceSelectableListHeaderCheckboxDirective, decorators: [{
|
|
372
372
|
type: Directive,
|
|
373
373
|
args: [{
|
|
374
374
|
selector: "mat-checkbox[niceSelectableListHeaderCheckbox]"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursyve-nice-selectable-list.mjs","sources":["../../../src/nice-selectable-list/selectable-list/store.ts","../../../src/nice-selectable-list/selectable-list/provider.ts","../../../src/nice-selectable-list/selectable-list/selectable-list.ts","../../../src/nice-selectable-list/selectable-list/injector.ts","../../../src/nice-selectable-list/selectable-list/entity-checkbox.directive.ts","../../../src/nice-selectable-list/selectable-list/header-checkbox.directive.ts","../../../src/nice-selectable-list/recursyve-nice-selectable-list.ts"],"sourcesContent":["import { computed, Signal, signal } from \"@angular/core\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\n\nexport type NiceSelectableListConfig<T> = {\n idProperty: keyof T;\n idType?: \"string\" | \"number\";\n}\n\nexport type NiceSelectableListEntity<T> = {\n id: string | number;\n entity: T | null;\n};\n\nexport class NiceSelectableListStore<T> {\n private readonly _entities = signal<NiceSelectableListEntity<T>[]>([]);\n private readonly _activeEntity = signal<NiceSelectableListEntity<T> | null>(null);\n private readonly _checkboxes = signal<NiceSelectableListEntityCheckboxDirective<T>[]>([]);\n\n public readonly entities = this._entities.asReadonly();\n public readonly activeEntity = this._activeEntity.asReadonly();\n\n public readonly total = computed(() => this._entities().length);\n public readonly entitiesIds = computed(() => this._entities().map((entity) => entity.id));\n public readonly activeEntityId = computed(() => this._activeEntity()?.id ?? null);\n\n constructor(private readonly _config: NiceSelectableListConfig<T>) {}\n\n public registerCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => [...checkboxes, checkbox]);\n\n const id = this._resolveEntityId(checkbox.selectableEntity());\n const entity = this._entities().find((_entity) => _entity.id === id);\n if (entity && entity.entity === null) {\n this._entities.update(\n (_entities) => _entities.map((_entity) =>\n _entity.id === id ? { id, entity: checkbox.selectableEntity() } : _entity\n )\n );\n entity.entity = checkbox.selectableEntity();\n }\n }\n\n public unregisterCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => checkboxes.filter((_checkbox) => _checkbox !== checkbox));\n }\n\n public isEntitySelected(entity: T): Signal<boolean> {\n return computed(() => this._isEntitySelected(entity));\n }\n\n public setEntitiesFromSelections(selections: string[]): void {\n const ids: (string | number)[] = this._config.idType === \"string\" ? selections : selections.map((id) => +id);\n\n const registeredEntities = this._checkboxes().map((checkbox) => ({\n id: this._resolveEntityId(checkbox.selectableEntity()), entity: checkbox.selectableEntity()\n }));\n const entities = ids.map((id) => ({\n id,\n entity: registeredEntities.find(_entity => _entity.id === id)?.entity ?? null\n }));\n this._entities.set(entities);\n }\n\n public selectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._entities.update((entities) => [...entities, { id, entity }]);\n }\n\n public deselectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (!isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._entities.update((entities) => entities.filter((_entity) => _entity.id !== id));\n }\n\n public clear(): void {\n this._entities.set([]);\n this._activeEntity.set(null);\n }\n\n public setActiveFromSelected(selected: string): void {\n const id = this._config.idType === \"string\" ? selected : +selected;\n const entity = this._entities().find((_entity) => _entity.id === id);\n if (!entity) {\n return;\n }\n\n this._activeEntity.set(entity);\n }\n\n public setActiveEntity(entity: T | null): void {\n if (!entity) {\n this._activeEntity.set(null);\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._activeEntity.set({ id, entity });\n }\n\n public selectFirstEntity(): void {\n const entity = this._entities()[0];\n if (!entity) {\n return;\n }\n\n this._activeEntity.set(entity);\n }\n\n public selectNextEntity(): void {\n const entities = this._entities();\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const index = entities.findIndex((_entity) => activeEntity.id === _entity.id);\n const nextEntity = entities[index + 1];\n if (!nextEntity) {\n return;\n }\n\n this._activeEntity.set(nextEntity);\n }\n\n public selectPreviousEntity(): void {\n const entities = this._entities();\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const index = entities.findIndex((_entity) => activeEntity.id === _entity.id);\n if (index === 0) {\n return;\n }\n\n const previousEntity = entities[index - 1];\n if (!previousEntity) {\n return;\n }\n\n this._activeEntity.set(previousEntity);\n }\n\n public selectLastEntity(): void {\n const entities = this._entities();\n if (entities.length === 0) {\n return;\n }\n\n const lastEntity = entities[entities.length - 1];\n if (!lastEntity) {\n return;\n }\n\n this._activeEntity.set(lastEntity);\n }\n\n private _isEntitySelected(entity: T): boolean {\n const id = this._resolveEntityId(entity);\n return this._entities().findIndex((_entity) => _entity.id === id) >= 0;\n }\n\n private _resolveEntityId(entity: T): string | number {\n const idProperty = this._config.idProperty;\n const id = entity[idProperty];\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw new Error(`The id property must be a string or a number, but got ${typeof id}`);\n }\n\n return id;\n }\n}\n","import { FactoryProvider, inject, InjectionToken, Injector } from \"@angular/core\";\nimport { NiceSelectableListConfig, NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LISTS\n = new InjectionToken<NiceSelectableListProvider<unknown>[]>(\"_selectable_list_providers\");\n\nexport const NICE_SELECTABLE_LIST\n = new InjectionToken<NiceSelectableListStore<unknown>>(\"_selectable_list_provider\");\n\nexport type NiceSelectableListProvider<T> = {\n name: string;\n store: NiceSelectableListStore<T>;\n};\n\nexport function provideNiceSelectableList<T>(config?: NiceSelectableListConfig<T>): FactoryProvider;\nexport function provideNiceSelectableList<T>(name: string, config?: NiceSelectableListConfig<T>): FactoryProvider;\nexport function provideNiceSelectableList<T>(...args: unknown[]): FactoryProvider {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const config = (typeof args[0] === \"string\" ? args[1] : args[0]) as NiceSelectableListConfig<T> | undefined;\n\n if (!name) {\n return {\n provide: NICE_SELECTABLE_LIST,\n useFactory: () => new NiceSelectableListStore({\n idProperty: config?.idProperty ?? \"id\" as keyof T,\n idType: config?.idType ?? \"number\" as \"string\" | \"number\"\n })\n };\n }\n\n return {\n provide: NICE_SELECTABLE_LISTS,\n useFactory: () => ({\n name,\n store: new NiceSelectableListStore({\n idProperty: config?.idProperty ?? \"id\" as keyof T,\n idType: config?.idType ?? \"number\" as \"string\" | \"number\"\n })\n }),\n multi: true\n };\n}\n\nexport type ResolveNiceSelectableListOptions = { injector: Injector };\n\nexport function resolveNiceSelectableList<T>(\n name: string,\n options?: ResolveNiceSelectableListOptions\n): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(...args: unknown[]): NiceSelectableListStore<T> {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as ResolveNiceSelectableListOptions | undefined;\n\n if (!name) {\n return (options?.injector\n ? options.injector.get(NICE_SELECTABLE_LIST)\n : inject(NICE_SELECTABLE_LIST)) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = options?.injector\n ? options.injector.get(NICE_SELECTABLE_LISTS)\n : inject(NICE_SELECTABLE_LISTS);\n\n const provider = selectableLists.find((_provider) => _provider.name === name);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${name}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import {\n contentChildren,\n Directive,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n OnInit,\n signal,\n Signal,\n untracked\n} from \"@angular/core\";\nimport { ActivatedRoute, NavigationEnd, Router } from \"@angular/router\";\nimport { filter, take } from \"rxjs\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { resolveNiceSelectableList } from \"./provider\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LIST_DIRECTIVE\n = new InjectionToken<NiceSelectableList<unknown>>(\"_selectable_list_directive\");\n\nexport type NiceSelectableList<T> = {\n name: Signal<string | null>;\n checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;\n};\n\n@Directive({\n selector: \"[niceSelectableList]\",\n providers: [\n { provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }\n ]\n})\nexport class SelectableListDirective<T> implements NiceSelectableList<T>, OnInit {\n public readonly name = input<string | null>(null, { alias: \"niceSelectableList\" });\n public readonly enableQueryParams = input<boolean>(false);\n\n public readonly checkboxes = contentChildren<NiceSelectableListEntityCheckboxDirective<T>>(\n NiceSelectableListEntityCheckboxDirective,\n { descendants: true }\n );\n\n private readonly _initialized = signal(false);\n public readonly initialized = this._initialized.asReadonly();\n\n protected readonly route = inject(ActivatedRoute);\n protected readonly router = inject(Router);\n protected readonly injector = inject(Injector);\n\n protected selectableLists!: NiceSelectableListStore<T>;\n\n constructor() {\n effect(() => {\n const name = this.name();\n this.selectableLists = name\n ? resolveNiceSelectableList(name, { injector: this.injector })\n : resolveNiceSelectableList({ injector: this.injector });\n });\n\n effect(() => {\n if (!this._initialized() || !this.name()) {\n return;\n }\n\n if (!this.enableQueryParams()) {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n selections: null,\n selected: null\n }\n });\n return;\n }\n });\n\n effect(() => {\n if (!this._initialized()) {\n return;\n }\n\n const shouldWrite = untracked(() => this.enableQueryParams() && this.name());\n if (!shouldWrite) {\n return;\n }\n\n const entities = this.selectableLists.entitiesIds();\n const activeEntity = this.selectableLists.activeEntityId();\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n selections: entities,\n selected: activeEntity\n }\n });\n });\n }\n\n public ngOnInit(): void {\n this.loadQueryParams();\n }\n\n private loadQueryParams(): void {\n if (this.router.navigated) {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n return;\n }\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n });\n }\n\n private parseQueryParams(params: {\n selections?: string | string[];\n selected?: string;\n }): void {\n if (params.selections) {\n const selections = Array.isArray(params.selections)\n ? params.selections\n : [params.selections]\n this.selectableLists.setEntitiesFromSelections(selections);\n }\n\n if (params.selected) {\n this.selectableLists.setActiveFromSelected(params.selected);\n }\n }\n}\n","import { inject } from \"@angular/core\";\nimport { NICE_SELECTABLE_LIST, NICE_SELECTABLE_LISTS } from \"./provider\";\nimport { NICE_SELECTABLE_LIST_DIRECTIVE, NiceSelectableList } from \"./selectable-list\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport function injectNiceSelectableListDirective<T>(): NiceSelectableList<T> {\n return inject(NICE_SELECTABLE_LIST_DIRECTIVE, { optional: true }) as NiceSelectableList<T>;\n}\n\nexport function injectNiceSelectableList<T>(name?: string): NiceSelectableListStore<T> {\n const storeName = name ?? injectNiceSelectableListDirective()?.name();\n if (!storeName) {\n return inject(NICE_SELECTABLE_LIST) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = inject(NICE_SELECTABLE_LISTS);\n const provider = selectableLists.find((_provider) => _provider.name === storeName);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${storeName}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import { computed, DestroyRef, Directive, effect, inject, input, OnDestroy, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListEntityCheckbox]\"\n})\nexport class NiceSelectableListEntityCheckboxDirective<T> implements OnInit, OnDestroy {\n protected readonly matCheckbox = inject(MatCheckbox);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly niceSelectableList = injectNiceSelectableList<T>();\n\n public readonly selectableEntity = input.required<T>();\n public readonly isSelected = computed(() => this.niceSelectableList.isEntitySelected(this.selectableEntity())());\n\n constructor() {\n effect(() => {\n this.matCheckbox.checked = this.niceSelectableList.isEntitySelected(this.selectableEntity())();\n });\n }\n\n public ngOnInit(): void {\n this.niceSelectableList.registerCheckbox(this);\n\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n if (checked) {\n this.niceSelectableList.selectEntity(this.selectableEntity());\n } else {\n this.niceSelectableList.deselectEntity(this.selectableEntity());\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.niceSelectableList.unregisterCheckbox(this);\n }\n\n public selectEntity(): void {\n this.matCheckbox.checked = true;\n this.matCheckbox.change.emit({ checked: true, source: this.matCheckbox });\n }\n\n public deselectEntity(): void {\n this.matCheckbox.checked = false;\n this.matCheckbox.change.emit({ checked: false, source: this.matCheckbox });\n }\n}\n","import { afterRenderEffect, DestroyRef, Directive, inject, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableListDirective } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListHeaderCheckbox]\"\n})\nexport class NiceSelectableListHeaderCheckboxDirective<T> implements OnInit {\n private readonly niceSelectableListDirective = injectNiceSelectableListDirective<T>();\n private readonly matCheckbox = inject(MatCheckbox);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterRenderEffect({\n read: () => {\n const checkboxes = this.niceSelectableListDirective.checkboxes();\n const empty = checkboxes.length === 0;\n\n this.matCheckbox.checked = !empty && checkboxes.every((checkbox) => checkbox.isSelected());\n this.matCheckbox.indeterminate = !this.matCheckbox.checked\n && checkboxes.some((checkbox) => checkbox.isSelected());\n }\n });\n }\n\n public ngOnInit(): void {\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n if (checked) {\n this.niceSelectableListDirective.checkboxes().forEach((checkbox) => checkbox.selectEntity());\n } else {\n this.niceSelectableListDirective.checkboxes().forEach((checkbox) => checkbox.deselectEntity());\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recursyve-nice-selectable-list.mjs","sources":["../../../src/nice-selectable-list/selectable-list/store.ts","../../../src/nice-selectable-list/selectable-list/provider.ts","../../../src/nice-selectable-list/selectable-list/selectable-list.ts","../../../src/nice-selectable-list/selectable-list/injector.ts","../../../src/nice-selectable-list/selectable-list/entity-checkbox.directive.ts","../../../src/nice-selectable-list/selectable-list/header-checkbox.directive.ts","../../../src/nice-selectable-list/recursyve-nice-selectable-list.ts"],"sourcesContent":["import { computed, Signal, signal } from \"@angular/core\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\n\nexport type NiceSelectableListConfig<T> = {\n idProperty: keyof T;\n idType?: \"string\" | \"number\";\n}\n\nexport type NiceSelectableListEntity<T> = {\n id: string | number;\n entity: T | null;\n};\n\nexport class NiceSelectableListStore<T> {\n private readonly _entities = signal<NiceSelectableListEntity<T>[]>([]);\n private readonly _activeEntity = signal<NiceSelectableListEntity<T> | null>(null);\n private readonly _checkboxes = signal<NiceSelectableListEntityCheckboxDirective<T>[]>([]);\n\n public readonly entities = this._entities.asReadonly();\n public readonly activeEntity = this._activeEntity.asReadonly();\n\n public readonly total = computed(() => this._entities().length);\n public readonly entitiesIds = computed(() => this._entities().map((entity) => entity.id));\n public readonly activeEntityId = computed(() => this._activeEntity()?.id ?? null);\n\n constructor(private readonly _config: NiceSelectableListConfig<T>) {}\n\n public registerCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => [...checkboxes, checkbox]);\n\n const id = this._resolveEntityId(checkbox.selectableEntity());\n const entity = this._entities().find((_entity) => _entity.id === id);\n if (entity && entity.entity === null) {\n this._entities.update(\n (_entities) => _entities.map((_entity) =>\n _entity.id === id ? { id, entity: checkbox.selectableEntity() } : _entity\n )\n );\n entity.entity = checkbox.selectableEntity();\n }\n }\n\n public unregisterCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void {\n this._checkboxes.update((checkboxes) => checkboxes.filter((_checkbox) => _checkbox !== checkbox));\n }\n\n public isEntitySelected(entity: T): Signal<boolean> {\n return computed(() => this._isEntitySelected(entity));\n }\n\n public setEntitiesFromSelections(selections: string[]): void {\n const ids: (string | number)[] = this._config.idType === \"string\" ? selections : selections.map((id) => +id);\n\n const registeredEntities = this._checkboxes().map((checkbox) => ({\n id: this._resolveEntityId(checkbox.selectableEntity()), entity: checkbox.selectableEntity()\n }));\n const entities = ids.map((id) => ({\n id,\n entity: registeredEntities.find(_entity => _entity.id === id)?.entity ?? null\n }));\n this._entities.set(entities);\n }\n\n public selectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._entities.update((entities) => [...entities, { id, entity }]);\n }\n\n public deselectEntity(entity: T): void {\n const isSelected = this._isEntitySelected(entity);\n if (!isSelected) {\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._entities.update((entities) => entities.filter((_entity) => _entity.id !== id));\n }\n\n public clear(): void {\n this._entities.set([]);\n this._activeEntity.set(null);\n }\n\n public setActiveFromSelected(selected: string): void {\n const id = this._config.idType === \"string\" ? selected : +selected;\n const entity = this._entities().find((_entity) => _entity.id === id);\n if (!entity) {\n return;\n }\n\n this._activeEntity.set(entity);\n }\n\n public setActiveEntity(entity: T | null): void {\n if (!entity) {\n this._activeEntity.set(null);\n return;\n }\n\n const id = this._resolveEntityId(entity);\n this._activeEntity.set({ id, entity });\n }\n\n public selectFirstEntity(): void {\n const entity = this._entities()[0];\n if (!entity) {\n return;\n }\n\n this._activeEntity.set(entity);\n }\n\n public selectNextEntity(): void {\n const entities = this._entities();\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const index = entities.findIndex((_entity) => activeEntity.id === _entity.id);\n const nextEntity = entities[index + 1];\n if (!nextEntity) {\n return;\n }\n\n this._activeEntity.set(nextEntity);\n }\n\n public selectPreviousEntity(): void {\n const entities = this._entities();\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const index = entities.findIndex((_entity) => activeEntity.id === _entity.id);\n if (index === 0) {\n return;\n }\n\n const previousEntity = entities[index - 1];\n if (!previousEntity) {\n return;\n }\n\n this._activeEntity.set(previousEntity);\n }\n\n public selectLastEntity(): void {\n const entities = this._entities();\n if (entities.length === 0) {\n return;\n }\n\n const lastEntity = entities[entities.length - 1];\n if (!lastEntity) {\n return;\n }\n\n this._activeEntity.set(lastEntity);\n }\n\n private _isEntitySelected(entity: T): boolean {\n const id = this._resolveEntityId(entity);\n return this._entities().findIndex((_entity) => _entity.id === id) >= 0;\n }\n\n private _resolveEntityId(entity: T): string | number {\n const idProperty = this._config.idProperty;\n const id = entity[idProperty];\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw new Error(`The id property must be a string or a number, but got ${typeof id}`);\n }\n\n return id;\n }\n}\n","import { FactoryProvider, inject, InjectionToken, Injector } from \"@angular/core\";\nimport { NiceSelectableListConfig, NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LISTS\n = new InjectionToken<NiceSelectableListProvider<unknown>[]>(\"_selectable_list_providers\");\n\nexport const NICE_SELECTABLE_LIST\n = new InjectionToken<NiceSelectableListStore<unknown>>(\"_selectable_list_provider\");\n\nexport type NiceSelectableListProvider<T> = {\n name: string;\n store: NiceSelectableListStore<T>;\n};\n\nexport function provideNiceSelectableList<T>(config?: NiceSelectableListConfig<T>): FactoryProvider;\nexport function provideNiceSelectableList<T>(name: string, config?: NiceSelectableListConfig<T>): FactoryProvider;\nexport function provideNiceSelectableList<T>(...args: unknown[]): FactoryProvider {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const config = (typeof args[0] === \"string\" ? args[1] : args[0]) as NiceSelectableListConfig<T> | undefined;\n\n if (!name) {\n return {\n provide: NICE_SELECTABLE_LIST,\n useFactory: () => new NiceSelectableListStore({\n idProperty: config?.idProperty ?? \"id\" as keyof T,\n idType: config?.idType ?? \"number\" as \"string\" | \"number\"\n })\n };\n }\n\n return {\n provide: NICE_SELECTABLE_LISTS,\n useFactory: () => ({\n name,\n store: new NiceSelectableListStore({\n idProperty: config?.idProperty ?? \"id\" as keyof T,\n idType: config?.idType ?? \"number\" as \"string\" | \"number\"\n })\n }),\n multi: true\n };\n}\n\nexport type ResolveNiceSelectableListOptions = { injector: Injector };\n\nexport function resolveNiceSelectableList<T>(\n name: string,\n options?: ResolveNiceSelectableListOptions\n): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;\nexport function resolveNiceSelectableList<T>(...args: unknown[]): NiceSelectableListStore<T> {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as ResolveNiceSelectableListOptions | undefined;\n\n if (!name) {\n return (options?.injector\n ? options.injector.get(NICE_SELECTABLE_LIST)\n : inject(NICE_SELECTABLE_LIST)) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = options?.injector\n ? options.injector.get(NICE_SELECTABLE_LISTS)\n : inject(NICE_SELECTABLE_LISTS);\n\n const provider = selectableLists.find((_provider) => _provider.name === name);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${name}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import {\n contentChildren,\n Directive,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n OnInit,\n signal,\n Signal,\n untracked\n} from \"@angular/core\";\nimport { ActivatedRoute, NavigationEnd, Router } from \"@angular/router\";\nimport { filter, take } from \"rxjs\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { resolveNiceSelectableList } from \"./provider\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport const NICE_SELECTABLE_LIST_DIRECTIVE\n = new InjectionToken<NiceSelectableList<unknown>>(\"_selectable_list_directive\");\n\nexport type NiceSelectableList<T> = {\n name: Signal<string | null>;\n checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;\n};\n\n@Directive({\n selector: \"[niceSelectableList]\",\n providers: [\n { provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }\n ]\n})\nexport class SelectableListDirective<T> implements NiceSelectableList<T>, OnInit {\n public readonly name = input<string | null>(null, { alias: \"niceSelectableList\" });\n public readonly enableQueryParams = input<boolean>(false);\n\n public readonly checkboxes = contentChildren<NiceSelectableListEntityCheckboxDirective<T>>(\n NiceSelectableListEntityCheckboxDirective,\n { descendants: true }\n );\n\n private readonly _initialized = signal(false);\n public readonly initialized = this._initialized.asReadonly();\n\n protected readonly route = inject(ActivatedRoute);\n protected readonly router = inject(Router);\n protected readonly injector = inject(Injector);\n\n protected selectableLists!: NiceSelectableListStore<T>;\n\n constructor() {\n effect(() => {\n const name = this.name();\n this.selectableLists = name\n ? resolveNiceSelectableList(name, { injector: this.injector })\n : resolveNiceSelectableList({ injector: this.injector });\n });\n\n effect(() => {\n if (!this._initialized() || !this.name()) {\n return;\n }\n\n if (!this.enableQueryParams()) {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n selections: null,\n selected: null\n }\n });\n return;\n }\n });\n\n effect(() => {\n if (!this._initialized()) {\n return;\n }\n\n const shouldWrite = untracked(() => this.enableQueryParams() && this.name());\n if (!shouldWrite) {\n return;\n }\n\n const entities = this.selectableLists.entitiesIds();\n const activeEntity = this.selectableLists.activeEntityId();\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n selections: entities,\n selected: activeEntity\n }\n });\n });\n }\n\n public ngOnInit(): void {\n this.loadQueryParams();\n }\n\n private loadQueryParams(): void {\n if (this.router.navigated) {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n return;\n }\n\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n take(1)\n )\n .subscribe(() => {\n this.parseQueryParams(this.route.snapshot.queryParams);\n this._initialized.set(true);\n });\n }\n\n private parseQueryParams(params: {\n selections?: string | string[];\n selected?: string;\n }): void {\n if (params.selections) {\n const selections = Array.isArray(params.selections)\n ? params.selections\n : [params.selections]\n this.selectableLists.setEntitiesFromSelections(selections);\n }\n\n if (params.selected) {\n this.selectableLists.setActiveFromSelected(params.selected);\n }\n }\n}\n","import { inject } from \"@angular/core\";\nimport { NICE_SELECTABLE_LIST, NICE_SELECTABLE_LISTS } from \"./provider\";\nimport { NICE_SELECTABLE_LIST_DIRECTIVE, NiceSelectableList } from \"./selectable-list\";\nimport { NiceSelectableListStore } from \"./store\";\n\nexport function injectNiceSelectableListDirective<T>(): NiceSelectableList<T> {\n return inject(NICE_SELECTABLE_LIST_DIRECTIVE, { optional: true }) as NiceSelectableList<T>;\n}\n\nexport function injectNiceSelectableList<T>(name?: string): NiceSelectableListStore<T> {\n const storeName = name ?? injectNiceSelectableListDirective()?.name();\n if (!storeName) {\n return inject(NICE_SELECTABLE_LIST) as NiceSelectableListStore<T>;\n }\n\n const selectableLists = inject(NICE_SELECTABLE_LISTS);\n const provider = selectableLists.find((_provider) => _provider.name === storeName);\n if (!provider) {\n throw new Error(`No selectable list provider found for name: ${storeName}`);\n }\n\n return provider.store as NiceSelectableListStore<T>;\n}\n","import { computed, DestroyRef, Directive, effect, inject, input, OnDestroy, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListEntityCheckbox]\"\n})\nexport class NiceSelectableListEntityCheckboxDirective<T> implements OnInit, OnDestroy {\n protected readonly matCheckbox = inject(MatCheckbox);\n protected readonly destroyRef = inject(DestroyRef);\n protected readonly niceSelectableList = injectNiceSelectableList<T>();\n\n public readonly selectableEntity = input.required<T>();\n public readonly isSelected = computed(() => this.niceSelectableList.isEntitySelected(this.selectableEntity())());\n\n constructor() {\n effect(() => {\n this.matCheckbox.checked = this.niceSelectableList.isEntitySelected(this.selectableEntity())();\n });\n }\n\n public ngOnInit(): void {\n this.niceSelectableList.registerCheckbox(this);\n\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n if (checked) {\n this.niceSelectableList.selectEntity(this.selectableEntity());\n } else {\n this.niceSelectableList.deselectEntity(this.selectableEntity());\n }\n });\n }\n\n public ngOnDestroy(): void {\n this.niceSelectableList.unregisterCheckbox(this);\n }\n\n public selectEntity(): void {\n this.matCheckbox.checked = true;\n this.matCheckbox.change.emit({ checked: true, source: this.matCheckbox });\n }\n\n public deselectEntity(): void {\n this.matCheckbox.checked = false;\n this.matCheckbox.change.emit({ checked: false, source: this.matCheckbox });\n }\n}\n","import { afterRenderEffect, DestroyRef, Directive, inject, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableListDirective } from \"./injector\";\n\n@Directive({\n selector: \"mat-checkbox[niceSelectableListHeaderCheckbox]\"\n})\nexport class NiceSelectableListHeaderCheckboxDirective<T> implements OnInit {\n private readonly niceSelectableListDirective = injectNiceSelectableListDirective<T>();\n private readonly matCheckbox = inject(MatCheckbox);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n afterRenderEffect({\n read: () => {\n const checkboxes = this.niceSelectableListDirective.checkboxes();\n const empty = checkboxes.length === 0;\n\n this.matCheckbox.checked = !empty && checkboxes.every((checkbox) => checkbox.isSelected());\n this.matCheckbox.indeterminate = !this.matCheckbox.checked\n && checkboxes.some((checkbox) => checkbox.isSelected());\n }\n });\n }\n\n public ngOnInit(): void {\n this.matCheckbox.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(({ checked }) => {\n if (checked) {\n this.niceSelectableListDirective.checkboxes().forEach((checkbox) => checkbox.selectEntity());\n } else {\n this.niceSelectableListDirective.checkboxes().forEach((checkbox) => checkbox.deselectEntity());\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1 +1,109 @@
|
|
|
1
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, OnDestroy, DestroyRef, Signal, InjectionToken, Injector, FactoryProvider } from '@angular/core';
|
|
3
|
+
import * as _recursyve_nice_selectable_list from '@recursyve/nice-selectable-list';
|
|
4
|
+
import { MatCheckbox } from '@angular/material/checkbox';
|
|
5
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
6
|
+
|
|
7
|
+
declare class NiceSelectableListEntityCheckboxDirective<T> implements OnInit, OnDestroy {
|
|
8
|
+
protected readonly matCheckbox: MatCheckbox;
|
|
9
|
+
protected readonly destroyRef: DestroyRef;
|
|
10
|
+
protected readonly niceSelectableList: _recursyve_nice_selectable_list.NiceSelectableListStore<T>;
|
|
11
|
+
readonly selectableEntity: i0.InputSignal<T>;
|
|
12
|
+
readonly isSelected: i0.Signal<boolean>;
|
|
13
|
+
constructor();
|
|
14
|
+
ngOnInit(): void;
|
|
15
|
+
ngOnDestroy(): void;
|
|
16
|
+
selectEntity(): void;
|
|
17
|
+
deselectEntity(): void;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListEntityCheckboxDirective<any>, never>;
|
|
19
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListEntityCheckboxDirective<any>, "mat-checkbox[niceSelectableListEntityCheckbox]", never, { "selectableEntity": { "alias": "selectableEntity"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare class NiceSelectableListHeaderCheckboxDirective<T> implements OnInit {
|
|
23
|
+
private readonly niceSelectableListDirective;
|
|
24
|
+
private readonly matCheckbox;
|
|
25
|
+
private readonly destroyRef;
|
|
26
|
+
constructor();
|
|
27
|
+
ngOnInit(): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListHeaderCheckboxDirective<any>, never>;
|
|
29
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListHeaderCheckboxDirective<any>, "mat-checkbox[niceSelectableListHeaderCheckbox]", never, {}, {}, never, never, true, never>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type NiceSelectableListConfig<T> = {
|
|
33
|
+
idProperty: keyof T;
|
|
34
|
+
idType?: "string" | "number";
|
|
35
|
+
};
|
|
36
|
+
type NiceSelectableListEntity<T> = {
|
|
37
|
+
id: string | number;
|
|
38
|
+
entity: T | null;
|
|
39
|
+
};
|
|
40
|
+
declare class NiceSelectableListStore<T> {
|
|
41
|
+
private readonly _config;
|
|
42
|
+
private readonly _entities;
|
|
43
|
+
private readonly _activeEntity;
|
|
44
|
+
private readonly _checkboxes;
|
|
45
|
+
readonly entities: Signal<NiceSelectableListEntity<T>[]>;
|
|
46
|
+
readonly activeEntity: Signal<NiceSelectableListEntity<T> | null>;
|
|
47
|
+
readonly total: Signal<number>;
|
|
48
|
+
readonly entitiesIds: Signal<(string | number)[]>;
|
|
49
|
+
readonly activeEntityId: Signal<string | number | null>;
|
|
50
|
+
constructor(_config: NiceSelectableListConfig<T>);
|
|
51
|
+
registerCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void;
|
|
52
|
+
unregisterCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void;
|
|
53
|
+
isEntitySelected(entity: T): Signal<boolean>;
|
|
54
|
+
setEntitiesFromSelections(selections: string[]): void;
|
|
55
|
+
selectEntity(entity: T): void;
|
|
56
|
+
deselectEntity(entity: T): void;
|
|
57
|
+
clear(): void;
|
|
58
|
+
setActiveFromSelected(selected: string): void;
|
|
59
|
+
setActiveEntity(entity: T | null): void;
|
|
60
|
+
selectFirstEntity(): void;
|
|
61
|
+
selectNextEntity(): void;
|
|
62
|
+
selectPreviousEntity(): void;
|
|
63
|
+
selectLastEntity(): void;
|
|
64
|
+
private _isEntitySelected;
|
|
65
|
+
private _resolveEntityId;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare const NICE_SELECTABLE_LIST_DIRECTIVE: InjectionToken<NiceSelectableList<unknown>>;
|
|
69
|
+
type NiceSelectableList<T> = {
|
|
70
|
+
name: Signal<string | null>;
|
|
71
|
+
checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;
|
|
72
|
+
};
|
|
73
|
+
declare class SelectableListDirective<T> implements NiceSelectableList<T>, OnInit {
|
|
74
|
+
readonly name: i0.InputSignal<string | null>;
|
|
75
|
+
readonly enableQueryParams: i0.InputSignal<boolean>;
|
|
76
|
+
readonly checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;
|
|
77
|
+
private readonly _initialized;
|
|
78
|
+
readonly initialized: Signal<boolean>;
|
|
79
|
+
protected readonly route: ActivatedRoute;
|
|
80
|
+
protected readonly router: Router;
|
|
81
|
+
protected readonly injector: Injector;
|
|
82
|
+
protected selectableLists: NiceSelectableListStore<T>;
|
|
83
|
+
constructor();
|
|
84
|
+
ngOnInit(): void;
|
|
85
|
+
private loadQueryParams;
|
|
86
|
+
private parseQueryParams;
|
|
87
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SelectableListDirective<any>, never>;
|
|
88
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SelectableListDirective<any>, "[niceSelectableList]", never, { "name": { "alias": "niceSelectableList"; "required": false; "isSignal": true; }; "enableQueryParams": { "alias": "enableQueryParams"; "required": false; "isSignal": true; }; }, {}, ["checkboxes"], never, true, never>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
declare function injectNiceSelectableListDirective<T>(): NiceSelectableList<T>;
|
|
92
|
+
declare function injectNiceSelectableList<T>(name?: string): NiceSelectableListStore<T>;
|
|
93
|
+
|
|
94
|
+
declare const NICE_SELECTABLE_LISTS: InjectionToken<NiceSelectableListProvider<unknown>[]>;
|
|
95
|
+
declare const NICE_SELECTABLE_LIST: InjectionToken<NiceSelectableListStore<unknown>>;
|
|
96
|
+
type NiceSelectableListProvider<T> = {
|
|
97
|
+
name: string;
|
|
98
|
+
store: NiceSelectableListStore<T>;
|
|
99
|
+
};
|
|
100
|
+
declare function provideNiceSelectableList<T>(config?: NiceSelectableListConfig<T>): FactoryProvider;
|
|
101
|
+
declare function provideNiceSelectableList<T>(name: string, config?: NiceSelectableListConfig<T>): FactoryProvider;
|
|
102
|
+
type ResolveNiceSelectableListOptions = {
|
|
103
|
+
injector: Injector;
|
|
104
|
+
};
|
|
105
|
+
declare function resolveNiceSelectableList<T>(name: string, options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;
|
|
106
|
+
declare function resolveNiceSelectableList<T>(options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;
|
|
107
|
+
|
|
108
|
+
export { NICE_SELECTABLE_LIST, NICE_SELECTABLE_LISTS, NICE_SELECTABLE_LIST_DIRECTIVE, NiceSelectableListEntityCheckboxDirective, NiceSelectableListHeaderCheckboxDirective, NiceSelectableListStore, SelectableListDirective, injectNiceSelectableList, injectNiceSelectableListDirective, provideNiceSelectableList, resolveNiceSelectableList };
|
|
109
|
+
export type { NiceSelectableList, NiceSelectableListConfig, NiceSelectableListEntity, NiceSelectableListProvider, ResolveNiceSelectableListOptions };
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recursyve/nice-selectable-list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0-beta.3",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/cdk": "^
|
|
7
|
-
"@angular/core": "^
|
|
8
|
-
"@angular/material": "^
|
|
5
|
+
"@angular/common": "^20.2.0",
|
|
6
|
+
"@angular/cdk": "^20.2.0",
|
|
7
|
+
"@angular/core": "^20.2.0",
|
|
8
|
+
"@angular/material": "^20.2.0"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"tslib": "^2.3.0"
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DestroyRef, OnDestroy, OnInit } from "@angular/core";
|
|
2
|
-
import { MatCheckbox } from "@angular/material/checkbox";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class NiceSelectableListEntityCheckboxDirective<T> implements OnInit, OnDestroy {
|
|
5
|
-
protected readonly matCheckbox: MatCheckbox;
|
|
6
|
-
protected readonly destroyRef: DestroyRef;
|
|
7
|
-
protected readonly niceSelectableList: import("@recursyve/nice-selectable-list").NiceSelectableListStore<T>;
|
|
8
|
-
readonly selectableEntity: import("@angular/core").InputSignal<T>;
|
|
9
|
-
readonly isSelected: import("@angular/core").Signal<boolean>;
|
|
10
|
-
constructor();
|
|
11
|
-
ngOnInit(): void;
|
|
12
|
-
ngOnDestroy(): void;
|
|
13
|
-
selectEntity(): void;
|
|
14
|
-
deselectEntity(): void;
|
|
15
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListEntityCheckboxDirective<any>, never>;
|
|
16
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListEntityCheckboxDirective<any>, "mat-checkbox[niceSelectableListEntityCheckbox]", never, { "selectableEntity": { "alias": "selectableEntity"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
17
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { OnInit } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class NiceSelectableListHeaderCheckboxDirective<T> implements OnInit {
|
|
4
|
-
private readonly niceSelectableListDirective;
|
|
5
|
-
private readonly matCheckbox;
|
|
6
|
-
private readonly destroyRef;
|
|
7
|
-
constructor();
|
|
8
|
-
ngOnInit(): void;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NiceSelectableListHeaderCheckboxDirective<any>, never>;
|
|
10
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NiceSelectableListHeaderCheckboxDirective<any>, "mat-checkbox[niceSelectableListHeaderCheckbox]", never, {}, {}, never, never, true, never>;
|
|
11
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { NiceSelectableList } from "./selectable-list";
|
|
2
|
-
import { NiceSelectableListStore } from "./store";
|
|
3
|
-
export declare function injectNiceSelectableListDirective<T>(): NiceSelectableList<T>;
|
|
4
|
-
export declare function injectNiceSelectableList<T>(name?: string): NiceSelectableListStore<T>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FactoryProvider, InjectionToken, Injector } from "@angular/core";
|
|
2
|
-
import { NiceSelectableListConfig, NiceSelectableListStore } from "./store";
|
|
3
|
-
export declare const NICE_SELECTABLE_LISTS: InjectionToken<NiceSelectableListProvider<unknown>[]>;
|
|
4
|
-
export declare const NICE_SELECTABLE_LIST: InjectionToken<NiceSelectableListStore<unknown>>;
|
|
5
|
-
export type NiceSelectableListProvider<T> = {
|
|
6
|
-
name: string;
|
|
7
|
-
store: NiceSelectableListStore<T>;
|
|
8
|
-
};
|
|
9
|
-
export declare function provideNiceSelectableList<T>(config?: NiceSelectableListConfig<T>): FactoryProvider;
|
|
10
|
-
export declare function provideNiceSelectableList<T>(name: string, config?: NiceSelectableListConfig<T>): FactoryProvider;
|
|
11
|
-
export type ResolveNiceSelectableListOptions = {
|
|
12
|
-
injector: Injector;
|
|
13
|
-
};
|
|
14
|
-
export declare function resolveNiceSelectableList<T>(name: string, options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;
|
|
15
|
-
export declare function resolveNiceSelectableList<T>(options?: ResolveNiceSelectableListOptions): NiceSelectableListStore<T>;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, Injector, OnInit, Signal } from "@angular/core";
|
|
2
|
-
import { ActivatedRoute, Router } from "@angular/router";
|
|
3
|
-
import { NiceSelectableListEntityCheckboxDirective } from "./entity-checkbox.directive";
|
|
4
|
-
import { NiceSelectableListStore } from "./store";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare const NICE_SELECTABLE_LIST_DIRECTIVE: InjectionToken<NiceSelectableList<unknown>>;
|
|
7
|
-
export type NiceSelectableList<T> = {
|
|
8
|
-
name: Signal<string | null>;
|
|
9
|
-
checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;
|
|
10
|
-
};
|
|
11
|
-
export declare class SelectableListDirective<T> implements NiceSelectableList<T>, OnInit {
|
|
12
|
-
readonly name: import("@angular/core").InputSignal<string | null>;
|
|
13
|
-
readonly enableQueryParams: import("@angular/core").InputSignal<boolean>;
|
|
14
|
-
readonly checkboxes: Signal<readonly NiceSelectableListEntityCheckboxDirective<T>[]>;
|
|
15
|
-
private readonly _initialized;
|
|
16
|
-
readonly initialized: Signal<boolean>;
|
|
17
|
-
protected readonly route: ActivatedRoute;
|
|
18
|
-
protected readonly router: Router;
|
|
19
|
-
protected readonly injector: Injector;
|
|
20
|
-
protected selectableLists: NiceSelectableListStore<T>;
|
|
21
|
-
constructor();
|
|
22
|
-
ngOnInit(): void;
|
|
23
|
-
private loadQueryParams;
|
|
24
|
-
private parseQueryParams;
|
|
25
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SelectableListDirective<any>, never>;
|
|
26
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<SelectableListDirective<any>, "[niceSelectableList]", never, { "name": { "alias": "niceSelectableList"; "required": false; "isSignal": true; }; "enableQueryParams": { "alias": "enableQueryParams"; "required": false; "isSignal": true; }; }, {}, ["checkboxes"], never, true, never>;
|
|
27
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Signal } from "@angular/core";
|
|
2
|
-
import { NiceSelectableListEntityCheckboxDirective } from "./entity-checkbox.directive";
|
|
3
|
-
export type NiceSelectableListConfig<T> = {
|
|
4
|
-
idProperty: keyof T;
|
|
5
|
-
idType?: "string" | "number";
|
|
6
|
-
};
|
|
7
|
-
export type NiceSelectableListEntity<T> = {
|
|
8
|
-
id: string | number;
|
|
9
|
-
entity: T | null;
|
|
10
|
-
};
|
|
11
|
-
export declare class NiceSelectableListStore<T> {
|
|
12
|
-
private readonly _config;
|
|
13
|
-
private readonly _entities;
|
|
14
|
-
private readonly _activeEntity;
|
|
15
|
-
private readonly _checkboxes;
|
|
16
|
-
readonly entities: Signal<NiceSelectableListEntity<T>[]>;
|
|
17
|
-
readonly activeEntity: Signal<NiceSelectableListEntity<T> | null>;
|
|
18
|
-
readonly total: Signal<number>;
|
|
19
|
-
readonly entitiesIds: Signal<(string | number)[]>;
|
|
20
|
-
readonly activeEntityId: Signal<string | number | null>;
|
|
21
|
-
constructor(_config: NiceSelectableListConfig<T>);
|
|
22
|
-
registerCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void;
|
|
23
|
-
unregisterCheckbox(checkbox: NiceSelectableListEntityCheckboxDirective<T>): void;
|
|
24
|
-
isEntitySelected(entity: T): Signal<boolean>;
|
|
25
|
-
setEntitiesFromSelections(selections: string[]): void;
|
|
26
|
-
selectEntity(entity: T): void;
|
|
27
|
-
deselectEntity(entity: T): void;
|
|
28
|
-
clear(): void;
|
|
29
|
-
setActiveFromSelected(selected: string): void;
|
|
30
|
-
setActiveEntity(entity: T | null): void;
|
|
31
|
-
selectFirstEntity(): void;
|
|
32
|
-
selectNextEntity(): void;
|
|
33
|
-
selectPreviousEntity(): void;
|
|
34
|
-
selectLastEntity(): void;
|
|
35
|
-
private _isEntitySelected;
|
|
36
|
-
private _resolveEntityId;
|
|
37
|
-
}
|