mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-17 02:31:34 +08:00

* docs(all): add global config docs fixes #16109 * lint issue * add tabButtonLayout * tabs docs
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import { Component, ComponentInterface, Prop } from '@stencil/core';
|
|
|
|
import { Config, Mode, SpinnerTypes } from '../../interface';
|
|
import { createThemedClasses } from '../../utils/theme';
|
|
|
|
@Component({
|
|
tag: 'ion-infinite-scroll-content',
|
|
styleUrls: {
|
|
ios: 'infinite-scroll-content.ios.scss',
|
|
md: 'infinite-scroll-content.md.scss'
|
|
}
|
|
})
|
|
export class InfiniteScrollContent implements ComponentInterface {
|
|
|
|
mode!: Mode;
|
|
|
|
@Prop({ context: 'config' }) config!: Config;
|
|
|
|
/**
|
|
* An animated SVG spinner that shows while loading.
|
|
*/
|
|
@Prop({ mutable: true }) loadingSpinner?: SpinnerTypes | null;
|
|
|
|
/**
|
|
* Optional text to display while loading.
|
|
*/
|
|
@Prop() loadingText?: string;
|
|
|
|
componentDidLoad() {
|
|
if (this.loadingSpinner === undefined) {
|
|
this.loadingSpinner = this.config.get(
|
|
'infiniteLoadingSpinner',
|
|
this.config.get('spinner', 'lines')
|
|
);
|
|
}
|
|
}
|
|
|
|
hostData() {
|
|
return {
|
|
class: createThemedClasses(this.mode, 'infinite-scroll-content')
|
|
};
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<div class="infinite-loading">
|
|
{this.loadingSpinner && (
|
|
<div class="infinite-loading-spinner">
|
|
<ion-spinner name={this.loadingSpinner} />
|
|
</div>
|
|
)}
|
|
{this.loadingText && (
|
|
<div class="infinite-loading-text" innerHTML={this.loadingText} />
|
|
)}
|
|
</div>
|
|
);
|
|
}
|
|
}
|