@symbiote-native/angular 3.1.2 → 3.2.0
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/build/angular/accessibility-events.d.ts +12 -0
- package/build/angular/accessibility-events.js +28 -0
- package/build/angular/accessibility-events.js.map +1 -0
- package/build/angular/accessibility-inputs.d.ts +40 -0
- package/build/angular/accessibility-inputs.js +130 -0
- package/build/angular/accessibility-inputs.js.map +1 -0
- package/build/angular/bootstrap.d.ts +3 -1
- package/build/angular/bootstrap.js +4 -1
- package/build/angular/bootstrap.js.map +1 -1
- package/build/angular/components/flat-list/flat-list-template.d.ts +1 -0
- package/build/angular/components/flat-list/flat-list-template.js +158 -0
- package/build/angular/components/flat-list/flat-list-template.js.map +1 -0
- package/build/angular/components/flat-list/index.d.ts +6 -61
- package/build/angular/components/flat-list/index.js +26 -463
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +4 -40
- package/build/angular/components/keyboard-avoiding-view/index.js +7 -131
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.d.ts +5 -41
- package/build/angular/components/modal/index.js +8 -133
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/section-list/index.d.ts +4 -51
- package/build/angular/components/section-list/index.js +18 -335
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/virtualized-list/cell-registry.d.ts +35 -0
- package/build/angular/components/virtualized-list/cell-registry.js +133 -0
- package/build/angular/components/virtualized-list/cell-registry.js.map +1 -0
- package/build/angular/components/virtualized-list/index.d.ts +18 -253
- package/build/angular/components/virtualized-list/index.js +112 -1178
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-list/list-a11y-forward.d.ts +1 -0
- package/build/angular/components/virtualized-list/list-a11y-forward.js +42 -0
- package/build/angular/components/virtualized-list/list-a11y-forward.js.map +1 -0
- package/build/angular/components/virtualized-list/list-bags.d.ts +32 -0
- package/build/angular/components/virtualized-list/list-bags.js +120 -0
- package/build/angular/components/virtualized-list/list-bags.js.map +1 -0
- package/build/angular/components/virtualized-list/list-effects.d.ts +31 -0
- package/build/angular/components/virtualized-list/list-effects.js +83 -0
- package/build/angular/components/virtualized-list/list-effects.js.map +1 -0
- package/build/angular/components/virtualized-list/list-events.d.ts +17 -0
- package/build/angular/components/virtualized-list/list-events.js +34 -0
- package/build/angular/components/virtualized-list/list-events.js.map +1 -0
- package/build/angular/components/virtualized-list/list-handle.d.ts +35 -0
- package/build/angular/components/virtualized-list/list-handle.js +61 -0
- package/build/angular/components/virtualized-list/list-handle.js.map +1 -0
- package/build/angular/components/virtualized-list/list-inputs.d.ts +78 -0
- package/build/angular/components/virtualized-list/list-inputs.js +150 -0
- package/build/angular/components/virtualized-list/list-inputs.js.map +1 -0
- package/build/angular/components/virtualized-list/list-props.d.ts +58 -0
- package/build/angular/components/virtualized-list/list-props.js +3 -0
- package/build/angular/components/virtualized-list/list-props.js.map +1 -0
- package/build/angular/components/virtualized-list/list-styles.d.ts +23 -0
- package/build/angular/components/virtualized-list/list-styles.js +26 -0
- package/build/angular/components/virtualized-list/list-styles.js.map +1 -0
- package/build/angular/components/virtualized-list/list-template.d.ts +1 -0
- package/build/angular/components/virtualized-list/list-template.js +176 -0
- package/build/angular/components/virtualized-list/list-template.js.map +1 -0
- package/build/angular/components/virtualized-section-list/index.d.ts +13 -70
- package/build/angular/components/virtualized-section-list/index.js +22 -455
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/section-list-template.d.ts +1 -0
- package/build/angular/components/virtualized-section-list/section-list-template.js +107 -0
- package/build/angular/components/virtualized-section-list/section-list-template.js.map +1 -0
- package/build/angular/finalization-registry.d.ts +4 -0
- package/build/angular/finalization-registry.js +17 -0
- package/build/angular/finalization-registry.js.map +1 -0
- package/build/angular/index.d.ts +5 -1
- package/build/angular/index.js +5 -1
- package/build/angular/index.js.map +1 -1
- package/build/angular/native-view-base.d.ts +19 -0
- package/build/angular/native-view-base.js +48 -0
- package/build/angular/native-view-base.js.map +1 -0
- package/build/angular/render/index.d.ts +2 -1
- package/build/angular/render/index.js +46 -73
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/services/connect-watched-signal.d.ts +2 -0
- package/build/angular/services/connect-watched-signal.js +9 -0
- package/build/angular/services/connect-watched-signal.js.map +1 -0
- package/build/angular/services/create-event-value-hook.d.ts +3 -0
- package/build/angular/services/create-event-value-hook.js +17 -0
- package/build/angular/services/create-event-value-hook.js.map +1 -0
- package/build/angular/services/create-resource-hook.d.ts +7 -0
- package/build/angular/services/create-resource-hook.js +20 -0
- package/build/angular/services/create-resource-hook.js.map +1 -0
- package/build/angular/services/index.d.ts +4 -0
- package/build/angular/services/index.js +4 -0
- package/build/angular/services/index.js.map +1 -1
- package/build/angular/services/permissions-service-base.d.ts +14 -0
- package/build/angular/services/permissions-service-base.js +38 -0
- package/build/angular/services/permissions-service-base.js.map +1 -0
- package/package.json +6 -6
- package/src/accessibility-events.ts +13 -0
- package/src/accessibility-inputs.ts +89 -0
- package/src/bootstrap.ts +6 -2
- package/src/components/flat-list/flat-list-template.ts +159 -0
- package/src/components/flat-list/index.ts +30 -307
- package/src/components/keyboard-avoiding-view/index.ts +4 -78
- package/src/components/modal/index.ts +7 -80
- package/src/components/section-list/index.ts +21 -172
- package/src/components/virtualized-list/cell-registry.ts +199 -0
- package/src/components/virtualized-list/index.ts +145 -1181
- package/src/components/virtualized-list/list-a11y-forward.ts +42 -0
- package/src/components/virtualized-list/list-bags.ts +142 -0
- package/src/components/virtualized-list/list-effects.ts +116 -0
- package/src/components/virtualized-list/list-events.ts +31 -0
- package/src/components/virtualized-list/list-handle.ts +92 -0
- package/src/components/virtualized-list/list-inputs.ts +149 -0
- package/src/components/virtualized-list/list-props.ts +81 -0
- package/src/components/virtualized-list/list-styles.ts +62 -0
- package/src/components/virtualized-list/list-template.ts +175 -0
- package/src/components/virtualized-section-list/index.ts +40 -351
- package/src/components/virtualized-section-list/section-list-template.ts +108 -0
- package/src/finalization-registry.ts +18 -0
- package/src/index.ts +12 -1
- package/src/native-view-base.ts +51 -0
- package/src/render/index.ts +76 -77
- package/src/services/connect-watched-signal.ts +15 -0
- package/src/services/create-event-value-hook.ts +24 -0
- package/src/services/create-resource-hook.ts +32 -0
- package/src/services/index.ts +4 -0
- package/src/services/permissions-service-base.ts +46 -0
|
@@ -1,65 +1,33 @@
|
|
|
1
|
-
// VirtualizedSectionList
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
// separator-item unwrap, and scrollToLocation mapping are shared from @symbiote-native/components; this
|
|
6
|
-
// file wires Angular's lifecycle (typed @Input/@Output surface + the imperative handle + the
|
|
7
|
-
// per-cell-tag template dispatch). The Angular twin of the React/Vue adapters' VirtualizedSectionList.
|
|
8
|
-
//
|
|
9
|
-
// The KEY mechanic — per-cell-tag template dispatch. VirtualizedList renders every cell through ONE
|
|
10
|
-
// `vListItem` template, but a section list has DIFFERENT cell types (section header, item, section
|
|
11
|
-
// footer, between-section separators). So VSL supplies the inner list a SINGLE synthesized
|
|
12
|
-
// `vListItem` template that @switch-es on the flattened entry's tag and stamps the matching app
|
|
13
|
-
// template (captured via @ContentChild on the vSection* directives) through VListOutletDirective.
|
|
14
|
-
// list-level header/footer/empty/item-separator reuse VirtualizedList's own directives, forwarded
|
|
15
|
-
// the same way. Only the cell-AUTHORING shape is framework-specific; the rest of the surface
|
|
16
|
-
// stays shared with React/Vue.
|
|
17
|
-
//
|
|
18
|
-
// Accessibility / aria props are forwarded unchanged to the inner VirtualizedList, which owns the
|
|
19
|
-
// shared aria→accessibility* fold before the props reach the ScrollView host.
|
|
20
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
1
|
+
// VirtualizedSectionList flattens sections into one virtualized stream over VirtualizedList
|
|
2
|
+
// Flattening, entry keying and `scrollToLocation` are shared from `@symbiote-native/components`
|
|
3
|
+
// This file is the Angular lifecycle and the per-entry template dispatch
|
|
4
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Input, ViewChild, inject, } from '@angular/core';
|
|
21
5
|
import { flattenSections, resolveStickySectionHeaders, scrollLocationToFlatIndex, sectionEntryKey, unwrapEntryItem, } from '@symbiote-native/components';
|
|
22
6
|
import { Platform, dlog, } from '@symbiote-native/engine';
|
|
23
7
|
import { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
24
8
|
import { VListOutletDirective } from '../virtualized-list/directives';
|
|
9
|
+
import { ListEventsBase } from '../virtualized-list/list-events';
|
|
10
|
+
import { provideGateDemand } from '../../gate-demand';
|
|
25
11
|
import { stableAnchorStyle, SymbioteStyleInputDirective, } from '../../primitives';
|
|
26
12
|
import { VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './directives';
|
|
27
|
-
import {
|
|
13
|
+
import { VIRTUALIZED_SECTION_LIST_TEMPLATE } from './section-list-template';
|
|
28
14
|
import * as i0 from "@angular/core";
|
|
29
15
|
import * as i1 from "../../primitives/shared";
|
|
30
|
-
// Re-export the section authoring directives + their contexts so flat consumers (and SectionList)
|
|
31
|
-
// import them from '../virtualized-section-list', mirroring how VirtualizedList re-exports its own.
|
|
32
16
|
export { VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './directives';
|
|
33
|
-
export class VirtualizedSectionList {
|
|
17
|
+
export class VirtualizedSectionList extends ListEventsBase {
|
|
34
18
|
constructor() {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.refresh = new EventEmitter();
|
|
38
|
-
this.accessibilityAction = new EventEmitter();
|
|
39
|
-
this.accessibilityTap = new EventEmitter();
|
|
40
|
-
this.magicTap = new EventEmitter();
|
|
41
|
-
this.accessibilityEscape = new EventEmitter();
|
|
42
|
-
// This wrapper binds the four gated accessibility events on the component it renders, which
|
|
43
|
-
// Angular forces to be unconditional and which would light that component's gates on every
|
|
44
|
-
// instance. It answers for them instead — see `gate-demand.ts`.
|
|
45
|
-
this.gateDemandAbove = injectGateDemandAbove();
|
|
46
|
-
// This component's OWN host — the non-painting anchor `class="..."` at the use site resolves
|
|
47
|
-
// onto (see anchorHostStyle's doc comment) — NOT `list` above, which targets the real inner
|
|
48
|
-
// `<VirtualizedList>` one level down (itself its own separate anchor host).
|
|
19
|
+
super(...arguments);
|
|
20
|
+
// This component's own host, the anchor `class="..."` resolves onto, not the inner list's
|
|
49
21
|
this.elementRef = inject(ElementRef);
|
|
50
|
-
// --- template-bound state, recomputed in ngDoCheck when sections / separator presence change ---
|
|
51
22
|
this.flatEntries = [];
|
|
52
23
|
this.stickyHeaderIndices = undefined;
|
|
53
|
-
//
|
|
54
|
-
// (sectionIndex, itemIndex) coordinate through them without re-deriving the flat layout.
|
|
24
|
+
// Flat positions of every section header, so `scrollToLocation` skips re-deriving the layout
|
|
55
25
|
this.headerIndices = [];
|
|
56
|
-
// Memo guards
|
|
57
|
-
// every scroll tick, which re-runs VSL's ngDoCheck too).
|
|
26
|
+
// Memo guards, the inner list marks for check on every scroll tick and re-runs `ngDoCheck`
|
|
58
27
|
this.lastSectionsRef = null;
|
|
59
28
|
this.lastHasSectionSeparator = false;
|
|
60
29
|
this.cdr = inject(ChangeDetectorRef);
|
|
61
|
-
//
|
|
62
|
-
// the bindings keep a constant identity; they read the live flatEntries.
|
|
30
|
+
// Stable arrow fields, so the bindings to the inner list keep a constant identity
|
|
63
31
|
this.getEntry = (_source, index) => this.flatEntries[index];
|
|
64
32
|
this.getEntryCount = () => this.flatEntries.length;
|
|
65
33
|
this.entryKeyExtractor = (entry, index) => sectionEntryKey(entry, index, this.keyExtractor);
|
|
@@ -68,9 +36,6 @@ export class VirtualizedSectionList {
|
|
|
68
36
|
this.cachedResolvedStyle = stableAnchorStyle(this.elementRef, this.style, this.cachedResolvedStyle);
|
|
69
37
|
return this.cachedResolvedStyle;
|
|
70
38
|
}
|
|
71
|
-
wantsGate(name) {
|
|
72
|
-
return gateWanted(this.gateDemandAbove, name, this[name]);
|
|
73
|
-
}
|
|
74
39
|
ngDoCheck() {
|
|
75
40
|
const hasSectionSeparator = this.sectionSeparatorDir !== undefined;
|
|
76
41
|
if (this.sections === this.lastSectionsRef &&
|
|
@@ -83,7 +48,7 @@ export class VirtualizedSectionList {
|
|
|
83
48
|
const { entries, headerIndices } = flattenSections(sections, hasSectionSeparator);
|
|
84
49
|
this.flatEntries = entries;
|
|
85
50
|
this.headerIndices = headerIndices;
|
|
86
|
-
// RN sticks section headers by default only on iOS
|
|
51
|
+
// RN sticks section headers by default only on iOS
|
|
87
52
|
this.stickyHeaderIndices = resolveStickySectionHeaders(this.stickySectionHeadersEnabled, headerIndices, Platform.OS);
|
|
88
53
|
dlog(`Angular VirtualizedSectionList: ${sections.length} sections flattened to ${entries.length} entries`);
|
|
89
54
|
this.cdr.markForCheck();
|
|
@@ -99,10 +64,8 @@ export class VirtualizedSectionList {
|
|
|
99
64
|
}
|
|
100
65
|
return this.cachedEntryItemLayout;
|
|
101
66
|
}
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
// contract the old @Input() callback passthrough had (e.g. onRefresh presence gates whether a
|
|
105
|
-
// RefreshControl is built downstream; see the Vue twin's `listens('onRefresh')` gate).
|
|
67
|
+
// Each output becomes the plain callback the inner list wants, or `undefined` when nobody
|
|
68
|
+
// listens, since a callback's presence gates whether a `RefreshControl` is built downstream
|
|
106
69
|
get resolvedOnEndReached() {
|
|
107
70
|
return this.endReached.observed
|
|
108
71
|
? info => this.endReached.emit(info)
|
|
@@ -116,28 +79,7 @@ export class VirtualizedSectionList {
|
|
|
116
79
|
get resolvedOnRefresh() {
|
|
117
80
|
return this.refresh.observed ? () => this.refresh.emit() : undefined;
|
|
118
81
|
}
|
|
119
|
-
|
|
120
|
-
return this.accessibilityAction.observed
|
|
121
|
-
? event => this.accessibilityAction.emit(event)
|
|
122
|
-
: undefined;
|
|
123
|
-
}
|
|
124
|
-
get resolvedOnAccessibilityTap() {
|
|
125
|
-
return this.accessibilityTap.observed
|
|
126
|
-
? event => this.accessibilityTap.emit(event)
|
|
127
|
-
: undefined;
|
|
128
|
-
}
|
|
129
|
-
get resolvedOnMagicTap() {
|
|
130
|
-
return this.magicTap.observed
|
|
131
|
-
? event => this.magicTap.emit(event)
|
|
132
|
-
: undefined;
|
|
133
|
-
}
|
|
134
|
-
get resolvedOnAccessibilityEscape() {
|
|
135
|
-
return this.accessibilityEscape.observed
|
|
136
|
-
? event => this.accessibilityEscape.emit(event)
|
|
137
|
-
: undefined;
|
|
138
|
-
}
|
|
139
|
-
// --- per-cell-tag dispatch (the inner vListItem context is typed `unknown` under strictTemplates,
|
|
140
|
-
// since VListItemDirective's generic is not bound here; narrow with a runtime guard, no casts). ---
|
|
82
|
+
// The inner cell context is typed `unknown` under strict templates, so entries are narrowed
|
|
141
83
|
isEntry(value) {
|
|
142
84
|
return typeof value === 'object' && value !== null && 'kind' in value;
|
|
143
85
|
}
|
|
@@ -162,10 +104,8 @@ export class VirtualizedSectionList {
|
|
|
162
104
|
separators,
|
|
163
105
|
};
|
|
164
106
|
}
|
|
165
|
-
// The inner
|
|
166
|
-
//
|
|
167
|
-
// real items (header/footer/section-separator gaps unwrap to undefined). Mirrors the React/Vue
|
|
168
|
-
// entrySeparatorComponent wrap.
|
|
107
|
+
// The inner separator context carries flattened entries, unwrapped back to real items so the
|
|
108
|
+
// app's separator, typed on the item, never sees an envelope
|
|
169
109
|
itemSeparatorContextOf(highlighted, leadingItem, trailingItem) {
|
|
170
110
|
return {
|
|
171
111
|
$implicit: highlighted === true,
|
|
@@ -178,7 +118,6 @@ export class VirtualizedSectionList {
|
|
|
178
118
|
: undefined,
|
|
179
119
|
};
|
|
180
120
|
}
|
|
181
|
-
// ---- imperative handle (the shared IVirtualizedSectionListHandle surface) ----
|
|
182
121
|
scrollToLocation(params) {
|
|
183
122
|
const flatIndex = scrollLocationToFlatIndex(this.headerIndices, params.sectionIndex, params.itemIndex);
|
|
184
123
|
if (flatIndex === undefined) {
|
|
@@ -212,154 +151,8 @@ export class VirtualizedSectionList {
|
|
|
212
151
|
recordInteraction() {
|
|
213
152
|
this.list?.recordInteraction();
|
|
214
153
|
}
|
|
215
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedSectionList, deps:
|
|
216
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: VirtualizedSectionList, isStandalone: true, selector: "VirtualizedSectionList", inputs: { sections: "sections", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", stickySectionHeadersEnabled: "stickySectionHeadersEnabled", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", refreshRequested: "refreshRequested", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", inverted: "inverted", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", removeClippedSubviews: "removeClippedSubviews", nestedScrollEnabled: "nestedScrollEnabled", style: "style", contentContainerStyle: "contentContainerStyle", testID: "testID", nativeID: "nativeID",
|
|
217
|
-
<VirtualizedList
|
|
218
|
-
[data]="flatEntries"
|
|
219
|
-
[getItem]="getEntry"
|
|
220
|
-
[getItemCount]="getEntryCount"
|
|
221
|
-
[keyExtractor]="entryKeyExtractor"
|
|
222
|
-
[getItemLayout]="entryItemLayout"
|
|
223
|
-
[stickyHeaderIndices]="stickyHeaderIndices"
|
|
224
|
-
[extraData]="extraData"
|
|
225
|
-
[inverted]="inverted"
|
|
226
|
-
[refreshing]="refreshing"
|
|
227
|
-
[progressViewOffset]="progressViewOffset"
|
|
228
|
-
[refreshRequested]="refreshRequested ?? refresh.observed"
|
|
229
|
-
(refresh)="resolvedOnRefresh?.()"
|
|
230
|
-
(endReached)="resolvedOnEndReached?.($event)"
|
|
231
|
-
[onEndReachedThreshold]="onEndReachedThreshold"
|
|
232
|
-
(startReached)="resolvedOnStartReached?.($event)"
|
|
233
|
-
[onStartReachedThreshold]="onStartReachedThreshold"
|
|
234
|
-
[initialNumToRender]="initialNumToRender"
|
|
235
|
-
[initialScrollIndex]="initialScrollIndex"
|
|
236
|
-
[maxToRenderPerBatch]="maxToRenderPerBatch"
|
|
237
|
-
[updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
|
|
238
|
-
[windowSize]="windowSize"
|
|
239
|
-
[maintainVisibleContentPosition]="maintainVisibleContentPosition"
|
|
240
|
-
[onScroll]="onScroll"
|
|
241
|
-
[onScrollBeginDrag]="onScrollBeginDrag"
|
|
242
|
-
[onScrollEndDrag]="onScrollEndDrag"
|
|
243
|
-
[onMomentumScrollBegin]="onMomentumScrollBegin"
|
|
244
|
-
[onMomentumScrollEnd]="onMomentumScrollEnd"
|
|
245
|
-
[scrollEventThrottle]="scrollEventThrottle"
|
|
246
|
-
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
247
|
-
[keyboardDismissMode]="keyboardDismissMode"
|
|
248
|
-
[removeClippedSubviews]="removeClippedSubviews"
|
|
249
|
-
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
250
|
-
[style]="resolvedStyle"
|
|
251
|
-
[contentContainerStyle]="contentContainerStyle"
|
|
252
|
-
[testID]="testID"
|
|
253
|
-
[nativeID]="nativeID"
|
|
254
|
-
[accessible]="accessible"
|
|
255
|
-
[accessibilityLabel]="accessibilityLabel"
|
|
256
|
-
[accessibilityHint]="accessibilityHint"
|
|
257
|
-
[accessibilityRole]="accessibilityRole"
|
|
258
|
-
[accessibilityState]="accessibilityState"
|
|
259
|
-
[accessibilityValue]="accessibilityValue"
|
|
260
|
-
[accessibilityActions]="accessibilityActions"
|
|
261
|
-
[accessibilityLabelledBy]="accessibilityLabelledBy"
|
|
262
|
-
[importantForAccessibility]="importantForAccessibility"
|
|
263
|
-
[accessibilityLiveRegion]="accessibilityLiveRegion"
|
|
264
|
-
[screenReaderFocusable]="screenReaderFocusable"
|
|
265
|
-
[accessibilityViewIsModal]="accessibilityViewIsModal"
|
|
266
|
-
[accessibilityElementsHidden]="accessibilityElementsHidden"
|
|
267
|
-
[accessibilityIgnoresInvertColors]="accessibilityIgnoresInvertColors"
|
|
268
|
-
[accessibilityLanguage]="accessibilityLanguage"
|
|
269
|
-
[accessibilityRespondsToUserInteraction]="
|
|
270
|
-
accessibilityRespondsToUserInteraction
|
|
271
|
-
"
|
|
272
|
-
[accessibilityShowsLargeContentViewer]="
|
|
273
|
-
accessibilityShowsLargeContentViewer
|
|
274
|
-
"
|
|
275
|
-
[accessibilityLargeContentTitle]="accessibilityLargeContentTitle"
|
|
276
|
-
(accessibilityAction)="resolvedOnAccessibilityAction?.($event)"
|
|
277
|
-
(accessibilityTap)="resolvedOnAccessibilityTap?.($event)"
|
|
278
|
-
(magicTap)="resolvedOnMagicTap?.($event)"
|
|
279
|
-
(accessibilityEscape)="resolvedOnAccessibilityEscape?.($event)"
|
|
280
|
-
[role]="role"
|
|
281
|
-
[ariaLabel]="ariaLabel"
|
|
282
|
-
[ariaLabelledBy]="ariaLabelledBy"
|
|
283
|
-
[ariaLive]="ariaLive"
|
|
284
|
-
[ariaHidden]="ariaHidden"
|
|
285
|
-
[ariaBusy]="ariaBusy"
|
|
286
|
-
[ariaChecked]="ariaChecked"
|
|
287
|
-
[ariaDisabled]="ariaDisabled"
|
|
288
|
-
[ariaExpanded]="ariaExpanded"
|
|
289
|
-
[ariaSelected]="ariaSelected"
|
|
290
|
-
[ariaModal]="ariaModal"
|
|
291
|
-
[ariaValueMax]="ariaValueMax"
|
|
292
|
-
[ariaValueMin]="ariaValueMin"
|
|
293
|
-
[ariaValueNow]="ariaValueNow"
|
|
294
|
-
[ariaValueText]="ariaValueText"
|
|
295
|
-
>
|
|
296
|
-
<!-- The single synthesized cell template: dispatch per flattened entry tag. -->
|
|
297
|
-
<ng-template vListItem let-entry let-separators="separators">
|
|
298
|
-
@switch (entryKind(entry)) {
|
|
299
|
-
@case ('header') {
|
|
300
|
-
<ng-container
|
|
301
|
-
[vListOutlet]="sectionHeaderDir?.templateRef"
|
|
302
|
-
[vListOutletContext]="sectionContextOf(entry)"
|
|
303
|
-
></ng-container>
|
|
304
|
-
}
|
|
305
|
-
@case ('footer') {
|
|
306
|
-
<ng-container
|
|
307
|
-
[vListOutlet]="sectionFooterDir?.templateRef"
|
|
308
|
-
[vListOutletContext]="sectionContextOf(entry)"
|
|
309
|
-
></ng-container>
|
|
310
|
-
}
|
|
311
|
-
@case ('section-separator') {
|
|
312
|
-
<ng-container
|
|
313
|
-
[vListOutlet]="sectionSeparatorDir?.templateRef"
|
|
314
|
-
></ng-container>
|
|
315
|
-
}
|
|
316
|
-
@case ('item') {
|
|
317
|
-
<ng-container
|
|
318
|
-
[vListOutlet]="sectionItemDir?.templateRef"
|
|
319
|
-
[vListOutletContext]="itemContextOf(entry, separators)"
|
|
320
|
-
></ng-container>
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
</ng-template>
|
|
324
|
-
|
|
325
|
-
<!-- list-level slots: forward the app's VirtualizedList directives to the inner list. -->
|
|
326
|
-
@if (listHeaderDir !== undefined) {
|
|
327
|
-
<ng-template vListHeader>
|
|
328
|
-
<ng-container
|
|
329
|
-
[vListOutlet]="listHeaderDir.templateRef"
|
|
330
|
-
></ng-container>
|
|
331
|
-
</ng-template>
|
|
332
|
-
}
|
|
333
|
-
@if (listFooterDir !== undefined) {
|
|
334
|
-
<ng-template vListFooter>
|
|
335
|
-
<ng-container
|
|
336
|
-
[vListOutlet]="listFooterDir.templateRef"
|
|
337
|
-
></ng-container>
|
|
338
|
-
</ng-template>
|
|
339
|
-
}
|
|
340
|
-
@if (listEmptyDir !== undefined) {
|
|
341
|
-
<ng-template vListEmpty>
|
|
342
|
-
<ng-container [vListOutlet]="listEmptyDir.templateRef"></ng-container>
|
|
343
|
-
</ng-template>
|
|
344
|
-
}
|
|
345
|
-
<!-- item separator: forward, unwrapping each flattened entry back to its ItemT. -->
|
|
346
|
-
@if (itemSeparatorDir !== undefined) {
|
|
347
|
-
<ng-template
|
|
348
|
-
vListSeparator
|
|
349
|
-
let-highlighted
|
|
350
|
-
let-leadingItem="leadingItem"
|
|
351
|
-
let-trailingItem="trailingItem"
|
|
352
|
-
>
|
|
353
|
-
<ng-container
|
|
354
|
-
[vListOutlet]="itemSeparatorDir.templateRef"
|
|
355
|
-
[vListOutletContext]="
|
|
356
|
-
itemSeparatorContextOf(highlighted, leadingItem, trailingItem)
|
|
357
|
-
"
|
|
358
|
-
></ng-container>
|
|
359
|
-
</ng-template>
|
|
360
|
-
}
|
|
361
|
-
</VirtualizedList>
|
|
362
|
-
`, isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList", inputs: ["data", "getItem", "getItemCount", "keyExtractor", "getItemLayout", "horizontal", "inverted", "extraData", "onEndReachedThreshold", "onStartReachedThreshold", "refreshing", "progressViewOffset", "refreshRequested", "viewabilityConfig", "viewabilityConfigCallbackPairs", "initialNumToRender", "initialScrollIndex", "maxToRenderPerBatch", "updateCellsBatchingPeriod", "windowSize", "stickyHeaderIndices", "maintainVisibleContentPosition", "onScroll", "onScrollBeginDrag", "onScrollEndDrag", "onMomentumScrollBegin", "onMomentumScrollEnd", "scrollEventThrottle", "keyboardShouldPersistTaps", "keyboardDismissMode", "removeClippedSubviews", "nestedScrollEnabled", "style", "contentContainerStyle", "testID", "nativeID", "accessible", "accessibilityLabel", "accessibilityHint", "accessibilityRole", "accessibilityState", "accessibilityValue", "accessibilityActions", "accessibilityLabelledBy", "importantForAccessibility", "accessibilityLiveRegion", "screenReaderFocusable", "accessibilityViewIsModal", "accessibilityElementsHidden", "accessibilityIgnoresInvertColors", "accessibilityLanguage", "accessibilityRespondsToUserInteraction", "accessibilityShowsLargeContentViewer", "accessibilityLargeContentTitle", "role", "ariaLabel", "ariaLabelledBy", "ariaLive", "ariaHidden", "ariaBusy", "ariaChecked", "ariaDisabled", "ariaExpanded", "ariaSelected", "ariaModal", "ariaValueMax", "ariaValueMin", "ariaValueNow", "ariaValueText", "itemTemplate", "itemSeparatorTemplate"], outputs: ["endReached", "startReached", "refresh", "viewableItemsChanged", "scrollToIndexFailed", "accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"] }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }], viewProviders: [provideGateDemand(() => VirtualizedSectionList)], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
154
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedSectionList, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: VirtualizedSectionList, isStandalone: true, selector: "VirtualizedSectionList", inputs: { sections: "sections", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", stickySectionHeadersEnabled: "stickySectionHeadersEnabled", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", refreshRequested: "refreshRequested", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", inverted: "inverted", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", removeClippedSubviews: "removeClippedSubviews", nestedScrollEnabled: "nestedScrollEnabled", style: "style", contentContainerStyle: "contentContainerStyle", testID: "testID", nativeID: "nativeID" }, queries: [{ propertyName: "sectionItemDir", first: true, predicate: VSectionItemDirective, descendants: true }, { propertyName: "sectionHeaderDir", first: true, predicate: VSectionHeaderDirective, descendants: true }, { propertyName: "sectionFooterDir", first: true, predicate: VSectionFooterDirective, descendants: true }, { propertyName: "sectionSeparatorDir", first: true, predicate: VSectionSeparatorDirective, descendants: true }, { propertyName: "listHeaderDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "listFooterDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "listEmptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "itemSeparatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }], viewQueries: [{ propertyName: "list", first: true, predicate: VirtualizedList, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: "\n <VirtualizedList\n [data]=\"flatEntries\"\n [getItem]=\"getEntry\"\n [getItemCount]=\"getEntryCount\"\n [keyExtractor]=\"entryKeyExtractor\"\n [getItemLayout]=\"entryItemLayout\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\n [extraData]=\"extraData\"\n [inverted]=\"inverted\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n [refreshRequested]=\"refreshRequested ?? refresh.observed\"\n (refresh)=\"resolvedOnRefresh?.()\"\n (endReached)=\"resolvedOnEndReached?.($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"resolvedOnStartReached?.($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [maintainVisibleContentPosition]=\"maintainVisibleContentPosition\"\n [onScroll]=\"onScroll\"\n [onScrollBeginDrag]=\"onScrollBeginDrag\"\n [onScrollEndDrag]=\"onScrollEndDrag\"\n [onMomentumScrollBegin]=\"onMomentumScrollBegin\"\n [onMomentumScrollEnd]=\"onMomentumScrollEnd\"\n [scrollEventThrottle]=\"scrollEventThrottle\"\n [keyboardShouldPersistTaps]=\"keyboardShouldPersistTaps\"\n [keyboardDismissMode]=\"keyboardDismissMode\"\n [removeClippedSubviews]=\"removeClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n \n [accessible]=\"accessible\"\n [accessibilityLabel]=\"accessibilityLabel\"\n [accessibilityHint]=\"accessibilityHint\"\n [accessibilityRole]=\"accessibilityRole\"\n [accessibilityState]=\"accessibilityState\"\n [accessibilityValue]=\"accessibilityValue\"\n [accessibilityActions]=\"accessibilityActions\"\n [accessibilityLabelledBy]=\"accessibilityLabelledBy\"\n [importantForAccessibility]=\"importantForAccessibility\"\n [accessibilityLiveRegion]=\"accessibilityLiveRegion\"\n [screenReaderFocusable]=\"screenReaderFocusable\"\n [accessibilityViewIsModal]=\"accessibilityViewIsModal\"\n [accessibilityElementsHidden]=\"accessibilityElementsHidden\"\n [accessibilityIgnoresInvertColors]=\"accessibilityIgnoresInvertColors\"\n [accessibilityLanguage]=\"accessibilityLanguage\"\n [accessibilityRespondsToUserInteraction]=\"accessibilityRespondsToUserInteraction\"\n [accessibilityShowsLargeContentViewer]=\"accessibilityShowsLargeContentViewer\"\n [accessibilityLargeContentTitle]=\"accessibilityLargeContentTitle\"\n (accessibilityAction)=\"accessibilityAction.emit($event)\"\n (accessibilityTap)=\"accessibilityTap.emit($event)\"\n (magicTap)=\"magicTap.emit($event)\"\n (accessibilityEscape)=\"accessibilityEscape.emit($event)\"\n [role]=\"role\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledBy\"\n [aria-live]=\"ariaLive\"\n [aria-hidden]=\"ariaHidden\"\n [aria-busy]=\"ariaBusy\"\n [aria-checked]=\"ariaChecked\"\n [aria-disabled]=\"ariaDisabled\"\n [aria-expanded]=\"ariaExpanded\"\n [aria-selected]=\"ariaSelected\"\n [aria-modal]=\"ariaModal\"\n [aria-valuemax]=\"ariaValueMax\"\n [aria-valuemin]=\"ariaValueMin\"\n [aria-valuenow]=\"ariaValueNow\"\n [aria-valuetext]=\"ariaValueText\"\n\n >\n <!-- The single synthesized cell template: dispatch per flattened entry tag -->\n <ng-template vListItem let-entry let-separators=\"separators\">\n @switch (entryKind(entry)) {\n @case ('header') {\n <ng-container\n [vListOutlet]=\"sectionHeaderDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('footer') {\n <ng-container\n [vListOutlet]=\"sectionFooterDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('section-separator') {\n <ng-container\n [vListOutlet]=\"sectionSeparatorDir?.templateRef\"\n ></ng-container>\n }\n @case ('item') {\n <ng-container\n [vListOutlet]=\"sectionItemDir?.templateRef\"\n [vListOutletContext]=\"itemContextOf(entry, separators)\"\n ></ng-container>\n }\n }\n </ng-template>\n\n <!-- List-level slots: forward the app's directives to the inner list -->\n @if (listHeaderDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"listHeaderDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listFooterDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"listFooterDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listEmptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"listEmptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n <!-- Item separator: unwrap each flattened entry back to its item -->\n @if (itemSeparatorDir !== undefined) {\n <ng-template\n vListSeparator\n let-highlighted\n let-leadingItem=\"leadingItem\"\n let-trailingItem=\"trailingItem\"\n >\n <ng-container\n [vListOutlet]=\"itemSeparatorDir.templateRef\"\n [vListOutletContext]=\"\n itemSeparatorContextOf(highlighted, leadingItem, trailingItem)\n \"\n ></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n", isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList" }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }], viewProviders: [provideGateDemand(() => VirtualizedSectionList)], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
363
156
|
}
|
|
364
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: VirtualizedSectionList, decorators: [{
|
|
365
158
|
type: Component,
|
|
@@ -380,153 +173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
380
173
|
VListOutletDirective,
|
|
381
174
|
],
|
|
382
175
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
383
|
-
template:
|
|
384
|
-
<VirtualizedList
|
|
385
|
-
[data]="flatEntries"
|
|
386
|
-
[getItem]="getEntry"
|
|
387
|
-
[getItemCount]="getEntryCount"
|
|
388
|
-
[keyExtractor]="entryKeyExtractor"
|
|
389
|
-
[getItemLayout]="entryItemLayout"
|
|
390
|
-
[stickyHeaderIndices]="stickyHeaderIndices"
|
|
391
|
-
[extraData]="extraData"
|
|
392
|
-
[inverted]="inverted"
|
|
393
|
-
[refreshing]="refreshing"
|
|
394
|
-
[progressViewOffset]="progressViewOffset"
|
|
395
|
-
[refreshRequested]="refreshRequested ?? refresh.observed"
|
|
396
|
-
(refresh)="resolvedOnRefresh?.()"
|
|
397
|
-
(endReached)="resolvedOnEndReached?.($event)"
|
|
398
|
-
[onEndReachedThreshold]="onEndReachedThreshold"
|
|
399
|
-
(startReached)="resolvedOnStartReached?.($event)"
|
|
400
|
-
[onStartReachedThreshold]="onStartReachedThreshold"
|
|
401
|
-
[initialNumToRender]="initialNumToRender"
|
|
402
|
-
[initialScrollIndex]="initialScrollIndex"
|
|
403
|
-
[maxToRenderPerBatch]="maxToRenderPerBatch"
|
|
404
|
-
[updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
|
|
405
|
-
[windowSize]="windowSize"
|
|
406
|
-
[maintainVisibleContentPosition]="maintainVisibleContentPosition"
|
|
407
|
-
[onScroll]="onScroll"
|
|
408
|
-
[onScrollBeginDrag]="onScrollBeginDrag"
|
|
409
|
-
[onScrollEndDrag]="onScrollEndDrag"
|
|
410
|
-
[onMomentumScrollBegin]="onMomentumScrollBegin"
|
|
411
|
-
[onMomentumScrollEnd]="onMomentumScrollEnd"
|
|
412
|
-
[scrollEventThrottle]="scrollEventThrottle"
|
|
413
|
-
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
414
|
-
[keyboardDismissMode]="keyboardDismissMode"
|
|
415
|
-
[removeClippedSubviews]="removeClippedSubviews"
|
|
416
|
-
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
417
|
-
[style]="resolvedStyle"
|
|
418
|
-
[contentContainerStyle]="contentContainerStyle"
|
|
419
|
-
[testID]="testID"
|
|
420
|
-
[nativeID]="nativeID"
|
|
421
|
-
[accessible]="accessible"
|
|
422
|
-
[accessibilityLabel]="accessibilityLabel"
|
|
423
|
-
[accessibilityHint]="accessibilityHint"
|
|
424
|
-
[accessibilityRole]="accessibilityRole"
|
|
425
|
-
[accessibilityState]="accessibilityState"
|
|
426
|
-
[accessibilityValue]="accessibilityValue"
|
|
427
|
-
[accessibilityActions]="accessibilityActions"
|
|
428
|
-
[accessibilityLabelledBy]="accessibilityLabelledBy"
|
|
429
|
-
[importantForAccessibility]="importantForAccessibility"
|
|
430
|
-
[accessibilityLiveRegion]="accessibilityLiveRegion"
|
|
431
|
-
[screenReaderFocusable]="screenReaderFocusable"
|
|
432
|
-
[accessibilityViewIsModal]="accessibilityViewIsModal"
|
|
433
|
-
[accessibilityElementsHidden]="accessibilityElementsHidden"
|
|
434
|
-
[accessibilityIgnoresInvertColors]="accessibilityIgnoresInvertColors"
|
|
435
|
-
[accessibilityLanguage]="accessibilityLanguage"
|
|
436
|
-
[accessibilityRespondsToUserInteraction]="
|
|
437
|
-
accessibilityRespondsToUserInteraction
|
|
438
|
-
"
|
|
439
|
-
[accessibilityShowsLargeContentViewer]="
|
|
440
|
-
accessibilityShowsLargeContentViewer
|
|
441
|
-
"
|
|
442
|
-
[accessibilityLargeContentTitle]="accessibilityLargeContentTitle"
|
|
443
|
-
(accessibilityAction)="resolvedOnAccessibilityAction?.($event)"
|
|
444
|
-
(accessibilityTap)="resolvedOnAccessibilityTap?.($event)"
|
|
445
|
-
(magicTap)="resolvedOnMagicTap?.($event)"
|
|
446
|
-
(accessibilityEscape)="resolvedOnAccessibilityEscape?.($event)"
|
|
447
|
-
[role]="role"
|
|
448
|
-
[ariaLabel]="ariaLabel"
|
|
449
|
-
[ariaLabelledBy]="ariaLabelledBy"
|
|
450
|
-
[ariaLive]="ariaLive"
|
|
451
|
-
[ariaHidden]="ariaHidden"
|
|
452
|
-
[ariaBusy]="ariaBusy"
|
|
453
|
-
[ariaChecked]="ariaChecked"
|
|
454
|
-
[ariaDisabled]="ariaDisabled"
|
|
455
|
-
[ariaExpanded]="ariaExpanded"
|
|
456
|
-
[ariaSelected]="ariaSelected"
|
|
457
|
-
[ariaModal]="ariaModal"
|
|
458
|
-
[ariaValueMax]="ariaValueMax"
|
|
459
|
-
[ariaValueMin]="ariaValueMin"
|
|
460
|
-
[ariaValueNow]="ariaValueNow"
|
|
461
|
-
[ariaValueText]="ariaValueText"
|
|
462
|
-
>
|
|
463
|
-
<!-- The single synthesized cell template: dispatch per flattened entry tag. -->
|
|
464
|
-
<ng-template vListItem let-entry let-separators="separators">
|
|
465
|
-
@switch (entryKind(entry)) {
|
|
466
|
-
@case ('header') {
|
|
467
|
-
<ng-container
|
|
468
|
-
[vListOutlet]="sectionHeaderDir?.templateRef"
|
|
469
|
-
[vListOutletContext]="sectionContextOf(entry)"
|
|
470
|
-
></ng-container>
|
|
471
|
-
}
|
|
472
|
-
@case ('footer') {
|
|
473
|
-
<ng-container
|
|
474
|
-
[vListOutlet]="sectionFooterDir?.templateRef"
|
|
475
|
-
[vListOutletContext]="sectionContextOf(entry)"
|
|
476
|
-
></ng-container>
|
|
477
|
-
}
|
|
478
|
-
@case ('section-separator') {
|
|
479
|
-
<ng-container
|
|
480
|
-
[vListOutlet]="sectionSeparatorDir?.templateRef"
|
|
481
|
-
></ng-container>
|
|
482
|
-
}
|
|
483
|
-
@case ('item') {
|
|
484
|
-
<ng-container
|
|
485
|
-
[vListOutlet]="sectionItemDir?.templateRef"
|
|
486
|
-
[vListOutletContext]="itemContextOf(entry, separators)"
|
|
487
|
-
></ng-container>
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
</ng-template>
|
|
491
|
-
|
|
492
|
-
<!-- list-level slots: forward the app's VirtualizedList directives to the inner list. -->
|
|
493
|
-
@if (listHeaderDir !== undefined) {
|
|
494
|
-
<ng-template vListHeader>
|
|
495
|
-
<ng-container
|
|
496
|
-
[vListOutlet]="listHeaderDir.templateRef"
|
|
497
|
-
></ng-container>
|
|
498
|
-
</ng-template>
|
|
499
|
-
}
|
|
500
|
-
@if (listFooterDir !== undefined) {
|
|
501
|
-
<ng-template vListFooter>
|
|
502
|
-
<ng-container
|
|
503
|
-
[vListOutlet]="listFooterDir.templateRef"
|
|
504
|
-
></ng-container>
|
|
505
|
-
</ng-template>
|
|
506
|
-
}
|
|
507
|
-
@if (listEmptyDir !== undefined) {
|
|
508
|
-
<ng-template vListEmpty>
|
|
509
|
-
<ng-container [vListOutlet]="listEmptyDir.templateRef"></ng-container>
|
|
510
|
-
</ng-template>
|
|
511
|
-
}
|
|
512
|
-
<!-- item separator: forward, unwrapping each flattened entry back to its ItemT. -->
|
|
513
|
-
@if (itemSeparatorDir !== undefined) {
|
|
514
|
-
<ng-template
|
|
515
|
-
vListSeparator
|
|
516
|
-
let-highlighted
|
|
517
|
-
let-leadingItem="leadingItem"
|
|
518
|
-
let-trailingItem="trailingItem"
|
|
519
|
-
>
|
|
520
|
-
<ng-container
|
|
521
|
-
[vListOutlet]="itemSeparatorDir.templateRef"
|
|
522
|
-
[vListOutletContext]="
|
|
523
|
-
itemSeparatorContextOf(highlighted, leadingItem, trailingItem)
|
|
524
|
-
"
|
|
525
|
-
></ng-container>
|
|
526
|
-
</ng-template>
|
|
527
|
-
}
|
|
528
|
-
</VirtualizedList>
|
|
529
|
-
`,
|
|
176
|
+
template: VIRTUALIZED_SECTION_LIST_TEMPLATE,
|
|
530
177
|
}]
|
|
531
178
|
}], propDecorators: { sections: [{
|
|
532
179
|
type: Input,
|
|
@@ -539,16 +186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
539
186
|
type: Input
|
|
540
187
|
}], extraData: [{
|
|
541
188
|
type: Input
|
|
542
|
-
}], endReached: [{
|
|
543
|
-
type: Output
|
|
544
189
|
}], onEndReachedThreshold: [{
|
|
545
190
|
type: Input
|
|
546
|
-
}], startReached: [{
|
|
547
|
-
type: Output
|
|
548
191
|
}], onStartReachedThreshold: [{
|
|
549
192
|
type: Input
|
|
550
|
-
}], refresh: [{
|
|
551
|
-
type: Output
|
|
552
193
|
}], refreshing: [{
|
|
553
194
|
type: Input
|
|
554
195
|
}], progressViewOffset: [{
|
|
@@ -597,80 +238,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
597
238
|
type: Input
|
|
598
239
|
}], nativeID: [{
|
|
599
240
|
type: Input
|
|
600
|
-
}], accessible: [{
|
|
601
|
-
type: Input
|
|
602
|
-
}], accessibilityLabel: [{
|
|
603
|
-
type: Input
|
|
604
|
-
}], accessibilityHint: [{
|
|
605
|
-
type: Input
|
|
606
|
-
}], accessibilityRole: [{
|
|
607
|
-
type: Input
|
|
608
|
-
}], accessibilityState: [{
|
|
609
|
-
type: Input
|
|
610
|
-
}], accessibilityValue: [{
|
|
611
|
-
type: Input
|
|
612
|
-
}], accessibilityActions: [{
|
|
613
|
-
type: Input
|
|
614
|
-
}], accessibilityLabelledBy: [{
|
|
615
|
-
type: Input
|
|
616
|
-
}], importantForAccessibility: [{
|
|
617
|
-
type: Input
|
|
618
|
-
}], accessibilityLiveRegion: [{
|
|
619
|
-
type: Input
|
|
620
|
-
}], screenReaderFocusable: [{
|
|
621
|
-
type: Input
|
|
622
|
-
}], accessibilityViewIsModal: [{
|
|
623
|
-
type: Input
|
|
624
|
-
}], accessibilityElementsHidden: [{
|
|
625
|
-
type: Input
|
|
626
|
-
}], accessibilityIgnoresInvertColors: [{
|
|
627
|
-
type: Input
|
|
628
|
-
}], accessibilityLanguage: [{
|
|
629
|
-
type: Input
|
|
630
|
-
}], accessibilityRespondsToUserInteraction: [{
|
|
631
|
-
type: Input
|
|
632
|
-
}], accessibilityShowsLargeContentViewer: [{
|
|
633
|
-
type: Input
|
|
634
|
-
}], accessibilityLargeContentTitle: [{
|
|
635
|
-
type: Input
|
|
636
|
-
}], accessibilityAction: [{
|
|
637
|
-
type: Output
|
|
638
|
-
}], accessibilityTap: [{
|
|
639
|
-
type: Output
|
|
640
|
-
}], magicTap: [{
|
|
641
|
-
type: Output
|
|
642
|
-
}], accessibilityEscape: [{
|
|
643
|
-
type: Output
|
|
644
|
-
}], role: [{
|
|
645
|
-
type: Input
|
|
646
|
-
}], ariaLabel: [{
|
|
647
|
-
type: Input
|
|
648
|
-
}], ariaLabelledBy: [{
|
|
649
|
-
type: Input
|
|
650
|
-
}], ariaLive: [{
|
|
651
|
-
type: Input
|
|
652
|
-
}], ariaHidden: [{
|
|
653
|
-
type: Input
|
|
654
|
-
}], ariaBusy: [{
|
|
655
|
-
type: Input
|
|
656
|
-
}], ariaChecked: [{
|
|
657
|
-
type: Input
|
|
658
|
-
}], ariaDisabled: [{
|
|
659
|
-
type: Input
|
|
660
|
-
}], ariaExpanded: [{
|
|
661
|
-
type: Input
|
|
662
|
-
}], ariaSelected: [{
|
|
663
|
-
type: Input
|
|
664
|
-
}], ariaModal: [{
|
|
665
|
-
type: Input
|
|
666
|
-
}], ariaValueMax: [{
|
|
667
|
-
type: Input
|
|
668
|
-
}], ariaValueMin: [{
|
|
669
|
-
type: Input
|
|
670
|
-
}], ariaValueNow: [{
|
|
671
|
-
type: Input
|
|
672
|
-
}], ariaValueText: [{
|
|
673
|
-
type: Input
|
|
674
241
|
}], sectionItemDir: [{
|
|
675
242
|
type: ContentChild,
|
|
676
243
|
args: [VSectionItemDirective]
|