1 """Constants for Lovelace."""
5 import voluptuous
as vol
12 EVENT_LOVELACE_UPDATED,
21 DEFAULT_ICON =
"hass:view-dashboard"
24 MODE_STORAGE =
"storage"
25 MODE_AUTO =
"auto-gen"
27 LOVELACE_CONFIG_FILE =
"ui-lovelace.yaml"
28 CONF_ALLOW_SINGLE_WORD =
"allow_single_word"
29 CONF_URL_PATH =
"url_path"
30 CONF_RESOURCE_TYPE_WS =
"res_type"
32 RESOURCE_TYPES = [
"js",
"css",
"module",
"html"]
35 CONF_TYPE: vol.In(RESOURCE_TYPES),
39 RESOURCE_SCHEMA = vol.Schema(RESOURCE_FIELDS)
41 RESOURCE_CREATE_FIELDS: VolDictType = {
42 vol.Required(CONF_RESOURCE_TYPE_WS): vol.In(RESOURCE_TYPES),
43 vol.Required(CONF_URL): cv.string,
46 RESOURCE_UPDATE_FIELDS: VolDictType = {
47 vol.Optional(CONF_RESOURCE_TYPE_WS): vol.In(RESOURCE_TYPES),
48 vol.Optional(CONF_URL): cv.string,
51 SERVICE_RELOAD_RESOURCES =
"reload_resources"
52 RESOURCE_RELOAD_SERVICE_SCHEMA = vol.Schema({})
55 CONF_REQUIRE_ADMIN =
"require_admin"
56 CONF_SHOW_IN_SIDEBAR =
"show_in_sidebar"
58 DASHBOARD_BASE_CREATE_FIELDS: VolDictType = {
59 vol.Optional(CONF_REQUIRE_ADMIN, default=
False): cv.boolean,
60 vol.Optional(CONF_ICON): cv.icon,
61 vol.Required(CONF_TITLE): cv.string,
62 vol.Optional(CONF_SHOW_IN_SIDEBAR, default=
True): cv.boolean,
66 DASHBOARD_BASE_UPDATE_FIELDS: VolDictType = {
67 vol.Optional(CONF_REQUIRE_ADMIN): cv.boolean,
68 vol.Optional(CONF_ICON): vol.Any(cv.icon,
None),
69 vol.Optional(CONF_TITLE): cv.string,
70 vol.Optional(CONF_SHOW_IN_SIDEBAR): cv.boolean,
74 STORAGE_DASHBOARD_CREATE_FIELDS: VolDictType = {
75 **DASHBOARD_BASE_CREATE_FIELDS,
76 vol.Required(CONF_URL_PATH): cv.string,
79 vol.Optional(CONF_MODE, default=MODE_STORAGE): MODE_STORAGE,
81 vol.Optional(CONF_ALLOW_SINGLE_WORD): bool,
84 STORAGE_DASHBOARD_UPDATE_FIELDS = DASHBOARD_BASE_UPDATE_FIELDS
88 """Validate value is a valid url slug."""
90 raise vol.Invalid(
"Slug should not be None")
92 raise vol.Invalid(
"Url path needs to contain a hyphen (-)")
93 str_value =
str(value)
94 slg =
slugify(str_value, separator=
"-")
97 raise vol.Invalid(f
"invalid slug {value} (try {slg})")
101 """When no config available."""