@recursyve/nice-selectable-list 20.0.0-beta.5 → 21.0.1
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.
|
@@ -488,8 +488,8 @@ function resolveNiceSelectableList(...args) {
|
|
|
488
488
|
|
|
489
489
|
const NICE_SELECTABLE_LIST_DIRECTIVE = new InjectionToken("_selectable_list_directive");
|
|
490
490
|
class SelectableListDirective {
|
|
491
|
-
name = input(null, ...(ngDevMode ?
|
|
492
|
-
checkboxes = contentChildren(NiceSelectableListEntityCheckboxDirective, ...(ngDevMode ?
|
|
491
|
+
name = input(null, { ...(ngDevMode ? { debugName: "name" } : {}), alias: "niceSelectableList" });
|
|
492
|
+
checkboxes = contentChildren(NiceSelectableListEntityCheckboxDirective, { ...(ngDevMode ? { debugName: "checkboxes" } : {}), descendants: true });
|
|
493
493
|
_initialized = signal(false, ...(ngDevMode ? [{ debugName: "_initialized" }] : []));
|
|
494
494
|
initialized = this._initialized.asReadonly();
|
|
495
495
|
allSelected = computed(() => this.selectableLists.selectAllState().active, ...(ngDevMode ? [{ debugName: "allSelected" }] : []));
|
|
@@ -503,12 +503,12 @@ class SelectableListDirective {
|
|
|
503
503
|
: resolveNiceSelectableList({ injector: this.injector });
|
|
504
504
|
});
|
|
505
505
|
}
|
|
506
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
507
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
506
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: SelectableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
507
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.0.5", type: SelectableListDirective, isStandalone: true, selector: "[niceSelectableList]", inputs: { name: { classPropertyName: "name", publicName: "niceSelectableList", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
508
508
|
{ provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }
|
|
509
509
|
], queries: [{ propertyName: "checkboxes", predicate: NiceSelectableListEntityCheckboxDirective, descendants: true, isSignal: true }], ngImport: i0 });
|
|
510
510
|
}
|
|
511
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
511
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: SelectableListDirective, decorators: [{
|
|
512
512
|
type: Directive,
|
|
513
513
|
args: [{
|
|
514
514
|
selector: "[niceSelectableList]",
|
|
@@ -516,7 +516,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
|
|
|
516
516
|
{ provide: NICE_SELECTABLE_LIST_DIRECTIVE, useExisting: forwardRef(() => SelectableListDirective) }
|
|
517
517
|
]
|
|
518
518
|
}]
|
|
519
|
-
}], ctorParameters: () => [] });
|
|
519
|
+
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "niceSelectableList", required: false }] }], checkboxes: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NiceSelectableListEntityCheckboxDirective), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
520
520
|
|
|
521
521
|
function injectNiceSelectableListDirective() {
|
|
522
522
|
return inject(NICE_SELECTABLE_LIST_DIRECTIVE, { optional: true });
|
|
@@ -570,15 +570,15 @@ class NiceSelectableListEntityCheckboxDirective {
|
|
|
570
570
|
this.matCheckbox.checked = false;
|
|
571
571
|
this.matCheckbox.change.emit({ checked: false, source: this.matCheckbox });
|
|
572
572
|
}
|
|
573
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
574
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
573
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceSelectableListEntityCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
574
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.5", type: NiceSelectableListEntityCheckboxDirective, isStandalone: true, selector: "mat-checkbox[niceSelectableListEntityCheckbox]", inputs: { selectableEntity: { classPropertyName: "selectableEntity", publicName: "selectableEntity", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
575
575
|
}
|
|
576
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
576
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceSelectableListEntityCheckboxDirective, decorators: [{
|
|
577
577
|
type: Directive,
|
|
578
578
|
args: [{
|
|
579
579
|
selector: "mat-checkbox[niceSelectableListEntityCheckbox]"
|
|
580
580
|
}]
|
|
581
|
-
}], ctorParameters: () => [] });
|
|
581
|
+
}], ctorParameters: () => [], propDecorators: { selectableEntity: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectableEntity", required: true }] }] } });
|
|
582
582
|
|
|
583
583
|
class NiceSelectableListHeaderCheckboxDirective {
|
|
584
584
|
niceSelectableListDirective = injectNiceSelectableListDirective();
|
|
@@ -617,10 +617,10 @@ class NiceSelectableListHeaderCheckboxDirective {
|
|
|
617
617
|
}
|
|
618
618
|
});
|
|
619
619
|
}
|
|
620
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
621
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
620
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceSelectableListHeaderCheckboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
621
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.5", type: NiceSelectableListHeaderCheckboxDirective, isStandalone: true, selector: "mat-checkbox[niceSelectableListHeaderCheckbox]", ngImport: i0 });
|
|
622
622
|
}
|
|
623
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
623
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: NiceSelectableListHeaderCheckboxDirective, decorators: [{
|
|
624
624
|
type: Directive,
|
|
625
625
|
args: [{
|
|
626
626
|
selector: "mat-checkbox[niceSelectableListHeaderCheckbox]"
|
|
@@ -653,25 +653,15 @@ class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition
|
|
|
653
653
|
entities: this._store.entitiesIds(),
|
|
654
654
|
activeEntity: this._store.activeEntityId(),
|
|
655
655
|
selectAllState: this._store.selectAllState()
|
|
656
|
-
}), ...(ngDevMode ?
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
equal: (a, b) => {
|
|
666
|
-
const selectAllEqual = a.selectAllState.active === b.selectAllState.active &&
|
|
667
|
-
a.selectAllState.total === b.selectAllState.total &&
|
|
668
|
-
JSON.stringify(a.selectAllState.parameters) === JSON.stringify(b.selectAllState.parameters);
|
|
669
|
-
const entitiesEqual = a.entities.length === b.entities.length &&
|
|
670
|
-
a.entities.every((entity, index) => entity === b.entities[index]);
|
|
671
|
-
const activeEntityEqual = a.activeEntity === b.activeEntity;
|
|
672
|
-
return selectAllEqual && entitiesEqual && activeEntityEqual;
|
|
673
|
-
}
|
|
674
|
-
}]));
|
|
656
|
+
}), { ...(ngDevMode ? { debugName: "_queryParamState" } : {}), equal: (a, b) => {
|
|
657
|
+
const selectAllEqual = a.selectAllState.active === b.selectAllState.active &&
|
|
658
|
+
a.selectAllState.total === b.selectAllState.total &&
|
|
659
|
+
JSON.stringify(a.selectAllState.parameters) === JSON.stringify(b.selectAllState.parameters);
|
|
660
|
+
const entitiesEqual = a.entities.length === b.entities.length &&
|
|
661
|
+
a.entities.every((entity, index) => entity === b.entities[index]);
|
|
662
|
+
const activeEntityEqual = a.activeEntity === b.activeEntity;
|
|
663
|
+
return selectAllEqual && entitiesEqual && activeEntityEqual;
|
|
664
|
+
} });
|
|
675
665
|
init() {
|
|
676
666
|
this.router = this._injector.get(Router);
|
|
677
667
|
this.route = this._injector.get(ActivatedRoute);
|
|
@@ -718,11 +708,8 @@ class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition
|
|
|
718
708
|
selected: activeEntity
|
|
719
709
|
};
|
|
720
710
|
this._nextQueryParams.next(params);
|
|
721
|
-
}, ...(ngDevMode ?
|
|
722
|
-
|
|
723
|
-
injector: this._injector,
|
|
724
|
-
manualCleanup: true
|
|
725
|
-
}]));
|
|
711
|
+
}, { ...(ngDevMode ? { debugName: "_storeChangesEffectRef" } : {}), injector: this._injector,
|
|
712
|
+
manualCleanup: true });
|
|
726
713
|
}
|
|
727
714
|
parseQueryParams(params) {
|
|
728
715
|
if (params.selection) {
|
|
@@ -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/selectable-list/pluggins/plugin-definition.ts","../../../src/nice-selectable-list/selectable-list/pluggins/query-params/plugin.ts","../../../src/nice-selectable-list/recursyve-nice-selectable-list.ts"],"sourcesContent":["import { afterNextRender, computed, InjectionToken, Injector, ResourceRef, Signal, signal } from \"@angular/core\";\nimport { rxResource } from \"@angular/core/rxjs-interop\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\nimport { map, of } from \"rxjs\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\n\nexport type NiceSelectableListConfig<T> = {\n idProperty: keyof T;\n idType?: \"string\" | \"number\";\n\n entityLoaderToken: InjectionToken<NiceSelectableListEntityLoader<T>> | null;\n uiEntityLoaderToken: InjectionToken<NiceSelectableListUIEntityLoader<T>> | null;\n preload?: boolean;\n}\n\nexport type NiceSelectableListEntity<T> = {\n id: string | number;\n entity: ResourceRef<T | undefined> | null;\n ui: ResourceRef<T | undefined> | null;\n};\n\nexport type NiceSelectableListSelectAllState = {\n active: boolean;\n total: number | null;\n parameters: object | null;\n};\n\nexport class NiceSelectableListStore<T> {\n private readonly _plugins: NiceSelectableListPluginDefinition[] = [];\n private _entityLoader: NiceSelectableListEntityLoader<T, object, number | string> | null = null;\n private _uiEntityLoader: NiceSelectableListUIEntityLoader<T, number | string> | null = null;\n\n private readonly _initialized = signal(false);\n private readonly _cache = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n\n private readonly _entitiesMap = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n private readonly _activeEntity = signal<NiceSelectableListEntity<T> | null>(null);\n private readonly _checkboxes = signal<NiceSelectableListEntityCheckboxDirective<T>[]>([]);\n private readonly _selectAllState = signal<NiceSelectableListSelectAllState>({\n active: false,\n total: null,\n parameters: null\n });\n\n // Track window loading state\n private _lastWindowIds: (string | number)[] = [];\n private _currentWindowIds: (string | number)[] = [];\n\n public readonly entities = computed(() => Object.values(this._entitiesMap()).reverse());\n public readonly activeEntity = this._activeEntity.asReadonly();\n\n public readonly total: Signal<number> = computed(() => this.entities().length);\n public readonly entitiesIds: Signal<(string | number)[]> = computed(() => {\n const ids = Object.keys(this._entitiesMap()).reverse();\n return this._config.idType === \"string\" ? ids : ids.map((id) => +id);\n });\n public readonly activeEntityId: Signal<string | number | null> = computed(() => this._activeEntity()?.id ?? null);\n\n public readonly selectAllState = this._selectAllState.asReadonly();\n\n constructor(private readonly _injector: Injector, private readonly _config: NiceSelectableListConfig<T>) {\n afterNextRender(() => this.init());\n }\n\n public init(): void {\n if (this._initialized()) {\n return;\n }\n\n if (!this._entityLoader && this._config.entityLoaderToken) {\n this._entityLoader = this._injector.get(this._config.entityLoaderToken) as\n NiceSelectableListEntityLoader<T, object, number | string>;\n }\n\n if (!this._uiEntityLoader && this._config.uiEntityLoaderToken) {\n this._uiEntityLoader = this._injector.get(this._config.uiEntityLoaderToken) as\n NiceSelectableListUIEntityLoader<T, number | string>;\n }\n\n for (const plugin of this._plugins) {\n plugin.init();\n }\n\n this._initialized.set(true);\n }\n\n public registerPlugin(plugin: NiceSelectableListPluginDefinition): void {\n this._plugins.push(plugin);\n }\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 existing = this._entitiesMap()[id];\n\n const selectAllState = this._selectAllState();\n if ((existing && !existing.entity) || selectAllState.active) {\n const initial = checkbox.selectableEntity();\n const entityResource = this._createEntityResource(id, initial);\n this._entitiesMap.update(\n (_entitiesMap) => ({\n ..._entitiesMap,\n [id]: {\n id,\n entity: entityResource,\n ui: null\n }\n })\n );\n return;\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 registered = this._checkboxes().map((checkbox) => ({\n id: this._resolveEntityId(checkbox.selectableEntity()), value: checkbox.selectableEntity()\n }));\n const cache = this._cache();\n const entities = ids.map((id) => {\n const known = registered.find(_e => _e.id === id)?.value;\n const cached = cache[id]?.entity;\n const entityResource = known ? this._createEntityResource(id, known) : (cached ?? null);\n return {\n id,\n entity: entityResource\n } as { id: string | number; entity: ResourceRef<T | undefined> | null };\n });\n const mapOut = entities.reduce((map, entity) => ({\n ...map,\n [entity.id]: {\n id: entity.id,\n entity: entity.entity,\n ui: null\n }\n }), {} as Record<string | number, NiceSelectableListEntity<T>>);\n\n this._entitiesMap.set(mapOut);\n this._processCacheFromEntities();\n this._updateWindowForActive();\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 const cached = this._cache()[id];\n const newEntity = {\n id,\n entity: cached?.entity ?? this._createEntityResource(id, entity),\n ui: cached?.ui ?? this._createUIResource(id)\n };\n\n this._entitiesMap.update((entitiesMap) => ({\n ...entitiesMap,\n [id]: newEntity\n }));\n\n this._cache.update((cache) => ({\n ...cache,\n [id]: newEntity\n }));\n\n // Window might change if this selection impacts first/last buckets\n this._updateWindowForActive();\n }\n\n public selectEntities(entities: T[]): void {\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n const cache = this._cache();\n for (const entity of entities) {\n const id = this._resolveEntityId(entity);\n const cached = cache[id];\n newEntitiesMap[id] = cached ?? {\n id,\n entity: this._createEntityResource(id, entity),\n ui: null\n };\n }\n\n return newEntitiesMap;\n });\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\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._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n delete newEntitiesMap[id];\n return newEntitiesMap;\n });\n }\n\n public deselectEntities(entities: T[]): void {\n const toRemove = entities.filter((entity) => this._isEntitySelected(entity));\n\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n for (const entity of toRemove) {\n const id = this._resolveEntityId(entity);\n delete newEntitiesMap[id];\n }\n\n return newEntitiesMap;\n });\n }\n\n public clear(): void {\n this._entitiesMap.set({});\n this._activeEntity.set(null);\n }\n\n public setSelectAllState(state: NiceSelectableListSelectAllState): void {\n this._selectAllState.set(state);\n\n if (!state.active) {\n this.clear();\n return;\n }\n\n const entities = this._checkboxes().map((checkbox) => checkbox.selectableEntity());\n this._entitiesMap.set(entities.reduce((map, entity) => {\n const id = this._resolveEntityId(entity);\n return {\n ...map,\n [id]: {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._preloadSelectAllValues()\n }\n\n public setActiveFromSelected(selected: string): void {\n const id = this._config.idType === \"string\" ? selected : +selected;\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n this._setActiveEntity(id);\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._setActiveEntity(id);\n }\n\n public selectFirstEntity(): void {\n const id = this.entitiesIds()[0];\n if (!id) {\n return;\n }\n\n this._setActiveEntity(id);\n }\n\n public selectNextEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n const nextEntityId = entitiesIds[index + 1];\n if (!nextEntityId) {\n return;\n }\n\n this._setActiveEntity(nextEntityId);\n }\n\n public selectPreviousEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n if (index === 0) {\n return;\n }\n\n const previousEntityId = entitiesIds[index - 1];\n if (!previousEntityId) {\n return;\n }\n\n this._setActiveEntity(previousEntityId);\n }\n\n public selectLastEntity(): void {\n const entitiesIds = this.entitiesIds();\n if (entitiesIds.length === 0) {\n return;\n }\n\n const lastEntityId = entitiesIds[entitiesIds.length - 1];\n if (!lastEntityId) {\n return;\n }\n\n this._setActiveEntity(lastEntityId);\n }\n\n private _isEntitySelected(entity: T): boolean {\n const id = this._resolveEntityId(entity);\n return id in this._entitiesMap();\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 private _processCacheFromEntities(): void {\n const entities = this._entitiesMap();\n this._cache.update((cache) => ({ ...cache, ...entities }));\n }\n\n private _createEntityResource(id: string | number, initial?: T | null): ResourceRef<T | undefined> {\n const resource = rxResource<T | undefined, { id: string | number}>({\n params: () => ({ id }),\n stream: ({ params }) => {\n if (this._entityLoader) {\n return this._entityLoader.loadEntitiesByIds([params.id]).pipe(map((arr) => arr?.[0]));\n }\n return of(initial ?? undefined);\n },\n defaultValue: initial ?? undefined,\n injector: this._injector\n });\n\n if (initial) {\n resource.set(initial);\n }\n\n return resource;\n }\n\n private _createUIResource(id: string | number): ResourceRef<T | undefined> | null {\n if (!this._uiEntityLoader) {\n return null;\n }\n\n return rxResource({\n params: () => ({ id }),\n stream: ({ params }) => this._uiEntityLoader!.loadById(params.id),\n injector: this._injector\n });\n }\n\n private _computeWindowIds(): (string | number)[] {\n const ids = this.entitiesIds();\n const n = ids.length;\n if (n === 0) {\n return [];\n }\n\n const set = new Set<string | number>();\n\n // first 3\n for (let i = 0; i < Math.min(3, n); i++) {\n set.add(ids[i]);\n }\n\n // last 3\n for (let i = Math.max(0, n - 3); i < n; i++) {\n set.add(ids[i]);\n }\n\n // active and +/- 3\n const activeId = this.activeEntityId();\n const activeIndex = activeId !== null ? ids.findIndex((i) => i === activeId) : -1;\n if (activeIndex >= 0) {\n for (let i = Math.max(0, activeIndex - 3); i <= Math.min(n - 1, activeIndex + 3); i++) {\n set.add(ids[i]);\n }\n }\n return Array.from(set.values());\n }\n\n private _ensureResourcesForIds(ids: (string | number)[]): void {\n const mapCopy = { ...this._entitiesMap() } as Record<string | number, NiceSelectableListEntity<T>>;\n const cache = this._cache();\n for (const id of ids) {\n const entry = mapCopy[id] ?? cache[id];\n if (!entry) {\n mapCopy[id] = {\n id,\n entity: this._createEntityResource(id),\n ui: this._uiEntityLoader ? this._createUIResource(id) : null\n };\n continue;\n }\n\n if (!entry.entity) {\n entry.entity = this._createEntityResource(id);\n }\n\n if (!entry.ui && this._uiEntityLoader) {\n entry.ui = this._createUIResource(id);\n }\n }\n\n this._entitiesMap.set(mapCopy);\n this._processCacheFromEntities();\n }\n\n private _updateWindowForActive(): void {\n this._lastWindowIds = this._currentWindowIds;\n\n this._currentWindowIds = this._computeWindowIds();\n if (this._currentWindowIds.length) {\n this._ensureResourcesForIds(this._currentWindowIds);\n }\n }\n\n private _setActiveEntity(id: string | number): void {\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n if (!entity.entity) {\n entity.entity = this._createEntityResource(id);\n }\n\n if (!entity.ui) {\n entity.ui = this._createUIResource(id);\n }\n\n this._activeEntity.set(entity);\n this._updateWindowForActive();\n }\n\n public _preloadSelectAllValues(): void {\n if (!this._config.preload || !this._entityLoader) {\n return;\n }\n\n this._entityLoader\n .loadIdsFromParameters(this._selectAllState().parameters ?? {})\n .pipe(\n map((ids) => {\n const cache = this._cache();\n this._entitiesMap.set(ids.reduce((map, id) => {\n const cached = cache[id];\n return {\n ...map,\n [id]: cached ?? {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\n })\n )\n .subscribe();\n }\n}\n","import { DestroyRef, inject, InjectionToken, Injector, Provider, Type } from \"@angular/core\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\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 type NiceSelectableListOptions<T> =\n & { entityLoader?: Type<NiceSelectableListEntityLoader<T>> }\n & { uiEntityLoader?: Type<NiceSelectableListUIEntityLoader<T>> }\n & { plugins?: Type<NiceSelectableListPluginDefinition>[] }\n & Omit<NiceSelectableListConfig<T>, \"entityLoaderToken\" | \"uiEntityLoaderToken\">;\n\nexport function provideNiceSelectableList<T>(options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(name: string, options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(...args: unknown[]): Provider[] {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as NiceSelectableListOptions<T> | undefined;\n\n const providers: Provider[] = [];\n\n const entityLoaderToken = options?.entityLoader\n ? new InjectionToken<unknown>(options.entityLoader.name)\n : null;\n if (entityLoaderToken && options?.entityLoader) {\n providers.push({\n provide: entityLoaderToken,\n useClass: options.entityLoader\n });\n }\n\n const uiEntityLoaderToken = options?.uiEntityLoader\n ? new InjectionToken<unknown>(options.uiEntityLoader.name)\n : null;\n if (uiEntityLoaderToken && options?.uiEntityLoader) {\n providers.push({\n provide: uiEntityLoaderToken,\n useClass: options.uiEntityLoader\n });\n }\n\n if (!name) {\n providers.push({\n provide: NICE_SELECTABLE_LIST,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return store;\n },\n deps: [Injector, DestroyRef]\n });\n } else {\n providers.push({\n provide: NICE_SELECTABLE_LISTS,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return {\n name,\n store\n };\n },\n deps: [Injector, DestroyRef],\n multi: true\n });\n }\n\n return providers;\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 computed,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n signal,\n Signal, untracked\n} from \"@angular/core\";\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 initialized: Signal<boolean>;\n allSelected: Signal<boolean>;\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> {\n public readonly name = input<string | null>(null, { alias: \"niceSelectableList\" });\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 public readonly allSelected = computed(() => this.selectableLists.selectAllState().active);\n\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}\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 {\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n OnDestroy,\n OnInit\n} 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.disabled = this.niceSelectableList.selectAllState().active;\n });\n\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, effect, inject, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList, 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 niceSelectableList = injectNiceSelectableList<T>();\n private readonly matCheckbox = inject(MatCheckbox);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n this.matCheckbox.disabled = this.niceSelectableListDirective.allSelected();\n });\n\n afterRenderEffect({\n read: () => {\n const allSelected = this.niceSelectableListDirective.allSelected();\n if (allSelected) {\n this.matCheckbox.checked = true;\n return;\n }\n\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 const entities = this.niceSelectableListDirective\n .checkboxes()\n .map((checkbox) => checkbox.selectableEntity());\n\n if (checked) {\n this.niceSelectableList.selectEntities(entities);\n } else {\n this.niceSelectableList.deselectEntities(entities);\n }\n });\n }\n}\n","import { DestroyRef, Injector } from \"@angular/core\";\nimport { NiceSelectableListStore } from \"../store\";\n\nexport abstract class NiceSelectableListPluginDefinition {\n constructor(\n protected readonly _injector: Injector,\n protected readonly _destroyRef: DestroyRef,\n protected readonly _store: NiceSelectableListStore<unknown>\n ) {\n this._store.registerPlugin(this);\n _destroyRef.onDestroy(() => this.cleanup());\n }\n\n public abstract init(): void;\n public abstract cleanup(): void;\n}\n","import { computed, effect, EffectRef, signal } from \"@angular/core\";\nimport { ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Router } from \"@angular/router\";\nimport { finalize, from, Observable, of, ReplaySubject, Subscription } from \"rxjs\";\nimport { delay, distinctUntilChanged, filter, map, startWith, switchMap, take, withLatestFrom } from \"rxjs/operators\";\nimport { NiceSelectableListPluginDefinition } from \"../plugin-definition\";\nimport { NiceSelectableListQueryParams } from \"./types/query-params.type\";\n\nexport class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition {\n private router!: Router;\n private route!: ActivatedRoute;\n\n private _storeChangesEffectRef!: EffectRef;\n private _writeQueryParamsSub!: Subscription;\n\n private _isNavigating$!: Observable<boolean>;\n private _lastQueryParams: NiceSelectableListQueryParams | null = null;\n\n private readonly _initialized = signal(false);\n private readonly _nextQueryParams = new ReplaySubject<NiceSelectableListQueryParams>(1);\n\n private readonly _queryParamState = computed(() => ({\n entities: this._store.entitiesIds(),\n activeEntity: this._store.activeEntityId(),\n selectAllState: this._store.selectAllState()\n }), {\n equal: (a, b) => {\n const selectAllEqual = a.selectAllState.active === b.selectAllState.active &&\n a.selectAllState.total === b.selectAllState.total &&\n JSON.stringify(a.selectAllState.parameters) === JSON.stringify(b.selectAllState.parameters);\n const entitiesEqual = a.entities.length === b.entities.length &&\n a.entities.every((entity, index) => entity === b.entities[index]);\n const activeEntityEqual = a.activeEntity === b.activeEntity;\n\n return selectAllEqual && entitiesEqual && activeEntityEqual;\n }\n });\n\n public override init(): void {\n this.router = this._injector.get(Router);\n this.route = this._injector.get(ActivatedRoute);\n\n this._isNavigating$ = this.router.events.pipe(\n filter((event) =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationSkipped ||\n event instanceof NavigationCancel ||\n event instanceof NavigationError\n ),\n map((event) => event instanceof NavigationStart),\n startWith(!this.router.navigated),\n distinctUntilChanged()\n );\n\n this.listenOnQueryParams();\n this.listenOnStoreChanges();\n this.writeQueryParams();\n }\n\n public override cleanup(): void {\n this._storeChangesEffectRef.destroy();\n this._writeQueryParamsSub.unsubscribe();\n }\n\n private listenOnQueryParams(): 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 listenOnStoreChanges(): void {\n this._storeChangesEffectRef = effect(() => {\n if (!this._initialized()) {\n return;\n }\n\n const { entities, activeEntity, selectAllState } = this._queryParamState();\n const params: NiceSelectableListQueryParams = {\n ...(selectAllState.active && {\n allSelected: true,\n ...(selectAllState.parameters && ({\n allSelectedParameters: JSON.stringify(selectAllState.parameters)\n }))\n }),\n selection: entities,\n selected: activeEntity\n };\n this._nextQueryParams.next(params);\n }, {\n injector: this._injector,\n manualCleanup: true\n });\n }\n\n private parseQueryParams(params: {\n allSelected?: boolean;\n allSelectedParameters?: string;\n selection?: string | string[];\n selected?: string;\n }): void {\n if (params.selection) {\n const selection = Array.isArray(params.selection)\n ? params.selection\n : [params.selection];\n\n this._store.setEntitiesFromSelections(selection);\n }\n\n if (params.selected) {\n this._store.setActiveFromSelected(params.selected);\n }\n\n if (params.allSelected) {\n this._store.setSelectAllState({\n active: true,\n total: this._store.total(),\n parameters: params.allSelectedParameters\n ? JSON.parse(params.allSelectedParameters)\n : null\n });\n }\n }\n\n private writeQueryParams(): void {\n this._writeQueryParamsSub = this._nextQueryParams.pipe(\n switchMap((params) => {\n if (params === this._lastQueryParams) {\n return of(false);\n }\n\n return this._isNavigating$.pipe(\n filter((isNavigating) => !isNavigating),\n take(1),\n delay(0),\n withLatestFrom(this._isNavigating$),\n switchMap(([_, isNavigating]) => {\n if (isNavigating || JSON.stringify(params) === JSON.stringify(this._lastQueryParams)) {\n return of(false);\n }\n\n return from(\n this.router.navigate([], {\n queryParams: params,\n queryParamsHandling: \"merge\"\n })\n ).pipe(\n finalize(() => this._lastQueryParams = params)\n );\n })\n );\n })\n ).subscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"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/selectable-list/pluggins/plugin-definition.ts","../../../src/nice-selectable-list/selectable-list/pluggins/query-params/plugin.ts","../../../src/nice-selectable-list/recursyve-nice-selectable-list.ts"],"sourcesContent":["import { afterNextRender, computed, InjectionToken, Injector, ResourceRef, Signal, signal } from \"@angular/core\";\nimport { rxResource } from \"@angular/core/rxjs-interop\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\nimport { map, of } from \"rxjs\";\nimport { NiceSelectableListEntityCheckboxDirective } from \"./entity-checkbox.directive\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\n\nexport type NiceSelectableListConfig<T> = {\n idProperty: keyof T;\n idType?: \"string\" | \"number\";\n\n entityLoaderToken: InjectionToken<NiceSelectableListEntityLoader<T>> | null;\n uiEntityLoaderToken: InjectionToken<NiceSelectableListUIEntityLoader<T>> | null;\n preload?: boolean;\n}\n\nexport type NiceSelectableListEntity<T> = {\n id: string | number;\n entity: ResourceRef<T | undefined> | null;\n ui: ResourceRef<T | undefined> | null;\n};\n\nexport type NiceSelectableListSelectAllState = {\n active: boolean;\n total: number | null;\n parameters: object | null;\n};\n\nexport class NiceSelectableListStore<T> {\n private readonly _plugins: NiceSelectableListPluginDefinition[] = [];\n private _entityLoader: NiceSelectableListEntityLoader<T, object, number | string> | null = null;\n private _uiEntityLoader: NiceSelectableListUIEntityLoader<T, number | string> | null = null;\n\n private readonly _initialized = signal(false);\n private readonly _cache = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n\n private readonly _entitiesMap = signal<Record<string | number, NiceSelectableListEntity<T>>>({});\n private readonly _activeEntity = signal<NiceSelectableListEntity<T> | null>(null);\n private readonly _checkboxes = signal<NiceSelectableListEntityCheckboxDirective<T>[]>([]);\n private readonly _selectAllState = signal<NiceSelectableListSelectAllState>({\n active: false,\n total: null,\n parameters: null\n });\n\n // Track window loading state\n private _lastWindowIds: (string | number)[] = [];\n private _currentWindowIds: (string | number)[] = [];\n\n public readonly entities = computed(() => Object.values(this._entitiesMap()).reverse());\n public readonly activeEntity = this._activeEntity.asReadonly();\n\n public readonly total: Signal<number> = computed(() => this.entities().length);\n public readonly entitiesIds: Signal<(string | number)[]> = computed(() => {\n const ids = Object.keys(this._entitiesMap()).reverse();\n return this._config.idType === \"string\" ? ids : ids.map((id) => +id);\n });\n public readonly activeEntityId: Signal<string | number | null> = computed(() => this._activeEntity()?.id ?? null);\n\n public readonly selectAllState = this._selectAllState.asReadonly();\n\n constructor(private readonly _injector: Injector, private readonly _config: NiceSelectableListConfig<T>) {\n afterNextRender(() => this.init());\n }\n\n public init(): void {\n if (this._initialized()) {\n return;\n }\n\n if (!this._entityLoader && this._config.entityLoaderToken) {\n this._entityLoader = this._injector.get(this._config.entityLoaderToken) as\n NiceSelectableListEntityLoader<T, object, number | string>;\n }\n\n if (!this._uiEntityLoader && this._config.uiEntityLoaderToken) {\n this._uiEntityLoader = this._injector.get(this._config.uiEntityLoaderToken) as\n NiceSelectableListUIEntityLoader<T, number | string>;\n }\n\n for (const plugin of this._plugins) {\n plugin.init();\n }\n\n this._initialized.set(true);\n }\n\n public registerPlugin(plugin: NiceSelectableListPluginDefinition): void {\n this._plugins.push(plugin);\n }\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 existing = this._entitiesMap()[id];\n\n const selectAllState = this._selectAllState();\n if ((existing && !existing.entity) || selectAllState.active) {\n const initial = checkbox.selectableEntity();\n const entityResource = this._createEntityResource(id, initial);\n this._entitiesMap.update(\n (_entitiesMap) => ({\n ..._entitiesMap,\n [id]: {\n id,\n entity: entityResource,\n ui: null\n }\n })\n );\n return;\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 registered = this._checkboxes().map((checkbox) => ({\n id: this._resolveEntityId(checkbox.selectableEntity()), value: checkbox.selectableEntity()\n }));\n const cache = this._cache();\n const entities = ids.map((id) => {\n const known = registered.find(_e => _e.id === id)?.value;\n const cached = cache[id]?.entity;\n const entityResource = known ? this._createEntityResource(id, known) : (cached ?? null);\n return {\n id,\n entity: entityResource\n } as { id: string | number; entity: ResourceRef<T | undefined> | null };\n });\n const mapOut = entities.reduce((map, entity) => ({\n ...map,\n [entity.id]: {\n id: entity.id,\n entity: entity.entity,\n ui: null\n }\n }), {} as Record<string | number, NiceSelectableListEntity<T>>);\n\n this._entitiesMap.set(mapOut);\n this._processCacheFromEntities();\n this._updateWindowForActive();\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 const cached = this._cache()[id];\n const newEntity = {\n id,\n entity: cached?.entity ?? this._createEntityResource(id, entity),\n ui: cached?.ui ?? this._createUIResource(id)\n };\n\n this._entitiesMap.update((entitiesMap) => ({\n ...entitiesMap,\n [id]: newEntity\n }));\n\n this._cache.update((cache) => ({\n ...cache,\n [id]: newEntity\n }));\n\n // Window might change if this selection impacts first/last buckets\n this._updateWindowForActive();\n }\n\n public selectEntities(entities: T[]): void {\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n const cache = this._cache();\n for (const entity of entities) {\n const id = this._resolveEntityId(entity);\n const cached = cache[id];\n newEntitiesMap[id] = cached ?? {\n id,\n entity: this._createEntityResource(id, entity),\n ui: null\n };\n }\n\n return newEntitiesMap;\n });\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\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._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n delete newEntitiesMap[id];\n return newEntitiesMap;\n });\n }\n\n public deselectEntities(entities: T[]): void {\n const toRemove = entities.filter((entity) => this._isEntitySelected(entity));\n\n this._entitiesMap.update((entitiesMap) => {\n const newEntitiesMap = { ...entitiesMap };\n for (const entity of toRemove) {\n const id = this._resolveEntityId(entity);\n delete newEntitiesMap[id];\n }\n\n return newEntitiesMap;\n });\n }\n\n public clear(): void {\n this._entitiesMap.set({});\n this._activeEntity.set(null);\n }\n\n public setSelectAllState(state: NiceSelectableListSelectAllState): void {\n this._selectAllState.set(state);\n\n if (!state.active) {\n this.clear();\n return;\n }\n\n const entities = this._checkboxes().map((checkbox) => checkbox.selectableEntity());\n this._entitiesMap.set(entities.reduce((map, entity) => {\n const id = this._resolveEntityId(entity);\n return {\n ...map,\n [id]: {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._preloadSelectAllValues()\n }\n\n public setActiveFromSelected(selected: string): void {\n const id = this._config.idType === \"string\" ? selected : +selected;\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n this._setActiveEntity(id);\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._setActiveEntity(id);\n }\n\n public selectFirstEntity(): void {\n const id = this.entitiesIds()[0];\n if (!id) {\n return;\n }\n\n this._setActiveEntity(id);\n }\n\n public selectNextEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n const nextEntityId = entitiesIds[index + 1];\n if (!nextEntityId) {\n return;\n }\n\n this._setActiveEntity(nextEntityId);\n }\n\n public selectPreviousEntity(): void {\n const activeEntity = this._activeEntity();\n if (!activeEntity) {\n this.selectFirstEntity();\n return;\n }\n\n const entitiesIds = this.entitiesIds();\n const index = entitiesIds.findIndex((id) => activeEntity.id === id);\n if (index === 0) {\n return;\n }\n\n const previousEntityId = entitiesIds[index - 1];\n if (!previousEntityId) {\n return;\n }\n\n this._setActiveEntity(previousEntityId);\n }\n\n public selectLastEntity(): void {\n const entitiesIds = this.entitiesIds();\n if (entitiesIds.length === 0) {\n return;\n }\n\n const lastEntityId = entitiesIds[entitiesIds.length - 1];\n if (!lastEntityId) {\n return;\n }\n\n this._setActiveEntity(lastEntityId);\n }\n\n private _isEntitySelected(entity: T): boolean {\n const id = this._resolveEntityId(entity);\n return id in this._entitiesMap();\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 private _processCacheFromEntities(): void {\n const entities = this._entitiesMap();\n this._cache.update((cache) => ({ ...cache, ...entities }));\n }\n\n private _createEntityResource(id: string | number, initial?: T | null): ResourceRef<T | undefined> {\n const resource = rxResource<T | undefined, { id: string | number}>({\n params: () => ({ id }),\n stream: ({ params }) => {\n if (this._entityLoader) {\n return this._entityLoader.loadEntitiesByIds([params.id]).pipe(map((arr) => arr?.[0]));\n }\n return of(initial ?? undefined);\n },\n defaultValue: initial ?? undefined,\n injector: this._injector\n });\n\n if (initial) {\n resource.set(initial);\n }\n\n return resource;\n }\n\n private _createUIResource(id: string | number): ResourceRef<T | undefined> | null {\n if (!this._uiEntityLoader) {\n return null;\n }\n\n return rxResource({\n params: () => ({ id }),\n stream: ({ params }) => this._uiEntityLoader!.loadById(params.id),\n injector: this._injector\n });\n }\n\n private _computeWindowIds(): (string | number)[] {\n const ids = this.entitiesIds();\n const n = ids.length;\n if (n === 0) {\n return [];\n }\n\n const set = new Set<string | number>();\n\n // first 3\n for (let i = 0; i < Math.min(3, n); i++) {\n set.add(ids[i]);\n }\n\n // last 3\n for (let i = Math.max(0, n - 3); i < n; i++) {\n set.add(ids[i]);\n }\n\n // active and +/- 3\n const activeId = this.activeEntityId();\n const activeIndex = activeId !== null ? ids.findIndex((i) => i === activeId) : -1;\n if (activeIndex >= 0) {\n for (let i = Math.max(0, activeIndex - 3); i <= Math.min(n - 1, activeIndex + 3); i++) {\n set.add(ids[i]);\n }\n }\n return Array.from(set.values());\n }\n\n private _ensureResourcesForIds(ids: (string | number)[]): void {\n const mapCopy = { ...this._entitiesMap() } as Record<string | number, NiceSelectableListEntity<T>>;\n const cache = this._cache();\n for (const id of ids) {\n const entry = mapCopy[id] ?? cache[id];\n if (!entry) {\n mapCopy[id] = {\n id,\n entity: this._createEntityResource(id),\n ui: this._uiEntityLoader ? this._createUIResource(id) : null\n };\n continue;\n }\n\n if (!entry.entity) {\n entry.entity = this._createEntityResource(id);\n }\n\n if (!entry.ui && this._uiEntityLoader) {\n entry.ui = this._createUIResource(id);\n }\n }\n\n this._entitiesMap.set(mapCopy);\n this._processCacheFromEntities();\n }\n\n private _updateWindowForActive(): void {\n this._lastWindowIds = this._currentWindowIds;\n\n this._currentWindowIds = this._computeWindowIds();\n if (this._currentWindowIds.length) {\n this._ensureResourcesForIds(this._currentWindowIds);\n }\n }\n\n private _setActiveEntity(id: string | number): void {\n const entity = this._entitiesMap()[id];\n if (!entity) {\n return;\n }\n\n if (!entity.entity) {\n entity.entity = this._createEntityResource(id);\n }\n\n if (!entity.ui) {\n entity.ui = this._createUIResource(id);\n }\n\n this._activeEntity.set(entity);\n this._updateWindowForActive();\n }\n\n public _preloadSelectAllValues(): void {\n if (!this._config.preload || !this._entityLoader) {\n return;\n }\n\n this._entityLoader\n .loadIdsFromParameters(this._selectAllState().parameters ?? {})\n .pipe(\n map((ids) => {\n const cache = this._cache();\n this._entitiesMap.set(ids.reduce((map, id) => {\n const cached = cache[id];\n return {\n ...map,\n [id]: cached ?? {\n id,\n entity: null,\n ui: null\n }\n };\n }, {} as Record<string | number, NiceSelectableListEntity<T>>));\n\n this._processCacheFromEntities();\n this._updateWindowForActive();\n })\n )\n .subscribe();\n }\n}\n","import { DestroyRef, inject, InjectionToken, Injector, Provider, Type } from \"@angular/core\";\nimport { NiceSelectableListEntityLoader, NiceSelectableListUIEntityLoader } from \"./loader\";\nimport { NiceSelectableListPluginDefinition } from \"./pluggins/plugin-definition\";\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 type NiceSelectableListOptions<T> =\n & { entityLoader?: Type<NiceSelectableListEntityLoader<T>> }\n & { uiEntityLoader?: Type<NiceSelectableListUIEntityLoader<T>> }\n & { plugins?: Type<NiceSelectableListPluginDefinition>[] }\n & Omit<NiceSelectableListConfig<T>, \"entityLoaderToken\" | \"uiEntityLoaderToken\">;\n\nexport function provideNiceSelectableList<T>(options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(name: string, options?: NiceSelectableListOptions<T>): Provider[];\nexport function provideNiceSelectableList<T>(...args: unknown[]): Provider[] {\n const name: string | null = typeof args[0] === \"string\" ? args[0] : null;\n const options = (typeof args[0] === \"string\" ? args[1] : args[0]) as NiceSelectableListOptions<T> | undefined;\n\n const providers: Provider[] = [];\n\n const entityLoaderToken = options?.entityLoader\n ? new InjectionToken<unknown>(options.entityLoader.name)\n : null;\n if (entityLoaderToken && options?.entityLoader) {\n providers.push({\n provide: entityLoaderToken,\n useClass: options.entityLoader\n });\n }\n\n const uiEntityLoaderToken = options?.uiEntityLoader\n ? new InjectionToken<unknown>(options.uiEntityLoader.name)\n : null;\n if (uiEntityLoaderToken && options?.uiEntityLoader) {\n providers.push({\n provide: uiEntityLoaderToken,\n useClass: options.uiEntityLoader\n });\n }\n\n if (!name) {\n providers.push({\n provide: NICE_SELECTABLE_LIST,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return store;\n },\n deps: [Injector, DestroyRef]\n });\n } else {\n providers.push({\n provide: NICE_SELECTABLE_LISTS,\n useFactory: (injector: Injector, destroyRef: DestroyRef) => {\n const store = new NiceSelectableListStore(injector, {\n idProperty: options?.idProperty ?? \"id\" as keyof T,\n idType: options?.idType ?? \"number\" as \"string\" | \"number\",\n entityLoaderToken,\n uiEntityLoaderToken,\n preload: options?.preload ?? entityLoaderToken !== null\n });\n\n for (const plugin of options?.plugins ?? []) {\n new plugin(injector, destroyRef, store);\n }\n\n return {\n name,\n store\n };\n },\n deps: [Injector, DestroyRef],\n multi: true\n });\n }\n\n return providers;\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 computed,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n inject,\n InjectionToken,\n Injector,\n input,\n signal,\n Signal, untracked\n} from \"@angular/core\";\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 initialized: Signal<boolean>;\n allSelected: Signal<boolean>;\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> {\n public readonly name = input<string | null>(null, { alias: \"niceSelectableList\" });\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 public readonly allSelected = computed(() => this.selectableLists.selectAllState().active);\n\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}\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 {\n computed,\n DestroyRef,\n Directive,\n effect,\n inject,\n input,\n OnDestroy,\n OnInit\n} 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.disabled = this.niceSelectableList.selectAllState().active;\n });\n\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, effect, inject, OnInit } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { injectNiceSelectableList, 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 niceSelectableList = injectNiceSelectableList<T>();\n private readonly matCheckbox = inject(MatCheckbox);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n effect(() => {\n this.matCheckbox.disabled = this.niceSelectableListDirective.allSelected();\n });\n\n afterRenderEffect({\n read: () => {\n const allSelected = this.niceSelectableListDirective.allSelected();\n if (allSelected) {\n this.matCheckbox.checked = true;\n return;\n }\n\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 const entities = this.niceSelectableListDirective\n .checkboxes()\n .map((checkbox) => checkbox.selectableEntity());\n\n if (checked) {\n this.niceSelectableList.selectEntities(entities);\n } else {\n this.niceSelectableList.deselectEntities(entities);\n }\n });\n }\n}\n","import { DestroyRef, Injector } from \"@angular/core\";\nimport { NiceSelectableListStore } from \"../store\";\n\nexport abstract class NiceSelectableListPluginDefinition {\n constructor(\n protected readonly _injector: Injector,\n protected readonly _destroyRef: DestroyRef,\n protected readonly _store: NiceSelectableListStore<unknown>\n ) {\n this._store.registerPlugin(this);\n _destroyRef.onDestroy(() => this.cleanup());\n }\n\n public abstract init(): void;\n public abstract cleanup(): void;\n}\n","import { computed, effect, EffectRef, signal } from \"@angular/core\";\nimport { ActivatedRoute, NavigationCancel, NavigationEnd, NavigationError, NavigationSkipped, NavigationStart, Router } from \"@angular/router\";\nimport { finalize, from, Observable, of, ReplaySubject, Subscription } from \"rxjs\";\nimport { delay, distinctUntilChanged, filter, map, startWith, switchMap, take, withLatestFrom } from \"rxjs/operators\";\nimport { NiceSelectableListPluginDefinition } from \"../plugin-definition\";\nimport { NiceSelectableListQueryParams } from \"./types/query-params.type\";\n\nexport class NiceSelectableQueryParamsPlugin extends NiceSelectableListPluginDefinition {\n private router!: Router;\n private route!: ActivatedRoute;\n\n private _storeChangesEffectRef!: EffectRef;\n private _writeQueryParamsSub!: Subscription;\n\n private _isNavigating$!: Observable<boolean>;\n private _lastQueryParams: NiceSelectableListQueryParams | null = null;\n\n private readonly _initialized = signal(false);\n private readonly _nextQueryParams = new ReplaySubject<NiceSelectableListQueryParams>(1);\n\n private readonly _queryParamState = computed(() => ({\n entities: this._store.entitiesIds(),\n activeEntity: this._store.activeEntityId(),\n selectAllState: this._store.selectAllState()\n }), {\n equal: (a, b) => {\n const selectAllEqual = a.selectAllState.active === b.selectAllState.active &&\n a.selectAllState.total === b.selectAllState.total &&\n JSON.stringify(a.selectAllState.parameters) === JSON.stringify(b.selectAllState.parameters);\n const entitiesEqual = a.entities.length === b.entities.length &&\n a.entities.every((entity, index) => entity === b.entities[index]);\n const activeEntityEqual = a.activeEntity === b.activeEntity;\n\n return selectAllEqual && entitiesEqual && activeEntityEqual;\n }\n });\n\n public override init(): void {\n this.router = this._injector.get(Router);\n this.route = this._injector.get(ActivatedRoute);\n\n this._isNavigating$ = this.router.events.pipe(\n filter((event) =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationSkipped ||\n event instanceof NavigationCancel ||\n event instanceof NavigationError\n ),\n map((event) => event instanceof NavigationStart),\n startWith(!this.router.navigated),\n distinctUntilChanged()\n );\n\n this.listenOnQueryParams();\n this.listenOnStoreChanges();\n this.writeQueryParams();\n }\n\n public override cleanup(): void {\n this._storeChangesEffectRef.destroy();\n this._writeQueryParamsSub.unsubscribe();\n }\n\n private listenOnQueryParams(): 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 listenOnStoreChanges(): void {\n this._storeChangesEffectRef = effect(() => {\n if (!this._initialized()) {\n return;\n }\n\n const { entities, activeEntity, selectAllState } = this._queryParamState();\n const params: NiceSelectableListQueryParams = {\n ...(selectAllState.active && {\n allSelected: true,\n ...(selectAllState.parameters && ({\n allSelectedParameters: JSON.stringify(selectAllState.parameters)\n }))\n }),\n selection: entities,\n selected: activeEntity\n };\n this._nextQueryParams.next(params);\n }, {\n injector: this._injector,\n manualCleanup: true\n });\n }\n\n private parseQueryParams(params: {\n allSelected?: boolean;\n allSelectedParameters?: string;\n selection?: string | string[];\n selected?: string;\n }): void {\n if (params.selection) {\n const selection = Array.isArray(params.selection)\n ? params.selection\n : [params.selection];\n\n this._store.setEntitiesFromSelections(selection);\n }\n\n if (params.selected) {\n this._store.setActiveFromSelected(params.selected);\n }\n\n if (params.allSelected) {\n this._store.setSelectAllState({\n active: true,\n total: this._store.total(),\n parameters: params.allSelectedParameters\n ? JSON.parse(params.allSelectedParameters)\n : null\n });\n }\n }\n\n private writeQueryParams(): void {\n this._writeQueryParamsSub = this._nextQueryParams.pipe(\n switchMap((params) => {\n if (params === this._lastQueryParams) {\n return of(false);\n }\n\n return this._isNavigating$.pipe(\n filter((isNavigating) => !isNavigating),\n take(1),\n delay(0),\n withLatestFrom(this._isNavigating$),\n switchMap(([_, isNavigating]) => {\n if (isNavigating || JSON.stringify(params) === JSON.stringify(this._lastQueryParams)) {\n return of(false);\n }\n\n return from(\n this.router.navigate([], {\n queryParams: params,\n queryParamsHandling: \"merge\"\n })\n ).pipe(\n finalize(() => this._lastQueryParams = params)\n );\n })\n );\n })\n ).subscribe();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recursyve/nice-selectable-list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "21.0.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/cdk": "^
|
|
7
|
-
"@angular/core": "^
|
|
8
|
-
"@angular/material": "^
|
|
5
|
+
"@angular/common": "^21.0.0",
|
|
6
|
+
"@angular/cdk": "^21.0.0",
|
|
7
|
+
"@angular/core": "^21.0.0",
|
|
8
|
+
"@angular/material": "^21.0.0"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"tslib": "^2.3.0"
|
|
12
12
|
},
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"module": "fesm2022/recursyve-nice-selectable-list.mjs",
|
|
15
|
-
"typings": "
|
|
15
|
+
"typings": "types/recursyve-nice-selectable-list.d.ts",
|
|
16
16
|
"exports": {
|
|
17
17
|
"./package.json": {
|
|
18
18
|
"default": "./package.json"
|
|
19
19
|
},
|
|
20
20
|
".": {
|
|
21
|
-
"types": "./
|
|
21
|
+
"types": "./types/recursyve-nice-selectable-list.d.ts",
|
|
22
22
|
"default": "./fesm2022/recursyve-nice-selectable-list.mjs"
|
|
23
23
|
}
|
|
24
24
|
}
|
|
File without changes
|