preview.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import '../tests/stubs';
  2. import '../../wagtail/admin/static_src/wagtailadmin/scss/core.scss';
  3. import './preview.scss';
  4. export const parameters = {
  5. controls: {
  6. hideNoControlsWarning: true,
  7. matchers: {
  8. color: /(background|color)$/i,
  9. date: /Date$/,
  10. },
  11. },
  12. };
  13. const cachedIcons = sessionStorage.getItem('WAGTAIL_ICONS');
  14. window.WAGTAIL_ICONS = cachedIcons ? JSON.parse(cachedIcons) : [];
  15. /**
  16. * Loads Wagtail’s icon sprite into the DOM, similarly to the admin.
  17. */
  18. const loadIconSprite = () => {
  19. const PATTERN_LIBRARY_SPRITE_URL = '/pattern-library/api/v1/sprite';
  20. window
  21. .fetch(PATTERN_LIBRARY_SPRITE_URL)
  22. .then((res) => res.text())
  23. .then((html) => {
  24. const sprite = document.createElement('div');
  25. sprite.innerHTML = html;
  26. const symbols = Array.from(sprite.querySelectorAll('symbol'));
  27. const icons = symbols.map((elt) => elt.id.replace('icon-', '')).sort();
  28. window.WAGTAIL_ICONS = icons;
  29. sessionStorage.setItem('WAGTAIL_ICONS', JSON.stringify(icons));
  30. if (document.body) {
  31. document.body.appendChild(sprite);
  32. } else {
  33. window.addEventListener('DOMContentLoaded', () => {
  34. document.body.appendChild(sprite);
  35. });
  36. }
  37. });
  38. };
  39. loadIconSprite();