color_elements.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from typing import Any, Optional, get_args
  2. from ...element import Element
  3. from ...tailwind_types.background_color import BackgroundColor
  4. QUASAR_COLORS = {'primary', 'secondary', 'accent', 'dark', 'positive', 'negative', 'info', 'warning'}
  5. for color in {'red', 'pink', 'purple', 'deep-purple', 'indigo', 'blue', 'light-blue', 'cyan', 'teal', 'green',
  6. 'light-green', 'lime', 'yellow', 'amber', 'orange', 'deep-orange', 'brown', 'grey', 'blue-grey'}:
  7. QUASAR_COLORS.add(color)
  8. for i in range(1, 15):
  9. QUASAR_COLORS.add(f'{color}-{i}')
  10. TAILWIND_COLORS = get_args(BackgroundColor)
  11. class BackgroundColorElement(Element):
  12. BACKGROUND_COLOR_PROP = 'color'
  13. def __init__(self, *, background_color: Optional[str], **kwargs: Any) -> None:
  14. super().__init__(**kwargs)
  15. if background_color in QUASAR_COLORS:
  16. self._props[self.BACKGROUND_COLOR_PROP] = background_color
  17. elif background_color in TAILWIND_COLORS:
  18. self._classes.append(f'bg-{background_color}')
  19. elif background_color is not None:
  20. self._style['background-color'] = background_color
  21. class TextColorElement(Element):
  22. TEXT_COLOR_PROP = 'color'
  23. def __init__(self, *, text_color: Optional[str], **kwargs: Any) -> None:
  24. super().__init__(**kwargs)
  25. if text_color in QUASAR_COLORS:
  26. self._props[self.TEXT_COLOR_PROP] = text_color
  27. elif text_color in TAILWIND_COLORS:
  28. self._classes.append(f'text-{text_color}')
  29. elif text_color is not None:
  30. self._style['color'] = text_color