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