@nativescript-community/ui-collectionview 5.2.0 → 5.3.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.
- package/CHANGELOG.md +15 -0
- package/angular/collectionview-comp.d.ts +3 -3
- package/angular/esm2022/collectionview-comp.mjs +416 -0
- package/angular/{esm2020 → esm2022}/index.mjs +4 -4
- package/angular/{fesm2020 → fesm2022}/nativescript-community-ui-collectionview-angular.mjs +68 -49
- package/angular/{fesm2020 → fesm2022}/nativescript-community-ui-collectionview-angular.mjs.map +1 -1
- package/angular/package.json +4 -10
- package/index-common.d.ts +3 -5
- package/index-common.js +101 -24
- package/index-common.js.map +1 -1
- package/index.android.d.ts +11 -5
- package/index.android.js +198 -96
- package/index.android.js.map +1 -1
- package/index.ios.d.ts +1 -1
- package/package.json +2 -2
- package/platforms/android/AndroidManifest.xml +1 -1
- package/platforms/android/include.gradle +4 -3
- package/platforms/android/java/com/nativescript/collectionview/GridLayoutManager.java +9 -0
- package/platforms/android/java/com/nativescript/collectionview/OverlapDecoration.java +22 -0
- package/platforms/android/java/com/nativescript/collectionview/RecyclerView.java +21 -1
- package/platforms/android/java/com/nativescript/collectionview/SizeChangedListener.java +2 -1
- package/react/index.d.ts +5 -5
- package/svelte/index.d.ts +0 -1
- package/typings/android.d.ts +16 -2
- package/typings/android.wasabeef.d.ts +843 -0
- package/vue3/component.d.ts +1 -1
- package/vue3/component.js +16 -9
- package/vue3/component.js.map +1 -1
- package/angular/esm2020/collectionview-comp.mjs +0 -397
- package/angular/fesm2015/nativescript-community-ui-collectionview-angular.mjs +0 -441
- package/angular/fesm2015/nativescript-community-ui-collectionview-angular.mjs.map +0 -1
- /package/angular/{esm2020 → esm2022}/nativescript-community-ui-collectionview-angular.mjs +0 -0
@@ -9,6 +9,11 @@ const _c0 = ["loader"];
|
|
9
9
|
registerElement('CollectionView', () => CollectionView);
|
10
10
|
const NG_VIEW = '_ngViewRef';
|
11
11
|
class ItemContext {
|
12
|
+
$implicit;
|
13
|
+
item;
|
14
|
+
index;
|
15
|
+
even;
|
16
|
+
odd;
|
12
17
|
constructor($implicit, item, index, even, odd) {
|
13
18
|
this.$implicit = $implicit;
|
14
19
|
this.item = item;
|
@@ -18,38 +23,20 @@ class ItemContext {
|
|
18
23
|
}
|
19
24
|
}
|
20
25
|
class CollectionViewComponent {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
this._ngZone = _ngZone;
|
26
|
-
this.setupItemView = new EventEmitter();
|
27
|
-
this.autoReuseViews = false;
|
28
|
-
this.itemViewLoader = (viewType) => this._ngZone.run(() => {
|
29
|
-
switch (viewType) {
|
30
|
-
case ListViewViewTypes.ItemView:
|
31
|
-
if (this._itemTemplate && this.loader) {
|
32
|
-
const typedView = this.getOrCreate(this._itemTemplate);
|
33
|
-
return typedView;
|
34
|
-
}
|
35
|
-
break;
|
36
|
-
}
|
37
|
-
return null;
|
38
|
-
});
|
39
|
-
this.viewPool = new Map();
|
40
|
-
this.viewToTemplate = new WeakMap();
|
41
|
-
this.viewToLoader = new WeakMap();
|
42
|
-
this._collectionView = _elementRef.nativeElement;
|
43
|
-
this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);
|
44
|
-
this._collectionView.itemViewLoader = this.itemViewLoader;
|
45
|
-
this._loaders = [];
|
46
|
-
}
|
26
|
+
_elementRef;
|
27
|
+
_iterableDiffers;
|
28
|
+
_renderer;
|
29
|
+
_ngZone;
|
47
30
|
get nativeElement() {
|
48
31
|
return this._collectionView;
|
49
32
|
}
|
50
33
|
get listView() {
|
51
34
|
return this._collectionView;
|
52
35
|
}
|
36
|
+
loader;
|
37
|
+
setupItemView = new EventEmitter();
|
38
|
+
itemTemplateQuery;
|
39
|
+
autoReuseViews = false;
|
53
40
|
detachedLoaderFactory() {
|
54
41
|
const ref = this.loader.createComponent(DetachedLoader, {
|
55
42
|
index: 0
|
@@ -79,6 +66,33 @@ class CollectionViewComponent {
|
|
79
66
|
}
|
80
67
|
this._collectionView.items = this._items;
|
81
68
|
}
|
69
|
+
_collectionView;
|
70
|
+
_items;
|
71
|
+
_differ;
|
72
|
+
_itemTemplate;
|
73
|
+
_templateMap;
|
74
|
+
_loaders;
|
75
|
+
constructor(_elementRef, _iterableDiffers, _renderer, _ngZone) {
|
76
|
+
this._elementRef = _elementRef;
|
77
|
+
this._iterableDiffers = _iterableDiffers;
|
78
|
+
this._renderer = _renderer;
|
79
|
+
this._ngZone = _ngZone;
|
80
|
+
this._collectionView = _elementRef.nativeElement;
|
81
|
+
this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);
|
82
|
+
this._collectionView.itemViewLoader = this.itemViewLoader;
|
83
|
+
this._loaders = [];
|
84
|
+
}
|
85
|
+
itemViewLoader = (viewType) => this._ngZone.run(() => {
|
86
|
+
switch (viewType) {
|
87
|
+
case ListViewViewTypes.ItemView:
|
88
|
+
if (this._itemTemplate && this.loader) {
|
89
|
+
const typedView = this.getOrCreate(this._itemTemplate);
|
90
|
+
return typedView;
|
91
|
+
}
|
92
|
+
break;
|
93
|
+
}
|
94
|
+
return null;
|
95
|
+
});
|
82
96
|
ngAfterContentInit() {
|
83
97
|
if (Trace.isEnabled()) {
|
84
98
|
CLog(CLogTypes.info, 'CollectionView.ngAfterContentInit()');
|
@@ -218,6 +232,7 @@ class CollectionViewComponent {
|
|
218
232
|
return resultView;
|
219
233
|
};
|
220
234
|
}
|
235
|
+
viewPool = new Map();
|
221
236
|
storeViewRef(viewRef) {
|
222
237
|
const templateRef = this.viewToTemplate.get(viewRef);
|
223
238
|
if (templateRef) {
|
@@ -233,6 +248,8 @@ class CollectionViewComponent {
|
|
233
248
|
}
|
234
249
|
}
|
235
250
|
}
|
251
|
+
viewToTemplate = new WeakMap();
|
252
|
+
viewToLoader = new WeakMap();
|
236
253
|
getOrCreate(templateRef) {
|
237
254
|
return this._ngZone.run(() => {
|
238
255
|
let viewRef = this.getView(templateRef);
|
@@ -301,25 +318,25 @@ class CollectionViewComponent {
|
|
301
318
|
this._collectionView.refresh();
|
302
319
|
}
|
303
320
|
}
|
321
|
+
static ɵfac = function CollectionViewComponent_Factory(t) { return new (t || CollectionViewComponent)(i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(IterableDiffers), i0.ɵɵdirectiveInject(NativeScriptRendererFactory), i0.ɵɵdirectiveInject(NgZone)); };
|
322
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionViewComponent, selectors: [["CollectionView"]], contentQueries: function CollectionViewComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
323
|
+
i0.ɵɵcontentQuery(dirIndex, TemplateRef, 7, TemplateRef);
|
324
|
+
} if (rf & 2) {
|
325
|
+
let _t;
|
326
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplateQuery = _t.first);
|
327
|
+
} }, viewQuery: function CollectionViewComponent_Query(rf, ctx) { if (rf & 1) {
|
328
|
+
i0.ɵɵviewQuery(_c0, 7, ViewContainerRef);
|
329
|
+
} if (rf & 2) {
|
330
|
+
let _t;
|
331
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loader = _t.first);
|
332
|
+
} }, hostBindings: function CollectionViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
333
|
+
i0.ɵɵlistener("itemLoading", function CollectionViewComponent_itemLoading_HostBindingHandler($event) { return ctx.onItemLoading($event); })("itemRecycling", function CollectionViewComponent_itemRecycling_HostBindingHandler($event) { return ctx.onItemRecyclingInternal($event); })("itemDisposing", function CollectionViewComponent_itemDisposing_HostBindingHandler($event) { return ctx.onItemDisposingInternal($event); });
|
334
|
+
} }, inputs: { autoReuseViews: "autoReuseViews", itemTemplate: "itemTemplate", items: "items" }, outputs: { setupItemView: "setupItemView" }, decls: 3, vars: 0, consts: [["loader", ""]], template: function CollectionViewComponent_Template(rf, ctx) { if (rf & 1) {
|
335
|
+
i0.ɵɵelementStart(0, "DetachedContainer");
|
336
|
+
i0.ɵɵelement(1, "Placeholder", null, 0);
|
337
|
+
i0.ɵɵelementEnd();
|
338
|
+
} }, encapsulation: 2, changeDetection: 0 });
|
304
339
|
}
|
305
|
-
CollectionViewComponent.ɵfac = function CollectionViewComponent_Factory(t) { return new (t || CollectionViewComponent)(i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(IterableDiffers), i0.ɵɵdirectiveInject(NativeScriptRendererFactory), i0.ɵɵdirectiveInject(NgZone)); };
|
306
|
-
CollectionViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionViewComponent, selectors: [["CollectionView"]], contentQueries: function CollectionViewComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
307
|
-
i0.ɵɵcontentQuery(dirIndex, TemplateRef, 7, TemplateRef);
|
308
|
-
} if (rf & 2) {
|
309
|
-
let _t;
|
310
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplateQuery = _t.first);
|
311
|
-
} }, viewQuery: function CollectionViewComponent_Query(rf, ctx) { if (rf & 1) {
|
312
|
-
i0.ɵɵviewQuery(_c0, 7, ViewContainerRef);
|
313
|
-
} if (rf & 2) {
|
314
|
-
let _t;
|
315
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loader = _t.first);
|
316
|
-
} }, hostBindings: function CollectionViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
317
|
-
i0.ɵɵlistener("itemLoading", function CollectionViewComponent_itemLoading_HostBindingHandler($event) { return ctx.onItemLoading($event); })("itemRecycling", function CollectionViewComponent_itemRecycling_HostBindingHandler($event) { return ctx.onItemRecyclingInternal($event); })("itemDisposing", function CollectionViewComponent_itemDisposing_HostBindingHandler($event) { return ctx.onItemDisposingInternal($event); });
|
318
|
-
} }, inputs: { autoReuseViews: "autoReuseViews", itemTemplate: "itemTemplate", items: "items" }, outputs: { setupItemView: "setupItemView" }, decls: 3, vars: 0, consts: [["loader", ""]], template: function CollectionViewComponent_Template(rf, ctx) { if (rf & 1) {
|
319
|
-
i0.ɵɵelementStart(0, "DetachedContainer");
|
320
|
-
i0.ɵɵelement(1, "Placeholder", null, 0);
|
321
|
-
i0.ɵɵelementEnd();
|
322
|
-
} }, encapsulation: 2, changeDetection: 0 });
|
323
340
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionViewComponent, [{
|
324
341
|
type: Component,
|
325
342
|
args: [{
|
@@ -372,6 +389,8 @@ function getItemViewRoot(viewRef, rootLocator = extractSingleViewRecursive) {
|
|
372
389
|
return rootView;
|
373
390
|
}
|
374
391
|
class TemplateKeyDirective {
|
392
|
+
templateRef;
|
393
|
+
collectionView;
|
375
394
|
constructor(templateRef, collectionView) {
|
376
395
|
this.templateRef = templateRef;
|
377
396
|
this.collectionView = collectionView;
|
@@ -384,9 +403,9 @@ class TemplateKeyDirective {
|
|
384
403
|
this.collectionView.registerTemplate(value.toLowerCase(), this.templateRef);
|
385
404
|
}
|
386
405
|
}
|
406
|
+
static ɵfac = function TemplateKeyDirective_Factory(t) { return new (t || TemplateKeyDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(CollectionViewComponent, 1)); };
|
407
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TemplateKeyDirective, selectors: [["", "cvTemplateKey", ""]], inputs: { cvTemplateKey: "cvTemplateKey" } });
|
387
408
|
}
|
388
|
-
TemplateKeyDirective.ɵfac = function TemplateKeyDirective_Factory(t) { return new (t || TemplateKeyDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(CollectionViewComponent, 1)); };
|
389
|
-
TemplateKeyDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TemplateKeyDirective, selectors: [["", "cvTemplateKey", ""]], inputs: { cvTemplateKey: "cvTemplateKey" } });
|
390
409
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateKeyDirective, [{
|
391
410
|
type: Directive,
|
392
411
|
args: [{ selector: '[cvTemplateKey]' }]
|
@@ -398,10 +417,10 @@ TemplateKeyDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: Templa
|
|
398
417
|
|
399
418
|
// External
|
400
419
|
class CollectionViewModule {
|
420
|
+
static ɵfac = function CollectionViewModule_Factory(t) { return new (t || CollectionViewModule)(); };
|
421
|
+
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CollectionViewModule });
|
422
|
+
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
401
423
|
}
|
402
|
-
CollectionViewModule.ɵfac = function CollectionViewModule_Factory(t) { return new (t || CollectionViewModule)(); };
|
403
|
-
CollectionViewModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CollectionViewModule });
|
404
|
-
CollectionViewModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
405
424
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionViewModule, [{
|
406
425
|
type: NgModule,
|
407
426
|
args: [{
|
package/angular/{fesm2020 → fesm2022}/nativescript-community-ui-collectionview-angular.mjs.map
RENAMED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nativescript-community-ui-collectionview-angular.mjs","sources":["../../../../src/collectionview/angular/collectionview-comp.ts","../../../../src/collectionview/angular/index.ts","../../../../src/collectionview/angular/nativescript-community-ui-collectionview-angular.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Host,\n HostListener,\n Inject,\n Input,\n IterableDiffer,\n IterableDiffers,\n NgZone,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { CLog, CLogTypes, CollectionView, CollectionViewItemEventData, ListViewViewTypes } from '@nativescript-community/ui-collectionview';\nimport { DetachedLoader, NativeScriptRendererFactory, extractSingleViewRecursive, isListLikeIterable, registerElement } from '@nativescript/angular';\nimport { KeyedTemplate, LayoutBase, ObservableArray, Trace, View } from '@nativescript/core';\n\nregisterElement('CollectionView', () => CollectionView);\n\nconst NG_VIEW = '_ngViewRef';\n\nexport class ItemContext {\n constructor(public $implicit?: any, public item?: any, public index?: number, public even?: boolean, public odd?: boolean) {}\n}\n\nexport interface SetupItemViewArgs {\n view: EmbeddedViewRef<any>;\n data: any;\n index: number;\n context: ItemContext;\n}\n\n@Component({\n selector: 'CollectionView',\n template: `\n <DetachedContainer>\n <Placeholder #loader></Placeholder>\n </DetachedContainer>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CollectionViewComponent implements DoCheck, OnDestroy, AfterContentInit {\n public get nativeElement(): any {\n return this._collectionView;\n }\n public get listView(): any {\n return this._collectionView;\n }\n\n @ViewChild('loader', { read: ViewContainerRef, static: true }) public loader: ViewContainerRef;\n @Output() public setupItemView = new EventEmitter<SetupItemViewArgs>();\n @ContentChild(TemplateRef, { read: TemplateRef, static: true }) public itemTemplateQuery: TemplateRef<ItemContext>;\n\n @Input() autoReuseViews = false;\n\n detachedLoaderFactory() {\n const ref = this.loader.createComponent(DetachedLoader, {\n index: 0\n });\n this.loader.detach(0);\n this._loaders.push(ref);\n return ref;\n }\n\n @Input()\n public get itemTemplate() {\n return this._itemTemplate;\n }\n public set itemTemplate(value: any) {\n this._itemTemplate = value;\n this._collectionView.refresh();\n }\n @Input()\n public get items() {\n return this._items;\n }\n public set items(value: any) {\n this._items = value;\n let needDiffer = true;\n if (value instanceof ObservableArray) {\n needDiffer = false;\n }\n if (needDiffer && !this._differ && isListLikeIterable(value)) {\n this._differ = this._iterableDiffers.find(this._items).create((_index, item) => item);\n }\n\n this._collectionView.items = this._items;\n }\n\n private _collectionView: CollectionView;\n private _items: any;\n private _differ: IterableDiffer<KeyedTemplate>;\n private _itemTemplate: TemplateRef<ItemContext>;\n private _templateMap: Map<string, KeyedTemplate>;\n private _loaders: ComponentRef<DetachedLoader>[];\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(IterableDiffers) private _iterableDiffers: IterableDiffers,\n @Inject(NativeScriptRendererFactory) private _renderer: NativeScriptRendererFactory,\n @Inject(NgZone) private _ngZone: NgZone\n ) {\n this._collectionView = _elementRef.nativeElement;\n\n this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);\n this._collectionView.itemViewLoader = this.itemViewLoader;\n this._loaders = [];\n }\n\n private itemViewLoader = (viewType) =>\n this._ngZone.run(() => {\n switch (viewType) {\n case ListViewViewTypes.ItemView:\n if (this._itemTemplate && this.loader) {\n const typedView = this.getOrCreate(this._itemTemplate);\n return typedView;\n }\n break;\n }\n return null;\n });\n\n public ngAfterContentInit() {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'CollectionView.ngAfterContentInit()');\n }\n this.setItemTemplates();\n }\n\n public ngOnDestroy() {\n this._collectionView.off(CollectionView.itemLoadingEvent, this.onItemLoading, this);\n this._collectionView = null;\n this._loaders.forEach((l) => l.destroy());\n this._loaders = null;\n this.viewToLoader = null;\n this.viewToTemplate = null;\n this.viewPool = null;\n\n this._items = null;\n this._differ = null;\n this._itemTemplate = null;\n if (this._templateMap) {\n this._templateMap.clear();\n }\n this._templateMap = null;\n }\n\n public ngDoCheck() {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - execute differ? ' + this._differ);\n }\n if (this._differ) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - execute differ');\n }\n const changes = this._differ.diff(this._items);\n if (changes) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - refresh');\n }\n this.refresh();\n }\n }\n }\n\n public registerTemplate(key: string, template: TemplateRef<ItemContext>) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'registerTemplate for key: ' + key);\n }\n if (!this._templateMap) {\n this._templateMap = new Map<string, KeyedTemplate>();\n }\n\n const keyedTemplate = {\n key,\n createView: this.getItemTemplateViewFactory(template)\n };\n\n this._templateMap.set(key, keyedTemplate);\n }\n\n @HostListener('itemLoading', ['$event'])\n public onItemLoading(args: CollectionViewItemEventData) {\n if (!args.view && !this.itemTemplate) {\n return;\n }\n if (!this.items) return;\n const index = args.index;\n const items = (args.object as any).items;\n const currentItem = typeof items.getItem === 'function' ? items.getItem(index) : items[index];\n let viewRef: EmbeddedViewRef<ItemContext>;\n\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `onItemLoading: ${index} - Reusing existing view`);\n }\n\n viewRef = args.view[NG_VIEW];\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (!viewRef && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {\n viewRef = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (!viewRef && Trace.isEnabled()) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `ViewReference not found for item ${index}. View recycling is not working`);\n }\n }\n\n if (!viewRef) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `onItemLoading: ${index} - Creating view from template`);\n }\n\n viewRef = this.loader.createEmbeddedView(this.itemTemplate, new ItemContext(), 0);\n args.view = getItemViewRoot(viewRef);\n args.view[NG_VIEW] = viewRef;\n }\n\n this.setupViewRef(viewRef, currentItem, index);\n\n this.detectChangesOnChild(viewRef, index);\n }\n @HostListener('itemRecycling', ['$event'])\n public onItemRecyclingInternal(args: any) {\n if (!args.view) {\n return;\n }\n let ngView: EmbeddedViewRef<any> = args.view[NG_VIEW];\n\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (!ngView && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {\n ngView = args.view.getChildAt(0)[NG_VIEW];\n }\n // console.log('recycling', args.view);\n\n if (ngView) {\n ngView.detach();\n }\n }\n\n @HostListener('itemDisposing', ['$event'])\n public onItemDisposingInternal(args: any) {\n if (!args.view) {\n return;\n }\n let ngView: EmbeddedViewRef<any> = args.view[NG_VIEW];\n\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (!ngView && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {\n ngView = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (ngView) {\n ngView.detach();\n this.storeViewRef(ngView);\n }\n }\n\n public setupViewRef(view: EmbeddedViewRef<ItemContext>, data: any, index: number): void {\n const context = view.context;\n context.$implicit = data;\n context.item = data;\n context.index = index;\n context.even = index % 2 === 0;\n context.odd = !context.even;\n\n this.setupItemView.next({\n context,\n data,\n index,\n view\n });\n }\n\n protected getItemTemplateViewFactory(template: TemplateRef<ItemContext>): () => View {\n return () => {\n const viewRef = this.loader.createEmbeddedView(template, new ItemContext(), 0);\n const resultView = getItemViewRoot(viewRef);\n resultView[NG_VIEW] = viewRef;\n\n return resultView;\n };\n }\n viewPool = new Map<\n TemplateRef<ItemContext>,\n {\n scrapSize: number;\n scrapHead: Set<EmbeddedViewRef<ItemContext>>;\n }\n >();\n private storeViewRef(viewRef: EmbeddedViewRef<any>) {\n const templateRef = this.viewToTemplate.get(viewRef);\n if (templateRef) {\n const scrap = this.viewPool.get(templateRef);\n if (scrap) {\n if (scrap.scrapHead.size >= scrap.scrapSize) {\n viewRef.destroy();\n this.viewToLoader.get(viewRef)?.destroy();\n } else {\n scrap.scrapHead.add(viewRef);\n }\n }\n }\n }\n viewToTemplate = new WeakMap<EmbeddedViewRef<any>, TemplateRef<any>>();\n viewToLoader = new WeakMap<EmbeddedViewRef<any>, ComponentRef<DetachedLoader>>();\n\n private getOrCreate(templateRef: TemplateRef<ItemContext>) {\n return this._ngZone.run(() => {\n let viewRef = this.getView(templateRef);\n if (!viewRef) {\n const loader = this.detachedLoaderFactory();\n // viewRef = this.loader.createEmbeddedView(templateRef, new ItemContext(), 0);\n viewRef = loader.instance.vc.createEmbeddedView(templateRef, new ItemContext(), 0);\n this.viewToLoader.set(viewRef, loader);\n this.viewToTemplate.set(viewRef, templateRef);\n }\n viewRef.detach();\n const resultView = getItemViewRoot(viewRef);\n resultView[NG_VIEW] = viewRef;\n resultView.reusable = this.autoReuseViews;\n return resultView;\n });\n }\n private getView(templateRef: TemplateRef<ItemContext>) {\n const pool = this.getViewPool(templateRef);\n while (pool.scrapHead.size > 0) {\n const viewRef: EmbeddedViewRef<ItemContext> = pool.scrapHead.values().next().value;\n pool.scrapHead.delete(viewRef);\n if (!viewRef.destroyed) {\n return viewRef;\n }\n }\n return null;\n }\n\n private getViewPool(templateRef: TemplateRef<ItemContext>) {\n if (!this.viewPool.has(templateRef)) {\n this.viewPool.set(templateRef, {\n scrapSize: this.autoReuseViews ? Infinity : 0,\n scrapHead: new Set<EmbeddedViewRef<ItemContext>>()\n });\n }\n return this.viewPool.get(templateRef);\n }\n\n private setItemTemplates() {\n // The itemTemplateQuery may be changed after list items are added that contain <template> inside,\n // so cache and use only the original template to avoid errors.\n this.itemTemplate = this.itemTemplateQuery;\n\n if (this._templateMap) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'Setting templates');\n }\n\n const templates: KeyedTemplate[] = [];\n this._templateMap.forEach((value) => {\n templates.push(value);\n });\n this._collectionView.itemTemplates = templates;\n } else {\n // If the map was not initialized this means that there are no named templates, so we register the default one.\n this._collectionView.itemTemplate = this.getItemTemplateViewFactory(this.itemTemplate);\n }\n }\n\n private detectChangesOnChild(viewRef: EmbeddedViewRef<ItemContext>, index: number) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'Manually detect changes in child: ' + index);\n }\n viewRef.markForCheck();\n viewRef.detectChanges();\n }\n\n private refresh() {\n if (this._collectionView) {\n this._collectionView.refresh();\n }\n }\n}\n\nexport interface ComponentView {\n rootNodes: any[];\n destroy(): void;\n}\n\nexport type RootLocator = (nodes: any[], nestLevel: number) => View;\n\nexport function getItemViewRoot(viewRef: ComponentView, rootLocator: RootLocator = extractSingleViewRecursive): View {\n const rootView = rootLocator(viewRef.rootNodes, 0);\n return rootView;\n}\n\n@Directive({ selector: '[cvTemplateKey]' })\nexport class TemplateKeyDirective {\n constructor(private templateRef: TemplateRef<any>, @Host() private collectionView: CollectionViewComponent) {}\n\n @Input()\n set cvTemplateKey(value: any) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'cvTemplateKey: ' + value);\n }\n if (this.collectionView && this.templateRef) {\n this.collectionView.registerTemplate(value.toLowerCase(), this.templateRef);\n }\n }\n}\n","// External\nimport { NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\n\nimport { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';\nexport { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';\n\n@NgModule({\n declarations: [CollectionViewComponent, TemplateKeyDirective],\n exports: [CollectionViewComponent, TemplateKeyDirective],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class CollectionViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"nativescript-community-ui-collectionview-angular.mjs","sources":["../../../../src/collectionview/angular/collectionview-comp.ts","../../../../src/collectionview/angular/index.ts","../../../../src/collectionview/angular/nativescript-community-ui-collectionview-angular.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Host,\n HostListener,\n Inject,\n Input,\n IterableDiffer,\n IterableDiffers,\n NgZone,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { CLog, CLogTypes, CollectionView, CollectionViewItemEventData, ListViewViewTypes } from '@nativescript-community/ui-collectionview';\nimport { DetachedLoader, NativeScriptRendererFactory, extractSingleViewRecursive, isListLikeIterable, registerElement } from '@nativescript/angular';\nimport { KeyedTemplate, LayoutBase, ObservableArray, Trace, View } from '@nativescript/core';\n\nregisterElement('CollectionView', () => CollectionView);\n\nconst NG_VIEW = '_ngViewRef';\n\nexport class ItemContext {\n constructor(public $implicit?: any, public item?: any, public index?: number, public even?: boolean, public odd?: boolean) {}\n}\n\nexport interface SetupItemViewArgs {\n view: EmbeddedViewRef<any>;\n data: any;\n index: number;\n context: ItemContext;\n}\n\n@Component({\n selector: 'CollectionView',\n template: `\n <DetachedContainer>\n <Placeholder #loader></Placeholder>\n </DetachedContainer>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CollectionViewComponent implements DoCheck, OnDestroy, AfterContentInit {\n public get nativeElement(): any {\n return this._collectionView;\n }\n public get listView(): any {\n return this._collectionView;\n }\n\n @ViewChild('loader', { read: ViewContainerRef, static: true }) public loader: ViewContainerRef;\n @Output() public setupItemView = new EventEmitter<SetupItemViewArgs>();\n @ContentChild(TemplateRef, { read: TemplateRef, static: true }) public itemTemplateQuery: TemplateRef<ItemContext>;\n\n @Input() autoReuseViews = false;\n\n detachedLoaderFactory() {\n const ref = this.loader.createComponent(DetachedLoader, {\n index: 0\n });\n this.loader.detach(0);\n this._loaders.push(ref);\n return ref;\n }\n\n @Input()\n public get itemTemplate() {\n return this._itemTemplate;\n }\n public set itemTemplate(value: any) {\n this._itemTemplate = value;\n this._collectionView.refresh();\n }\n @Input()\n public get items() {\n return this._items;\n }\n public set items(value: any) {\n this._items = value;\n let needDiffer = true;\n if (value instanceof ObservableArray) {\n needDiffer = false;\n }\n if (needDiffer && !this._differ && isListLikeIterable(value)) {\n this._differ = this._iterableDiffers.find(this._items).create((_index, item) => item);\n }\n\n this._collectionView.items = this._items;\n }\n\n private _collectionView: CollectionView;\n private _items: any;\n private _differ: IterableDiffer<KeyedTemplate>;\n private _itemTemplate: TemplateRef<ItemContext>;\n private _templateMap: Map<string, KeyedTemplate>;\n private _loaders: ComponentRef<DetachedLoader>[];\n\n constructor(\n @Inject(ElementRef) private _elementRef: ElementRef,\n @Inject(IterableDiffers) private _iterableDiffers: IterableDiffers,\n @Inject(NativeScriptRendererFactory) private _renderer: NativeScriptRendererFactory,\n @Inject(NgZone) private _ngZone: NgZone\n ) {\n this._collectionView = _elementRef.nativeElement;\n\n this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);\n this._collectionView.itemViewLoader = this.itemViewLoader;\n this._loaders = [];\n }\n\n private itemViewLoader = (viewType) =>\n this._ngZone.run(() => {\n switch (viewType) {\n case ListViewViewTypes.ItemView:\n if (this._itemTemplate && this.loader) {\n const typedView = this.getOrCreate(this._itemTemplate);\n return typedView;\n }\n break;\n }\n return null;\n });\n\n public ngAfterContentInit() {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'CollectionView.ngAfterContentInit()');\n }\n this.setItemTemplates();\n }\n\n public ngOnDestroy() {\n this._collectionView.off(CollectionView.itemLoadingEvent, this.onItemLoading, this);\n this._collectionView = null;\n this._loaders.forEach((l) => l.destroy());\n this._loaders = null;\n this.viewToLoader = null;\n this.viewToTemplate = null;\n this.viewPool = null;\n\n this._items = null;\n this._differ = null;\n this._itemTemplate = null;\n if (this._templateMap) {\n this._templateMap.clear();\n }\n this._templateMap = null;\n }\n\n public ngDoCheck() {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - execute differ? ' + this._differ);\n }\n if (this._differ) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - execute differ');\n }\n const changes = this._differ.diff(this._items);\n if (changes) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - refresh');\n }\n this.refresh();\n }\n }\n }\n\n public registerTemplate(key: string, template: TemplateRef<ItemContext>) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'registerTemplate for key: ' + key);\n }\n if (!this._templateMap) {\n this._templateMap = new Map<string, KeyedTemplate>();\n }\n\n const keyedTemplate = {\n key,\n createView: this.getItemTemplateViewFactory(template)\n };\n\n this._templateMap.set(key, keyedTemplate);\n }\n\n @HostListener('itemLoading', ['$event'])\n public onItemLoading(args: CollectionViewItemEventData) {\n if (!args.view && !this.itemTemplate) {\n return;\n }\n if (!this.items) return;\n const index = args.index;\n const items = (args.object as any).items;\n const currentItem = typeof items.getItem === 'function' ? items.getItem(index) : items[index];\n let viewRef: EmbeddedViewRef<ItemContext>;\n\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `onItemLoading: ${index} - Reusing existing view`);\n }\n\n viewRef = args.view[NG_VIEW];\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (!viewRef && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {\n viewRef = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (!viewRef && Trace.isEnabled()) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `ViewReference not found for item ${index}. View recycling is not working`);\n }\n }\n\n if (!viewRef) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `onItemLoading: ${index} - Creating view from template`);\n }\n\n viewRef = this.loader.createEmbeddedView(this.itemTemplate, new ItemContext(), 0);\n args.view = getItemViewRoot(viewRef);\n args.view[NG_VIEW] = viewRef;\n }\n\n this.setupViewRef(viewRef, currentItem, index);\n\n this.detectChangesOnChild(viewRef, index);\n }\n @HostListener('itemRecycling', ['$event'])\n public onItemRecyclingInternal(args: any) {\n if (!args.view) {\n return;\n }\n let ngView: EmbeddedViewRef<any> = args.view[NG_VIEW];\n\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (!ngView && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {\n ngView = args.view.getChildAt(0)[NG_VIEW];\n }\n // console.log('recycling', args.view);\n\n if (ngView) {\n ngView.detach();\n }\n }\n\n @HostListener('itemDisposing', ['$event'])\n public onItemDisposingInternal(args: any) {\n if (!args.view) {\n return;\n }\n let ngView: EmbeddedViewRef<any> = args.view[NG_VIEW];\n\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (!ngView && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {\n ngView = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (ngView) {\n ngView.detach();\n this.storeViewRef(ngView);\n }\n }\n\n public setupViewRef(view: EmbeddedViewRef<ItemContext>, data: any, index: number): void {\n const context = view.context;\n context.$implicit = data;\n context.item = data;\n context.index = index;\n context.even = index % 2 === 0;\n context.odd = !context.even;\n\n this.setupItemView.next({\n context,\n data,\n index,\n view\n });\n }\n\n protected getItemTemplateViewFactory(template: TemplateRef<ItemContext>): () => View {\n return () => {\n const viewRef = this.loader.createEmbeddedView(template, new ItemContext(), 0);\n const resultView = getItemViewRoot(viewRef);\n resultView[NG_VIEW] = viewRef;\n\n return resultView;\n };\n }\n viewPool = new Map<\n TemplateRef<ItemContext>,\n {\n scrapSize: number;\n scrapHead: Set<EmbeddedViewRef<ItemContext>>;\n }\n >();\n private storeViewRef(viewRef: EmbeddedViewRef<any>) {\n const templateRef = this.viewToTemplate.get(viewRef);\n if (templateRef) {\n const scrap = this.viewPool.get(templateRef);\n if (scrap) {\n if (scrap.scrapHead.size >= scrap.scrapSize) {\n viewRef.destroy();\n this.viewToLoader.get(viewRef)?.destroy();\n } else {\n scrap.scrapHead.add(viewRef);\n }\n }\n }\n }\n viewToTemplate = new WeakMap<EmbeddedViewRef<any>, TemplateRef<any>>();\n viewToLoader = new WeakMap<EmbeddedViewRef<any>, ComponentRef<DetachedLoader>>();\n\n private getOrCreate(templateRef: TemplateRef<ItemContext>) {\n return this._ngZone.run(() => {\n let viewRef = this.getView(templateRef);\n if (!viewRef) {\n const loader = this.detachedLoaderFactory();\n // viewRef = this.loader.createEmbeddedView(templateRef, new ItemContext(), 0);\n viewRef = loader.instance.vc.createEmbeddedView(templateRef, new ItemContext(), 0);\n this.viewToLoader.set(viewRef, loader);\n this.viewToTemplate.set(viewRef, templateRef);\n }\n viewRef.detach();\n const resultView = getItemViewRoot(viewRef);\n resultView[NG_VIEW] = viewRef;\n resultView.reusable = this.autoReuseViews;\n return resultView;\n });\n }\n private getView(templateRef: TemplateRef<ItemContext>) {\n const pool = this.getViewPool(templateRef);\n while (pool.scrapHead.size > 0) {\n const viewRef: EmbeddedViewRef<ItemContext> = pool.scrapHead.values().next().value;\n pool.scrapHead.delete(viewRef);\n if (!viewRef.destroyed) {\n return viewRef;\n }\n }\n return null;\n }\n\n private getViewPool(templateRef: TemplateRef<ItemContext>) {\n if (!this.viewPool.has(templateRef)) {\n this.viewPool.set(templateRef, {\n scrapSize: this.autoReuseViews ? Infinity : 0,\n scrapHead: new Set<EmbeddedViewRef<ItemContext>>()\n });\n }\n return this.viewPool.get(templateRef);\n }\n\n private setItemTemplates() {\n // The itemTemplateQuery may be changed after list items are added that contain <template> inside,\n // so cache and use only the original template to avoid errors.\n this.itemTemplate = this.itemTemplateQuery;\n\n if (this._templateMap) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'Setting templates');\n }\n\n const templates: KeyedTemplate[] = [];\n this._templateMap.forEach((value) => {\n templates.push(value);\n });\n this._collectionView.itemTemplates = templates;\n } else {\n // If the map was not initialized this means that there are no named templates, so we register the default one.\n this._collectionView.itemTemplate = this.getItemTemplateViewFactory(this.itemTemplate);\n }\n }\n\n private detectChangesOnChild(viewRef: EmbeddedViewRef<ItemContext>, index: number) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'Manually detect changes in child: ' + index);\n }\n viewRef.markForCheck();\n viewRef.detectChanges();\n }\n\n private refresh() {\n if (this._collectionView) {\n this._collectionView.refresh();\n }\n }\n}\n\nexport interface ComponentView {\n rootNodes: any[];\n destroy(): void;\n}\n\nexport type RootLocator = (nodes: any[], nestLevel: number) => View;\n\nexport function getItemViewRoot(viewRef: ComponentView, rootLocator: RootLocator = extractSingleViewRecursive): View {\n const rootView = rootLocator(viewRef.rootNodes, 0);\n return rootView;\n}\n\n@Directive({ selector: '[cvTemplateKey]' })\nexport class TemplateKeyDirective {\n constructor(private templateRef: TemplateRef<any>, @Host() private collectionView: CollectionViewComponent) {}\n\n @Input()\n set cvTemplateKey(value: any) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'cvTemplateKey: ' + value);\n }\n if (this.collectionView && this.templateRef) {\n this.collectionView.registerTemplate(value.toLowerCase(), this.templateRef);\n }\n }\n}\n","// External\nimport { NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\n\nimport { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';\nexport { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';\n\n@NgModule({\n declarations: [CollectionViewComponent, TemplateKeyDirective],\n exports: [CollectionViewComponent, TemplateKeyDirective],\n schemas: [NO_ERRORS_SCHEMA]\n})\nexport class CollectionViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/angular/package.json
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nativescript-community/ui-collectionview-angular",
|
3
3
|
"main": "index.js",
|
4
|
-
"module": "
|
5
|
-
"es2020": "fesm2020/nativescript-community-ui-collectionview-angular.mjs",
|
6
|
-
"esm2020": "esm2020/nativescript-community-ui-collectionview-angular.mjs",
|
7
|
-
"fesm2020": "fesm2020/nativescript-community-ui-collectionview-angular.mjs",
|
8
|
-
"fesm2015": "fesm2015/nativescript-community-ui-collectionview-angular.mjs",
|
4
|
+
"module": "fesm2022/nativescript-community-ui-collectionview-angular.mjs",
|
9
5
|
"typings": "index.d.ts",
|
10
6
|
"exports": {
|
11
7
|
"./package.json": {
|
@@ -13,11 +9,9 @@
|
|
13
9
|
},
|
14
10
|
".": {
|
15
11
|
"types": "./index.d.ts",
|
16
|
-
"
|
17
|
-
"
|
18
|
-
"
|
19
|
-
"node": "./fesm2015/nativescript-community-ui-collectionview-angular.mjs",
|
20
|
-
"default": "./fesm2020/nativescript-community-ui-collectionview-angular.mjs"
|
12
|
+
"esm2022": "./esm2022/nativescript-community-ui-collectionview-angular.mjs",
|
13
|
+
"esm": "./esm2022/nativescript-community-ui-collectionview-angular.mjs",
|
14
|
+
"default": "./fesm2022/nativescript-community-ui-collectionview-angular.mjs"
|
21
15
|
}
|
22
16
|
},
|
23
17
|
"sideEffects": false,
|
package/index-common.d.ts
CHANGED
@@ -92,7 +92,7 @@ export declare abstract class CollectionViewBase extends View implements Collect
|
|
92
92
|
abstract isItemAtIndexVisible(index: number): any;
|
93
93
|
abstract scrollToIndex(index: number, animated: boolean): any;
|
94
94
|
abstract scrollToOffset(value: number, animated?: boolean): any;
|
95
|
-
protected updateInnerSize():
|
95
|
+
protected updateInnerSize(): boolean;
|
96
96
|
onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void;
|
97
97
|
items: any[] | ItemsSource;
|
98
98
|
_prepareItem(view: View, index: number): any;
|
@@ -135,11 +135,8 @@ export declare abstract class CollectionViewBase extends View implements Collect
|
|
135
135
|
getItemSourceAtIndex(index: number): any;
|
136
136
|
getItemArrayAtIndex(index: number): any;
|
137
137
|
onItemsChanged(oldValue: any, newValue: any): void;
|
138
|
-
onItemTemplatesPropertyChanged(oldValue: any, newValue: any): void;
|
139
|
-
onItemTemplatePropertyChanged(oldValue: any, newValue: any): void;
|
140
|
-
onItemsChangedInternal: (oldValue: any, newValue: any) => void;
|
141
138
|
spanSize: (item: any, index: number) => number;
|
142
|
-
|
139
|
+
onSpanSizeChanged: (oldValue: any, newValue: any) => void;
|
143
140
|
_isDataDirty: boolean;
|
144
141
|
onLoaded(): void;
|
145
142
|
onSourceCollectionChanged(event: ChangedData<any>): void;
|
@@ -171,3 +168,4 @@ export declare const reorderingEnabledProperty: Property<CollectionViewBase, boo
|
|
171
168
|
export declare const reorderLongPressEnabledProperty: Property<CollectionViewBase, boolean>;
|
172
169
|
export declare const scrollBarIndicatorVisibleProperty: Property<CollectionViewBase, boolean>;
|
173
170
|
export declare const autoReloadItemOnLayoutProperty: Property<CollectionViewBase, boolean>;
|
171
|
+
export declare const itemOverlapProperty: Property<CollectionViewBase, CoreTypes.LengthType[]>;
|
package/index-common.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
var CollectionViewBase_1;
|
2
|
-
import { Builder, CSSType, ContentView, CoreTypes, Label, Observable, ObservableArray, PercentLength, Property, ProxyViewContainer, Trace, Utils, View, addWeakEventListener, booleanConverter, heightProperty, makeParser, makeValidator, profile, removeWeakEventListener, widthProperty } from '@nativescript/core';
|
2
|
+
import { Builder, CSSType, ContentView, CoreTypes, Label, Length, Observable, ObservableArray, PercentLength, Property, ProxyViewContainer, Trace, Utils, View, addWeakEventListener, booleanConverter, heightProperty, makeParser, makeValidator, profile, removeWeakEventListener, widthProperty } from '@nativescript/core';
|
3
3
|
import { CollectionView as CollectionViewDefinition } from '.';
|
4
4
|
export const CollectionViewTraceCategory = 'NativescriptCollectionView';
|
5
5
|
// iOS only
|
@@ -57,6 +57,12 @@ function toDevicePixels(length, auto = Number.NaN, parentAvailableWidth = Number
|
|
57
57
|
}
|
58
58
|
}
|
59
59
|
let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends View {
|
60
|
+
static registerPlugin(key, plugin) {
|
61
|
+
this.plugins[key] = plugin;
|
62
|
+
}
|
63
|
+
static registerLayoutStyle(style, generator) {
|
64
|
+
this.layoutStyles[style] = generator;
|
65
|
+
}
|
60
66
|
constructor() {
|
61
67
|
super();
|
62
68
|
this._innerWidth = 0;
|
@@ -66,10 +72,8 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
66
72
|
this.plugins = [];
|
67
73
|
// public _itemIdGenerator: (item: any, index: number, items: any) => number = (_item: any, index: number) => index;
|
68
74
|
this._itemIdGenerator = null;
|
69
|
-
this.
|
70
|
-
|
71
|
-
};
|
72
|
-
this.onSpanSizeChangedInternal = (oldValue, newValue) => {
|
75
|
+
this.onSpanSizeChanged = (oldValue, newValue) => {
|
76
|
+
const start = Date.now();
|
73
77
|
this.spanSize = newValue;
|
74
78
|
this.refresh();
|
75
79
|
};
|
@@ -86,18 +90,17 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
86
90
|
this._itemTemplatesInternal = new Map();
|
87
91
|
this._itemTemplatesInternal.set(this._defaultTemplate.key, this._defaultTemplate);
|
88
92
|
}
|
89
|
-
static registerPlugin(key, plugin) {
|
90
|
-
this.plugins[key] = plugin;
|
91
|
-
}
|
92
|
-
static registerLayoutStyle(style, generator) {
|
93
|
-
this.layoutStyles[style] = generator;
|
94
|
-
}
|
95
93
|
notifyForItemAtIndex(eventName, view, index, bindingContext, native) {
|
96
94
|
throw new Error('Method not implemented.');
|
97
95
|
}
|
98
96
|
updateInnerSize() {
|
97
|
+
const lastInnerWidth = this._innerWidth;
|
98
|
+
const lastInnerHeight = this._innerHeight;
|
99
99
|
const width = this.getMeasuredWidth();
|
100
100
|
const height = this.getMeasuredHeight();
|
101
|
+
if (width === 0 || height === 0) {
|
102
|
+
return false;
|
103
|
+
}
|
101
104
|
this._innerWidth = width - this.effectivePaddingLeft - this.effectivePaddingRight;
|
102
105
|
if (this.colWidth) {
|
103
106
|
let newValue = toDevicePixels(this.colWidth, autoEffectiveColWidth, this._innerWidth); // We cannot use 0 for auto as it throws for android.
|
@@ -118,6 +121,7 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
118
121
|
this._effectiveRowHeight = newValue;
|
119
122
|
}
|
120
123
|
}
|
124
|
+
return lastInnerWidth !== this._innerWidth || lastInnerHeight !== this._innerHeight;
|
121
125
|
}
|
122
126
|
// public onLayout(left: number, top: number, right: number, bottom: number) {
|
123
127
|
// super.onLayout(left, top, right, bottom);
|
@@ -262,6 +266,7 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
262
266
|
return templateString === undefined ? undefined : this.resolveTemplateView(templateString);
|
263
267
|
}
|
264
268
|
onItemTemplateSelectorChanged(oldValue, newValue) {
|
269
|
+
const start = Date.now();
|
265
270
|
if (typeof newValue === 'string') {
|
266
271
|
if (!this._itemTemplateSelectorBindable) {
|
267
272
|
this._itemTemplateSelectorBindable = new ProxyViewContainer();
|
@@ -282,6 +287,7 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
282
287
|
}
|
283
288
|
}
|
284
289
|
onItemIdGeneratorChanged(oldValue, newValue) {
|
290
|
+
const start = Date.now();
|
285
291
|
if (typeof newValue === 'string') {
|
286
292
|
if (!this._itemIdGeneratorBindable) {
|
287
293
|
this._itemIdGeneratorBindable = new ProxyViewContainer();
|
@@ -318,6 +324,7 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
318
324
|
}
|
319
325
|
}
|
320
326
|
onItemTemplatesChanged(oldValue, newValue) {
|
327
|
+
const start = Date.now();
|
321
328
|
this._itemTemplatesInternal = new Map();
|
322
329
|
if (newValue) {
|
323
330
|
newValue.forEach((t) => {
|
@@ -343,6 +350,7 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
343
350
|
return this.items[index];
|
344
351
|
}
|
345
352
|
onItemsChanged(oldValue, newValue) {
|
353
|
+
const start = Date.now();
|
346
354
|
const getItem = newValue && newValue.getItem;
|
347
355
|
this.isItemsSourceIn = typeof getItem === 'function';
|
348
356
|
// we override the method to prevent the test on every getItem
|
@@ -355,12 +363,6 @@ let CollectionViewBase = CollectionViewBase_1 = class CollectionViewBase extends
|
|
355
363
|
}
|
356
364
|
this.refresh();
|
357
365
|
}
|
358
|
-
onItemTemplatesPropertyChanged(oldValue, newValue) {
|
359
|
-
this.onItemTemplatesChanged(oldValue, newValue);
|
360
|
-
}
|
361
|
-
onItemTemplatePropertyChanged(oldValue, newValue) {
|
362
|
-
this.onItemTemplateChanged(oldValue, newValue);
|
363
|
-
}
|
364
366
|
onLoaded() {
|
365
367
|
super.onLoaded();
|
366
368
|
if (this._isDataDirty && this._effectiveColWidth !== undefined && this._effectiveRowHeight !== undefined) {
|
@@ -471,6 +473,21 @@ __decorate([
|
|
471
473
|
__decorate([
|
472
474
|
profile
|
473
475
|
], CollectionViewBase.prototype, "notifyLoading", null);
|
476
|
+
__decorate([
|
477
|
+
profile
|
478
|
+
], CollectionViewBase.prototype, "onItemIdGeneratorChanged", null);
|
479
|
+
__decorate([
|
480
|
+
profile
|
481
|
+
], CollectionViewBase.prototype, "onItemTemplatesChanged", null);
|
482
|
+
__decorate([
|
483
|
+
profile
|
484
|
+
], CollectionViewBase.prototype, "onItemsChanged", null);
|
485
|
+
__decorate([
|
486
|
+
profile
|
487
|
+
], CollectionViewBase.prototype, "onSourceCollectionChanged", null);
|
488
|
+
__decorate([
|
489
|
+
profile
|
490
|
+
], CollectionViewBase.prototype, "onSourceCollectionChangedInternal", null);
|
474
491
|
CollectionViewBase = CollectionViewBase_1 = __decorate([
|
475
492
|
CSSType('CollectionView')
|
476
493
|
], CollectionViewBase);
|
@@ -482,8 +499,10 @@ export const rowHeightProperty = new Property({
|
|
482
499
|
equalityComparer: PercentLength.equals,
|
483
500
|
valueConverter: PercentLength.parse,
|
484
501
|
valueChanged: (target, oldValue, newValue) => {
|
485
|
-
|
486
|
-
|
502
|
+
if (target._innerHeight !== 0) {
|
503
|
+
target._effectiveRowHeight = PercentLength.toDevicePixels(newValue, autoEffectiveRowHeight, target._innerHeight);
|
504
|
+
target._onRowHeightPropertyChanged(oldValue, newValue);
|
505
|
+
}
|
487
506
|
}
|
488
507
|
});
|
489
508
|
rowHeightProperty.register(CollectionViewBase);
|
@@ -496,8 +515,8 @@ export const colWidthProperty = new Property({
|
|
496
515
|
valueChanged: (target, oldValue, newValue) => {
|
497
516
|
if (target._innerWidth !== 0) {
|
498
517
|
target._effectiveColWidth = PercentLength.toDevicePixels(newValue, autoEffectiveColWidth, target._innerWidth);
|
518
|
+
target._onColWidthPropertyChanged(oldValue, newValue);
|
499
519
|
}
|
500
|
-
target._onColWidthPropertyChanged(oldValue, newValue);
|
501
520
|
}
|
502
521
|
});
|
503
522
|
colWidthProperty.register(CollectionViewBase);
|
@@ -515,7 +534,7 @@ orientationProperty.register(CollectionViewBase);
|
|
515
534
|
export const itemTemplateProperty = new Property({
|
516
535
|
name: 'itemTemplate',
|
517
536
|
valueChanged(target, oldValue, newValue) {
|
518
|
-
target.
|
537
|
+
target.onItemTemplateChanged(oldValue, newValue);
|
519
538
|
}
|
520
539
|
});
|
521
540
|
itemTemplateProperty.register(CollectionViewBase);
|
@@ -528,7 +547,7 @@ export const itemTemplatesProperty = new Property({
|
|
528
547
|
return value;
|
529
548
|
},
|
530
549
|
valueChanged(target, oldValue, newValue) {
|
531
|
-
target.
|
550
|
+
target.onItemTemplatesChanged(oldValue, newValue);
|
532
551
|
}
|
533
552
|
});
|
534
553
|
itemTemplatesProperty.register(CollectionViewBase);
|
@@ -552,7 +571,7 @@ export const itemsProperty = new Property({
|
|
552
571
|
name: 'items',
|
553
572
|
defaultValue: undefined,
|
554
573
|
valueChanged(target, oldValue, newValue) {
|
555
|
-
target.
|
574
|
+
target.onItemsChanged(oldValue, newValue);
|
556
575
|
}
|
557
576
|
});
|
558
577
|
itemsProperty.register(CollectionViewBase);
|
@@ -560,7 +579,7 @@ export const spanSizeProperty = new Property({
|
|
560
579
|
name: 'spanSize',
|
561
580
|
defaultValue: undefined,
|
562
581
|
valueChanged(target, oldValue, newValue) {
|
563
|
-
target.
|
582
|
+
target.onSpanSizeChanged(oldValue, newValue);
|
564
583
|
}
|
565
584
|
});
|
566
585
|
spanSizeProperty.register(CollectionViewBase);
|
@@ -612,4 +631,62 @@ export const autoReloadItemOnLayoutProperty = new Property({
|
|
612
631
|
valueConverter: booleanConverter
|
613
632
|
});
|
614
633
|
autoReloadItemOnLayoutProperty.register(CollectionViewBase);
|
634
|
+
function parseThickness(value) {
|
635
|
+
if (typeof value === 'string') {
|
636
|
+
const arr = value.split(/[ ,]+/);
|
637
|
+
let top;
|
638
|
+
let right;
|
639
|
+
let bottom;
|
640
|
+
let left;
|
641
|
+
if (arr.length === 1) {
|
642
|
+
top = arr[0];
|
643
|
+
right = arr[0];
|
644
|
+
bottom = arr[0];
|
645
|
+
left = arr[0];
|
646
|
+
}
|
647
|
+
else if (arr.length === 2) {
|
648
|
+
top = arr[0];
|
649
|
+
bottom = arr[0];
|
650
|
+
right = arr[1];
|
651
|
+
left = arr[1];
|
652
|
+
}
|
653
|
+
else if (arr.length === 3) {
|
654
|
+
top = arr[0];
|
655
|
+
right = arr[1];
|
656
|
+
left = arr[1];
|
657
|
+
bottom = arr[2];
|
658
|
+
}
|
659
|
+
else if (arr.length === 4) {
|
660
|
+
top = arr[0];
|
661
|
+
right = arr[1];
|
662
|
+
bottom = arr[2];
|
663
|
+
left = arr[3];
|
664
|
+
}
|
665
|
+
else {
|
666
|
+
throw new Error('Expected 1, 2, 3 or 4 parameters. Actual: ' + value);
|
667
|
+
}
|
668
|
+
return {
|
669
|
+
top,
|
670
|
+
right,
|
671
|
+
bottom,
|
672
|
+
left
|
673
|
+
};
|
674
|
+
}
|
675
|
+
else {
|
676
|
+
return value;
|
677
|
+
}
|
678
|
+
}
|
679
|
+
export const itemOverlapProperty = new Property({
|
680
|
+
name: 'itemOverlap',
|
681
|
+
valueConverter: (value) => {
|
682
|
+
if (typeof value === 'string' && value !== 'auto') {
|
683
|
+
const thickness = parseThickness(value);
|
684
|
+
return [Length.parse(thickness.top), Length.parse(thickness.right), Length.parse(thickness.bottom), Length.parse(thickness.left)];
|
685
|
+
}
|
686
|
+
else {
|
687
|
+
return [value, value, value, value];
|
688
|
+
}
|
689
|
+
}
|
690
|
+
});
|
691
|
+
itemOverlapProperty.register(CollectionViewBase);
|
615
692
|
//# sourceMappingURL=index-common.js.map
|