github ing-bank/lion @lion/ajax@0.14.0

latest releases: providence-analytics@0.17.2, @lion/ui@0.5.7, @lion/ui@0.8.5...
2 years ago

Minor Changes

  • aa8b891: BREAKING CHANGE: Work without polyfill if possible

    When using component composition in a Lion Component we always made it very explicit which sub-components are used.
    On top of that we scoped these sub components to the current shadow root allowing multiple version to be used simultaneously.

    To enable this features we relied on the fact that the ScopedElementsMixin did loaded the needed polyfill for us.

    We however over time got feedback from multiple consumers that lion components "break the app as soon as you load them".
    The reasons is/was that not everyone is always using ScopedElementsMixin or in full control of the app (or its load order).

    To quote the release notes of ScopedElementsMixin v2.1.0:

    ScopedElementsMixin 2.x tried to be as convenient as possible by automatically loading the scoped custom elements registry polyfill.
    This however led to a fatal error whenever you registered any component before ScopedElementsMixin was used.

    And this was the case.

    With the upgrade to @open-wc/scoped-elements v2.1.1 Lion now no longer automatically loads the polyfill through ScopedElementsMixin.

    This essentially means the polyfill became optional which results in the following behavior

    1. If polyfill is not loaded it will use the global registry as a fallback
    2. Log error if actually scoping is needed and polyfill is not loaded
    3. If you manually create elements you will need to handle polyfilled and not polyfilled cases now
    -  const myButton = this.shadowRoot.createElement('my-button');
    +  const myButton = this.createScopedElement('my-button');

    This also removes @webcomponents/scoped-custom-element-registry as a production dependency.

    If you need scoping be sure to load the polyfill before any other web component gets registered.

    It may look something like this in your HTML

    <script src="/node_modules/@webcomponents/scoped-custom-element-registry/scoped-custom-element-registry.min.js"></script>

    or if you have an SPA you can load it at the top of your app shell code

    import '@webcomponents/scoped-custom-element-registry';

    You need scoping if you want to

    use 2 major versions of a web component (e.g. in an SPA pageA uses 1.x and pageB uses 2.x of color-picker)
    or you want to use the same tag name with different implementations (use tag color-picker from foo here and from bar here)

    See more details at

Don't miss a new lion release

NewReleases is sending notifications on new releases.