/ client_code / MessagePill / __init__.py
__init__.py
 1  # SPDX-License-Identifier: MIT
 2  #
 3  # Copyright (c) 2021 The Anvil Extras project team members listed at
 4  # https://github.com/anvilistas/anvil-extras/graphs/contributors
 5  #
 6  # This software is published at https://github.com/anvilistas/anvil-extras
 7  from ..utils._component_helpers import _html_injector
 8  from ._anvil_designer import MessagePillTemplate
 9  
10  __version__ = "3.1.0"
11  
12  css = """
13  .anvil-role-ae-message-pill {
14      padding-left: 1em;
15      border-radius: 2em;
16  }
17  """
18  _html_injector.css(css)
19  
20  
21  class MessagePill(MessagePillTemplate):
22      backgrounds = dict(
23          info="#bde5f8", success="#dff2bf", warning="#feefb3", error="#ffd2d2"
24      )
25      foregrounds = dict(
26          info="#00529b", success="#4f8a10", warning="#9f6000", error="#d8000c"
27      )
28      icons = dict(
29          info="fa:info-circle",
30          success="fa:check",
31          warning="fa:warning",
32          error="fa:times-circle",
33      )
34  
35      def __init__(self, **properties):
36          self.label.role = "ae-message-pill"
37          self.init_components(**properties)
38  
39      @property
40      def level(self):
41          return self.item["level"]
42  
43      @level.setter
44      def level(self, value):
45          if value not in ("info", "success", "warning", "error"):
46              raise ValueError(
47                  "level must be one of 'info', 'success', 'warning' or 'error'"
48              )
49          self.item["level"] = value
50          self.label.background = self.backgrounds[value]
51          self.label.foreground = self.foregrounds[value]
52          self.label.icon = self.icons[value]
53  
54      @property
55      def message(self):
56          return self.item["message"]
57  
58      @message.setter
59      def message(self, value):
60          self.item["message"] = value
61          self.label.text = value