{"version":3,"file":"uofx-app-components-infinite-scroll.mjs","sources":["../../../projects/uofx-app-pack/infinite-scroll/src/infinite-scroll.component.ts","../../../projects/uofx-app-pack/infinite-scroll/src/infinite-scroll.component.html","../../../projects/uofx-app-pack/infinite-scroll/src/infinite-scroll.module.ts","../../../projects/uofx-app-pack/infinite-scroll/uofx-app-components-infinite-scroll.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { IUofxInfiniteScrollEvent } from './interface';\r\n\r\n@Component({\r\n  selector: 'uofx-infinite-scroll',\r\n  templateUrl: './infinite-scroll.component.html',\r\n  styleUrls: ['./infinite-scroll.component.scss'],\r\n})\r\nexport class UofxInfiniteScrollComponent implements OnChanges {\r\n  /** 不使用infinite-scroll效果 */\r\n  @Input() stopInfinite = true;\r\n\r\n  /** 不使用Refresh效果 */\r\n  @Input() stopRefresh = false;\r\n\r\n  /** 顯示Loading效果 */\r\n  @Input() isLoading: boolean;\r\n\r\n  /** loading的樣式 */\r\n  @Input() loadingStyle: 'skeleton' | 'spinner' = 'skeleton';\r\n\r\n  /** skeleton的樣式 */\r\n  @Input() skeletonType: 'list' | 'block' | 'full' = 'list';\r\n\r\n  /** 列表樣式時需有幾行skeleton-text(default:預設為3行、min: 1行) */\r\n  @Input() skeletonTextType: 'default' | 'min' = null;\r\n\r\n  /** 顯示查詢條件要更準確的提示 */\r\n  @Input() showSearchTip = true;\r\n\r\n  /** 資料總筆數，目前用來作為\"顯示查詢條件要更準確的提示\"的條件之一 */\r\n  @Input() itemAmount = 0;\r\n\r\n  /** 載入其它資料 */\r\n  @Output() infinite = new EventEmitter<any>();\r\n\r\n  isShowLoading = false;\r\n\r\n  constructor() {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Skeleton 本身有延遲 200ms\r\n    // 在列表上看起來太快，但在首頁又太慢\r\n    // 所以目前 skeleton 在電子簽核列表為 400ms + 200ms\r\n    if (changes.isLoading) {\r\n      if (this.isLoading) {\r\n        setTimeout(() => {\r\n          if (this.isLoading) this.isShowLoading = true;\r\n        }, 400);\r\n      } else {\r\n        this.isShowLoading = false;\r\n      }\r\n    } else {\r\n      this.isShowLoading = this.isLoading;\r\n    }\r\n  }\r\n\r\n  /** Inifite事件 */\r\n  doInifite(event) {\r\n    const emitEvent: IUofxInfiniteScrollEvent = {\r\n      complete: () => event.target.complete(),\r\n    };\r\n    this.infinite.emit(emitEvent);\r\n  }\r\n}\r\n","<!-- 內容 -->\r\n<ng-content></ng-content>\r\n<div class=\"infinite-scroll\">\r\n  <!-- skeleton -->\r\n  <ng-container *ngIf=\"isShowLoading\">\r\n    <ng-container [ngSwitch]=\"loadingStyle\">\r\n      <ng-container *ngSwitchCase=\"'skeleton'\">\r\n        <uofx-skeleton [type]=\"skeletonType\" [count]=\"5\" [skeletonTextType]=\"skeletonTextType\"></uofx-skeleton>\r\n      </ng-container>\r\n      <ng-container *ngSwitchCase=\"'spinner'\">\r\n        <div class=\"spinner\">\r\n          <ion-spinner></ion-spinner>\r\n        </div>\r\n      </ng-container>\r\n    </ng-container>\r\n  </ng-container>\r\n  <!-- 查詢結果提示 -->\r\n  <div class=\"search-tip\" *ngIf=\"itemAmount >= 500 && showSearchTip\">\r\n    <ion-label>\r\n      <p [translate]=\"'global.comm.search-tip.too-many-result'\"></p>\r\n      <p [translate]=\"'global.comm.search-tip.narrow-down'\"></p>\r\n    </ion-label>\r\n  </div>\r\n\r\n  <ion-infinite-scroll\r\n    threshold=\"100px\"\r\n    (ionInfinite)=\"doInifite($event)\"\r\n    [disabled]=\"stopInfinite || (itemAmount >= 500 && showSearchTip)\">\r\n    <ion-infinite-scroll-content loadingText=\"Loading more data...\"> </ion-infinite-scroll-content>\r\n  </ion-infinite-scroll>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { UofxSkeletonModule } from '@uofx/app-components/skeleton';\r\nimport { UofxInfiniteScrollComponent } from './infinite-scroll.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, IonicModule, UofxSkeletonModule],\r\n  exports: [UofxInfiniteScrollComponent],\r\n  declarations: [UofxInfiniteScrollComponent],\r\n  providers: [],\r\n})\r\nexport class UofxInfiniteScrollModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}