1/* 2 * Copyright (c) 2021-2023 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 * @file 18 * @kit ArkUI 19 */ 20 21/** 22 * Defines type to operation data source. 23 * 24 * @enum { string } 25 * @syscap SystemCapability.ArkUI.ArkUI.Full 26 * @crossplatform 27 * @atomicservice 28 * @since 12 29 */ 30declare enum DataOperationType { 31 /** 32 * Add data. 33 * 34 * @syscap SystemCapability.ArkUI.ArkUI.Full 35 * @crossplatform 36 * @atomicservice 37 * @since 12 38 */ 39 ADD = 'add', 40 41 /** 42 * Delete data. 43 * 44 * @syscap SystemCapability.ArkUI.ArkUI.Full 45 * @crossplatform 46 * @atomicservice 47 * @since 12 48 */ 49 DELETE = 'delete', 50 51 /** 52 * Exchange data. 53 * 54 * @syscap SystemCapability.ArkUI.ArkUI.Full 55 * @crossplatform 56 * @atomicservice 57 * @since 12 58 */ 59 EXCHANGE = 'exchange', 60 61 /** 62 * Move data. 63 * 64 * @syscap SystemCapability.ArkUI.ArkUI.Full 65 * @crossplatform 66 * @atomicservice 67 * @since 12 68 */ 69 MOVE = 'move', 70 71 /** 72 * Change data. 73 * 74 * @syscap SystemCapability.ArkUI.ArkUI.Full 75 * @crossplatform 76 * @atomicservice 77 * @since 12 78 */ 79 CHANGE = 'change', 80 81 /** 82 * Reload data. 83 * 84 * @syscap SystemCapability.ArkUI.ArkUI.Full 85 * @crossplatform 86 * @atomicservice 87 * @since 12 88 */ 89 RELOAD = 'reload' 90} 91 92/** 93 * Defines add operation. 94 * 95 * @interface DataAddOperation 96 * @syscap SystemCapability.ArkUI.ArkUI.Full 97 * @crossplatform 98 * @atomicservice 99 * @since 12 100 */ 101interface DataAddOperation { 102 /** 103 * How to operate added data. 104 * 105 * @type { DataOperationType.ADD } 106 * @syscap SystemCapability.ArkUI.ArkUI.Full 107 * @crossplatform 108 * @atomicservice 109 * @since 12 110 */ 111 type: DataOperationType.ADD, 112 113 /** 114 * Index of added data. 115 * 116 * @type { number } 117 * @syscap SystemCapability.ArkUI.ArkUI.Full 118 * @crossplatform 119 * @atomicservice 120 * @since 12 121 */ 122 index: number, 123 124 /** 125 * Count of added data in one operation 126 * Only validate for ADD and DELETE. 127 * 128 * @type { ?number } 129 * @default 1 130 * @syscap SystemCapability.ArkUI.ArkUI.Full 131 * @crossplatform 132 * @atomicservice 133 * @since 12 134 */ 135 count?: number, 136 137 /** 138 * Key of added data. 139 * 140 * @type { ?(string | Array<string>) } 141 * @syscap SystemCapability.ArkUI.ArkUI.Full 142 * @crossplatform 143 * @atomicservice 144 * @since 12 145 */ 146 key?: string | Array<string> 147} 148 149/** 150 * Defines delete operation. 151 * 152 * @interface DataDeleteOperation 153 * @syscap SystemCapability.ArkUI.ArkUI.Full 154 * @crossplatform 155 * @atomicservice 156 * @since 12 157 */ 158interface DataDeleteOperation { 159 /** 160 * How to operate deleted data. 161 * 162 * @type { DataOperationType.DELETE } 163 * @syscap SystemCapability.ArkUI.ArkUI.Full 164 * @crossplatform 165 * @atomicservice 166 * @since 12 167 */ 168 type: DataOperationType.DELETE, 169 170 /** 171 * Index of deleted data. 172 * 173 * @type { number } 174 * @syscap SystemCapability.ArkUI.ArkUI.Full 175 * @crossplatform 176 * @atomicservice 177 * @since 12 178 */ 179 index: number, 180 181 /** 182 * Count of deleted data in one operation 183 * Only validate for ADD and DELETE. 184 * 185 * @type { ?number } 186 * @default 1 187 * @syscap SystemCapability.ArkUI.ArkUI.Full 188 * @crossplatform 189 * @atomicservice 190 * @since 12 191 */ 192 count?: number 193} 194 195/** 196 * Defines change operation. 197 * 198 * @interface DataChangeOperation 199 * @syscap SystemCapability.ArkUI.ArkUI.Full 200 * @crossplatform 201 * @atomicservice 202 * @since 12 203 */ 204interface DataChangeOperation { 205 /** 206 * How to operate changed data. 207 * 208 * @type { DataOperationType.CHANGE } 209 * @syscap SystemCapability.ArkUI.ArkUI.Full 210 * @crossplatform 211 * @atomicservice 212 * @since 12 213 */ 214 type: DataOperationType.CHANGE, 215 216 /** 217 * Index of changed data. 218 * 219 * @type { number } 220 * @syscap SystemCapability.ArkUI.ArkUI.Full 221 * @crossplatform 222 * @atomicservice 223 * @since 12 224 */ 225 index: number, 226 227 /** 228 * Key of changed data. 229 * 230 * @type { ?string } 231 * @syscap SystemCapability.ArkUI.ArkUI.Full 232 * @crossplatform 233 * @atomicservice 234 * @since 12 235 */ 236 key?: string 237} 238 239/** 240 * Defines position of moved data. 241 * 242 * @interface MoveIndex 243 * @syscap SystemCapability.ArkUI.ArkUI.Full 244 * @crossplatform 245 * @atomicservice 246 * @since 12 247 */ 248interface MoveIndex { 249 /** 250 * Index of moved data. 251 * 252 * @type { number } 253 * @syscap SystemCapability.ArkUI.ArkUI.Full 254 * @crossplatform 255 * @atomicservice 256 * @since 12 257 */ 258 from: number; 259 /** 260 * Destination of moved data. 261 * 262 * @type { number } 263 * @syscap SystemCapability.ArkUI.ArkUI.Full 264 * @crossplatform 265 * @atomicservice 266 * @since 12 267 */ 268 to: number; 269} 270 271/** 272 * Defines position of exchange data. 273 * 274 * @interface ExchangeIndex 275 * @syscap SystemCapability.ArkUI.ArkUI.Full 276 * @crossplatform 277 * @atomicservice 278 * @since 12 279 */ 280interface ExchangeIndex { 281 /** 282 * Index of the first exchange data. 283 * 284 * @type { number } 285 * @syscap SystemCapability.ArkUI.ArkUI.Full 286 * @crossplatform 287 * @atomicservice 288 * @since 12 289 */ 290 start: number; 291 /** 292 * Index of the second exchange data. 293 * 294 * @type { number } 295 * @syscap SystemCapability.ArkUI.ArkUI.Full 296 * @crossplatform 297 * @atomicservice 298 * @since 12 299 */ 300 end: number; 301} 302 303/** 304 * Defines new key of exchange data. 305 * 306 * @interface ExchangeKey 307 * @syscap SystemCapability.ArkUI.ArkUI.Full 308 * @crossplatform 309 * @atomicservice 310 * @since 12 311 */ 312interface ExchangeKey { 313 /** 314 * Key of the first exchange data. 315 * 316 * @type { string } 317 * @syscap SystemCapability.ArkUI.ArkUI.Full 318 * @crossplatform 319 * @atomicservice 320 * @since 12 321 */ 322 start: string; 323 /** 324 * Key of the second exchange data. 325 * 326 * @type { string } 327 * @syscap SystemCapability.ArkUI.ArkUI.Full 328 * @crossplatform 329 * @atomicservice 330 * @since 12 331 */ 332 end: string; 333} 334 335/** 336 * Defines move&exchange operation. 337 * 338 * @interface DataMoveOperation 339 * @syscap SystemCapability.ArkUI.ArkUI.Full 340 * @crossplatform 341 * @atomicservice 342 * @since 12 343 */ 344interface DataMoveOperation { 345 /** 346 * How to operate moved data. 347 * 348 * @type { DataOperationType.MOVE } 349 * @syscap SystemCapability.ArkUI.ArkUI.Full 350 * @crossplatform 351 * @atomicservice 352 * @since 12 353 */ 354 type: DataOperationType.MOVE, 355 356 /** 357 * Index of moved data. 358 * 359 * @type { MoveIndex } 360 * @syscap SystemCapability.ArkUI.ArkUI.Full 361 * @crossplatform 362 * @atomicservice 363 * @since 12 364 */ 365 index: MoveIndex, 366 367 /** 368 * Key of moved data. 369 * 370 * @type { ?string } 371 * @syscap SystemCapability.ArkUI.ArkUI.Full 372 * @crossplatform 373 * @atomicservice 374 * @since 12 375 */ 376 key?: string 377} 378 379/** 380 * Defines exchange operation. 381 * 382 * @interface DataExchangeOperation 383 * @syscap SystemCapability.ArkUI.ArkUI.Full 384 * @crossplatform 385 * @atomicservice 386 * @since 12 387 */ 388 interface DataExchangeOperation { 389 /** 390 * How to operate exchange data. 391 * 392 * @type { DataOperationType.EXCHANGE } 393 * @syscap SystemCapability.ArkUI.ArkUI.Full 394 * @crossplatform 395 * @atomicservice 396 * @since 12 397 */ 398 type: DataOperationType.EXCHANGE, 399 400 /** 401 * Index of exchange data. 402 * 403 * @type { ExchangeIndex } 404 * @syscap SystemCapability.ArkUI.ArkUI.Full 405 * @crossplatform 406 * @atomicservice 407 * @since 12 408 */ 409 index: ExchangeIndex, 410 411 /** 412 * Key of exchange data. 413 * 414 * @type { ?ExchangeKey } 415 * @syscap SystemCapability.ArkUI.ArkUI.Full 416 * @crossplatform 417 * @atomicservice 418 * @since 12 419 */ 420 key?: ExchangeKey 421} 422 423/** 424 * Defines reload operation. 425 * 426 * @interface DataReloadOperation 427 * @syscap SystemCapability.ArkUI.ArkUI.Full 428 * @crossplatform 429 * @atomicservice 430 * @since 12 431 */ 432interface DataReloadOperation { 433 /** 434 * How to operate reload data. 435 * 436 * @type { DataOperationType.RELOAD } 437 * @syscap SystemCapability.ArkUI.ArkUI.Full 438 * @crossplatform 439 * @atomicservice 440 * @since 12 441 */ 442 type: DataOperationType.RELOAD 443} 444 445/** 446 * All data operation type 447 * 448 * @typedef { DataAddOperation | DataDeleteOperation | DataChangeOperation |DataMoveOperation | DataExchangeOperation | DataReloadOperation } 449 * @syscap SystemCapability.ArkUI.ArkUI.Full 450 * @crossplatform 451 * @atomicservice 452 * @since 12 453 */ 454declare type DataOperation = 455 DataAddOperation | DataDeleteOperation | DataChangeOperation | DataMoveOperation | DataExchangeOperation | DataReloadOperation; 456 457/** 458 * Data Change Listener. 459 * 460 * @interface DataChangeListener 461 * @syscap SystemCapability.ArkUI.ArkUI.Full 462 * @since 7 463 */ 464/** 465 * Data Change Listener. 466 * 467 * @interface DataChangeListener 468 * @syscap SystemCapability.ArkUI.ArkUI.Full 469 * @crossplatform 470 * @since 10 471 */ 472/** 473 * Data Change Listener. 474 * 475 * @interface DataChangeListener 476 * @syscap SystemCapability.ArkUI.ArkUI.Full 477 * @crossplatform 478 * @atomicservice 479 * @since 11 480 */ 481declare interface DataChangeListener { 482 /** 483 * Data ready. 484 * 485 * @syscap SystemCapability.ArkUI.ArkUI.Full 486 * @since 7 487 */ 488 /** 489 * Data ready. 490 * 491 * @syscap SystemCapability.ArkUI.ArkUI.Full 492 * @crossplatform 493 * @since 10 494 */ 495 /** 496 * Data ready. 497 * 498 * @syscap SystemCapability.ArkUI.ArkUI.Full 499 * @crossplatform 500 * @atomicservice 501 * @since 11 502 */ 503 onDataReloaded(): void; 504 505 /** 506 * Data added. 507 * 508 * @param { number } index 509 * @syscap SystemCapability.ArkUI.ArkUI.Full 510 * @since 7 511 * @deprecated since 8 512 * @useinstead onDataAdd 513 */ 514 onDataAdded(index: number): void; 515 516 /** 517 * Data added. 518 * 519 * @param { number } index 520 * @syscap SystemCapability.ArkUI.ArkUI.Full 521 * @since 8 522 */ 523 /** 524 * Data added. 525 * 526 * @param { number } index 527 * @syscap SystemCapability.ArkUI.ArkUI.Full 528 * @crossplatform 529 * @since 10 530 */ 531 /** 532 * Data added. 533 * 534 * @param { number } index 535 * @syscap SystemCapability.ArkUI.ArkUI.Full 536 * @crossplatform 537 * @atomicservice 538 * @since 11 539 */ 540 onDataAdd(index: number): void; 541 542 /** 543 * Data moved. 544 * 545 * @param { number } from 546 * @param { number } to 547 * @syscap SystemCapability.ArkUI.ArkUI.Full 548 * @since 7 549 * @deprecated since 8 550 * @useinstead onDataMove 551 */ 552 onDataMoved(from: number, to: number): void; 553 554 /** 555 * Data moved. 556 * 557 * @param { number } from 558 * @param { number } to 559 * @syscap SystemCapability.ArkUI.ArkUI.Full 560 * @since 8 561 */ 562 /** 563 * Data moved. 564 * 565 * @param { number } from 566 * @param { number } to 567 * @syscap SystemCapability.ArkUI.ArkUI.Full 568 * @crossplatform 569 * @since 10 570 */ 571 /** 572 * Data moved. 573 * 574 * @param { number } from 575 * @param { number } to 576 * @syscap SystemCapability.ArkUI.ArkUI.Full 577 * @crossplatform 578 * @atomicservice 579 * @since 11 580 */ 581 onDataMove(from: number, to: number): void; 582 583 /** 584 * Data deleted. 585 * 586 * @param { number } index 587 * @syscap SystemCapability.ArkUI.ArkUI.Full 588 * @since 7 589 * @deprecated since 8 590 * @useinstead onDataDelete 591 */ 592 onDataDeleted(index: number): void; 593 594 /** 595 * Data deleted. 596 * 597 * @param { number } index 598 * @syscap SystemCapability.ArkUI.ArkUI.Full 599 * @since 8 600 */ 601 /** 602 * Data deleted. 603 * 604 * @param { number } index 605 * @syscap SystemCapability.ArkUI.ArkUI.Full 606 * @crossplatform 607 * @since 10 608 */ 609 /** 610 * Data deleted. 611 * 612 * @param { number } index 613 * @syscap SystemCapability.ArkUI.ArkUI.Full 614 * @crossplatform 615 * @atomicservice 616 * @since 11 617 */ 618 onDataDelete(index: number): void; 619 620 /** 621 * Call when has data change. 622 * 623 * @param { number } index 624 * @syscap SystemCapability.ArkUI.ArkUI.Full 625 * @since 7 626 * @deprecated since 8 627 * @useinstead onDataChange 628 */ 629 onDataChanged(index: number): void; 630 631 /** 632 * Call when has data change. 633 * 634 * @param { number } index 635 * @syscap SystemCapability.ArkUI.ArkUI.Full 636 * @since 8 637 */ 638 /** 639 * Call when has data change. 640 * 641 * @param { number } index 642 * @syscap SystemCapability.ArkUI.ArkUI.Full 643 * @crossplatform 644 * @since 10 645 */ 646 /** 647 * Call when has data change. 648 * 649 * @param { number } index 650 * @syscap SystemCapability.ArkUI.ArkUI.Full 651 * @crossplatform 652 * @atomicservice 653 * @since 11 654 */ 655 onDataChange(index: number): void; 656 657 /** 658 * Call when multiple data change. 659 * 660 * @param { DataOperation[] } dataOperations 661 * @syscap SystemCapability.ArkUI.ArkUI.Full 662 * @crossplatform 663 * @atomicservice 664 * @since 12 665 */ 666 onDatasetChange(dataOperations: DataOperation[]): void; 667} 668 669/** 670 * Developers need to implement this interface to provide data to LazyForEach component. 671 * 672 * @interface IDataSource 673 * @syscap SystemCapability.ArkUI.ArkUI.Full 674 * @since 7 675 */ 676/** 677 * Developers need to implement this interface to provide data to LazyForEach component. 678 * 679 * @interface IDataSource 680 * @syscap SystemCapability.ArkUI.ArkUI.Full 681 * @crossplatform 682 * @since 10 683 */ 684/** 685 * Developers need to implement this interface to provide data to LazyForEach component. 686 * 687 * @interface IDataSource 688 * @syscap SystemCapability.ArkUI.ArkUI.Full 689 * @crossplatform 690 * @atomicservice 691 * @since 11 692 */ 693declare interface IDataSource { 694 /** 695 * Total data count. 696 * 697 * @returns { number } 698 * @syscap SystemCapability.ArkUI.ArkUI.Full 699 * @since 7 700 */ 701 /** 702 * Total data count. 703 * 704 * @returns { number } 705 * @syscap SystemCapability.ArkUI.ArkUI.Full 706 * @crossplatform 707 * @since 10 708 */ 709 /** 710 * Total data count. 711 * 712 * @returns { number } 713 * @syscap SystemCapability.ArkUI.ArkUI.Full 714 * @crossplatform 715 * @atomicservice 716 * @since 11 717 */ 718 totalCount(): number; 719 720 /** 721 * Return the data of index. 722 * 723 * @param { number } index 724 * @returns { any } 725 * @syscap SystemCapability.ArkUI.ArkUI.Full 726 * @since 7 727 */ 728 /** 729 * Return the data of index. 730 * 731 * @param { number } index 732 * @returns { any } 733 * @syscap SystemCapability.ArkUI.ArkUI.Full 734 * @crossplatform 735 * @since 10 736 */ 737 /** 738 * Return the data of index. 739 * 740 * @param { number } index 741 * @returns { any } 742 * @syscap SystemCapability.ArkUI.ArkUI.Full 743 * @crossplatform 744 * @atomicservice 745 * @since 11 746 */ 747 getData(index: number): any; 748 749 /** 750 * Register data change listener. 751 * 752 * @param { DataChangeListener } listener 753 * @syscap SystemCapability.ArkUI.ArkUI.Full 754 * @since 7 755 */ 756 /** 757 * Register data change listener. 758 * 759 * @param { DataChangeListener } listener 760 * @syscap SystemCapability.ArkUI.ArkUI.Full 761 * @crossplatform 762 * @since 10 763 */ 764 /** 765 * Register data change listener. 766 * 767 * @param { DataChangeListener } listener 768 * @syscap SystemCapability.ArkUI.ArkUI.Full 769 * @crossplatform 770 * @atomicservice 771 * @since 11 772 */ 773 registerDataChangeListener(listener: DataChangeListener): void; 774 775 /** 776 * Unregister data change listener. 777 * 778 * @param { DataChangeListener } listener 779 * @syscap SystemCapability.ArkUI.ArkUI.Full 780 * @since 7 781 */ 782 /** 783 * Unregister data change listener. 784 * 785 * @param { DataChangeListener } listener 786 * @syscap SystemCapability.ArkUI.ArkUI.Full 787 * @crossplatform 788 * @since 10 789 */ 790 /** 791 * Unregister data change listener. 792 * 793 * @param { DataChangeListener } listener 794 * @syscap SystemCapability.ArkUI.ArkUI.Full 795 * @crossplatform 796 * @atomicservice 797 * @since 11 798 */ 799 unregisterDataChangeListener(listener: DataChangeListener): void; 800} 801 802/** 803 * declare ForEachAttribute 804 * 805 * @extends DynamicNode<LazyForEachAttribute> 806 * @syscap SystemCapability.ArkUI.ArkUI.Full 807 * @crossplatform 808 * @atomicservice 809 * @since 12 810 */ 811declare class LazyForEachAttribute extends DynamicNode<LazyForEachAttribute> { 812} 813/** 814 * Lazy loading. 815 * 816 * @interface LazyForEachInterface 817 * @syscap SystemCapability.ArkUI.ArkUI.Full 818 * @since 7 819 */ 820/** 821 * Lazy loading. 822 * 823 * @interface LazyForEachInterface 824 * @syscap SystemCapability.ArkUI.ArkUI.Full 825 * @crossplatform 826 * @since 10 827 */ 828/** 829 * Lazy loading. 830 * 831 * @interface LazyForEachInterface 832 * @syscap SystemCapability.ArkUI.ArkUI.Full 833 * @crossplatform 834 * @atomicservice 835 * @since 11 836 */ 837interface LazyForEachInterface { 838 /** 839 * Enter the value to obtain the LazyForEach. 840 * 841 * @param { IDataSource } dataSource 842 * @param { function } itemGenerator 843 * @param { function } keyGenerator 844 * @returns { LazyForEachInterface } 845 * @syscap SystemCapability.ArkUI.ArkUI.Full 846 * @since 7 847 */ 848 /** 849 * Enter the value to obtain the LazyForEach. 850 * 851 * @param { IDataSource } dataSource 852 * @param { function } itemGenerator 853 * @param { function } keyGenerator 854 * @returns { LazyForEachInterface } 855 * @syscap SystemCapability.ArkUI.ArkUI.Full 856 * @crossplatform 857 * @since 10 858 */ 859 /** 860 * Enter the value to obtain the LazyForEach. 861 * 862 * @param { IDataSource } dataSource 863 * @param { function } itemGenerator 864 * @param { function } keyGenerator 865 * @returns { LazyForEachInterface } 866 * @syscap SystemCapability.ArkUI.ArkUI.Full 867 * @crossplatform 868 * @atomicservice 869 * @since 11 870 */ 871 /** 872 * Enter the value to obtain the LazyForEach. 873 * 874 * @param { IDataSource } dataSource 875 * @param { function } itemGenerator 876 * @param { function } keyGenerator 877 * @returns { LazyForEachAttribute } 878 * @syscap SystemCapability.ArkUI.ArkUI.Full 879 * @crossplatform 880 * @atomicservice 881 * @since 12 882 */ 883 ( 884 dataSource: IDataSource, 885 itemGenerator: (item: any, index: number) => void, 886 keyGenerator?: (item: any, index: number) => string, 887 ): LazyForEachAttribute; 888} 889 890/** 891 * Defines LazyForEach Component. 892 * 893 * @syscap SystemCapability.ArkUI.ArkUI.Full 894 * @since 7 895 */ 896/** 897 * Defines LazyForEach Component. 898 * 899 * @syscap SystemCapability.ArkUI.ArkUI.Full 900 * @crossplatform 901 * @since 10 902 */ 903/** 904 * Defines LazyForEach Component. 905 * 906 * @syscap SystemCapability.ArkUI.ArkUI.Full 907 * @crossplatform 908 * @atomicservice 909 * @since 11 910 */ 911declare const LazyForEach: LazyForEachInterface; 912