• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16
17// HADWRITTEN, DO NOT REGENERATE
18
19/**
20 * @file
21 * @kit ArkUI
22 * @arkts 1.2
23 */
24
25import { memo, ComponentBuilder, __memo_context_type, __memo_id_type } from './../stateManagement/runtime'
26
27/**
28 * Defines type to operation data source.
29 *
30 * @enum { string }
31 * @syscap SystemCapability.ArkUI.ArkUI.Full
32 * @crossplatform
33 * @atomicservice
34 * @since 20
35 */
36export enum DataOperationType {
37    /**
38     * Add data.
39     *
40     * @syscap SystemCapability.ArkUI.ArkUI.Full
41     * @crossplatform
42     * @atomicservice
43     * @since 20
44     */
45    ADD = 'add',
46    /**
47     * Delete data.
48     *
49     * @syscap SystemCapability.ArkUI.ArkUI.Full
50     * @crossplatform
51     * @atomicservice
52     * @since 20
53     */
54    DELETE = 'delete',
55    /**
56     * Exchange data.
57     *
58     * @syscap SystemCapability.ArkUI.ArkUI.Full
59     * @crossplatform
60     * @atomicservice
61     * @since 20
62     */
63    EXCHANGE = 'exchange',
64    /**
65     * Move data.
66     *
67     * @syscap SystemCapability.ArkUI.ArkUI.Full
68     * @crossplatform
69     * @atomicservice
70     * @since 20
71     */
72    MOVE = 'move',
73    /**
74     * Change data.
75     *
76     * @syscap SystemCapability.ArkUI.ArkUI.Full
77     * @crossplatform
78     * @atomicservice
79     * @since 20
80     */
81    CHANGE = 'change',
82    /**
83     * Reload data.
84     *
85     * @syscap SystemCapability.ArkUI.ArkUI.Full
86     * @crossplatform
87     * @atomicservice
88     * @since 20
89     */
90    RELOAD = 'reload'
91}
92
93/**
94 * Defines add operation.
95 *
96 * @interface DataAddOperation
97 * @syscap SystemCapability.ArkUI.ArkUI.Full
98 * @crossplatform
99 * @atomicservice
100 * @since 20
101 */
102export interface DataAddOperation {
103    /**
104     * How to operate added data.
105     *
106     * @type { DataOperationType.ADD }
107     * @syscap SystemCapability.ArkUI.ArkUI.Full
108     * @crossplatform
109     * @atomicservice
110     * @since 20
111     */
112    type: DataOperationType;
113    /**
114     * Index of added data.
115     *
116     * @type { number }
117     * @syscap SystemCapability.ArkUI.ArkUI.Full
118     * @crossplatform
119     * @atomicservice
120     * @since 20
121     */
122    index: number;
123    /**
124     * Count of added data in one operation
125     * Only validate for ADD and DELETE.
126     *
127     * @type { ?number }
128     * @default 1
129     * @syscap SystemCapability.ArkUI.ArkUI.Full
130     * @crossplatform
131     * @atomicservice
132     * @since 20
133     */
134    count?: number;
135    /**
136     * Key of added data.
137     *
138     * @type { ?(string | Array<string>) }
139     * @syscap SystemCapability.ArkUI.ArkUI.Full
140     * @crossplatform
141     * @atomicservice
142     * @since 20
143     */
144    key?: string | Array<string>;
145}
146
147/**
148 * Defines delete operation.
149 *
150 * @interface DataDeleteOperation
151 * @syscap SystemCapability.ArkUI.ArkUI.Full
152 * @crossplatform
153 * @atomicservice
154 * @since 20
155 */
156export interface DataDeleteOperation {
157    /**
158     * How to operate deleted data.
159     *
160     * @type { DataOperationType.DELETE }
161     * @syscap SystemCapability.ArkUI.ArkUI.Full
162     * @crossplatform
163     * @atomicservice
164     * @since 20
165     */
166    type: DataOperationType;
167    /**
168     * Index of deleted data.
169     *
170     * @type { number }
171     * @syscap SystemCapability.ArkUI.ArkUI.Full
172     * @crossplatform
173     * @atomicservice
174     * @since 20
175     */
176    index: number;
177    /**
178     * Count of deleted data in one operation
179     * Only validate for ADD and DELETE.
180     *
181     * @type { ?number }
182     * @default 1
183     * @syscap SystemCapability.ArkUI.ArkUI.Full
184     * @crossplatform
185     * @atomicservice
186     * @since 20
187     */
188    count?: number;
189}
190
191/**
192 * Defines change operation.
193 *
194 * @interface DataChangeOperation
195 * @syscap SystemCapability.ArkUI.ArkUI.Full
196 * @crossplatform
197 * @atomicservice
198 * @since 20
199 */
200export interface DataChangeOperation {
201    /**
202     * How to operate changed data.
203     *
204     * @type { DataOperationType.CHANGE }
205     * @syscap SystemCapability.ArkUI.ArkUI.Full
206     * @crossplatform
207     * @atomicservice
208     * @since 20
209     */
210    type: DataOperationType;
211    /**
212     * Index of changed data.
213     *
214     * @type { number }
215     * @syscap SystemCapability.ArkUI.ArkUI.Full
216     * @crossplatform
217     * @atomicservice
218     * @since 20
219     */
220    index: number;
221    /**
222     * Key of changed data.
223     *
224     * @type { ?string }
225     * @syscap SystemCapability.ArkUI.ArkUI.Full
226     * @crossplatform
227     * @atomicservice
228     * @since 20
229     */
230    key?: string;
231}
232
233/**
234 * Defines position of moved data.
235 *
236 * @interface MoveIndex
237 * @syscap SystemCapability.ArkUI.ArkUI.Full
238 * @crossplatform
239 * @atomicservice
240 * @since 20
241 */
242export interface MoveIndex {
243    /**
244     * Index of moved data.
245     *
246     * @type { number }
247     * @syscap SystemCapability.ArkUI.ArkUI.Full
248     * @crossplatform
249     * @atomicservice
250     * @since 20
251     */
252    from: number;
253    /**
254     * Destination of moved data.
255     *
256     * @type { number }
257     * @syscap SystemCapability.ArkUI.ArkUI.Full
258     * @crossplatform
259     * @atomicservice
260     * @since 20
261     */
262    to: number;
263}
264
265/**
266 * Defines position of exchange data.
267 *
268 * @interface ExchangeIndex
269 * @syscap SystemCapability.ArkUI.ArkUI.Full
270 * @crossplatform
271 * @atomicservice
272 * @since 20
273 */
274export interface ExchangeIndex {
275    /**
276     * Index of the first exchange data.
277     *
278     * @type { number }
279     * @syscap SystemCapability.ArkUI.ArkUI.Full
280     * @crossplatform
281     * @atomicservice
282     * @since 20
283     */
284    start: number;
285    /**
286     * Index of the second exchange data.
287     *
288     * @type { number }
289     * @syscap SystemCapability.ArkUI.ArkUI.Full
290     * @crossplatform
291     * @atomicservice
292     * @since 20
293     */
294    end: number;
295}
296
297/**
298 * Defines new key of exchange data.
299 *
300 * @interface ExchangeKey
301 * @syscap SystemCapability.ArkUI.ArkUI.Full
302 * @crossplatform
303 * @atomicservice
304 * @since 20
305 */
306export interface ExchangeKey {
307    /**
308     * Key of the first exchange data.
309     *
310     * @type { string }
311     * @syscap SystemCapability.ArkUI.ArkUI.Full
312     * @crossplatform
313     * @atomicservice
314     * @since 20
315     */
316    start: string;
317    /**
318     * Key of the second exchange data.
319     *
320     * @type { string }
321     * @syscap SystemCapability.ArkUI.ArkUI.Full
322     * @crossplatform
323     * @atomicservice
324     * @since 20
325     */
326    end: string;
327}
328
329/**
330 * Defines move&exchange operation.
331 *
332 * @interface DataMoveOperation
333 * @syscap SystemCapability.ArkUI.ArkUI.Full
334 * @crossplatform
335 * @atomicservice
336 * @since 20
337 */
338export interface DataMoveOperation {
339    /**
340     * How to operate moved data.
341     *
342     * @type { DataOperationType.MOVE }
343     * @syscap SystemCapability.ArkUI.ArkUI.Full
344     * @crossplatform
345     * @atomicservice
346     * @since 20
347     */
348    type: DataOperationType;
349    /**
350     * Index of moved data.
351     *
352     * @type { MoveIndex }
353     * @syscap SystemCapability.ArkUI.ArkUI.Full
354     * @crossplatform
355     * @atomicservice
356     * @since 20
357     */
358    index: MoveIndex;
359    /**
360     * Key of moved data.
361     *
362     * @type { ?string }
363     * @syscap SystemCapability.ArkUI.ArkUI.Full
364     * @crossplatform
365     * @atomicservice
366     * @since 20
367     */
368    key?: string;
369}
370
371/**
372 * Defines exchange operation.
373 *
374 * @interface DataExchangeOperation
375 * @syscap SystemCapability.ArkUI.ArkUI.Full
376 * @crossplatform
377 * @atomicservice
378 * @since 20
379 */
380export interface DataExchangeOperation {
381    /**
382     * How to operate exchange data.
383     *
384     * @type { DataOperationType.EXCHANGE }
385     * @syscap SystemCapability.ArkUI.ArkUI.Full
386     * @crossplatform
387     * @atomicservice
388     * @since 20
389     */
390    type: DataOperationType;
391    /**
392     * Index of exchange data.
393     *
394     * @type { ExchangeIndex }
395     * @syscap SystemCapability.ArkUI.ArkUI.Full
396     * @crossplatform
397     * @atomicservice
398     * @since 20
399     */
400    index: ExchangeIndex;
401    /**
402     * Key of exchange data.
403     *
404     * @type { ?ExchangeKey }
405     * @syscap SystemCapability.ArkUI.ArkUI.Full
406     * @crossplatform
407     * @atomicservice
408     * @since 20
409     */
410    key?: ExchangeKey;
411}
412
413/**
414 * Defines reload operation.
415 *
416 * @interface DataReloadOperation
417 * @syscap SystemCapability.ArkUI.ArkUI.Full
418 * @crossplatform
419 * @atomicservice
420 * @since 20
421 */
422export interface DataReloadOperation {
423    /**
424     * How to operate reload data.
425     *
426     * @type { DataOperationType.RELOAD }
427     * @syscap SystemCapability.ArkUI.ArkUI.Full
428     * @crossplatform
429     * @atomicservice
430     * @since 20
431     */
432    type: DataOperationType;
433}
434
435/**
436 * All data operation type
437 *
438 * @typedef { DataAddOperation | DataDeleteOperation | DataChangeOperation | DataMoveOperation | DataExchangeOperation
439 *  | DataReloadOperation }
440 * @syscap SystemCapability.ArkUI.ArkUI.Full
441 * @crossplatform
442 * @atomicservice
443 * @since 20
444 */
445export type DataOperation = DataAddOperation | DataDeleteOperation | DataChangeOperation | DataMoveOperation |
446    DataExchangeOperation | DataReloadOperation;
447
448/**
449 * Data Change Listener.
450 *
451 * @interface DataChangeListener
452 * @syscap SystemCapability.ArkUI.ArkUI.Full
453 * @crossplatform
454 * @atomicservice
455 * @since 20
456 */
457export interface DataChangeListener {
458    /**
459     * Data ready.
460     *
461     * @syscap SystemCapability.ArkUI.ArkUI.Full
462     * @crossplatform
463     * @atomicservice
464     * @since 20
465     */
466    onDataReloaded(): void
467    /**
468     * Data added.
469     *
470     * @param { number } index
471     * @syscap SystemCapability.ArkUI.ArkUI.Full
472     * @since 20
473     * @deprecated since 8
474     * @useinstead onDataAdd
475     */
476    onDataAdded(index: number): void
477    /**
478     * Data added.
479     *
480     * @param { number } index
481     * @syscap SystemCapability.ArkUI.ArkUI.Full
482     * @crossplatform
483     * @atomicservice
484     * @since 20
485     */
486    onDataAdd(index: number): void
487    /**
488     * Data moved.
489     *
490     * @param { number } from
491     * @param { number } to
492     * @syscap SystemCapability.ArkUI.ArkUI.Full
493     * @since 20
494     * @deprecated since 8
495     * @useinstead onDataMove
496     */
497    onDataMoved(from: number, to: number): void
498    /**
499     * Data moved.
500     *
501     * @param { number } from
502     * @param { number } to
503     * @syscap SystemCapability.ArkUI.ArkUI.Full
504     * @crossplatform
505     * @atomicservice
506     * @since 20
507     */
508    onDataMove(from: number, to: number): void
509    /**
510     * Data deleted.
511     *
512     * @param { number } index
513     * @syscap SystemCapability.ArkUI.ArkUI.Full
514     * @since 20
515     * @deprecated since 8
516     * @useinstead onDataDelete
517     */
518    onDataDeleted(index: number): void
519    /**
520     * Data deleted.
521     *
522     * @param { number } index
523     * @syscap SystemCapability.ArkUI.ArkUI.Full
524     * @crossplatform
525     * @atomicservice
526     * @since 20
527     */
528    onDataDelete(index: number): void
529    /**
530     * Call when has data change.
531     *
532     * @param { number } index
533     * @syscap SystemCapability.ArkUI.ArkUI.Full
534     * @since 20
535     * @deprecated since 8
536     * @useinstead onDataChange
537     */
538    onDataChanged(index: number): void
539    /**
540     * Call when has data change.
541     *
542     * @param { number } index
543     * @syscap SystemCapability.ArkUI.ArkUI.Full
544     * @crossplatform
545     * @atomicservice
546     * @since 20
547     */
548    onDataChange(index: number): void
549    /**
550     * Call when multiple data change.
551     *
552     * @param { DataOperation[] } dataOperations
553     * @syscap SystemCapability.ArkUI.ArkUI.Full
554     * @crossplatform
555     * @atomicservice
556     * @since 20
557     */
558    onDatasetChange(dataOperations: Array<DataOperation>): void
559}
560
561/**
562 * Developers need to implement this interface to provide data to LazyForEach component.
563 *
564 * @interface IDataSource
565 * @syscap SystemCapability.ArkUI.ArkUI.Full
566 * @crossplatform
567 * @atomicservice
568 * @since 20
569 */
570export interface IDataSource<T> {
571    /**
572     * Total data count.
573     *
574     * @returns { number }
575     * @syscap SystemCapability.ArkUI.ArkUI.Full
576     * @crossplatform
577     * @atomicservice
578     * @since 20
579     */
580    totalCount(): number;
581    /**
582     * Return the data of index.
583     *
584     * @param { number } index
585     * @returns { any }
586     * @syscap SystemCapability.ArkUI.ArkUI.Full
587     * @crossplatform
588     * @atomicservice
589     * @since 20
590     */
591    getData(index: number): T;
592    /**
593     * Register data change listener.
594     *
595     * @param { DataChangeListener } listener
596     * @syscap SystemCapability.ArkUI.ArkUI.Full
597     * @crossplatform
598     * @atomicservice
599     * @since 20
600     */
601    registerDataChangeListener(listener: DataChangeListener): void;
602    /**
603     * Unregister data change listener.
604     *
605     * @param { DataChangeListener } listener
606     * @syscap SystemCapability.ArkUI.ArkUI.Full
607     * @crossplatform
608     * @atomicservice
609     * @since 20
610     */
611    unregisterDataChangeListener(listener: DataChangeListener): void;
612}
613
614/**
615 * declare ForEachAttribute
616 *
617 * @syscap SystemCapability.ArkUI.ArkUI.Full
618 * @crossplatform
619 * @atomicservice
620 * @since 20
621 */
622export interface LazyForEachAttribute {}
623
624/**
625 * declare UILazyForEachAttribute
626 *
627 * @syscap SystemCapability.ArkUI.ArkUI.Full
628 * @crossplatform
629 * @atomicservice
630 * @since 20
631 */
632export interface UILazyForEachAttribute {}
633
634/**
635 * Enter the value to obtain the LazyForEach.
636 *
637 * @param { IDataSource } dataSource
638 * @param { function } itemGenerator
639 * @param { function } keyGenerator
640 * @returns { LazyForEachAttribute }
641 * @syscap SystemCapability.ArkUI.ArkUI.Full
642 * @crossplatform
643 * @atomicservice
644 * @since 20
645 */
646@memo
647@ComponentBuilder
648export declare function LazyForEach<T>(dataSource: IDataSource<T>,
649    @memo
650    itemGenerator: (item: T, index: number) => void,
651    keyGenerator?: (item: T, index: number) => string,
652): LazyForEachAttribute