ion-infinite-scroll-content.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*!
  2. * (C) Ionic http://ionicframework.com - MIT License
  3. */
  4. import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
  5. import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config.js';
  6. import { c as config } from './index4.js';
  7. import { b as getIonMode } from './ionic-global.js';
  8. import { d as defineCustomElement$2 } from './spinner.js';
  9. const infiniteScrollContentIosCss = "ion-infinite-scroll-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;min-height:84px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.infinite-loading{margin-left:0;margin-right:0;margin-top:0;margin-bottom:32px;display:none;width:100%}.infinite-loading-text{-webkit-margin-start:32px;margin-inline-start:32px;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:4px;margin-bottom:0}.infinite-scroll-loading ion-infinite-scroll-content>.infinite-loading{display:block}.infinite-scroll-content-ios .infinite-loading-text{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-ios .infinite-loading-spinner .spinner-lines-ios line,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-lines-small-ios line,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-crescent circle{stroke:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-ios .infinite-loading-spinner .spinner-bubbles circle,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-circles circle,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-dots circle{fill:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}";
  10. const IonInfiniteScrollContentIosStyle0 = infiniteScrollContentIosCss;
  11. const infiniteScrollContentMdCss = "ion-infinite-scroll-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;min-height:84px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.infinite-loading{margin-left:0;margin-right:0;margin-top:0;margin-bottom:32px;display:none;width:100%}.infinite-loading-text{-webkit-margin-start:32px;margin-inline-start:32px;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:4px;margin-bottom:0}.infinite-scroll-loading ion-infinite-scroll-content>.infinite-loading{display:block}.infinite-scroll-content-md .infinite-loading-text{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-md .infinite-loading-spinner .spinner-lines-md line,.infinite-scroll-content-md .infinite-loading-spinner .spinner-lines-small-md line,.infinite-scroll-content-md .infinite-loading-spinner .spinner-crescent circle{stroke:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-md .infinite-loading-spinner .spinner-bubbles circle,.infinite-scroll-content-md .infinite-loading-spinner .spinner-circles circle,.infinite-scroll-content-md .infinite-loading-spinner .spinner-dots circle{fill:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}";
  12. const IonInfiniteScrollContentMdStyle0 = infiniteScrollContentMdCss;
  13. const InfiniteScrollContent = /*@__PURE__*/ proxyCustomElement(class InfiniteScrollContent extends HTMLElement {
  14. constructor() {
  15. super();
  16. this.__registerHost();
  17. this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
  18. this.loadingSpinner = undefined;
  19. this.loadingText = undefined;
  20. }
  21. componentDidLoad() {
  22. if (this.loadingSpinner === undefined) {
  23. const mode = getIonMode(this);
  24. this.loadingSpinner = config.get('infiniteLoadingSpinner', config.get('spinner', mode === 'ios' ? 'lines' : 'crescent'));
  25. }
  26. }
  27. renderLoadingText() {
  28. const { customHTMLEnabled, loadingText } = this;
  29. if (customHTMLEnabled) {
  30. return h("div", { class: "infinite-loading-text", innerHTML: sanitizeDOMString(loadingText) });
  31. }
  32. return h("div", { class: "infinite-loading-text" }, this.loadingText);
  33. }
  34. render() {
  35. const mode = getIonMode(this);
  36. return (h(Host, { key: '7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa', class: {
  37. [mode]: true,
  38. // Used internally for styling
  39. [`infinite-scroll-content-${mode}`]: true,
  40. } }, h("div", { key: 'a94f4d8746e053dc718f97520bd7e48cb316443a', class: "infinite-loading" }, this.loadingSpinner && (h("div", { key: '10143d5d2a50a2a2bc5de1cee8e7ab51263bcf23', class: "infinite-loading-spinner" }, h("ion-spinner", { key: '8846e88191690d9c61a0b462889ed56fbfed8b0d', name: this.loadingSpinner }))), this.loadingText !== undefined && this.renderLoadingText())));
  41. }
  42. static get style() { return {
  43. ios: IonInfiniteScrollContentIosStyle0,
  44. md: IonInfiniteScrollContentMdStyle0
  45. }; }
  46. }, [32, "ion-infinite-scroll-content", {
  47. "loadingSpinner": [1025, "loading-spinner"],
  48. "loadingText": [1, "loading-text"]
  49. }]);
  50. function defineCustomElement$1() {
  51. if (typeof customElements === "undefined") {
  52. return;
  53. }
  54. const components = ["ion-infinite-scroll-content", "ion-spinner"];
  55. components.forEach(tagName => { switch (tagName) {
  56. case "ion-infinite-scroll-content":
  57. if (!customElements.get(tagName)) {
  58. customElements.define(tagName, InfiniteScrollContent);
  59. }
  60. break;
  61. case "ion-spinner":
  62. if (!customElements.get(tagName)) {
  63. defineCustomElement$2();
  64. }
  65. break;
  66. } });
  67. }
  68. const IonInfiniteScrollContent = InfiniteScrollContent;
  69. const defineCustomElement = defineCustomElement$1;
  70. export { IonInfiniteScrollContent, defineCustomElement };