theme.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*!
  2. * (C) Ionic http://ionicframework.com - MIT License
  3. */
  4. const hostContext = (selector, el) => {
  5. return el.closest(selector) !== null;
  6. };
  7. /**
  8. * Create the mode and color classes for the component based on the classes passed in
  9. */
  10. const createColorClasses = (color, cssClassMap) => {
  11. return typeof color === 'string' && color.length > 0
  12. ? Object.assign({ 'ion-color': true, [`ion-color-${color}`]: true }, cssClassMap) : cssClassMap;
  13. };
  14. const getClassList = (classes) => {
  15. if (classes !== undefined) {
  16. const array = Array.isArray(classes) ? classes : classes.split(' ');
  17. return array
  18. .filter((c) => c != null)
  19. .map((c) => c.trim())
  20. .filter((c) => c !== '');
  21. }
  22. return [];
  23. };
  24. const getClassMap = (classes) => {
  25. const map = {};
  26. getClassList(classes).forEach((c) => (map[c] = true));
  27. return map;
  28. };
  29. const SCHEME = /^[a-z][a-z0-9+\-.]*:/;
  30. const openURL = async (url, ev, direction, animation) => {
  31. if (url != null && url[0] !== '#' && !SCHEME.test(url)) {
  32. const router = document.querySelector('ion-router');
  33. if (router) {
  34. if (ev != null) {
  35. ev.preventDefault();
  36. }
  37. return router.push(url, direction, animation);
  38. }
  39. }
  40. return false;
  41. };
  42. export { createColorClasses as c, getClassMap as g, hostContext as h, openURL as o };