ionic-framework icon indicating copy to clipboard operation
ionic-framework copied to clipboard

feat: Add option to IonicConfig to disable Ionic warning and error logs

Open aleksander351 opened this issue 1 year ago • 8 comments

Prerequisites

Ionic Framework Version

v7.x

Current Behavior

I am (still) getting an endless error message which doesn't describe what the problem actually is.

this was the old issue, which was apparently caused by domino. https://github.com/ionic-team/ionic-framework/issues/27564

Now, after upgrading Angular from 15.2.9 to 16.2.12, the domino library is not present in node_modules anymore. But the error message is back again.

image

Another problem below is with the labelText.

It looks like label="" is a mandatory attribute of ion-select. If I only provide the aria-label attribute, like the documentation suggests, I get the above error.

So, I got it working with an empty label="" and some CSS hacks.

Expected Behavior

there are no errors in the console after Ionic update.

ion-select works without the label attribute.

Steps to Reproduce

Everything is already described here.

https://github.com/ionic-team/ionic-framework/issues/27564

Code Reproduction URL

https://github.com/aleksander351/ionic7-ssr-basic

Ionic Info

Ionic:

Ionic CLI : 6.12.3 (C:\Users\alex\AppData\Roaming\npm\node_modules@ionic\cli) Ionic Framework : not installed @angular-devkit/build-angular : 16.2.14 @angular-devkit/schematics : 16.2.14 @angular/cli : 16.2.14 @ionic/angular-toolkit : 9.0.0

Capacitor:

Capacitor CLI : 5.7.8 @capacitor/core : 5.7.8

Utility:

cordova-res : not installed native-run : 2.0.1

System:

NodeJS : v20.14.0 (C:\Program Files\nodejs\node.exe) npm : 10.8.1 OS : Windows 10

Additional Information

No response

aleksander351 avatar Aug 28 '24 18:08 aleksander351

@aleksander351 if the issue you are experiencing is the same as the one you referenced, have you opened a ticket with that respective project?

Ionic Framework is not responsible for breakages in Angular or packages used by Angular. That team would the best to report the issue to, especially if they've addressed a similar issue in the past.

sean-perkins avatar Aug 30 '24 14:08 sean-perkins

@aleksander351 if the issue you are experiencing is the same as the one you referenced, have you opened a ticket with that respective project?

Ionic Framework is not responsible for breakages in Angular or packages used by Angular. That team would the best to report the issue to, especially if they've addressed a similar issue in the past.

Ionic is dependent on Angular, not Angular on Ionic. (IF Ionic want's to continue to support Angular of course).

If Angular doesn't use strict null checks, so shouldn't Ionic. On a side note, in Angular there is no need for IonViewDidEnter etc. Ionic decided to "extend" Angulars navigation logic, introducing new problems that it needs to maintain.

Angular didn't break anything, Ionic was not and continues to not play well with Angular. Don't even get me started on SSR and Hydration.

After all, the mountain didn't come to Mohammad.

I hope this wasn't too much of a rant. I understand it's difficult to keep up with their changes. Now if they decide to ditch zone, I don't imagine Ionic keeps depending on zone.

aleksander351 avatar Sep 01 '24 12:09 aleksander351

Is there at least an option to turn those logs off?

[Ionic Warning]: The "helper" slot has been deprecated in favor of using the "helperText" property on ion-input or ion-textarea.
[Ionic Warning]: The "helper" slot has been deprecated in favor of using the "helperText" property on ion-input or ion-textarea. <ref *4> ctor {
  parentNode: <ref *2> ctor {
    parentNode: <ref *1> ctor {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: undefined,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-row',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-ROW',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 1997,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *1],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Object],
      's-sc': 'sc-ion-row',
      _classList: [DOMTokenList],
      's-en': ''
    },
    _previousSibling: <ref *3> ctor {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [Circular *2],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2139,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *3],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 656,
      _children: [Object],
      's-cr': [Object],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _nextSibling: {
      parentNode: [ctor],
      _previousSibling: [Circular *2],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 1998
    },
    _index: 4,
    _childNodes: [ [Object], [Object], [Object], [Circular *4] ],
    _firstChild: null,
    nodeType: 1,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    localName: 'ion-col',
    namespaceURI: 'http://www.w3.org/1999/xhtml',
    prefix: null,
    _tagName: 'ION-COL',
    _attrsByQName: [Object: null prototype] {
      size: [Object],
      class: [Object],
      ngh: [Object],
      style: [Object]
    },
    _attrsByLName: [Object: null prototype] {
      '|size': [Object],
      '|class': [Object],
      '|ngh': [Object],
      '|style': [Object]
    },
    _attrKeys: [ '|size', '|class', '|ngh', '|style' ],
    __ngContext__: 63,
    _nid: 2132,
    connectedCallback: [Function: f],
    's-p': [],
    's-rc': undefined,
    componentOnReady: [Function: componentOnReady$1],
    forceUpdate: [Function: forceUpdate],
    shadowRoot: [Circular *2],
    offset: [Getter/Setter],
    offsetXs: [Getter/Setter],
    offsetSm: [Getter/Setter],
    offsetMd: [Getter/Setter],
    offsetLg: [Getter/Setter],
    offsetXl: [Getter/Setter],
    pull: [Getter/Setter],
    pullXs: [Getter/Setter],
    pullSm: [Getter/Setter],
    pullMd: [Getter/Setter],
    pullLg: [Getter/Setter],
    pullXl: [Getter/Setter],
    push: [Getter/Setter],
    pushXs: [Getter/Setter],
    pushSm: [Getter/Setter],
    pushMd: [Getter/Setter],
    pushLg: [Getter/Setter],
    pushXl: [Getter/Setter],
    size: [Getter/Setter],
    sizeXs: [Getter/Setter],
    sizeSm: [Getter/Setter],
    sizeMd: [Getter/Setter],
    sizeLg: [Getter/Setter],
    sizeXl: [Getter/Setter],
    _lastModTime: 660,
    _children: {
      '0': [Circular *4],
      element: [Circular *2],
      lastModTime: 637,
      childrenByNumber: [Array],
      childrenByName: [Object: null prototype] {}
    },
    's-cr': {
      parentNode: [Circular *2],
      _previousSibling: [Circular *4],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2133
    },
    's-sn': '',
    's-sh': 'ION-ROW',
    's-ol': {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [Object],
      _index: 2,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-col> (host=undefined)',
      's-nr': [Circular *2],
      _nid: 2130
    },
    's-hn': 'ION-ROW',
    's-sc': 'sc-ion-col',
    _classList: DOMTokenList {
      '0': 'short-radio',
      '1': 'sc-ion-col-h',
      '2': 'md',
      '3': 'sc-ion-col-s',
      _getString: [Function (anonymous)],
      _setString: [Function (anonymous)],
      _length: 4,
      _lastStringValue: 'short-radio sc-ion-col-h md sc-ion-col-s'
    },
    _style: {
      _element: [Circular *2],
      _parsedStyles: [Object],
      _lastParsedText: 'flex: 0 0 50%; width: 50%; max-width: 50%;'
    },
    's-en': ''
  },
  _previousSibling: <ref *6> {
    parentNode: <ref *2> ctor {
      parentNode: [ctor],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2132,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *2],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Object],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _previousSibling: {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [Circular *6],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-item> (host=undefined)',
      's-nr': [Circular *4],
      _nid: 2180
    },
    _nextSibling: [Circular *4],
    _index: 3,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: '<slot> (host=ion-col)',
    's-hn': 'ION-COL',
    's-sr': true,
    's-cr': {
      parentNode: [ctor],
      _previousSibling: [Circular *4],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2133
    },
    's-sn': '',
    's-rf': undefined,
    _nid: 2179
  },
  _nextSibling: <ref *7> {
    parentNode: <ref *2> ctor {
      parentNode: [ctor],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2132,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *2],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Circular *7],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _previousSibling: [Circular *4],
    _nextSibling: {
      parentNode: [ctor],
      _previousSibling: [Circular *7],
      _nextSibling: [Object],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-item> (host=undefined)',
      's-nr': [Circular *4],
      _nid: 2180
    },
    _index: 0,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: '',
    's-cn': true,
    _nid: 2133
  },
  _index: 3,
  _childNodes: [
    {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2182
    },
    {
      parentNode: [Circular *4],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-radio> (host=undefined)',
      's-nr': [ctor],
      _nid: 2218
    },
    ctor {
      parentNode: [Circular *4],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: 3,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      _listeners: [Object: null prototype],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2206,
      _lastModTime: 660,
      _children: [Object]
    },
    ctor {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2215,
      _lastModTime: 651,
      _children: [Object]
    }
  ],
  _firstChild: null,
  nodeType: 1,
  ownerDocument: <ref *5> {
    parentNode: null,
    _previousSibling: [Circular *5],
    _nextSibling: [Circular *5],
    _index: undefined,
    _childNodes: null,
    _firstChild: {
      parentNode: [Circular *5],
      _previousSibling: [ctor],
      _nextSibling: [ctor],
      _index: undefined,
      nodeType: 10,
      ownerDocument: [Circular *5],
      name: 'html',
      publicId: '',
      systemId: '',
      _nid: 2
    },
    nodeType: 9,
    isHTML: true,
    _address: 'http://localhost:62256/',
    readyState: 'loading',
    implementation: { contextObject: [Circular *5] },
    ownerDocument: null,
    _contentType: 'text/html',
    doctype: {
      parentNode: [Circular *5],
      _previousSibling: [ctor],
      _nextSibling: [ctor],
      _index: undefined,
      nodeType: 10,
      ownerDocument: [Circular *5],
      name: 'html',
      publicId: '',
      systemId: '',
      _nid: 2
    },
    documentElement: ctor {
      parentNode: [Circular *5],
      _previousSibling: [Object],
      _nextSibling: [Object],
      _index: undefined,
      _childNodes: null,
      _firstChild: [ctor],
      nodeType: 1,
      ownerDocument: [Circular *5],
      localName: 'html',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'HTML',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _nid: 3,
      _classList: [DOMTokenList]
    },
    _templateDocCache: null,
    _nodeIterators: null,
    _nid: 1,
    _nextnid: 2243,
    _nodes: [
      null,      [Circular *5], [Object],  [ctor],    [ctor],
      [Object],  [ctor],        [Object],  [ctor],    undefined,
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [Object],  [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [ctor],    [ctor],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [ctor],    [ctor],        [Object],  [ctor],    [Object],
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      ... 2143 more items
    ],
    byId: [Object: null prototype] {
      main: [ctor],
      'serverApp-state': [ctor],
      'background-content': [MultiId],
      'ion-input-0': [ctor],
      'select-label': [ctor],
      'ion-sel-0': [ctor],
      'ion-selopt-0': [ctor],
      'ion-selopt-1': [ctor],
      'ion-selopt-2': [ctor],
      'ion-selopt-3': [ctor],
      'ion-selopt-4': [ctor],
      'ion-selopt-5': [ctor],
      'ion-selopt-6': [ctor],
      'ion-selopt-7': [ctor],
      'ion-selopt-8': [ctor]
    },
    modclock: 660,
    _scripting_enabled: true,
    defaultView: {
      document: [Circular *5],
      location: [Location],
      _listeners: [Object: null prototype],
      alert: [Function: bound alert],
      blur: [Function: bound blur],
      cancelAnimationFrame: [Function: bound cancelAnimationFrame],
      cancelIdleCallback: [Function: bound cancelIdleCallback],
      close: [Function: bound close],
      confirm: [Function: bound confirm],
      focus: [Function: bound focus],
      matchMedia: [Function: bound matchMedia],
      open: [Function: bound open],
      prompt: [Function: bound prompt],
      requestAnimationFrame: [Function: bound requestAnimationFrame],
      requestIdleCallback: [Function: bound requestIdleCallback],
      URL: [Function: bound URL],
      customElements: null,
      __allowInterval: false,
      __maxTimeout: 0,
      fetch: [Function (anonymous)],
      FetchError: [class (anonymous)],
      Headers: [class (anonymous)],
      Request: [class (anonymous)],
      Response: [class (anonymous)],
      Ionic: [Object]
    },
    _lastModTime: 1,
    _listeners: [Object: null prototype] {
      pause: [Array],
      resume: [Array],
      ionBackButton: [Array],
      keydown: [Array]
    },
    createElement: [Function (anonymous)],
    createElementNS: [Function (anonymous)]
  },
  localName: 'ion-item',
  namespaceURI: 'http://www.w3.org/1999/xhtml',
  prefix: null,
  _tagName: 'ION-ITEM',
  _attrsByQName: [Object: null prototype] {
    class: {
      localName: 'class',
      prefix: null,
      namespaceURI: null,
      data: 'item-has-value item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none item-has-interactive-control ion-activatable ion-focusable hydrated',
      _ownerElement: [Circular *4],
      onchange: [Function (anonymous)]
    },
    ngh: {
      localName: 'ngh',
      prefix: null,
      namespaceURI: null,
      data: '0',
      _ownerElement: [Circular *4],
      onchange: undefined
    },
    's-mode': {
      localName: 's-mode',
      prefix: null,
      namespaceURI: null,
      data: 'md',
      _ownerElement: [Circular *4],
      onchange: undefined
    }
  },
  _attrsByLName: [Object: null prototype] {
    '|class': {
      localName: 'class',
      prefix: null,
      namespaceURI: null,
      data: 'item-has-value item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none item-has-interactive-control ion-activatable ion-focusable hydrated',
      _ownerElement: [Circular *4],
      onchange: [Function (anonymous)]
    },
    '|ngh': {
      localName: 'ngh',
      prefix: null,
      namespaceURI: null,
      data: '0',
      _ownerElement: [Circular *4],
      onchange: undefined
    },
    '|s-mode': {
      localName: 's-mode',
      prefix: null,
      namespaceURI: null,
      data: 'md',
      _ownerElement: [Circular *4],
      onchange: undefined
    }
  },
  _attrKeys: [ '|class', '|ngh', '|s-mode' ],
  __ngContext__: 63,
  _nid: 2181,
  _classList: DOMTokenList {
    '0': 'item-has-value',
    '1': 'item-has-start-slot',
    '2': 'sc-ion-item-md-h',
    '3': 'item',
    '4': 'md',
    '5': 'item-lines-default',
    '6': 'item-fill-none',
    '7': 'item-has-interactive-control',
    '8': 'ion-activatable',
    '9': 'ion-focusable',
    '10': 'hydrated',
    _getString: [Function (anonymous)],
    _setString: [Function (anonymous)],
    _length: 11,
    _lastStringValue: 'item-has-value item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none item-has-interactive-control ion-activatable ion-focusable hydrated'
  },
  connectedCallback: [Function: f],
  's-p': [],
  's-rc': undefined,
  _listeners: [Object: null prototype] {
    ionInput: [ [Object] ],
    ionColor: [ [Object] ],
    ionStyle: [ [Object] ]
  },
  componentOnReady: [Function: componentOnReady$1],
  forceUpdate: [Function: forceUpdate],
  shadowRoot: [Circular *4],
  color: [Getter/Setter],
  button: [Getter/Setter],
  detail: [Getter/Setter],
  detailIcon: [Getter/Setter],
  disabled: [Getter/Setter],
  download: [Getter/Setter],
  fill: [Getter/Setter],
  shape: [Getter/Setter],
  href: [Getter/Setter],
  rel: [Getter/Setter],
  lines: [Getter/Setter],
  counter: [Getter/Setter],
  routerAnimation: [Getter/Setter],
  routerDirection: [Getter/Setter],
  target: [Getter/Setter],
  type: [Getter/Setter],
  counterFormatter: [Getter/Setter],
  _lastModTime: 660,
  _children: {
    '0': ctor {
      parentNode: [Circular *4],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: 3,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      _listeners: [Object: null prototype],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2206,
      _lastModTime: 660,
      _children: [Object]
    },
    '1': ctor {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2215,
      _lastModTime: 651,
      _children: [Object]
    },
    element: [Circular *4],
    lastModTime: 650,
    childrenByNumber: [ [ctor], [ctor] ],
    childrenByName: [Object: null prototype] {}
  },
  's-cr': <ref *8> {
    parentNode: [Circular *4],
    _previousSibling: ctor {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Circular *8],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2215,
      _lastModTime: 651,
      _children: [Object]
    },
    _nextSibling: {
      parentNode: [Circular *4],
      _previousSibling: [Circular *8],
      _nextSibling: [ctor],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-radio> (host=undefined)',
      's-nr': [ctor],
      _nid: 2218
    },
    _index: 0,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: '',
    's-cn': true,
    _nid: 2182
  },
  's-sn': '',
  's-sh': 'ION-COL',
  's-ol': <ref *9> {
    parentNode: <ref *2> ctor {
      parentNode: [ctor],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2132,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *2],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Object],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _previousSibling: <ref *7> {
      parentNode: [ctor],
      _previousSibling: [Circular *4],
      _nextSibling: [Circular *9],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2133
    },
    _nextSibling: <ref *6> {
      parentNode: [ctor],
      _previousSibling: [Circular *9],
      _nextSibling: [Circular *4],
      _index: 3,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '<slot> (host=ion-col)',
      's-hn': 'ION-COL',
      's-sr': true,
      's-cr': [Object],
      's-sn': '',
      's-rf': undefined,
      _nid: 2179
    },
    _index: 1,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: 'org-location for <ion-item> (host=undefined)',
    's-nr': [Circular *4],
    _nid: 2180
  },
  's-hn': 'ION-COL',
  's-sc': 'sc-ion-item-md',
  's-en': ''
}
[Ionic Warning]: The "error" slot has been deprecated in favor of using the "errorText" property on ion-input or ion-textarea. <ref *4> ctor {
  parentNode: <ref *2> ctor {
    parentNode: <ref *1> ctor {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: undefined,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-row',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-ROW',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 1997,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *1],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Object],
      's-sc': 'sc-ion-row',
      _classList: [DOMTokenList],
      's-en': ''
    },
    _previousSibling: <ref *3> ctor {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [Circular *2],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2139,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *3],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 656,
      _children: [Object],
      's-cr': [Object],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _nextSibling: {
      parentNode: [ctor],
      _previousSibling: [Circular *2],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 1998
    },
    _index: 4,
    _childNodes: [ [Object], [Object], [Object], [Circular *4] ],
    _firstChild: null,
    nodeType: 1,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    localName: 'ion-col',
    namespaceURI: 'http://www.w3.org/1999/xhtml',
    prefix: null,
    _tagName: 'ION-COL',
    _attrsByQName: [Object: null prototype] {
      size: [Object],
      class: [Object],
      ngh: [Object],
      style: [Object]
    },
    _attrsByLName: [Object: null prototype] {
      '|size': [Object],
      '|class': [Object],
      '|ngh': [Object],
      '|style': [Object]
    },
    _attrKeys: [ '|size', '|class', '|ngh', '|style' ],
    __ngContext__: 63,
    _nid: 2132,
    connectedCallback: [Function: f],
    's-p': [],
    's-rc': undefined,
    componentOnReady: [Function: componentOnReady$1],
    forceUpdate: [Function: forceUpdate],
    shadowRoot: [Circular *2],
    offset: [Getter/Setter],
    offsetXs: [Getter/Setter],
    offsetSm: [Getter/Setter],
    offsetMd: [Getter/Setter],
    offsetLg: [Getter/Setter],
    offsetXl: [Getter/Setter],
    pull: [Getter/Setter],
    pullXs: [Getter/Setter],
    pullSm: [Getter/Setter],
    pullMd: [Getter/Setter],
    pullLg: [Getter/Setter],
    pullXl: [Getter/Setter],
    push: [Getter/Setter],
    pushXs: [Getter/Setter],
    pushSm: [Getter/Setter],
    pushMd: [Getter/Setter],
    pushLg: [Getter/Setter],
    pushXl: [Getter/Setter],
    size: [Getter/Setter],
    sizeXs: [Getter/Setter],
    sizeSm: [Getter/Setter],
    sizeMd: [Getter/Setter],
    sizeLg: [Getter/Setter],
    sizeXl: [Getter/Setter],
    _lastModTime: 660,
    _children: {
      '0': [Circular *4],
      element: [Circular *2],
      lastModTime: 637,
      childrenByNumber: [Array],
      childrenByName: [Object: null prototype] {}
    },
    's-cr': {
      parentNode: [Circular *2],
      _previousSibling: [Circular *4],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2133
    },
    's-sn': '',
    's-sh': 'ION-ROW',
    's-ol': {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [Object],
      _index: 2,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-col> (host=undefined)',
      's-nr': [Circular *2],
      _nid: 2130
    },
    's-hn': 'ION-ROW',
    's-sc': 'sc-ion-col',
    _classList: DOMTokenList {
      '0': 'short-radio',
      '1': 'sc-ion-col-h',
      '2': 'md',
      '3': 'sc-ion-col-s',
      _getString: [Function (anonymous)],
      _setString: [Function (anonymous)],
      _length: 4,
      _lastStringValue: 'short-radio sc-ion-col-h md sc-ion-col-s'
    },
    _style: {
      _element: [Circular *2],
      _parsedStyles: [Object],
      _lastParsedText: 'flex: 0 0 50%; width: 50%; max-width: 50%;'
    },
    's-en': ''
  },
  _previousSibling: <ref *6> {
    parentNode: <ref *2> ctor {
      parentNode: [ctor],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2132,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *2],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Object],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _previousSibling: {
      parentNode: [ctor],
      _previousSibling: [Object],
      _nextSibling: [Circular *6],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-item> (host=undefined)',
      's-nr': [Circular *4],
      _nid: 2180
    },
    _nextSibling: [Circular *4],
    _index: 3,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: '<slot> (host=ion-col)',
    's-hn': 'ION-COL',
    's-sr': true,
    's-cr': {
      parentNode: [ctor],
      _previousSibling: [Circular *4],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2133
    },
    's-sn': '',
    's-rf': undefined,
    _nid: 2179
  },
  _nextSibling: <ref *7> {
    parentNode: <ref *2> ctor {
      parentNode: [ctor],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2132,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *2],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Circular *7],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _previousSibling: [Circular *4],
    _nextSibling: {
      parentNode: [ctor],
      _previousSibling: [Circular *7],
      _nextSibling: [Object],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-item> (host=undefined)',
      's-nr': [Circular *4],
      _nid: 2180
    },
    _index: 0,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: '',
    's-cn': true,
    _nid: 2133
  },
  _index: 3,
  _childNodes: [
    {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2182
    },
    {
      parentNode: [Circular *4],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-radio> (host=undefined)',
      's-nr': [ctor],
      _nid: 2218
    },
    ctor {
      parentNode: [Circular *4],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: 3,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      _listeners: [Object: null prototype],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2206,
      _lastModTime: 660,
      _children: [Object]
    },
    ctor {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2215,
      _lastModTime: 651,
      _children: [Object]
    }
  ],
  _firstChild: null,
  nodeType: 1,
  ownerDocument: <ref *5> {
    parentNode: null,
    _previousSibling: [Circular *5],
    _nextSibling: [Circular *5],
    _index: undefined,
    _childNodes: null,
    _firstChild: {
      parentNode: [Circular *5],
      _previousSibling: [ctor],
      _nextSibling: [ctor],
      _index: undefined,
      nodeType: 10,
      ownerDocument: [Circular *5],
      name: 'html',
      publicId: '',
      systemId: '',
      _nid: 2
    },
    nodeType: 9,
    isHTML: true,
    _address: 'http://localhost:62256/',
    readyState: 'loading',
    implementation: { contextObject: [Circular *5] },
    ownerDocument: null,
    _contentType: 'text/html',
    doctype: {
      parentNode: [Circular *5],
      _previousSibling: [ctor],
      _nextSibling: [ctor],
      _index: undefined,
      nodeType: 10,
      ownerDocument: [Circular *5],
      name: 'html',
      publicId: '',
      systemId: '',
      _nid: 2
    },
    documentElement: ctor {
      parentNode: [Circular *5],
      _previousSibling: [Object],
      _nextSibling: [Object],
      _index: undefined,
      _childNodes: null,
      _firstChild: [ctor],
      nodeType: 1,
      ownerDocument: [Circular *5],
      localName: 'html',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'HTML',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _nid: 3,
      _classList: [DOMTokenList]
    },
    _templateDocCache: null,
    _nodeIterators: null,
    _nid: 1,
    _nextnid: 2243,
    _nodes: [
      null,      [Circular *5], [Object],  [ctor],    [ctor],
      [Object],  [ctor],        [Object],  [ctor],    undefined,
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [Object],  [Object],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [Object],  [ctor],        [Object],  [ctor],    [Object],
      [ctor],    [Object],      [ctor],    [ctor],    [ctor],
      [ctor],    [Object],      [ctor],    [Object],  [ctor],
      [ctor],    [ctor],        [Object],  [ctor],    [Object],
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      undefined, undefined,     undefined, undefined, undefined,
      ... 2143 more items
    ],
    byId: [Object: null prototype] {
      main: [ctor],
      'serverApp-state': [ctor],
      'background-content': [MultiId],
      'ion-input-0': [ctor],
      'select-label': [ctor],
      'ion-sel-0': [ctor],
      'ion-selopt-0': [ctor],
      'ion-selopt-1': [ctor],
      'ion-selopt-2': [ctor],
      'ion-selopt-3': [ctor],
      'ion-selopt-4': [ctor],
      'ion-selopt-5': [ctor],
      'ion-selopt-6': [ctor],
      'ion-selopt-7': [ctor],
      'ion-selopt-8': [ctor]
    },
    modclock: 660,
    _scripting_enabled: true,
    defaultView: {
      document: [Circular *5],
      location: [Location],
      _listeners: [Object: null prototype],
      alert: [Function: bound alert],
      blur: [Function: bound blur],
      cancelAnimationFrame: [Function: bound cancelAnimationFrame],
      cancelIdleCallback: [Function: bound cancelIdleCallback],
      close: [Function: bound close],
      confirm: [Function: bound confirm],
      focus: [Function: bound focus],
      matchMedia: [Function: bound matchMedia],
      open: [Function: bound open],
      prompt: [Function: bound prompt],
      requestAnimationFrame: [Function: bound requestAnimationFrame],
      requestIdleCallback: [Function: bound requestIdleCallback],
      URL: [Function: bound URL],
      customElements: null,
      __allowInterval: false,
      __maxTimeout: 0,
      fetch: [Function (anonymous)],
      FetchError: [class (anonymous)],
      Headers: [class (anonymous)],
      Request: [class (anonymous)],
      Response: [class (anonymous)],
      Ionic: [Object]
    },
    _lastModTime: 1,
    _listeners: [Object: null prototype] {
      pause: [Array],
      resume: [Array],
      ionBackButton: [Array],
      keydown: [Array]
    },
    createElement: [Function (anonymous)],
    createElementNS: [Function (anonymous)]
  },
  localName: 'ion-item',
  namespaceURI: 'http://www.w3.org/1999/xhtml',
  prefix: null,
  _tagName: 'ION-ITEM',
  _attrsByQName: [Object: null prototype] {
    class: {
      localName: 'class',
      prefix: null,
      namespaceURI: null,
      data: 'item-has-value item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none item-has-interactive-control ion-activatable ion-focusable hydrated',
      _ownerElement: [Circular *4],
      onchange: [Function (anonymous)]
    },
    ngh: {
      localName: 'ngh',
      prefix: null,
      namespaceURI: null,
      data: '0',
      _ownerElement: [Circular *4],
      onchange: undefined
    },
    's-mode': {
      localName: 's-mode',
      prefix: null,
      namespaceURI: null,
      data: 'md',
      _ownerElement: [Circular *4],
      onchange: undefined
    }
  },
  _attrsByLName: [Object: null prototype] {
    '|class': {
      localName: 'class',
      prefix: null,
      namespaceURI: null,
      data: 'item-has-value item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none item-has-interactive-control ion-activatable ion-focusable hydrated',
      _ownerElement: [Circular *4],
      onchange: [Function (anonymous)]
    },
    '|ngh': {
      localName: 'ngh',
      prefix: null,
      namespaceURI: null,
      data: '0',
      _ownerElement: [Circular *4],
      onchange: undefined
    },
    '|s-mode': {
      localName: 's-mode',
      prefix: null,
      namespaceURI: null,
      data: 'md',
      _ownerElement: [Circular *4],
      onchange: undefined
    }
  },
  _attrKeys: [ '|class', '|ngh', '|s-mode' ],
  __ngContext__: 63,
  _nid: 2181,
  _classList: DOMTokenList {
    '0': 'item-has-value',
    '1': 'item-has-start-slot',
    '2': 'sc-ion-item-md-h',
    '3': 'item',
    '4': 'md',
    '5': 'item-lines-default',
    '6': 'item-fill-none',
    '7': 'item-has-interactive-control',
    '8': 'ion-activatable',
    '9': 'ion-focusable',
    '10': 'hydrated',
    _getString: [Function (anonymous)],
    _setString: [Function (anonymous)],
    _length: 11,
    _lastStringValue: 'item-has-value item-has-start-slot sc-ion-item-md-h item md item-lines-default item-fill-none item-has-interactive-control ion-activatable ion-focusable hydrated'
  },
  connectedCallback: [Function: f],
  's-p': [],
  's-rc': undefined,
  _listeners: [Object: null prototype] {
    ionInput: [ [Object] ],
    ionColor: [ [Object] ],
    ionStyle: [ [Object] ]
  },
  componentOnReady: [Function: componentOnReady$1],
  forceUpdate: [Function: forceUpdate],
  shadowRoot: [Circular *4],
  color: [Getter/Setter],
  button: [Getter/Setter],
  detail: [Getter/Setter],
  detailIcon: [Getter/Setter],
  disabled: [Getter/Setter],
  download: [Getter/Setter],
  fill: [Getter/Setter],
  shape: [Getter/Setter],
  href: [Getter/Setter],
  rel: [Getter/Setter],
  lines: [Getter/Setter],
  counter: [Getter/Setter],
  routerAnimation: [Getter/Setter],
  routerDirection: [Getter/Setter],
  target: [Getter/Setter],
  type: [Getter/Setter],
  counterFormatter: [Getter/Setter],
  _lastModTime: 660,
  _children: {
    '0': ctor {
      parentNode: [Circular *4],
      _previousSibling: [Object],
      _nextSibling: [ctor],
      _index: 3,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      _listeners: [Object: null prototype],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2206,
      _lastModTime: 660,
      _children: [Object]
    },
    '1': ctor {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2215,
      _lastModTime: 651,
      _children: [Object]
    },
    element: [Circular *4],
    lastModTime: 650,
    childrenByNumber: [ [ctor], [ctor] ],
    childrenByName: [Object: null prototype] {}
  },
  's-cr': <ref *8> {
    parentNode: [Circular *4],
    _previousSibling: ctor {
      parentNode: [Circular *4],
      _previousSibling: [ctor],
      _nextSibling: [Circular *8],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'div',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'DIV',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      _classList: [DOMTokenList],
      's-si': 'sc-ion-item-md',
      's-hn': 'ION-ITEM',
      _nid: 2215,
      _lastModTime: 651,
      _children: [Object]
    },
    _nextSibling: {
      parentNode: [Circular *4],
      _previousSibling: [Circular *8],
      _nextSibling: [ctor],
      _index: 1,
      nodeType: 8,
      ownerDocument: [Object],
      _data: 'org-location for <ion-radio> (host=undefined)',
      's-nr': [ctor],
      _nid: 2218
    },
    _index: 0,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: '',
    's-cn': true,
    _nid: 2182
  },
  's-sn': '',
  's-sh': 'ION-COL',
  's-ol': <ref *9> {
    parentNode: <ref *2> ctor {
      parentNode: [ctor],
      _previousSibling: [ctor],
      _nextSibling: [Object],
      _index: 4,
      _childNodes: [Array],
      _firstChild: null,
      nodeType: 1,
      ownerDocument: [Object],
      localName: 'ion-col',
      namespaceURI: 'http://www.w3.org/1999/xhtml',
      prefix: null,
      _tagName: 'ION-COL',
      _attrsByQName: [Object: null prototype],
      _attrsByLName: [Object: null prototype],
      _attrKeys: [Array],
      __ngContext__: 63,
      _nid: 2132,
      connectedCallback: [Function: f],
      's-p': [],
      's-rc': undefined,
      componentOnReady: [Function: componentOnReady$1],
      forceUpdate: [Function: forceUpdate],
      shadowRoot: [Circular *2],
      offset: [Getter/Setter],
      offsetXs: [Getter/Setter],
      offsetSm: [Getter/Setter],
      offsetMd: [Getter/Setter],
      offsetLg: [Getter/Setter],
      offsetXl: [Getter/Setter],
      pull: [Getter/Setter],
      pullXs: [Getter/Setter],
      pullSm: [Getter/Setter],
      pullMd: [Getter/Setter],
      pullLg: [Getter/Setter],
      pullXl: [Getter/Setter],
      push: [Getter/Setter],
      pushXs: [Getter/Setter],
      pushSm: [Getter/Setter],
      pushMd: [Getter/Setter],
      pushLg: [Getter/Setter],
      pushXl: [Getter/Setter],
      size: [Getter/Setter],
      sizeXs: [Getter/Setter],
      sizeSm: [Getter/Setter],
      sizeMd: [Getter/Setter],
      sizeLg: [Getter/Setter],
      sizeXl: [Getter/Setter],
      _lastModTime: 660,
      _children: [Object],
      's-cr': [Object],
      's-sn': '',
      's-sh': 'ION-ROW',
      's-ol': [Object],
      's-hn': 'ION-ROW',
      's-sc': 'sc-ion-col',
      _classList: [DOMTokenList],
      _style: [Object],
      's-en': ''
    },
    _previousSibling: <ref *7> {
      parentNode: [ctor],
      _previousSibling: [Circular *4],
      _nextSibling: [Circular *9],
      _index: 0,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '',
      's-cn': true,
      _nid: 2133
    },
    _nextSibling: <ref *6> {
      parentNode: [ctor],
      _previousSibling: [Circular *9],
      _nextSibling: [Circular *4],
      _index: 3,
      nodeType: 8,
      ownerDocument: [Object],
      _data: '<slot> (host=ion-col)',
      's-hn': 'ION-COL',
      's-sr': true,
      's-cr': [Object],
      's-sn': '',
      's-rf': undefined,
      _nid: 2179
    },
    _index: 1,
    nodeType: 8,
    ownerDocument: <ref *5> {
      parentNode: null,
      _previousSibling: [Circular *5],
      _nextSibling: [Circular *5],
      _index: undefined,
      _childNodes: null,
      _firstChild: [Object],
      nodeType: 9,
      isHTML: true,
      _address: 'http://localhost:62256/',
      readyState: 'loading',
      implementation: [Object],
      ownerDocument: null,
      _contentType: 'text/html',
      doctype: [Object],
      documentElement: [ctor],
      _templateDocCache: null,
      _nodeIterators: null,
      _nid: 1,
      _nextnid: 2243,
      _nodes: [Array],
      byId: [Object: null prototype],
      modclock: 660,
      _scripting_enabled: true,
      defaultView: [Object],
      _lastModTime: 1,
      _listeners: [Object: null prototype],
      createElement: [Function (anonymous)],
      createElementNS: [Function (anonymous)]
    },
    _data: 'org-location for <ion-item> (host=undefined)',
    's-nr': [Circular *4],
    _nid: 2180
  },
  's-hn': 'ION-COL',
  's-sc': 'sc-ion-item-md',
  's-en': ''
}

aleksander351 avatar Sep 01 '24 13:09 aleksander351

Ionic is dependent on Angular, not Angular on Ionic. (IF Ionic want's to continue to support Angular of course).

External changes made by Angular or dependencies of Angular that impact the compatibility of features such as web components are not Ionic's responsibility. This includes the usage of domino for Angular's earlier iterations of SSR or Angular's new SSR strategy that is not compatible with Ionic Framework and we (both Angular and Ionic Framework teams) have no plans of supporting.

I hope this wasn't too much of a rant. I understand it's difficult to keep up with their changes. Now if they decide to ditch zone, I don't imagine Ionic keeps depending on zone.

I don't mind the feedback. I'm no longer on the team that maintains this project, I just volunteer and jump in to try and help provide responses and information that may help with the resolution. In this case, the issue you referenced the team had acknowledged it needed to be resolved externally.

The request for suppressing Ionic's warnings has come up a number of times and I do agree that should be revisited. Especially in the case of CI/test environments, warnings should be suppressed through the Ionic config. Let me ask the question internally with the team and see if they would have an interest in supporting this configuration.

sean-perkins avatar Sep 03 '24 17:09 sean-perkins

After speaking with the team, we are going to log this as a feature request. We'd like to introduce a new option on the config that lets developers specify which log level they want to print. All messages at or above that severity would be logged.

e.g.:

provideIonicAngular({
  logLevel: 'OFF', // 'WARNING', 'INFO', 'ERROR', 'OFF'
})

Default would match the log levels today, which would be WARNING.

The implementation would check the log level in the existing utility functions that Ionic Framework uses for logging messages: https://github.com/ionic-team/ionic-framework/blob/main/core/src/utils/logging/index.ts

e.g.:

import { config } from "@global/config";

export const printIonWarning = (message: string, ...params: any[]) => {
  if (config.get("logLevel") === "WARNING" || config.get("logLevel") === "ERROR") {
    return console.warn(`[Ionic Warning]: ${message}`, ...params);
  }
};

Honestly would prefer something a little more condensed we can reuse across the functions. An enum or numeric log level may work best.

Contributions are welcome if this feature speaks to you 😆

sean-perkins avatar Sep 03 '24 18:09 sean-perkins

Thanks for the effort. The reason I closed it is because it's refering to versions of Ionic that probably won't be maintained in the future. The problem, in my case at least, is there for quite a while now. Like mentioned before, I could get rid of the problem by patching the supposedly responsible domino library. With the update of Angular to 17, there is no domino dependency anymore and the long error messages came right back.

aleksander351 avatar Sep 07 '24 19:09 aleksander351

After speaking with the team, we are going to log this as a feature request. We'd like to introduce a new option on the config that lets developers specify which log level they want to print. All messages at or above that severity would be logged.

e.g.:

provideIonicAngular({
  logLevel: 'OFF', // 'WARNING', 'INFO', 'ERROR', 'OFF'
})

Default would match the log levels today, which would be WARNING.

The implementation would check the log level in the existing utility functions that Ionic Framework uses for logging messages: https://github.com/ionic-team/ionic-framework/blob/main/core/src/utils/logging/index.ts

e.g.:

import { config } from "@global/config";

export const printIonWarning = (message: string, ...params: any[]) => {
  if (config.get("logLevel") === "WARNING" || config.get("logLevel") === "ERROR") {
    return console.warn(`[Ionic Warning]: ${message}`, ...params);
  }
};

Honestly would prefer something a little more condensed we can reuse across the functions. An enum or numeric log level may work best.

Contributions are welcome if this feature speaks to you 😆

There is a --no-interactive flag already. You think I might use something like that? But I am not using the Ionic Cli to build the ssr App. Not sure if that's even possible.

aleksander351 avatar Sep 16 '24 07:09 aleksander351

Used patch-package and manually removed all [Ionic Warning] and printIonWarning method calls I could find in @Ionic/core. Dist files and all. It still doesn't want to die. Unbelievably pesky piece of software.

aleksander351 avatar Sep 16 '24 22:09 aleksander351

Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out.

ionitron-bot[bot] avatar Apr 12 '25 23:04 ionitron-bot[bot]