Skip to content

Figure JSTwigv0.1.1

Use the Figure component to display images.

Table of content

Usage

Register the component in your JavaScript app and use the Twig template to display images.

js
import { Base, createApp } from '@studiometa/js-toolkit';
import { Figure } from '@studiometa/ui';

class App extends Base {
  static config = {
    name: 'Base',
    components: {
      Figure,
    }
  };
}

export default createApp(App);
twig
<div class="card">
  {% include '@ui/atoms/Figure/Figure.twig' with {
    src: 'https://picsum.photos/400/400',
    width: 400,
    height: 400,
  } only %}
</div>

With or without lazy load

The Twig component is lazy by default, so if you need to display images with an eager loading strategy, set the lazy parameter to false;

diff
  <div class="card">
    {% include '@ui/atoms/Figure/Figure.twig' with {
      src: 'https://picsum.photos/400/400',
      width: 400,
      height: 400,
+     lazy: false
    } only %}
  </div>

With TwicPics

If your project uses TwicPics to optimize images, you can use the FigureTwicpics class instead of the Figure class. You will need to extend it in your project to configure the TwicPics' domain to use.

js
import { FigureTwicpics } from '@studiometa/ui';

export default class Figure extends FigureTwicpics {
  static config = {
    ...FigureTwicpics.config,
    name: 'Figure',
  };

  get domain() {
    return 'domain.twic.pics';
  }
}

And replace the import in your app to import your local class instead of the one from the package.

diff
  import { Base, createApp } from '@studiometa/js-toolkit';
- import { Figure } from '@studiometa/ui';
+ import { Figure } from './atoms/Figure.js';

  class App extends Base {
    static config = {
      name: 'Base',
      components: {
        Figure,
      }
    };
  }

  export default createApp(App);