mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-17 13:19:26 +00:00
Compare commits
36 Commits
fix-action
...
20200916.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4f4edb109f | ||
![]() |
265bfeb889 | ||
![]() |
96110637d9 | ||
![]() |
ad34f98e6d | ||
![]() |
a8a1563586 | ||
![]() |
9b25a54a47 | ||
![]() |
4b8c96c769 | ||
![]() |
c62ff85e73 | ||
![]() |
7d5a27ec0f | ||
![]() |
d6aba040dd | ||
![]() |
ca4757db5b | ||
![]() |
c917b67cbd | ||
![]() |
9659c97978 | ||
![]() |
7d862d6f2a | ||
![]() |
9c80776d8c | ||
![]() |
d5cd288fe8 | ||
![]() |
239e817779 | ||
![]() |
1986215919 | ||
![]() |
239f5f1a2f | ||
![]() |
3bca32c6d5 | ||
![]() |
183eff745d | ||
![]() |
4392d78ff6 | ||
![]() |
858196ab53 | ||
![]() |
fb75d8c1f2 | ||
![]() |
7628569579 | ||
![]() |
8a9d5f7753 | ||
![]() |
cdcccf5089 | ||
![]() |
de95c92e2d | ||
![]() |
667c828359 | ||
![]() |
085c6f8bdd | ||
![]() |
5cca5bfe86 | ||
![]() |
4999f1ad51 | ||
![]() |
61dbae8b8b | ||
![]() |
ba3cc7df0f | ||
![]() |
090ad34f78 | ||
![]() |
b2460cbc3d |
@@ -1,267 +1 @@
|
|||||||
[
|
[]
|
||||||
{
|
|
||||||
"path": "M17.5,15.61C17.33,15.37 9.53,5.4 9.27,5.08C9,4.75 9.08,4.65 9.13,4.59C9.22,4.5 9.36,4.5 9.93,4.5C10.26,4.5 13.59,4.5 13.94,4.47C14.66,4.47 14.78,4.53 14.85,4.56C14.93,4.58 15.13,4.75 15.26,4.92C15.33,5 22.32,13.36 22.39,13.45C22.46,13.54 22.59,13.69 22.67,13.84C22.76,14 22.77,14.18 22.64,14.25C22.56,14.3 18.7,15.89 18.59,15.93C18.5,16 18.27,16.06 18.11,16.04C18,16 17.77,15.92 17.5,15.61M21.47,15.42L21.75,15.47C21.75,15.47 22.68,15.65 22.77,15.67C22.87,15.69 22.96,15.76 22.95,15.79C22.94,15.87 22.9,15.91 22.83,15.95C22.77,16 18.58,18.58 18.5,18.62C18.43,18.66 18.33,18.72 18.11,18.75C17.7,18.83 16.91,18.61 16.66,18.56C16.41,18.5 6.15,16.23 6.06,16.2C5.97,16.17 5.91,16.16 5.9,16.08C5.89,15.94 6.11,15.88 6.28,15.81C6.46,15.75 11.28,14 11.45,13.93C11.62,13.86 11.84,13.84 11.95,13.83C12.06,13.82 12.73,13.93 13.03,13.97C13.34,14 14.2,14.15 14.2,14.15L16.16,16.7C16.5,17.09 16.72,17.25 17,17.28C17.15,17.29 17.31,17.25 17.42,17.2C17.5,17.16 21.47,15.42 21.47,15.42M10.25,9.18L11.96,11.37L12,11.45V11.5C11.96,11.54 8.93,14.32 8.91,14.35L5.72,15.5C5.72,15.5 5.63,15.55 5.58,15.58C5.53,15.61 5.47,15.67 5.5,15.82C5.5,15.87 5.5,16.59 5.5,16.79L1.56,18.04C1.37,18.1 1,18.23 0.95,18.19C0.88,18.14 0.97,18.03 1,17.97C1.06,17.91 9.08,10 9.39,9.7C9.84,9.24 10.25,9.18 10.25,9.18",
|
|
||||||
"name": "accusoft"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M4.94,11.12C5.23,11.12 5.5,11.16 5.76,11.23C5.77,9.09 7.5,7.35 9.65,7.35C11.27,7.35 12.67,8.35 13.24,9.77C13.83,9 14.74,8.53 15.76,8.53C17.5,8.53 18.94,9.95 18.94,11.71C18.94,11.95 18.91,12.2 18.86,12.43C19.1,12.34 19.37,12.29 19.65,12.29C20.95,12.29 22,13.35 22,14.65C22,15.95 20.95,17 19.65,17C18.35,17 6.36,17 4.94,17C3.32,17 2,15.68 2,14.06C2,12.43 3.32,11.12 4.94,11.12Z",
|
|
||||||
"name": "amazon-drive"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M8,11.5A1.25,1.25 0 0,0 6.75,12.75A1.25,1.25 0 0,0 8,14A1.25,1.25 0 0,0 9.25,12.75A1.25,1.25 0 0,0 8,11.5M16,11.5A1.25,1.25 0 0,0 14.75,12.75A1.25,1.25 0 0,0 16,14A1.25,1.25 0 0,0 17.25,12.75A1.25,1.25 0 0,0 16,11.5M12,7C13.5,7 14.9,7.33 16.18,7.91L18.34,5.75C18.73,5.36 19.36,5.36 19.75,5.75C20.14,6.14 20.14,6.77 19.75,7.16L17.95,8.96C20.41,10.79 22,13.71 22,17H2C2,13.71 3.59,10.79 6.05,8.96L4.25,7.16C3.86,6.77 3.86,6.14 4.25,5.75C4.64,5.36 5.27,5.36 5.66,5.75L7.82,7.91C9.1,7.33 10.5,7 12,7Z",
|
|
||||||
"name": "android-head"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M2,16.25C2,16.25 4,3.75 12,3.75C20,3.75 22,16.25 22,16.25C22,16.25 20,20.25 12,20.25C4,20.25 2,16.25 2,16.25M3.35,15.65C3.35,15.65 4.3,19 12,19C17,19 20,17.8 20.65,15.85C21.3,13.9 15.65,7.6 14.65,7.6C13.65,7.6 11.2,12 10.45,12C8.45,12 8.9,10 7.15,10C5.4,10 3.35,15.65 3.35,15.65Z",
|
|
||||||
"name": "basecamp"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7C10.87,7 9.84,7.37 9,8V2.46C9.95,2.16 10.95,2 12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12C2,8.3 4,5.07 7,3.34V12M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z",
|
|
||||||
"name": "beats"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M19.58,12.27C19.54,11.65 19.33,11.18 18.96,10.86C18.59,10.54 18.13,10.38 17.58,10.38C17,10.38 16.5,10.55 16.19,10.89C15.86,11.23 15.65,11.69 15.57,12.27M21.92,12.04C22,12.45 22,13.04 22,13.81H15.5C15.55,14.71 15.85,15.33 16.44,15.69C16.79,15.92 17.22,16.03 17.73,16.03C18.26,16.03 18.69,15.89 19,15.62C19.2,15.47 19.36,15.27 19.5,15H21.88C21.82,15.54 21.53,16.07 21,16.62C20.22,17.5 19.1,17.92 17.66,17.92C16.47,17.92 15.43,17.55 14.5,16.82C13.62,16.09 13.16,14.9 13.16,13.25C13.16,11.7 13.57,10.5 14.39,9.7C15.21,8.87 16.27,8.46 17.58,8.46C18.35,8.46 19.05,8.6 19.67,8.88C20.29,9.16 20.81,9.59 21.21,10.2C21.58,10.73 21.81,11.34 21.92,12.04M9.58,14.07C9.58,13.42 9.31,12.97 8.79,12.73C8.5,12.6 8.08,12.53 7.54,12.5H4.87V15.84H7.5C8.04,15.84 8.46,15.77 8.76,15.62C9.31,15.35 9.58,14.83 9.58,14.07M4.87,10.46H7.5C8.04,10.46 8.5,10.36 8.82,10.15C9.16,9.95 9.32,9.58 9.32,9.06C9.32,8.5 9.1,8.1 8.66,7.91C8.27,7.78 7.78,7.72 7.19,7.72H4.87M11.72,12.42C12.04,12.92 12.2,13.53 12.2,14.24C12.2,15 12,15.64 11.65,16.23C11.41,16.62 11.12,16.94 10.77,17.21C10.37,17.5 9.9,17.72 9.36,17.83C8.82,17.94 8.24,18 7.61,18H2V5.55H8C9.53,5.58 10.6,6 11.23,6.88C11.61,7.41 11.8,8.04 11.8,8.78C11.8,9.54 11.61,10.15 11.23,10.61C11,10.87 10.7,11.11 10.28,11.32C10.91,11.55 11.39,11.92 11.72,12.42M20.06,7.32H15.05V6.07H20.06V7.32Z",
|
|
||||||
"name": "behance"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5.45,10.28C6.4,10.28 7.5,11.05 7.5,12C7.5,12.95 6.4,13.72 5.45,13.72H2L2.69,10.28H5.45M6.14,4.76C7.09,4.76 8.21,5.53 8.21,6.5C8.21,7.43 7.09,8.21 6.14,8.21H2.69L3.38,4.76H6.14M13.03,4.76C14,4.76 15.1,5.53 15.1,6.5C15.1,7.43 14,8.21 13.03,8.21H9.41L10.1,4.76H13.03M12.34,10.28C13.3,10.28 14.41,11.05 14.41,12C14.41,12.95 13.3,13.72 12.34,13.72H8.72L9.41,10.28H12.34M10.97,15.79C11.92,15.79 13.03,16.57 13.03,17.5C13.03,18.47 11.92,19.24 10.97,19.24H7.5L8.21,15.79H10.97M18.55,13.72C19.5,13.72 20.62,14.5 20.62,15.45C20.62,16.4 19.5,17.17 18.55,17.17H15.1L15.79,13.72H18.55M19.93,8.21C20.88,8.21 22,9 22,9.93C22,10.88 20.88,11.66 19.93,11.66H16.5L17.17,8.21H19.93Z",
|
|
||||||
"name": "blackberry"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,3A9,9 0 0,1 21,12A9,9 0 0,1 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M5.94,8.5C4,11.85 5.15,16.13 8.5,18.06C11.85,20 18.85,7.87 15.5,5.94C12.15,4 7.87,5.15 5.94,8.5Z",
|
|
||||||
"name": "cisco-webex"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M11.9,14.5H10.8V9.5H11.9C13.5,9.5 14.6,10.4 14.6,12C14.6,13.6 13.5,14.5 11.9,14.5M11.9,7H8.1V17H11.8C15.3,17 17.4,14.9 17.4,12V12C17.4,9.1 15.4,7 11.9,7M12,20C10.1,20 8.3,19.3 6.9,18.1L6.2,17.5L4.5,17.7L5.2,16.1L4.9,15.3C4.4,14.2 4.2,13.1 4.2,11.9C4.2,7.5 7.8,3.9 12.1,3.9C16.4,3.9 19.9,7.6 19.9,12C19.9,16.4 16.3,20 12,20M12,2C6.5,2 2.1,6.5 2.1,12C2.1,13.5 2.4,14.9 3,16.2L1.4,20.3L5.7,19.7C7.4,21.2 9.7,22.1 12.1,22.1C17.6,22.1 22,17.6 22,12.1C22,6.6 17.5,2 12,2Z",
|
|
||||||
"name": "disqus-outline"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M16.42,18.42C16,16.5 15.5,14.73 15,13.17C15.5,13.1 16,13.06 16.58,13.06H16.6V13.06H16.6C17.53,13.06 18.55,13.18 19.66,13.43C19.28,15.5 18.08,17.27 16.42,18.42M12,19.8C10.26,19.8 8.66,19.23 7.36,18.26C7.64,17.81 8.23,16.94 9.18,16.04C10.14,15.11 11.5,14.15 13.23,13.58C13.82,15.25 14.36,17.15 14.77,19.29C13.91,19.62 13,19.8 12,19.8M4.2,12C4.2,11.96 4.2,11.93 4.2,11.89C4.42,11.9 4.71,11.9 5.05,11.9H5.06C6.62,11.89 9.36,11.76 12.14,10.89C12.29,11.22 12.44,11.56 12.59,11.92C10.73,12.54 9.27,13.53 8.19,14.5C7.16,15.46 6.45,16.39 6.04,17C4.9,15.66 4.2,13.91 4.2,12M8.55,5C9.1,5.65 10.18,7.06 11.34,9.25C9,9.96 6.61,10.12 5.18,10.12C5.14,10.12 5.1,10.12 5.06,10.12H5.05C4.81,10.12 4.6,10.12 4.43,10.11C5,7.87 6.5,6 8.55,5M12,4.2C13.84,4.2 15.53,4.84 16.86,5.91C15.84,7.14 14.5,8 13.03,8.65C12,6.67 11,5.25 10.34,4.38C10.88,4.27 11.43,4.2 12,4.2M18.13,7.18C19.1,8.42 19.71,9.96 19.79,11.63C18.66,11.39 17.6,11.28 16.6,11.28V11.28H16.59C15.79,11.28 15.04,11.35 14.33,11.47C14.16,11.05 14,10.65 13.81,10.26C15.39,9.57 16.9,8.58 18.13,7.18M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",
|
|
||||||
"name": "dribbble"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M15.09,16.5C14.81,15.14 14.47,13.91 14.08,12.82L15.2,12.74H15.22V12.74C15.87,12.74 16.59,12.82 17.36,13C17.09,14.44 16.26,15.69 15.09,16.5M12,17.46C10.79,17.46 9.66,17.06 8.76,16.39C8.95,16.07 9.36,15.46 10,14.83C10.7,14.18 11.64,13.5 12.86,13.11C13.28,14.27 13.65,15.6 13.94,17.1C13.33,17.33 12.68,17.46 12,17.46M6.54,12V11.92L7.14,11.93V11.93C8.24,11.93 10.15,11.83 12.1,11.22L12.41,11.94C11.11,12.38 10.09,13.07 9.34,13.76C8.61,14.42 8.12,15.08 7.83,15.5C7.03,14.56 6.54,13.34 6.54,12M9.59,7.11C9.97,7.56 10.73,8.54 11.54,10.08C9.89,10.57 8.23,10.68 7.22,10.68H7.14V10.68H6.7C7.09,9.11 8.17,7.81 9.59,7.11M12,6.54C13.29,6.54 14.47,7 15.41,7.74C14.69,8.6 13.74,9.22 12.72,9.66C12,8.27 11.31,7.28 10.84,6.67C11.21,6.59 11.6,6.54 12,6.54M16.29,8.63C16.97,9.5 17.4,10.57 17.45,11.74C16.66,11.58 15.92,11.5 15.22,11.5V11.5C14.66,11.5 14.13,11.54 13.63,11.63L13.27,10.78C14.37,10.3 15.43,9.61 16.29,8.63M12,5A7,7 0 0,0 5,12A7,7 0 0,0 12,19A7,7 0 0,0 19,12A7,7 0 0,0 12,5Z",
|
|
||||||
"name": "dribbble-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M6.72,20.78C8.23,20.71 10.07,20.78 11.87,20.78C13.72,20.78 15.62,20.66 17.12,20.78C17.72,20.83 18.28,21.19 18.77,20.87C19.16,20.38 18.87,19.71 18.96,19.05C19.12,17.78 20.28,16.27 18.59,15.95C17.87,16.61 18.35,17.23 17.95,18.05C17.45,19.03 15.68,19.37 14,19.5C12.54,19.62 10,19.76 9.5,18.77C9.04,17.94 9.29,16.65 9.29,15.58C9.29,14.38 9.16,13.22 9.5,12.3C11.32,12.43 13.7,11.69 15,12.5C15.87,13 15.37,14.06 16.38,14.4C17.07,14.21 16.7,13.32 16.66,12.5C16.63,11.94 16.63,11.19 16.66,10.57C16.69,9.73 17,8.76 16.1,8.74C15.39,9.3 15.93,10.23 15.18,10.75C14.95,10.92 14.43,11 14.08,11C12.7,11.17 10.54,11.05 9.38,10.84C9.23,9.16 9.24,6.87 9.38,5.19C10,4.57 11.45,4.54 12.42,4.55C14.13,4.55 16.79,4.7 17.3,5.55C17.58,6 17.36,7 17.85,7.1C18.85,7.33 18.36,5.55 18.41,4.73C18.44,4.11 18.71,3.72 18.59,3.27C18.27,2.83 17.79,3.05 17.5,3.09C14.35,3.5 9.6,3.27 6.26,3.27C5.86,3.27 5.16,3.07 4.88,3.54C4.68,4.6 6.12,4.16 6.62,4.73C6.79,4.91 7.03,5.73 7.08,6.28C7.23,7.74 7.08,9.97 7.08,12.12C7.08,14.38 7.26,16.67 7.08,18.05C7,18.53 6.73,19.3 6.62,19.41C6,20.04 4.34,19.35 4.5,20.69C5.09,21.08 5.93,20.82 6.72,20.78Z",
|
|
||||||
"name": "etsy"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,17.5C10.15,17.5 8.42,16.56 7.41,15L17.41,12.75L22.08,11.75C22.05,10.32 21.71,8.92 21.08,7.64C18.66,2.61 12.62,0.5 7.58,2.92C2.55,5.34 0.44,11.38 2.86,16.41C5.29,21.44 11.33,23.56 16.36,21.14C18.5,20.09 20.25,18.31 21.22,16.11L16.61,15C15.6,16.57 13.86,17.5 12,17.5M12,6.5C13.76,6.5 15.41,7.34 16.44,8.77L6.57,11.19C6.96,8.5 9.28,6.5 12,6.5Z",
|
|
||||||
"name": "eventbrite"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M18,5H15.5A3.5,3.5 0 0,0 12,8.5V11H10V14H12V21H15V14H18V11H15V9A1,1 0 0,1 16,8H18V5Z",
|
|
||||||
"name": "facebook-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M21,12A9,9 0 0,1 12,21H4.5L9.74,15.76L11.16,17.17L9.33,19H12A7,7 0 0,0 19,12V7L21,5V12M3,12A9,9 0 0,1 12,3H19.5L14.26,8.24L12.84,6.83L14.67,5H12A7,7 0 0,0 5,12V17L3,19V12Z",
|
|
||||||
"name": "flattr"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M11,12C11,14.5 9,16.5 6.5,16.5C4,16.5 2,14.5 2,12C2,9.5 4,7.5 6.5,7.5C9,7.5 11,9.5 11,12M17.5,7.5C15,7.5 13,9.5 13,12C13,14.5 15,16.5 17.5,16.5C20,16.5 22,14.5 22,12C22,9.5 20,7.5 17.5,7.5Z",
|
|
||||||
"name": "flickr"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M17,5L16.57,7.5C16.5,7.73 16.2,8 15.91,8C15.61,8 12,8 12,8C11.53,8 10.95,8.32 10.95,8.79V9.2C10.95,9.67 11.53,10 12,10C12,10 14.95,10 15.28,10C15.61,10 15.93,10.36 15.86,10.71C15.79,11.07 14.94,13.28 14.9,13.5C14.86,13.67 14.64,14 14.25,14C13.92,14 11.37,14 11.37,14C10.85,14 10.69,14.07 10.34,14.5C10,14.94 7.27,18.1 7.27,18.1C7.24,18.13 7,18.04 7,18V5C7,4.7 7.61,4 8,4C8,4 16.17,4 16.5,4C16.82,4 17.08,4.61 17,5M17,14.45C17.11,13.97 18.78,6.72 19.22,4.55M17.58,2C17.58,2 8.38,2 6.91,2C5.43,2 5,3.11 5,3.8C5,4.5 5,20.76 5,20.76C5,21.54 5.42,21.84 5.66,21.93C5.9,22.03 6.55,22.11 6.94,21.66C6.94,21.66 11.65,16.22 11.74,16.13C11.87,16 11.87,16 12,16C12.26,16 14.2,16 15.26,16C16.63,16 16.85,15 17,14.45C17.11,13.97 18.78,6.72 19.22,4.55C19.56,2.89 19.14,2 17.58,2Z",
|
|
||||||
"name": "foursquare"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H14.56C14.24,20.93 14.23,20.32 14.23,20.11L14.24,17.64C14.24,16.8 13.95,16.25 13.63,15.97C15.64,15.75 17.74,15 17.74,11.53C17.74,10.55 17.39,9.74 16.82,9.11C16.91,8.89 17.22,7.97 16.73,6.73C16.73,6.73 15.97,6.5 14.25,7.66C13.53,7.46 12.77,7.36 12,7.35C11.24,7.36 10.46,7.46 9.75,7.66C8.03,6.5 7.27,6.73 7.27,6.73C6.78,7.97 7.09,8.89 7.18,9.11C6.61,9.74 6.26,10.55 6.26,11.53C6.26,15 8.36,15.75 10.36,16C10.1,16.2 9.87,16.6 9.79,17.18C9.27,17.41 7.97,17.81 7.17,16.43C7.17,16.43 6.69,15.57 5.79,15.5C5.79,15.5 4.91,15.5 5.73,16.05C5.73,16.05 6.32,16.33 6.73,17.37C6.73,17.37 7.25,19.12 9.76,18.58L9.77,20.11C9.77,20.32 9.75,20.93 9.43,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z",
|
|
||||||
"name": "github-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M20.38,8.53C20.54,8.13 21.06,6.54 20.21,4.39C20.21,4.39 18.9,4 15.91,6C14.66,5.67 13.33,5.62 12,5.62C10.68,5.62 9.34,5.67 8.09,6C5.1,3.97 3.79,4.39 3.79,4.39C2.94,6.54 3.46,8.13 3.63,8.53C2.61,9.62 2,11 2,12.72C2,19.16 6.16,20.61 12,20.61C17.79,20.61 22,19.16 22,12.72C22,11 21.39,9.62 20.38,8.53M12,19.38C7.88,19.38 4.53,19.19 4.53,15.19C4.53,14.24 5,13.34 5.8,12.61C7.14,11.38 9.43,12.03 12,12.03C14.59,12.03 16.85,11.38 18.2,12.61C19,13.34 19.5,14.23 19.5,15.19C19.5,19.18 16.13,19.38 12,19.38M8.86,13.12C8.04,13.12 7.36,14.12 7.36,15.34C7.36,16.57 8.04,17.58 8.86,17.58C9.69,17.58 10.36,16.58 10.36,15.34C10.36,14.11 9.69,13.12 8.86,13.12M15.14,13.12C14.31,13.12 13.64,14.11 13.64,15.34C13.64,16.58 14.31,17.58 15.14,17.58C15.96,17.58 16.64,16.58 16.64,15.34C16.64,14.11 16,13.12 15.14,13.12Z",
|
|
||||||
"name": "github-face"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M8,2A3,3 0 0,0 5,5V16.5H8V5H19A3,3 0 0,0 16,2H8M16,7.5V19H5A3,3 0 0,0 8,22H16A3,3 0 0,0 19,19V7.5H16Z",
|
|
||||||
"name": "glassdoor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M2,22L8.5,2H15.4L9.2,20C9.2,20 8.6,22 7,22C5.9,22 2,22 2,22M16.4,5L13,15L15,20.7C15,20.7 15.4,22 17,22C18.3,22 22,22 22,22L16.4,5Z",
|
|
||||||
"name": "google-adwords"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M19,3H13V8L17,7L16,11H21V5C21,3.89 20.1,3 19,3M17,17L13,16V21H19A2,2 0 0,0 21,19V13H16M8,13H3V19A2,2 0 0,0 5,21H11V16L7,17M3,5V11H8L7,7L11,8V3H5C3.89,3 3,3.89 3,5Z",
|
|
||||||
"name": "google-pages"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,1.5A9,9 0 0,1 21,10.5C21,13.11 19.89,15.47 18.11,17.11L17.05,16.05C18.55,14.68 19.5,12.7 19.5,10.5A7.5,7.5 0 0,0 12,3A7.5,7.5 0 0,0 4.5,10.5C4.5,12.7 5.45,14.68 6.95,16.05L5.89,17.11C4.11,15.47 3,13.11 3,10.5A9,9 0 0,1 12,1.5M12,4.5A6,6 0 0,1 18,10.5C18,12.28 17.22,13.89 16,15L14.92,13.92C15.89,13.1 16.5,11.87 16.5,10.5C16.5,8 14.5,6 12,6C9.5,6 7.5,8 7.5,10.5C7.5,11.87 8.11,13.1 9.08,13.92L8,15C6.78,13.89 6,12.28 6,10.5A6,6 0 0,1 12,4.5M8.11,17.65L11.29,14.46C11.68,14.07 12.32,14.07 12.71,14.46L15.89,17.65C16.28,18.04 16.28,18.67 15.89,19.06L12.71,22.24C12.32,22.63 11.68,22.63 11.29,22.24L8.11,19.06C7.72,18.67 7.72,18.04 8.11,17.65Z",
|
|
||||||
"name": "google-physical-web"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M19.5,12H18V10.5H17V12H15.5V13H17V14.5H18V13H19.5V12M9.65,11.36V12.9H12.22C12.09,13.54 11.45,14.83 9.65,14.83C8.11,14.83 6.89,13.54 6.89,12C6.89,10.46 8.11,9.17 9.65,9.17C10.55,9.17 11.13,9.56 11.45,9.88L12.67,8.72C11.9,7.95 10.87,7.5 9.65,7.5C7.14,7.5 5.15,9.5 5.15,12C5.15,14.5 7.14,16.5 9.65,16.5C12.22,16.5 13.96,14.7 13.96,12.13C13.96,11.81 13.96,11.61 13.89,11.36H9.65Z",
|
|
||||||
"name": "google-plus-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M14,20.95H20V10.78L8,7.34V3.05H4V20.95H10V15.31H14V20.95Z",
|
|
||||||
"name": "houzz"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M13.5,18.71H18V11.09L9,8.5V5.29H6V18.71H10.5V14.5H13.5V18.71Z",
|
|
||||||
"name": "houzz-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M10,5A1,1 0 0,0 9,4H8V2H16V4H15A1,1 0 0,0 14,5V19A1,1 0 0,0 15,20H16V22H8V20H9A1,1 0 0,0 10,19V5Z",
|
|
||||||
"name": "instapaper"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M7.85,17.07C7.03,17.17 3.5,17.67 4.06,20.26C4.69,23.3 9.87,22.59 9.83,19C9.81,16.57 9.83,9.2 9.83,9.2C9.83,9.2 9.76,8.53 10.43,8.39L18.19,6.79C18.19,6.79 18.83,6.65 18.83,7.29C18.83,7.89 18.83,14.2 18.83,14.2C18.83,14.2 18.9,14.83 18.12,15C17.34,15.12 13.91,15.4 14.19,18C14.5,21.07 20,20.65 20,17.07V2.61C20,2.61 20.04,1.62 18.9,1.87L9.5,3.78C9.5,3.78 8.66,3.96 8.66,4.77C8.66,5.5 8.66,16.11 8.66,16.11C8.66,16.11 8.66,16.96 7.85,17.07Z",
|
|
||||||
"name": "itunes"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M2,5.69C8.92,1.07 11.1,7 11.28,10.27C11.46,13.53 8.29,17.64 4.31,14.92V20.3L2,18.77V5.69M4.22,7.4V12.78C7.84,14.95 9.08,13.17 9.08,10.09C9.08,5.74 6.57,5.59 4.22,7.4M15.08,4.15C15.08,4.15 14.9,7.64 15.08,11.07C15.44,14.5 19.69,11.84 19.69,11.84V4.92L22,5.2V14.44C22,20.6 15.85,20.3 15.85,20.3L15.08,18C20.46,18 19.78,14.43 19.78,14.43C13.27,16.97 12.77,12.61 12.77,12.61V5.69L15.08,4.15Z",
|
|
||||||
"name": "language-python-text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M18,17.93C15.92,17.92 14.81,16.9 14.04,15.09L13.82,14.6L11.92,10.23C11.29,8.69 9.72,7.64 7.96,7.64C5.57,7.64 3.63,9.59 3.63,12C3.63,14.41 5.57,16.36 7.96,16.36C9.62,16.36 11.08,15.41 11.8,14L12.57,15.81C11.5,17.15 9.82,18 7.96,18C4.67,18 2,15.32 2,12C2,8.69 4.67,6 7.96,6C10.44,6 12.45,7.34 13.47,9.7C13.54,9.89 14.54,12.24 15.42,14.24C15.96,15.5 16.42,16.31 17.91,16.36C19.38,16.41 20.39,15.5 20.39,14.37C20.39,13.26 19.62,13 18.32,12.56C16,11.79 14.79,11 14.79,9.15C14.79,7.33 16,6.12 18,6.12C19.31,6.12 20.24,6.7 20.89,7.86L19.62,8.5C19.14,7.84 18.61,7.57 17.94,7.57C17,7.57 16.33,8.23 16.33,9.1C16.33,10.34 17.43,10.53 18.97,11.03C21.04,11.71 22,12.5 22,14.42C22,16.45 20.27,17.93 18,17.93Z",
|
|
||||||
"name": "lastfm"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M18.5,18.5V13.2A3.26,3.26 0 0,0 15.24,9.94C14.39,9.94 13.4,10.46 12.92,11.24V10.13H10.13V18.5H12.92V13.57C12.92,12.8 13.54,12.17 14.31,12.17A1.4,1.4 0 0,1 15.71,13.57V18.5H18.5M6.88,8.56A1.68,1.68 0 0,0 8.56,6.88C8.56,5.95 7.81,5.19 6.88,5.19A1.69,1.69 0 0,0 5.19,6.88C5.19,7.81 5.95,8.56 6.88,8.56M8.27,18.5V10.13H5.5V18.5H8.27Z",
|
|
||||||
"name": "linkedin-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M9.56,12.5C9.56,12.6 9.5,12.72 9.4,12.79C9.2,12.97 8.89,12.94 8.71,12.74C8.63,12.65 8.59,12.53 8.59,12.41V8.5H5.66V13.39A2.44,2.44 0 0,0 8.1,15.83C8.68,15.83 9.24,15.62 9.68,15.24C9.64,15.6 9.43,15.93 9.11,16.11C8.75,16.31 8.35,16.42 7.94,16.41C7.46,16.41 7,16.3 6.56,16.09L6.39,16V18.6C7.04,18.86 7.74,19 8.44,19C9.47,19 10.46,18.66 11.25,18C12.08,17.25 12.54,16.18 12.5,15.06V8.5H9.56V12.5M4.93,13.39V5.59H2V12.9C1.84,14.35 2.88,15.65 4.33,15.81C4.41,15.82 4.5,15.83 4.56,15.83V15.83C4.93,15.83 5.29,15.74 5.63,15.59L5.75,15.5L5.65,15.41C5.17,14.85 4.91,14.13 4.93,13.39M22,11.39V8.5H21C20.59,6.38 18.53,5 16.41,5.41C16.17,5.45 15.94,5.5 15.71,5.61C14.28,6.24 13.33,7.62 13.26,9.18V15.83H13.39C14.95,15.76 16.19,14.47 16.19,12.9H17.41V10H16.15V9.17C16.15,8.86 16.32,8.57 16.59,8.41C17.06,8.13 17.68,8.28 17.96,8.76C18.05,8.91 18.09,9.07 18.1,9.24V11.93C18.07,14.05 19.75,15.79 21.87,15.83H22V12.9H22A1,1 0 0,1 21,11.9V11.41L22,11.39Z",
|
|
||||||
"name": "lyft"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M15.45,11.91C15.34,9.7 13.7,8.37 11.72,8.37H11.64C9.35,8.37 8.09,10.17 8.09,12.21C8.09,14.5 9.62,15.95 11.63,15.95C13.88,15.95 15.35,14.3 15.46,12.36M11.65,6.39C13.18,6.39 14.62,7.07 15.67,8.13V8.13C15.67,7.62 16,7.24 16.5,7.24H16.61C17.35,7.24 17.5,7.94 17.5,8.16V16.06C17.46,16.58 18.04,16.84 18.37,16.5C19.64,15.21 21.15,9.81 17.58,6.69C14.25,3.77 9.78,4.25 7.4,5.89C4.88,7.63 3.26,11.5 4.83,15.11C6.54,19.06 11.44,20.24 14.35,19.06C15.83,18.47 16.5,20.46 15,21.11C12.66,22.1 6.23,22 3.22,16.79C1.19,13.27 1.29,7.08 6.68,3.87C10.81,1.42 16.24,2.1 19.5,5.5C22.95,9.1 22.75,15.8 19.4,18.41C17.89,19.59 15.64,18.44 15.66,16.71L15.64,16.15C14.59,17.2 13.18,17.81 11.65,17.81C8.63,17.81 6,15.15 6,12.13C6,9.08 8.63,6.39 11.65,6.39Z",
|
|
||||||
"name": "mail-ru"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M20.93,14C20.66,15.4 18.5,16.95 15.97,17.25C14.66,17.4 13.38,17.55 12,17.5C9.76,17.38 8,16.95 8,16.95L8.03,17.57C8.32,19.78 10.22,19.92 12.03,20C13.85,20.04 15.47,19.53 15.47,19.53L15.55,21.17C15.55,21.17 14.27,21.86 12,22C10.75,22.05 9.2,21.95 7.39,21.47C3.47,20.43 2.79,16.25 2.69,12L2.68,8.57C2.68,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.36,11.77 20.93,14M8.33,10.32C8.33,9.54 7.7,8.91 6.93,8.91C6.15,8.91 5.5,9.54 5.5,10.32C5.5,11.09 6.15,11.72 6.93,11.72A1.4,1.4 0 0,0 8.33,10.32M13.41,10.32A1.41,1.41 0 0,0 12,8.91A1.41,1.41 0 0,0 10.59,10.32C10.59,11.09 11.22,11.72 12,11.72C12.78,11.72 13.41,11.09 13.41,10.32M18.5,10.32C18.5,9.54 17.85,8.91 17.07,8.91C16.3,8.91 15.67,9.54 15.67,10.32A1.4,1.4 0 0,0 17.07,11.72C17.85,11.72 18.5,11.09 18.5,10.32Z",
|
|
||||||
"name": "mastodon-variant"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M4.37,7.3C4.4,7.05 4.3,6.81 4.12,6.65L2.25,4.4V4.06H8.05L12.53,13.89L16.47,4.06H22V4.4L20.4,5.93C20.27,6.03 20.2,6.21 20.23,6.38V17.62C20.2,17.79 20.27,17.97 20.4,18.07L21.96,19.6V19.94H14.12V19.6L15.73,18.03C15.89,17.88 15.89,17.83 15.89,17.59V8.5L11.4,19.9H10.8L5.57,8.5V16.14C5.5,16.46 5.63,16.78 5.86,17L7.96,19.57V19.9H2V19.57L4.1,17C4.33,16.78 4.43,16.46 4.37,16.14V7.3Z",
|
|
||||||
"name": "medium"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M19.61,14.86C19.61,16.68 18.3,18.25 16.5,18.55C16.29,18.59 16.07,18.62 15.84,18.61C15.76,18.61 15.73,18.64 15.71,18.71C15.35,19.74 14.64,20.35 13.57,20.5C12.86,20.6 12.22,20.41 11.65,19.97C11.57,19.9 11.5,19.9 11.44,19.96C10.78,20.43 10.04,20.64 9.23,20.59C7.66,20.5 6.33,19.29 6.08,17.74C6.06,17.63 6.04,17.5 6.04,17.41C6.04,17.32 6,17.29 5.92,17.27C5.44,17.18 5,17 4.63,16.68C3.92,16.13 3.5,15.41 3.4,14.5C3.29,13.5 3.61,12.62 4.32,11.89C4.38,11.83 4.38,11.79 4.34,11.72C4.07,11.24 3.94,10.72 3.96,10.17C4,8.79 4.97,7.65 6.31,7.37C6.46,7.33 6.54,7.27 6.61,7.13C7.27,5.71 8.37,4.85 9.91,4.56C11,4.36 12,4.58 12.94,5.13C13,5.18 13.08,5.18 13.17,5.16C14.67,4.72 16,5.04 17.12,6.11C17.78,6.74 18.15,7.54 18.26,8.46C18.28,8.66 18.29,8.86 18.28,9.06C18.27,9.14 18.29,9.17 18.37,9.19C19.04,9.44 19.5,9.91 19.71,10.6C19.96,11.45 19.75,12.21 19.11,12.83C19.05,12.89 19.07,12.92 19.1,12.97C19.44,13.56 19.61,14.18 19.61,14.86M12.93,14.57C12.93,15.34 13.43,16 14.14,16.26C14.5,16.37 14.85,16.43 15.22,16.45C15.5,16.46 15.75,16.44 16,16.32C16.19,16.22 16.28,16.06 16.27,15.85C16.26,15.64 16.16,15.5 15.96,15.4C15.89,15.37 15.82,15.34 15.74,15.33C15.5,15.29 15.3,15.26 15.07,15.21C14.71,15.14 14.55,14.95 14.55,14.57C14.54,14.24 14.63,13.93 14.73,13.63C14.92,13.07 15.17,12.53 15.41,12C15.64,11.47 15.88,10.95 16.04,10.4C16.13,10.1 16.18,9.8 16.09,9.5C15.97,9 15.69,8.7 15.2,8.61C14.75,8.5 14.3,8.5 13.9,8.78C13.76,8.87 13.63,8.85 13.5,8.74C13.43,8.67 13.34,8.58 13.26,8.5C12.84,8.12 12.3,8.1 11.85,8.45C11.67,8.59 11.5,8.76 11.33,8.89C11.16,9 11,9.03 10.79,8.92C10.6,8.83 10.42,8.74 10.23,8.65C10.03,8.57 9.85,8.46 9.63,8.44C8.95,8.38 8.24,8.79 7.94,9.41C7.8,9.68 7.69,9.96 7.59,10.25C7.11,11.57 6.72,12.91 6.32,14.26C6.14,14.86 6.35,15.45 6.86,15.77C7.26,16 7.69,16.09 8.14,15.95C8.5,15.84 8.71,15.55 8.85,15.22C9.31,14.13 9.73,13 10.17,11.91C10.29,11.61 10.41,11.3 10.54,11C10.67,10.7 11.04,10.6 11.26,10.8C11.4,10.92 11.44,11.09 11.42,11.26C11.41,11.45 11.34,11.62 11.27,11.79C11,12.5 10.69,13.24 10.4,13.97C10.34,14.11 10.28,14.26 10.25,14.42C10.21,14.69 10.31,14.93 10.54,15C10.76,15.12 11,15.14 11.23,15.05C11.5,14.95 11.67,14.74 11.79,14.5C12.22,13.65 12.65,12.8 13.08,11.95C13.28,11.56 13.5,11.17 13.68,10.78C13.76,10.64 13.85,10.5 14,10.41C14.12,10.33 14.25,10.33 14.38,10.4C14.5,10.47 14.5,10.6 14.5,10.73C14.5,10.8 14.5,10.87 14.47,10.93C14.41,11.07 14.36,11.2 14.3,11.33C13.94,12.09 13.57,12.84 13.22,13.59C13.07,13.91 12.91,14.23 12.93,14.57M17.96,20.12C17.96,19.62 17.54,19.2 17.04,19.2C16.5,19.2 16.1,19.61 16.1,20.12A0.93,0.93 0 0,0 17.03,21.05A0.93,0.93 0 0,0 17.96,20.12M2.38,12.46C2.86,12.46 3.27,12.05 3.27,11.57C3.27,11.09 2.87,10.69 2.39,10.69C1.89,10.69 1.5,11.08 1.5,11.57C1.5,12.06 1.89,12.46 2.38,12.46M13.26,2.55C12.77,2.55 12.37,2.94 12.37,3.42C12.37,3.91 12.77,4.3 13.25,4.3C13.74,4.3 14.13,3.92 14.13,3.43C14.13,2.95 13.74,2.55 13.26,2.55M20.45,8.03C20.45,7.63 20.11,7.29 19.71,7.29C19.3,7.28 18.95,7.63 18.95,8.04C18.95,8.45 19.28,8.78 19.7,8.78C20.12,8.78 20.46,8.45 20.45,8.03M5.04,5.89C5.04,6.27 5.34,6.56 5.71,6.56C6.09,6.56 6.39,6.26 6.38,5.88C6.38,5.5 6.09,5.22 5.72,5.22C5.33,5.22 5.04,5.5 5.04,5.89M12.06,21.44C12.06,21.12 11.81,20.86 11.5,20.86C11.16,20.86 10.91,21.11 10.91,21.44C10.91,21.75 11.16,22 11.5,22C11.8,22 12.06,21.75 12.06,21.44M21,12.5C20.71,12.5 20.45,12.78 20.45,13.08A0.55,0.55 0 0,0 21,13.63C21.33,13.63 21.57,13.4 21.57,13.08C21.57,12.77 21.33,12.5 21,12.5M7.62,2C7.35,2 7.14,2.2 7.14,2.47C7.14,2.73 7.35,2.94 7.62,2.94A0.47,0.47 0 0,0 8.09,2.47C8.09,2.2 7.89,2 7.62,2M22.08,10C21.86,10 21.67,10.17 21.66,10.4C21.66,10.63 21.85,10.82 22.08,10.82C22.32,10.82 22.5,10.64 22.5,10.41C22.5,10.17 22.32,10 22.08,10M5.5,18.26C5.5,18.04 5.29,17.85 5.06,17.84C4.84,17.84 4.65,18.03 4.65,18.27C4.65,18.5 4.84,18.68 5.07,18.68C5.3,18.68 5.5,18.5 5.5,18.26Z",
|
|
||||||
"name": "meetup"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M21.11,18.5C20.97,18.5 20.83,18.44 20.71,18.36C20.37,18.13 20.28,17.68 20.5,17.34C21.18,16.34 21.54,15.16 21.54,13.93C21.54,12.71 21.18,11.53 20.5,10.5C20.28,10.18 20.37,9.73 20.71,9.5C21.04,9.28 21.5,9.37 21.72,9.7C22.56,10.95 23,12.41 23,13.93C23,15.45 22.56,16.91 21.72,18.16C21.58,18.37 21.35,18.5 21.11,18.5M19,17.29C18.88,17.29 18.74,17.25 18.61,17.17C18.28,16.94 18.19,16.5 18.42,16.15C18.86,15.5 19.1,14.73 19.1,13.93C19.1,13.14 18.86,12.37 18.42,11.71C18.19,11.37 18.28,10.92 18.61,10.69C18.95,10.47 19.4,10.55 19.63,10.89C20.24,11.79 20.56,12.84 20.56,13.93C20.56,15 20.24,16.07 19.63,16.97C19.5,17.18 19.25,17.29 19,17.29M14.9,15.73C15.89,15.73 16.7,14.92 16.7,13.93C16.7,13.17 16.22,12.5 15.55,12.25C15.5,12.55 15.43,12.85 15.34,13.14C15.23,13.44 14.95,13.64 14.64,13.64C14.57,13.64 14.5,13.62 14.41,13.6C14.03,13.47 13.82,13.06 13.95,12.67C14.09,12.24 14.17,11.78 14.17,11.32C14.17,8.93 12.22,7 9.82,7C8.1,7 6.56,8 5.87,9.5C6.54,9.7 7.16,10.04 7.66,10.54C7.95,10.83 7.95,11.29 7.66,11.58C7.38,11.86 6.91,11.86 6.63,11.58C6.17,11.12 5.56,10.86 4.9,10.86C3.56,10.86 2.46,11.96 2.46,13.3C2.46,14.64 3.56,15.73 4.9,15.73H14.9M15.6,10.75C17.06,11.07 18.17,12.37 18.17,13.93C18.17,15.73 16.7,17.19 14.9,17.19H4.9C2.75,17.19 1,15.45 1,13.3C1,11.34 2.45,9.73 4.33,9.45C5.12,7.12 7.33,5.5 9.82,5.5C12.83,5.5 15.31,7.82 15.6,10.75Z",
|
|
||||||
"name": "mixcloud"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5.68,3.96L11.41,11.65C11.55,11.84 11.55,12.1 11.41,12.29L5.65,20L5.5,20.18C4.76,21 3.47,21.07 2.64,20.31C1.85,19.59 1.79,18.37 2.43,17.5L6.56,11.97L2.46,6.47C1.83,5.62 1.88,4.39 2.67,3.67L2.82,3.54C3.73,2.87 5,3.05 5.68,3.96M18.32,3.96C19,3.05 20.27,2.87 21.18,3.54L21.33,3.67C22.12,4.39 22.17,5.61 21.54,6.47L17.44,11.97L21.57,17.5C22.21,18.36 22.15,19.59 21.36,20.31C20.53,21.07 19.24,21 18.5,20.18L18.35,20L12.59,12.29C12.45,12.1 12.45,11.84 12.59,11.65L18.32,3.96Z",
|
|
||||||
"name": "mixer"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M3.25,4.03L19.95,20.73L18.7,22L14.86,18.13C14.77,18.12 14.68,18.09 14.59,18.05C14.26,17.89 14.14,17.62 14.11,17.38L12.18,15.45C12.14,15.53 12.09,15.6 12.05,15.66C11.62,16.26 11.19,16.26 10.86,16.04C10.54,15.83 5.5,12 5.23,11.87C4.95,11.76 4.85,12.03 5.12,13.5C5.39,15 4.95,15.39 4.57,15.45C4.2,15.5 3.06,15.18 3,12.14C2.95,9.11 3.76,8.62 4.14,8.62C4.6,8.62 7.08,10.69 8.84,12.12L2,5.28L3.25,4.03M18.38,16.56C18.75,15.4 19.12,13.8 19.1,12.03V12C19.14,8.5 17.66,5.58 17.66,5.58C17.66,5.58 17.42,4.72 18.12,4.39C18.83,4.06 19.3,4.61 19.3,4.61C21.12,8.22 21,11.64 21,12C21,12.27 21.09,14.96 19.88,18.05L18.38,16.56M15.14,13.31C15.19,12.92 15.22,12.5 15.24,12.03V12C15.14,8.5 14.13,7.21 14.13,7.21C14.13,7.21 13.89,6.34 14.59,6C15.3,5.69 15.77,6.23 15.77,6.23C17.26,8.94 17.16,11.64 17.14,12C17.15,12.2 17.2,13.38 16.82,15L15.14,13.31M10.2,8.38C10.23,7.77 10.59,7.64 10.59,7.64C10.59,7.64 11.19,7.37 11.57,7.8C11.91,8.19 12.72,9.57 12.89,11.07L10.2,8.38Z",
|
|
||||||
"name": "nfc-off"
|
|
||||||
},
|
|
||||||
{ "path": "M20,4H4V20H12V8H16V20H20V4", "name": "npm-variant" },
|
|
||||||
{
|
|
||||||
"path": "M3,3V21H21V3H3M6,6H18V18H15V9H12V18H6V6Z",
|
|
||||||
"name": "npm-variant-outline"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M8.32,21.97C8.21,21.92 8.08,21.76 8.06,21.65C8.03,21.5 8,21.76 8.66,17.56C9.26,13.76 9.25,13.82 9.33,13.71C9.46,13.54 9.44,13.54 10.94,13.53C12.26,13.5 12.54,13.5 13.13,13.41C16.38,12.96 18.39,11.05 19.09,7.75C19.13,7.53 19.17,7.34 19.18,7.34C19.18,7.33 19.25,7.38 19.33,7.44C20.36,8.22 20.71,9.66 20.32,11.58C19.86,13.87 18.64,15.39 16.74,16.04C15.93,16.32 15.25,16.43 14.05,16.46C13.25,16.5 13.23,16.5 13,16.65C12.83,16.82 12.84,16.79 12.45,19.2C12.18,20.9 12.08,21.45 12.04,21.55C11.97,21.71 11.83,21.85 11.67,21.93L11.56,22H10C8.71,22 8.38,22 8.32,21.97V21.97M3.82,19.74C3.63,19.64 3.5,19.47 3.5,19.27C3.5,19 6.11,2.68 6.18,2.5C6.27,2.32 6.5,2.13 6.68,2.06L6.83,2H10.36C14.27,2 14.12,2 15,2.2C17.62,2.75 18.82,4.5 18.37,7.13C17.87,10.06 16.39,11.8 13.87,12.43C13,12.64 12.39,12.7 10.73,12.7C9.42,12.7 9.32,12.71 9.06,12.85C8.8,13 8.59,13.27 8.5,13.6C8.46,13.67 8.23,15.07 7.97,16.7C7.71,18.33 7.5,19.69 7.5,19.72L7.47,19.78H5.69C4.11,19.78 3.89,19.78 3.82,19.74V19.74Z",
|
|
||||||
"name": "paypal"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,7A2,2 0 0,1 10,9A2,2 0 0,1 8,7C7.37,7.84 7,8.87 7,10A5,5 0 0,0 12,15A5,5 0 0,0 17,10A5,5 0 0,0 12,5C11.57,5 11.16,5.05 10.77,5.15C11.5,5.45 12,6.17 12,7M12,2A8,8 0 0,1 20,10C20,11.05 19.8,12.04 19.43,12.96C17.89,17.38 13.63,22 12,22C10.37,22 6.11,17.38 4.57,12.96C4.2,12.04 4,11.05 4,10A8,8 0 0,1 12,2Z",
|
|
||||||
"name": "periscope"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H9.29C9.69,20.33 10.19,19.38 10.39,18.64L11.05,16.34C11.36,16.95 12.28,17.45 13.22,17.45C16.17,17.45 18.22,14.78 18.22,11.45C18.22,8.28 15.64,5.89 12.3,5.89C8.14,5.89 5.97,8.67 5.97,11.72C5.97,13.14 6.69,14.89 7.91,15.45C8.08,15.56 8.19,15.5 8.19,15.34L8.47,14.28C8.5,14.14 8.5,14.06 8.41,14C7.97,13.45 7.69,12.61 7.69,11.78C7.69,9.64 9.3,7.61 12.03,7.61C14.42,7.61 16.08,9.19 16.08,11.5C16.08,14.11 14.75,15.95 13.03,15.95C12.05,15.95 11.39,15.11 11.55,14.17C11.83,13.03 12.39,11.83 12.39,11C12.39,10.22 12,9.61 11.16,9.61C10.22,9.61 9.39,10.61 9.39,11.95C9.39,12.83 9.66,13.39 9.66,13.39L8.55,18.17C8.39,19 8.47,20.25 8.55,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z",
|
|
||||||
"name": "pinterest-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M21.9,4.26C21.64,3.55 20.96,3.07 20.2,3.07H20.19L18.46,3.07H3.81C3.07,3.07 2.39,3.54 2.12,4.24C2.04,4.45 2,4.66 2,4.88V10.92L2.07,12.12C2.36,14.85 3.78,17.23 5.97,18.9C6,18.93 6.05,18.96 6.09,19H6.11C7.29,19.86 8.6,20.44 10,20.73C10.68,20.86 11.35,20.93 12,20.93C12.63,20.93 13.25,20.87 13.85,20.76C13.93,20.75 14,20.73 14.07,20.72C14.09,20.71 14.11,20.7 14.14,20.69C15.5,20.4 16.76,19.83 17.89,19H17.91C17.95,18.96 18,18.93 18.03,18.9C20.22,17.23 21.64,14.85 21.93,12.12L22,10.92V4.88C22,4.68 21.97,4.47 21.9,4.26M17.67,10.55L12.96,15.06C12.7,15.32 12.35,15.44 12,15.44C11.67,15.44 11.33,15.32 11.06,15.06L6.36,10.55C5.81,10.03 5.79,9.16 6.32,8.61C6.84,8.06 7.71,8.05 8.26,8.57L12,12.17L15.77,8.57C16.31,8.05 17.18,8.07 17.71,8.61C18.23,9.16 18.21,10.03 17.67,10.55Z",
|
|
||||||
"name": "pocket"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,3A9,9 0 0,1 21,12C21,13.76 20.5,15.4 19.62,16.79L21,18.17V20A1,1 0 0,1 20,21H18.18L16.79,19.62C15.41,20.5 13.76,21 12,21A9,9 0 0,1 3,12A9,9 0 0,1 12,3M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17C12.65,17 13.26,16.88 13.83,16.65L10.95,13.77C10.17,13 10.17,11.72 10.95,10.94C11.73,10.16 13,10.16 13.78,10.94L16.66,13.82C16.88,13.26 17,12.64 17,12A5,5 0 0,0 12,7Z",
|
|
||||||
"name": "quicktime"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M18.61,5.89C18.6,5.79 18.5,5.73 18.44,5.73C18.37,5.72 16.83,5.61 16.83,5.61C16.83,5.61 15.76,4.55 15.65,4.43C15.53,4.31 15.3,4.35 15.21,4.37C15.2,4.37 15,4.44 14.61,4.55C14.25,3.5 13.62,2.58 12.43,2.58C12.11,2.18 11.72,2 11.38,2C8.8,2 7.57,5.22 7.18,6.86C6.18,7.17 5.47,7.39 5.37,7.42C4.82,7.6 4.8,7.62 4.73,8.14C4.67,8.54 3.21,19.86 3.21,19.86L14.61,22L20.79,20.66C20.79,20.66 18.62,6 18.61,5.89M14,4.76C13.69,4.85 13.37,4.95 13,5.06C13,5 13,4.93 13,4.85C13,4.21 12.93,3.7 12.79,3.29C13.35,3.36 13.73,4 14,4.76M12.08,3.42C12.24,3.82 12.34,4.39 12.34,5.16C12.34,5.2 12.34,5.24 12.34,5.27C11.71,5.46 11.03,5.68 10.35,5.89C10.73,4.4 11.45,3.69 12.08,3.42M11.31,2.69C11.42,2.69 11.53,2.73 11.64,2.8C10.81,3.19 9.93,4.17 9.55,6.12C9,6.3 8.47,6.46 8,6.62C8.42,5.12 9.46,2.69 11.31,2.69M12.5,9.15L11.76,11.42C11.76,11.42 11.09,11.06 10.27,11.06C9.07,11.06 9,11.81 9,12C9,13.04 11.71,13.43 11.71,15.86C11.71,17.77 10.5,19 8.87,19C6.91,19 5.91,17.78 5.91,17.78L6.43,16.05C6.43,16.05 7.46,16.93 8.33,16.93C8.9,16.93 9.13,16.5 9.13,16.16C9.13,14.81 6.92,14.75 6.92,12.53C6.92,10.66 8.26,8.85 10.97,8.85C12,8.85 12.5,9.15 12.5,9.15M15.43,5.29L16.75,6.6L17.71,6.68C18.05,9 19.19,16.73 19.66,19.88L14.66,20.97L15.43,5.29Z",
|
|
||||||
"name": "shopify"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M7.47,17.19C7.37,17.95 7.08,18.21 6.19,18.21C5.27,18.21 4.87,17.79 4.81,16.87L4.61,13.65C4.61,12.91 4.87,12.55 5.86,12.55C7.21,12.55 7.04,13.54 7.64,14.5C8.33,15.62 10,16.35 12.31,16.35C15.17,16.35 17,15.14 17,13.57C17,12.23 15.89,11.39 13.85,11.16L11.5,10.89C7.21,10.42 5.1,9.19 5.1,6.62C5.1,4.07 8.06,2 12.21,2C13.5,2 14.81,2.29 16.29,2.76C16.29,2.26 16.58,2.1 17.3,2.1C18.46,2.1 18.55,2.39 18.62,3.08L18.85,5.88C18.85,6.5 18.39,6.83 17.63,6.83C16.35,6.83 16.55,5.88 15.86,5.07C15.17,4.26 13.79,3.73 12.08,3.73C9.44,3.73 7.7,4.89 7.7,6.5C7.7,7.8 8.92,8.56 11.38,8.82L13.95,9.08C17.7,9.5 19.61,10.92 19.61,13.33C19.61,16.17 16.71,18.08 12.21,18.08C10.56,18.08 9.08,17.77 7.47,17.19M1,16H2V21H23V22H1V16Z",
|
|
||||||
"name": "slackware"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M6,3H18A3,3 0 0,1 21,6V18A3,3 0 0,1 18,21H6A3,3 0 0,1 3,18V6A3,3 0 0,1 6,3M7,6A1,1 0 0,0 6,7V17A1,1 0 0,0 7,18H17A1,1 0 0,0 18,17V7A1,1 0 0,0 17,6H7M9.5,9H14.5A0.5,0.5 0 0,1 15,9.5V14.5A0.5,0.5 0 0,1 14.5,15H9.5A0.5,0.5 0 0,1 9,14.5V9.5A0.5,0.5 0 0,1 9.5,9Z",
|
|
||||||
"name": "square-inc"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5.5,0H18.5A5.5,5.5 0 0,1 24,5.5V18.5A5.5,5.5 0 0,1 18.5,24H5.5A5.5,5.5 0 0,1 0,18.5V5.5A5.5,5.5 0 0,1 5.5,0M15.39,15.18C15.39,16.76 14.5,17.81 12.85,17.95V12.61C14.55,13.13 15.39,13.66 15.39,15.18M11.65,6V10.88C10.34,10.5 9.03,9.93 9.03,8.43C9.03,6.94 10.18,6.12 11.65,6M15.5,7.6L16.5,6.8C15.62,5.66 14.4,4.92 12.85,4.77V3.8H11.65V3.8L11.65,4.75C9.5,4.89 7.68,6.17 7.68,8.5C7.68,11 9.74,11.78 11.65,12.29V17.96C10.54,17.84 9.29,17.31 8.43,16.03L7.3,16.78C8.2,18.12 9.76,19 11.65,19.14V20.2H12.07L12.85,20.2V19.16C15.35,19 16.7,17.34 16.7,15.14C16.7,12.58 14.81,11.76 12.85,11.19V6.05C14,6.22 14.85,6.76 15.5,7.6Z",
|
|
||||||
"name": "square-inc-cash"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V15L6.19,16.31C6.45,17.6 7.6,18.58 8.97,18.58C10.53,18.58 11.8,17.31 11.8,15.75V15.62L15.2,13.19H15.28C17.36,13.19 19.05,11.5 19.05,9.42C19.05,7.34 17.36,5.65 15.28,5.65C13.2,5.65 11.5,7.34 11.5,9.42V9.47L9.13,12.93L8.97,12.92C8.38,12.92 7.83,13.1 7.38,13.41L3,11.6V5A2,2 0 0,1 5,3H19M8.28,17.17C9.08,17.5 10,17.13 10.33,16.33C10.66,15.53 10.28,14.62 9.5,14.29L8.22,13.76C8.71,13.58 9.26,13.57 9.78,13.79C10.31,14 10.72,14.41 10.93,14.94C11.15,15.46 11.15,16.04 10.93,16.56C10.5,17.64 9.23,18.16 8.15,17.71C7.65,17.5 7.27,17.12 7.06,16.67L8.28,17.17M17.8,9.42C17.8,10.81 16.67,11.94 15.28,11.94C13.9,11.94 12.77,10.81 12.77,9.42A2.51,2.51 0 0,1 15.28,6.91C16.67,6.91 17.8,8.04 17.8,9.42M13.4,9.42C13.4,10.46 14.24,11.31 15.29,11.31C16.33,11.31 17.17,10.46 17.17,9.42C17.17,8.38 16.33,7.53 15.29,7.53C14.24,7.53 13.4,8.38 13.4,9.42Z",
|
|
||||||
"name": "steam-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M14.92,17.16L16.75,13.53H19.45L14.94,22.5L10.37,13.53H13.07L14.92,17.16M10.63,8.66L8.18,13.55H4.55L10.61,1.5L16.74,13.55H13.11L10.63,8.66Z",
|
|
||||||
"name": "strava"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,14C11,14 9,15 9,16C9,18 12,18 12,18V17A1,1 0 0,1 11,16A1,1 0 0,1 12,15V14M12,19C12,19 8,18.5 8,16.5C8,13.5 11,12.75 12,12.75V11.5C11,11.5 7,13 7,16C7,20 12,20 12,20V19M10.07,7.03L11.26,7.56C11.69,5.12 12.84,3.5 12.84,3.5C12.41,4.53 12.13,5.38 11.95,6.05C13.16,3.55 15.61,2 15.61,2C14.43,3.18 13.56,4.46 12.97,5.53C14.55,3.85 16.74,2.75 16.74,2.75C14.05,4.47 12.84,7.2 12.54,7.96L13.09,8.04C13.09,8.56 13.09,9.04 13.34,9.42C14.1,11.31 18,11.47 18,16C18,20.53 13.97,22 11.83,22C9.69,22 5,21.03 5,16C5,10.97 9.95,10.93 10.83,8.92C10.95,8.54 10.07,7.03 10.07,7.03Z",
|
|
||||||
"name": "tor"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M17,11H13V15.5C13,16.44 13.28,17 14.5,17H17V21C17,21 15.54,21.05 14.17,21.05C10.8,21.05 9.5,19 9.5,16.75V11H7V7C10.07,6.74 10.27,4.5 10.5,3H13V7H17",
|
|
||||||
"name": "tumblr"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M16,11H13V14.9C13,15.63 13.14,16 14.1,16H16V19C16,19 14.97,19.1 13.9,19.1C11.25,19.1 10,17.5 10,15.7V11H8V8.2C10.41,8 10.62,6.16 10.8,5H13V8H16M20,2H4C2.89,2 2,2.89 2,4V20A2,2 0 0,0 4,22H20A2,2 0 0,0 22,20V4C22,2.89 21.1,2 20,2Z",
|
|
||||||
"name": "tumblr-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M3.75,17L8,12.75V16H18V11.5L20,9.5V16A2,2 0 0,1 18,18H8V21.25L3.75,17M20.25,7L16,11.25V8H6V12.5L4,14.5V8A2,2 0 0,1 6,6H16V2.75L20.25,7Z",
|
|
||||||
"name": "tumblr-reblog"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33Z",
|
|
||||||
"name": "twitter-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M17.71,9.33C18.19,8.93 18.75,8.45 19,7.92C18.59,8.13 18.1,8.26 17.56,8.33C18.06,7.97 18.47,7.5 18.68,6.86C18.16,7.14 17.63,7.38 16.97,7.5C15.42,5.63 11.71,7.15 12.37,9.95C9.76,9.79 8.17,8.61 6.85,7.16C6.1,8.38 6.75,10.23 7.64,10.74C7.18,10.71 6.83,10.57 6.5,10.41C6.54,11.95 7.39,12.69 8.58,13.09C8.22,13.16 7.82,13.18 7.44,13.12C7.81,14.19 8.58,14.86 9.9,15C9,15.76 7.34,16.29 6,16.08C7.15,16.81 8.46,17.39 10.28,17.31C14.69,17.11 17.64,13.95 17.71,9.33M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2Z",
|
|
||||||
"name": "twitter-circle"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M6.38,13.24V13.24C6.38,11.84 6.38,10.44 6.38,9.04H7.4V15.84H6.39C6.39,15.63 6.39,15.42 6.39,15.21C5.93,15.68 5.29,15.96 4.58,15.96C3.12,15.96 2,14.9 2,13.3V9.04H3V13.24C3,14.33 3.74,15.04 4.7,15.04C5.64,15.04 6.38,14.31 6.38,13.24M9.14,9.04V11.5C9.37,11.29 9.65,11.1 9.95,10.97C10.25,10.85 10.58,10.78 10.91,10.78C12.37,10.78 13.5,11.94 13.5,13.37C13.5,14.8 12.37,15.96 10.91,15.96C10.58,15.96 10.25,15.89 9.95,15.77C9.64,15.64 9.37,15.45 9.13,15.22C9.13,15.43 9.13,15.63 9.13,15.84C8.81,15.84 8.5,15.84 8.16,15.84V9.04H9.14M12.55,13.37V13.37C12.55,12.41 11.77,11.65 10.84,11.65C9.89,11.65 9.13,12.41 9.13,13.37C9.13,14.32 9.88,15.09 10.84,15.09C11.77,15.09 12.55,14.32 12.55,13.37M16.46,10.79C17.9,10.79 18.95,11.89 18.95,13.36V13.69H14.91C15.04,14.5 15.71,15.09 16.55,15.09C17.13,15.09 17.61,14.86 18,14.36L18.7,14.89C18.2,15.55 17.46,15.95 16.55,15.95C15.06,15.95 13.91,14.84 13.91,13.36C13.91,11.97 15,10.79 16.46,10.79M14.92,12.91H17.95C17.79,12.15 17.18,11.65 16.44,11.65C15.71,11.65 15.1,12.15 14.92,12.91M20.5,13V15.84H19.5V10.89C19.82,10.89 20.14,10.89 20.47,10.89V11.5C20.71,11.1 21.11,10.85 21.66,10.85H22V11.76H21.59C20.95,11.76 20.5,12.26 20.5,13",
|
|
||||||
"name": "uber"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M19.5,3C20.14,4.08 20.44,5.19 20.44,6.6C20.44,11.08 16.61,16.91 13.5,21H6.41L3.56,4L9.77,3.39L11.28,15.5C12.69,13.21 14.42,9.61 14.42,7.16C14.42,5.81 14.19,4.9 13.83,4.15L19.5,3Z",
|
|
||||||
"name": "venmo"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M5,3A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5M5.5,8.5H7C7.36,8.5 7.5,8.66 7.64,9.07C8.36,11.17 9.57,13 10.07,13C10.26,13 10.35,12.92 10.35,12.45V10.28C10.29,9.28 9.76,9.19 9.76,8.84C9.76,8.67 9.9,8.5 10.14,8.5H12.45C12.77,8.5 12.87,8.67 12.87,9.04V11.96C12.87,12.27 13,12.38 13.1,12.38C13.29,12.38 13.45,12.27 13.79,11.93C14.85,10.74 15.6,8.92 15.6,8.92C15.7,8.7 15.87,8.5 16.24,8.5H17.71C18.16,8.5 18.26,8.73 18.16,9.04C17.97,9.9 16.18,12.43 16.18,12.43C16,12.68 15.96,12.8 16.18,13.09C16.33,13.3 16.85,13.74 17.19,14.15C17.83,14.86 18.3,15.46 18.44,15.87C18.56,16.29 18.35,16.5 17.93,16.5H16.45C15.89,16.5 15.73,16.05 14.73,15.05C13.85,14.21 13.5,14.1 13.26,14.1C12.96,14.1 12.87,14.18 12.87,14.61V15.93C12.87,16.29 12.76,16.5 11.82,16.5C10.26,16.5 8.54,15.55 7.33,13.8C5.5,11.24 5,9.31 5,8.92C5,8.7 5.08,8.5 5.5,8.5Z",
|
|
||||||
"name": "vk-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M5.5,8.5H7C7.36,8.5 7.5,8.66 7.64,9.07C8.36,11.17 9.57,13 10.07,13C10.26,13 10.35,12.92 10.35,12.45V10.28C10.29,9.28 9.76,9.19 9.76,8.84C9.76,8.67 9.9,8.5 10.14,8.5H12.45C12.77,8.5 12.87,8.67 12.87,9.04V11.96C12.87,12.27 13,12.38 13.1,12.38C13.29,12.38 13.45,12.27 13.79,11.93C14.85,10.74 15.6,8.92 15.6,8.92C15.7,8.7 15.87,8.5 16.24,8.5H17.71C18.16,8.5 18.26,8.73 18.16,9.04C17.97,9.9 16.18,12.43 16.18,12.43C16,12.68 15.96,12.8 16.18,13.09C16.33,13.3 16.85,13.74 17.19,14.15C17.83,14.86 18.3,15.46 18.44,15.87C18.56,16.29 18.35,16.5 17.93,16.5H16.45C15.89,16.5 15.73,16.05 14.73,15.05C13.85,14.21 13.5,14.1 13.26,14.1C12.96,14.1 12.87,14.18 12.87,14.61V15.93C12.87,16.29 12.76,16.5 11.82,16.5C10.26,16.5 8.54,15.55 7.33,13.8C5.5,11.24 5,9.31 5,8.92C5,8.7 5.08,8.5 5.5,8.5Z",
|
|
||||||
"name": "vk-circle"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M17,17.5L12,15L7,17.5V5H5V19H19V5H17V17.5M12,12.42L14.25,13.77L13.65,11.22L15.64,9.5L13,9.27L12,6.86L11,9.27L8.36,9.5L10.35,11.22L9.75,13.77L12,12.42M5,3H19A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3Z",
|
|
||||||
"name": "wunderlist"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M0 16.7L3.2 12.9L0 9.1L1.5 7.8L4.5 11.3L7.5 7.8L9 9.1L5.8 12.9L9 16.7L7.5 18L4.5 14.4L1.5 18L0 16.7M24 16.9C24 17.4 23.6 17.9 23 17.9H20C18.9 17.9 18 17 18 15.9V13.9C18 12.8 18.9 11.9 20 11.9H22V9.9H18V8H23C23.5 8 24 8.4 24 9M22 14H20V16H22V14M16 16.9C16 17.4 15.6 17.9 15 17.9H12C10.9 17.9 10 17 10 15.9V9.9C10 8.8 10.9 7.9 12 7.9H14V5H16V16.9M14 15.9V9.9H12V15.9H14Z",
|
|
||||||
"name": "xda"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M4.8,3C3.8,3 3,3.8 3,4.8V19.2C3,20.2 3.8,21 4.8,21H19.2C20.2,21 21,20.2 21,19.2V4.8C21,3.8 20.2,3 19.2,3M16.07,5H18.11C18.23,5 18.33,5.04 18.37,5.13C18.43,5.22 18.43,5.33 18.37,5.44L13.9,13.36L16.75,18.56C16.81,18.67 16.81,18.78 16.75,18.87C16.7,18.95 16.61,19 16.5,19H14.47C14.16,19 14,18.79 13.91,18.61L11.04,13.35C11.18,13.1 15.53,5.39 15.53,5.39C15.64,5.19 15.77,5 16.07,5M7.09,7.76H9.1C9.41,7.76 9.57,7.96 9.67,8.15L11.06,10.57C10.97,10.71 8.88,14.42 8.88,14.42C8.77,14.61 8.63,14.81 8.32,14.81H6.3C6.18,14.81 6.09,14.76 6.04,14.67C6,14.59 6,14.47 6.04,14.36L8.18,10.57L6.82,8.2C6.77,8.09 6.75,8 6.81,7.89C6.86,7.81 6.96,7.76 7.09,7.76Z",
|
|
||||||
"name": "xing-box"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M15.85,6H17.74C17.86,6 17.94,6.04 18,6.12C18.04,6.2 18.04,6.3 18,6.41L13.84,13.76L16.5,18.59C16.53,18.69 16.53,18.8 16.5,18.88C16.43,18.96 16.35,19 16.24,19H14.36C14.07,19 13.93,18.81 13.84,18.64L11.17,13.76C11.31,13.5 15.35,6.36 15.35,6.36C15.45,6.18 15.57,6 15.85,6M7.5,8.57H9.39C9.67,8.57 9.81,8.75 9.9,8.92L11.19,11.17C11.12,11.3 9.17,14.75 9.17,14.75C9.07,14.92 8.94,15.11 8.66,15.11H6.78C6.67,15.11 6.59,15.06 6.54,15C6.5,14.9 6.5,14.8 6.54,14.69L8.53,11.17L7.27,9C7.21,8.87 7.2,8.77 7.25,8.69C7.3,8.61 7.39,8.57 7.5,8.57Z",
|
|
||||||
"name": "xing-circle"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "M10.59,2C11.23,2 11.5,2.27 11.58,2.97L11.79,6.14L12.03,10.29C12.05,10.64 12,11 11.86,11.32C11.64,11.77 11.14,11.89 10.73,11.58C10.5,11.39 10.31,11.14 10.15,10.87L6.42,4.55C6.06,3.94 6.17,3.54 6.77,3.16C7.5,2.68 9.73,2 10.59,2M14.83,14.85L15.09,14.91L18.95,16.31C19.61,16.55 19.79,16.92 19.5,17.57C19.06,18.7 18.34,19.66 17.42,20.45C16.96,20.85 16.5,20.78 16.21,20.28L13.94,16.32C13.55,15.61 14.03,14.8 14.83,14.85M4.5,14C4.5,13.26 4.5,12.55 4.75,11.87C4.97,11.2 5.33,11 6,11.27L9.63,12.81C10.09,13 10.35,13.32 10.33,13.84C10.3,14.36 9.97,14.58 9.53,14.73L5.85,15.94C5.15,16.17 4.79,15.96 4.64,15.25C4.55,14.83 4.47,14.4 4.5,14M11.97,21C11.95,21.81 11.6,22.12 10.81,22C9.77,21.8 8.81,21.4 7.96,20.76C7.54,20.44 7.45,19.95 7.76,19.53L10.47,15.97C10.7,15.67 11.03,15.6 11.39,15.74C11.77,15.88 11.97,16.18 11.97,16.59V21M14.45,13.32C13.73,13.33 13.23,12.5 13.64,11.91C14.47,10.67 15.35,9.46 16.23,8.26C16.5,7.85 16.94,7.82 17.31,8.16C18.24,9 18.91,10 19.29,11.22C19.43,11.67 19.25,12.08 18.83,12.2L15.09,13.17L14.45,13.32Z",
|
|
||||||
"name": "yelp"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
@@ -1,16 +1,17 @@
|
|||||||
import "@polymer/app-layout/app-header-layout/app-header-layout";
|
import "@polymer/app-layout/app-header-layout/app-header-layout";
|
||||||
import "@polymer/app-layout/app-header/app-header";
|
import "@polymer/app-layout/app-header/app-header";
|
||||||
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
||||||
import "../../src/components/ha-icon-button";
|
|
||||||
import "../../src/components/ha-icon";
|
|
||||||
import "@polymer/paper-item/paper-item";
|
import "@polymer/paper-item/paper-item";
|
||||||
import "@polymer/paper-item/paper-item-body";
|
import "@polymer/paper-item/paper-item-body";
|
||||||
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
import { html } from "@polymer/polymer/lib/utils/html-tag";
|
||||||
/* eslint-plugin-disable lit */
|
/* eslint-plugin-disable lit */
|
||||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||||
import "../../src/components/ha-card";
|
import "../../src/components/ha-card";
|
||||||
|
import "../../src/components/ha-icon";
|
||||||
|
import "../../src/components/ha-icon-button";
|
||||||
import "../../src/managers/notification-manager";
|
import "../../src/managers/notification-manager";
|
||||||
import "../../src/styles/polymer-ha-style";
|
import "../../src/styles/polymer-ha-style";
|
||||||
|
// eslint-disable-next-line import/extensions
|
||||||
import { DEMOS } from "../build/import-demos";
|
import { DEMOS } from "../build/import-demos";
|
||||||
|
|
||||||
const fixPath = (path) => path.substr(2, path.length - 5);
|
const fixPath = (path) => path.substr(2, path.length - 5);
|
||||||
|
@@ -153,7 +153,7 @@ export class HassioUpdate extends LitElement {
|
|||||||
item.progress = true;
|
item.progress = true;
|
||||||
const confirmed = await showConfirmationDialog(this, {
|
const confirmed = await showConfirmationDialog(this, {
|
||||||
title: `Update ${item.name}`,
|
title: `Update ${item.name}`,
|
||||||
text: `Are you sure you want to upgrade ${item.name} to version ${item.version}?`,
|
text: `Are you sure you want to update ${item.name} to version ${item.version}?`,
|
||||||
confirmText: "update",
|
confirmText: "update",
|
||||||
dismissText: "cancel",
|
dismissText: "cancel",
|
||||||
});
|
});
|
||||||
|
@@ -79,6 +79,7 @@ class HassioSnapshots extends LitElement {
|
|||||||
},
|
},
|
||||||
{ slug: "ssl", name: "SSL", checked: true },
|
{ slug: "ssl", name: "SSL", checked: true },
|
||||||
{ slug: "share", name: "Share", checked: true },
|
{ slug: "share", name: "Share", checked: true },
|
||||||
|
{ slug: "media", name: "Media", checked: true },
|
||||||
{ slug: "addons/local", name: "Local add-ons", checked: true },
|
{ slug: "addons/local", name: "Local add-ons", checked: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -241,7 +242,7 @@ class HassioSnapshots extends LitElement {
|
|||||||
|
|
||||||
protected firstUpdated(changedProps: PropertyValues) {
|
protected firstUpdated(changedProps: PropertyValues) {
|
||||||
super.firstUpdated(changedProps);
|
super.firstUpdated(changedProps);
|
||||||
this._updateSnapshots();
|
this.refreshData();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected updated(changedProps: PropertyValues) {
|
protected updated(changedProps: PropertyValues) {
|
||||||
|
@@ -14,7 +14,6 @@ import {
|
|||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import memoizeOne from "memoize-one";
|
import memoizeOne from "memoize-one";
|
||||||
import { atLeastVersion } from "../../../src/common/config/version";
|
|
||||||
import "../../../src/components/buttons/ha-progress-button";
|
import "../../../src/components/buttons/ha-progress-button";
|
||||||
import "../../../src/components/ha-button-menu";
|
import "../../../src/components/ha-button-menu";
|
||||||
import "../../../src/components/ha-card";
|
import "../../../src/components/ha-card";
|
||||||
@@ -85,8 +84,7 @@ class HassioHostInfo extends LitElement {
|
|||||||
</mwc-button>
|
</mwc-button>
|
||||||
</ha-settings-row>`
|
</ha-settings-row>`
|
||||||
: ""}
|
: ""}
|
||||||
${this.hostInfo.features.includes("network") &&
|
${this.hostInfo.features.includes("network")
|
||||||
atLeastVersion(this.hass.config.version, 0, 115)
|
|
||||||
? html` <ha-settings-row>
|
? html` <ha-settings-row>
|
||||||
<span slot="heading">
|
<span slot="heading">
|
||||||
IP address
|
IP address
|
||||||
|
@@ -213,7 +213,7 @@ class HassioSupervisorInfo extends LitElement {
|
|||||||
|
|
||||||
const confirmed = await showConfirmationDialog(this, {
|
const confirmed = await showConfirmationDialog(this, {
|
||||||
title: "Update supervisor",
|
title: "Update supervisor",
|
||||||
text: `Are you sure you want to upgrade supervisor to version ${this.supervisorInfo.version_latest}?`,
|
text: `Are you sure you want to update supervisor to version ${this.supervisorInfo.version_latest}?`,
|
||||||
confirmText: "update",
|
confirmText: "update",
|
||||||
dismissText: "cancel",
|
dismissText: "cancel",
|
||||||
});
|
});
|
||||||
|
10
package.json
10
package.json
@@ -8,12 +8,12 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "script/build_frontend",
|
"build": "script/build_frontend",
|
||||||
"lint:eslint": "eslint '**/src/**/*.{js,ts,html}' --ignore-path .gitignore",
|
"lint:eslint": "eslint \"**/src/**/*.{js,ts,html}\" --ignore-path .gitignore",
|
||||||
"format:eslint": "eslint '**/src/**/*.{js,ts,html}' --fix --ignore-path .gitignore",
|
"format:eslint": "eslint \"**/src/**/*.{js,ts,html}\" --fix --ignore-path .gitignore",
|
||||||
"lint:prettier": "prettier '**/src/**/*.{js,ts,json,css,md}' --check",
|
"lint:prettier": "prettier \"**/src/**/*.{js,ts,json,css,md}\" --check",
|
||||||
"format:prettier": "prettier '**/src/**/*.{js,ts,json,css,md}' --write",
|
"format:prettier": "prettier \"**/src/**/*.{js,ts,json,css,md}\" --write",
|
||||||
"lint:types": "tsc",
|
"lint:types": "tsc",
|
||||||
"lint:lit": "lit-analyzer '**/src/**/*.ts' --format markdown --outFile result.md",
|
"lint:lit": "lit-analyzer \"**/src/**/*.ts\" --format markdown --outFile result.md",
|
||||||
"lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:types",
|
"lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:types",
|
||||||
"format": "npm run format:eslint && npm run format:prettier",
|
"format": "npm run format:eslint && npm run format:prettier",
|
||||||
"mocha": "node_modules/.bin/ts-mocha -p test-mocha/tsconfig.test.json --opts test-mocha/mocha.opts",
|
"mocha": "node_modules/.bin/ts-mocha -p test-mocha/tsconfig.test.json --opts test-mocha/mocha.opts",
|
||||||
|
2
setup.py
2
setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="home-assistant-frontend",
|
name="home-assistant-frontend",
|
||||||
version="20200912.0",
|
version="20200916.0",
|
||||||
description="The Home Assistant frontend",
|
description="The Home Assistant frontend",
|
||||||
url="https://github.com/home-assistant/home-assistant-polymer",
|
url="https://github.com/home-assistant/home-assistant-polymer",
|
||||||
author="The Home Assistant Authors",
|
author="The Home Assistant Authors",
|
||||||
|
@@ -1,14 +1,14 @@
|
|||||||
import { derivedStyles, darkStyles } from "../../resources/styles";
|
import { darkStyles, derivedStyles } from "../../resources/styles";
|
||||||
import { HomeAssistant, Theme } from "../../types";
|
import { HomeAssistant, Theme } from "../../types";
|
||||||
import {
|
import {
|
||||||
hex2rgb,
|
hex2rgb,
|
||||||
|
lab2hex,
|
||||||
|
lab2rgb,
|
||||||
rgb2hex,
|
rgb2hex,
|
||||||
rgb2lab,
|
rgb2lab,
|
||||||
lab2rgb,
|
|
||||||
lab2hex,
|
|
||||||
} from "../color/convert-color";
|
} from "../color/convert-color";
|
||||||
|
import { labBrighten, labDarken } from "../color/lab";
|
||||||
import { rgbContrast } from "../color/rgb";
|
import { rgbContrast } from "../color/rgb";
|
||||||
import { labDarken, labBrighten } from "../color/lab";
|
|
||||||
|
|
||||||
interface ProcessedTheme {
|
interface ProcessedTheme {
|
||||||
keys: { [key: string]: "" };
|
keys: { [key: string]: "" };
|
||||||
@@ -105,12 +105,12 @@ const processTheme = (
|
|||||||
const keys = {};
|
const keys = {};
|
||||||
for (const key of Object.keys(combinedTheme)) {
|
for (const key of Object.keys(combinedTheme)) {
|
||||||
const prefixedKey = `--${key}`;
|
const prefixedKey = `--${key}`;
|
||||||
const value = String(combinedTheme[key]!);
|
const value = String(combinedTheme[key]);
|
||||||
styles[prefixedKey] = value;
|
styles[prefixedKey] = value;
|
||||||
keys[prefixedKey] = "";
|
keys[prefixedKey] = "";
|
||||||
|
|
||||||
// Try to create a rgb value for this key if it is not a var
|
// Try to create a rgb value for this key if it is not a var
|
||||||
if (value.startsWith("#")) {
|
if (!value.startsWith("#")) {
|
||||||
// Can't convert non hex value
|
// Can't convert non hex value
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@@ -24,8 +24,7 @@ export const iconColorCSS = css`
|
|||||||
ha-icon[data-domain="group"][data-state="home"],
|
ha-icon[data-domain="group"][data-state="home"],
|
||||||
ha-icon[data-domain="group"][data-state="open"],
|
ha-icon[data-domain="group"][data-state="open"],
|
||||||
ha-icon[data-domain="group"][data-state="locked"],
|
ha-icon[data-domain="group"][data-state="locked"],
|
||||||
ha-icon[data-domain="group"][data-state="problem"]
|
ha-icon[data-domain="group"][data-state="problem"] {
|
||||||
{
|
|
||||||
color: var(--paper-item-icon-active-color, #fdd835);
|
color: var(--paper-item-icon-active-color, #fdd835);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
import type { HassEntity } from "home-assistant-js-websocket";
|
import type { HassEntity } from "home-assistant-js-websocket";
|
||||||
import { styleMap } from "lit-html/directives/style-map";
|
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
|
import { styleMap } from "lit-html/directives/style-map";
|
||||||
import { computeActiveState } from "../../common/entity/compute_active_state";
|
import { computeActiveState } from "../../common/entity/compute_active_state";
|
||||||
import { computeStateDomain } from "../../common/entity/compute_state_domain";
|
import { computeStateDomain } from "../../common/entity/compute_state_domain";
|
||||||
import { stateIcon } from "../../common/entity/state_icon";
|
import { stateIcon } from "../../common/entity/state_icon";
|
||||||
@@ -73,10 +73,15 @@ export class StateBadge extends LitElement {
|
|||||||
if (stateObj) {
|
if (stateObj) {
|
||||||
// hide icon if we have entity picture
|
// hide icon if we have entity picture
|
||||||
if (
|
if (
|
||||||
((stateObj.attributes.entity_picture_local || stateObj.attributes.entity_picture) && !this.overrideIcon) ||
|
((stateObj.attributes.entity_picture_local ||
|
||||||
|
stateObj.attributes.entity_picture) &&
|
||||||
|
!this.overrideIcon) ||
|
||||||
this.overrideImage
|
this.overrideImage
|
||||||
) {
|
) {
|
||||||
let imageUrl = this.overrideImage || stateObj.attributes.entity_picture_local || stateObj.attributes.entity_picture;
|
let imageUrl =
|
||||||
|
this.overrideImage ||
|
||||||
|
stateObj.attributes.entity_picture_local ||
|
||||||
|
stateObj.attributes.entity_picture;
|
||||||
if (this.hass) {
|
if (this.hass) {
|
||||||
imageUrl = this.hass.hassUrl(imageUrl);
|
imageUrl = this.hass.hassUrl(imageUrl);
|
||||||
}
|
}
|
||||||
|
@@ -1,17 +1,16 @@
|
|||||||
import {
|
|
||||||
customElement,
|
|
||||||
html,
|
|
||||||
TemplateResult,
|
|
||||||
LitElement,
|
|
||||||
CSSResult,
|
|
||||||
css,
|
|
||||||
query,
|
|
||||||
property,
|
|
||||||
} from "lit-element";
|
|
||||||
import "@material/mwc-button";
|
import "@material/mwc-button";
|
||||||
import "@material/mwc-menu";
|
import "@material/mwc-menu";
|
||||||
import type { Menu, Corner } from "@material/mwc-menu";
|
import type { Corner, Menu } from "@material/mwc-menu";
|
||||||
|
import {
|
||||||
|
css,
|
||||||
|
CSSResult,
|
||||||
|
customElement,
|
||||||
|
html,
|
||||||
|
LitElement,
|
||||||
|
property,
|
||||||
|
query,
|
||||||
|
TemplateResult,
|
||||||
|
} from "lit-element";
|
||||||
import "./ha-icon-button";
|
import "./ha-icon-button";
|
||||||
|
|
||||||
@customElement("ha-button-menu")
|
@customElement("ha-button-menu")
|
||||||
@@ -22,6 +21,8 @@ export class HaButtonMenu extends LitElement {
|
|||||||
|
|
||||||
@property({ type: Boolean }) public activatable = false;
|
@property({ type: Boolean }) public activatable = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean }) public disabled = false;
|
||||||
|
|
||||||
@query("mwc-menu") private _menu?: Menu;
|
@query("mwc-menu") private _menu?: Menu;
|
||||||
|
|
||||||
public get items() {
|
public get items() {
|
||||||
@@ -48,6 +49,9 @@ export class HaButtonMenu extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _handleClick(): void {
|
private _handleClick(): void {
|
||||||
|
if (this.disabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
this._menu!.anchor = this;
|
this._menu!.anchor = this;
|
||||||
this._menu!.show();
|
this._menu!.show();
|
||||||
}
|
}
|
||||||
|
@@ -32,6 +32,9 @@ class HaCameraStream extends LitElement {
|
|||||||
@property({ type: Boolean, attribute: "muted" })
|
@property({ type: Boolean, attribute: "muted" })
|
||||||
public muted = false;
|
public muted = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean, attribute: "allow-exoplayer" })
|
||||||
|
public allowExoPlayer = false;
|
||||||
|
|
||||||
// We keep track if we should force MJPEG with a string
|
// We keep track if we should force MJPEG with a string
|
||||||
// that way it automatically resets if we change entity.
|
// that way it automatically resets if we change entity.
|
||||||
@internalProperty() private _forceMJPEG?: string;
|
@internalProperty() private _forceMJPEG?: string;
|
||||||
@@ -61,6 +64,7 @@ class HaCameraStream extends LitElement {
|
|||||||
<ha-hls-player
|
<ha-hls-player
|
||||||
autoplay
|
autoplay
|
||||||
playsinline
|
playsinline
|
||||||
|
.allowExoPlayer=${this.allowExoPlayer}
|
||||||
.muted=${this.muted}
|
.muted=${this.muted}
|
||||||
.controls=${this.controls}
|
.controls=${this.controls}
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
|
@@ -12,7 +12,6 @@ import {
|
|||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { fireEvent } from "../common/dom/fire_event";
|
import { fireEvent } from "../common/dom/fire_event";
|
||||||
import { nextRender } from "../common/util/render-status";
|
import { nextRender } from "../common/util/render-status";
|
||||||
import { getExternalConfig } from "../external_app/external_config";
|
|
||||||
import type { HomeAssistant } from "../types";
|
import type { HomeAssistant } from "../types";
|
||||||
|
|
||||||
type HLSModule = typeof import("hls.js");
|
type HLSModule = typeof import("hls.js");
|
||||||
@@ -35,6 +34,9 @@ class HaHLSPlayer extends LitElement {
|
|||||||
@property({ type: Boolean, attribute: "playsinline" })
|
@property({ type: Boolean, attribute: "playsinline" })
|
||||||
public playsInline = false;
|
public playsInline = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean, attribute: "allow-exoplayer" })
|
||||||
|
public allowExoPlayer = false;
|
||||||
|
|
||||||
@query("video") private _videoEl!: HTMLVideoElement;
|
@query("video") private _videoEl!: HTMLVideoElement;
|
||||||
|
|
||||||
@internalProperty() private _attached = false;
|
@internalProperty() private _attached = false;
|
||||||
@@ -91,11 +93,7 @@ class HaHLSPlayer extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _getUseExoPlayer(): Promise<boolean> {
|
private async _getUseExoPlayer(): Promise<boolean> {
|
||||||
if (!this.hass!.auth.external) {
|
return false;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const externalConfig = await getExternalConfig(this.hass!.auth.external);
|
|
||||||
return externalConfig && externalConfig.hasExoPlayer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _startHls(): Promise<void> {
|
private async _startHls(): Promise<void> {
|
||||||
@@ -137,7 +135,10 @@ class HaHLSPlayer extends LitElement {
|
|||||||
this._videoEl.style.visibility = "hidden";
|
this._videoEl.style.visibility = "hidden";
|
||||||
await this.hass!.auth.external!.sendMessage({
|
await this.hass!.auth.external!.sendMessage({
|
||||||
type: "exoplayer/play_hls",
|
type: "exoplayer/play_hls",
|
||||||
payload: new URL(url, window.location.href).toString(),
|
payload: {
|
||||||
|
url: new URL(url, window.location.href).toString(),
|
||||||
|
muted: this.muted,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,207 +24,16 @@ import {
|
|||||||
import { debounce } from "../common/util/debounce";
|
import { debounce } from "../common/util/debounce";
|
||||||
import { fireEvent } from "../common/dom/fire_event";
|
import { fireEvent } from "../common/dom/fire_event";
|
||||||
|
|
||||||
const mdiRenameMapping = {
|
interface DeprecatedIcon {
|
||||||
"account-badge": "badge-account",
|
[key: string]: {
|
||||||
"account-badge-alert": "badge-account-alert",
|
removeIn: string;
|
||||||
"account-badge-alert-outline": "badge-account-alert-outline",
|
newName?: string;
|
||||||
"account-badge-horizontal": "badge-account-horizontal",
|
};
|
||||||
"account-badge-horizontal-outline": "badge-account-horizontal-outline",
|
}
|
||||||
"account-badge-outline": "badge-account-outline",
|
|
||||||
"account-card-details": "card-account-details",
|
|
||||||
"account-card-details-outline": "card-account-details-outline",
|
|
||||||
airplay: "apple-airplay",
|
|
||||||
artist: "account-music",
|
|
||||||
"artist-outline": "account-music-outline",
|
|
||||||
audiobook: "book-music",
|
|
||||||
azure: "microsoft-azure",
|
|
||||||
"azure-devops": "microsoft-azure-devops",
|
|
||||||
bible: "book-cross",
|
|
||||||
bowl: "bowl-mix",
|
|
||||||
"calendar-repeat": "calendar-sync",
|
|
||||||
"calendar-repeat-outline": "calendar-sync-outline",
|
|
||||||
"camcorder-box": "video-box",
|
|
||||||
"camcorder-box-off": "video-box-off",
|
|
||||||
"cellphone-settings-variant": "cellphone-cog",
|
|
||||||
"chart-snakey": "chart-sankey",
|
|
||||||
"chart-snakey-variant": "chart-sankey-variant",
|
|
||||||
coin: "currency-usd-circle",
|
|
||||||
"coin-outline": "currency-usd-circle-outline",
|
|
||||||
"coins-outline": "circle-multiple-outline",
|
|
||||||
"contact-mail": "card-account-mail",
|
|
||||||
"contact-mail-outline": "card-account-mail-outline",
|
|
||||||
"contact-phone": "card-account-phone",
|
|
||||||
"contact-phone-outline": "card-account-phone-outline",
|
|
||||||
cowboy: "account-cowboy-hat",
|
|
||||||
"database-refresh": "database-sync",
|
|
||||||
dictionary: "book-alphabet",
|
|
||||||
edge: "microsoft-edge",
|
|
||||||
"edge-legacy": "microsoft-edge-legacy",
|
|
||||||
"file-document-box": "text-box",
|
|
||||||
"file-document-box-check-outline": "text-box-check-outline",
|
|
||||||
"file-document-box-minus": "text-box-minus",
|
|
||||||
"file-document-box-minus-outline": "text-box-minus-outline",
|
|
||||||
"file-document-box-multiple": "text-box-multiple",
|
|
||||||
"file-document-box-multiple-outline": "text-box-multiple-outline",
|
|
||||||
"file-document-box-outline": "text-box-outline",
|
|
||||||
"file-document-box-plus": "text-box-plus",
|
|
||||||
"file-document-box-plus-outline": "text-box-plus-outline",
|
|
||||||
"file-document-box-remove": "text-box-remove",
|
|
||||||
"file-document-box-remove-outline": "text-box-remove-outline",
|
|
||||||
"file-document-box-search": "text-box-search",
|
|
||||||
"file-document-box-search-outline": "text-box-search-outline",
|
|
||||||
"file-settings-variant": "file-cog",
|
|
||||||
"file-settings-variant-outline": "file-cog-outline",
|
|
||||||
"folder-settings-variant": "folder-cog",
|
|
||||||
"folder-settings-variant-outline": "folder-cog-outline",
|
|
||||||
"github-circle": "github",
|
|
||||||
"google-adwords": "google-ads",
|
|
||||||
hackernews: "y-combinator",
|
|
||||||
hotel: "bed",
|
|
||||||
"image-filter": "image-multiple-outline",
|
|
||||||
"internet-explorer": "microsoft-internet-explorer",
|
|
||||||
json: "code-json",
|
|
||||||
kotlin: "language-kotlin",
|
|
||||||
"library-books": "filmstrip-box",
|
|
||||||
"library-movie": "filmstrip-box-multiple",
|
|
||||||
"library-music": "music-box-multiple",
|
|
||||||
"library-music-outline": "music-box-multiple-outline",
|
|
||||||
"library-video": "play-box-multiple",
|
|
||||||
markdown: "language-markdown",
|
|
||||||
"markdown-outline": "language-markdown-outline",
|
|
||||||
"message-settings-variant": "message-cog",
|
|
||||||
"message-settings-variant-outline": "message-cog-outline",
|
|
||||||
"microsoft-dynamics": "microsoft-dynamics-365",
|
|
||||||
"network-router": "router-network",
|
|
||||||
office: "microsoft-office",
|
|
||||||
onedrive: "microsoft-onedrive",
|
|
||||||
onenote: "microsoft-onenote",
|
|
||||||
outlook: "microsoft-outlook",
|
|
||||||
playstation: "sony-playstation",
|
|
||||||
"periodic-table-co": "molecule-co",
|
|
||||||
"periodic-table-co2": "molecule-co2",
|
|
||||||
pot: "pot-steam",
|
|
||||||
ruby: "language-ruby",
|
|
||||||
sailing: "sail-boat",
|
|
||||||
scooter: "human-scooter",
|
|
||||||
settings: "cog",
|
|
||||||
"settings-box": "cog-box",
|
|
||||||
"settings-outline": "cog-outline",
|
|
||||||
"settings-transfer": "cog-transfer",
|
|
||||||
"settings-transfer-outline": "cog-transfer-outline",
|
|
||||||
"shield-refresh": "shield-sync",
|
|
||||||
"shield-refresh-outline": "shield-sync-outline",
|
|
||||||
"sort-alphabetical": "sort-alphabetical-variant",
|
|
||||||
"sort-alphabetical-ascending": "sort-alphabetical-ascending-variant",
|
|
||||||
"sort-alphabetical-descending": "sort-alphabetical-descending-variant",
|
|
||||||
"sort-numeric": "sort-numeric-variant",
|
|
||||||
"star-half": "star-half-full",
|
|
||||||
storefront: "storefront-outline",
|
|
||||||
timer: "timer-outline",
|
|
||||||
"timer-off": "timer-off-outline",
|
|
||||||
towing: "tow-truck",
|
|
||||||
voice: "account-voice",
|
|
||||||
"wall-sconce-variant": "wall-sconce-round-variant",
|
|
||||||
wii: "nintendo-wii",
|
|
||||||
wiiu: "nintendo-wiiu",
|
|
||||||
windows: "microsoft-windows",
|
|
||||||
"windows-classic": "microsoft-windows-classic",
|
|
||||||
worker: "account-hard-hat",
|
|
||||||
xbox: "microsoft-xbox",
|
|
||||||
"xbox-controller": "microsoft-xbox-controller",
|
|
||||||
"xbox-controller-battery-alert": "microsoft-xbox-controller-battery-alert",
|
|
||||||
"xbox-controller-battery-charging":
|
|
||||||
"microsoft-xbox-controller-battery-charging",
|
|
||||||
"xbox-controller-battery-empty": "microsoft-xbox-controller-battery-empty",
|
|
||||||
"xbox-controller-battery-full": "microsoft-xbox-controller-battery-full",
|
|
||||||
"xbox-controller-battery-low": "microsoft-xbox-controller-battery-low",
|
|
||||||
"xbox-controller-battery-medium": "microsoft-xbox-controller-battery-medium",
|
|
||||||
"xbox-controller-battery-unknown":
|
|
||||||
"microsoft-xbox-controller-battery-unknown",
|
|
||||||
"xbox-controller-menu": "microsoft-xbox-controller-menu",
|
|
||||||
"xbox-controller-off": "microsoft-xbox-controller-off",
|
|
||||||
"xbox-controller-view": "microsoft-xbox-controller-view",
|
|
||||||
yammer: "microsoft-yammer",
|
|
||||||
"youtube-creator-studio": "youtube-studio",
|
|
||||||
"selection-mutliple": "selection-multiple",
|
|
||||||
textarea: "form-textarea",
|
|
||||||
textbox: "form-textbox",
|
|
||||||
"textbox-lock": "form-textbox-lock",
|
|
||||||
"textbox-password": "form-textbox-password",
|
|
||||||
"syllabary-katakana-half-width": "syllabary-katakana-halfwidth",
|
|
||||||
"visual-studio-code": "microsoft-visual-studio-code",
|
|
||||||
"visual-studio": "microsoft-visual-studio",
|
|
||||||
};
|
|
||||||
|
|
||||||
const mdiRemovedIcons = new Set([
|
const mdiDeprecatedIcons: DeprecatedIcon = {
|
||||||
"accusoft",
|
scooter: { removeIn: "117", newName: "human-scooter" },
|
||||||
"amazon-drive",
|
};
|
||||||
"android-head",
|
|
||||||
"basecamp",
|
|
||||||
"beats",
|
|
||||||
"behance",
|
|
||||||
"blackberry",
|
|
||||||
"cisco-webex",
|
|
||||||
"disqus-outline",
|
|
||||||
"dribbble",
|
|
||||||
"dribbble-box",
|
|
||||||
"etsy",
|
|
||||||
"eventbrite",
|
|
||||||
"facebook-box",
|
|
||||||
"flattr",
|
|
||||||
"flickr",
|
|
||||||
"foursquare",
|
|
||||||
"github-box",
|
|
||||||
"github-face",
|
|
||||||
"glassdoor",
|
|
||||||
"google-adwords",
|
|
||||||
"google-pages",
|
|
||||||
"google-physical-web",
|
|
||||||
"google-plus-box",
|
|
||||||
"houzz",
|
|
||||||
"houzz-box",
|
|
||||||
"instapaper",
|
|
||||||
"itunes",
|
|
||||||
"language-python-text",
|
|
||||||
"lastfm",
|
|
||||||
"linkedin-box",
|
|
||||||
"lyft",
|
|
||||||
"mail-ru",
|
|
||||||
"mastodon-variant",
|
|
||||||
"medium",
|
|
||||||
"meetup",
|
|
||||||
"mixcloud",
|
|
||||||
"mixer",
|
|
||||||
"nfc-off",
|
|
||||||
"npm-variant",
|
|
||||||
"npm-variant-outline",
|
|
||||||
"paypal",
|
|
||||||
"periscope",
|
|
||||||
"pinterest-box",
|
|
||||||
"pocket",
|
|
||||||
"quicktime",
|
|
||||||
"shopify",
|
|
||||||
"slackware",
|
|
||||||
"square-inc",
|
|
||||||
"square-inc-cash",
|
|
||||||
"steam-box",
|
|
||||||
"strava",
|
|
||||||
"tor",
|
|
||||||
"tumblr",
|
|
||||||
"tumblr-box",
|
|
||||||
"tumblr-reblog",
|
|
||||||
"twitter-box",
|
|
||||||
"twitter-circle",
|
|
||||||
"uber",
|
|
||||||
"venmo",
|
|
||||||
"vk-box",
|
|
||||||
"vk-circle",
|
|
||||||
"wunderlist",
|
|
||||||
"xda",
|
|
||||||
"xing-box",
|
|
||||||
"xing-circle",
|
|
||||||
"yelp",
|
|
||||||
]);
|
|
||||||
|
|
||||||
const chunks: Chunks = {};
|
const chunks: Chunks = {};
|
||||||
|
|
||||||
@@ -291,17 +100,16 @@ export class HaIcon extends LitElement {
|
|||||||
|
|
||||||
this._legacy = false;
|
this._legacy = false;
|
||||||
|
|
||||||
if (iconName in mdiRenameMapping) {
|
if (iconName in mdiDeprecatedIcons) {
|
||||||
iconName = mdiRenameMapping[iconName];
|
const deprecatedIcon = mdiDeprecatedIcons[iconName];
|
||||||
const message = `Icon ${iconPrefix}:${origIconName} was renamed to ${iconPrefix}:${iconName}, please change your config, it will be removed in version 0.115.`;
|
let message: string;
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.warn(message);
|
if (deprecatedIcon.newName) {
|
||||||
fireEvent(this, "write_log", {
|
message = `Icon ${iconPrefix}:${iconName} was renamed to ${iconPrefix}:${deprecatedIcon.newName}, please change your config, it will be removed in version ${deprecatedIcon.removeIn}.`;
|
||||||
level: "warning",
|
iconName = deprecatedIcon.newName!;
|
||||||
message,
|
} else {
|
||||||
});
|
message = `Icon ${iconPrefix}:${iconName} was removed from MDI, please replace this icon with an other icon in your config, it will be removed in version ${deprecatedIcon.removeIn}.`;
|
||||||
} else if (mdiRemovedIcons.has(iconName)) {
|
}
|
||||||
const message = `Icon ${this.icon} was removed from MDI, please replace this icon with an other icon in your config, it will be removed in version 0.115.`;
|
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.warn(message);
|
console.warn(message);
|
||||||
fireEvent(this, "write_log", {
|
fireEvent(this, "write_log", {
|
||||||
@@ -334,6 +142,7 @@ export class HaIcon extends LitElement {
|
|||||||
this._setPath(chunks[chunk], iconName);
|
this._setPath(chunks[chunk], iconName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const iconPromise = fetch(`/static/mdi/${chunk}.json`).then((response) =>
|
const iconPromise = fetch(`/static/mdi/${chunk}.json`).then((response) =>
|
||||||
response.json()
|
response.json()
|
||||||
);
|
);
|
||||||
|
@@ -159,8 +159,6 @@ const computePanels = memoizeOne(
|
|||||||
|
|
||||||
let Sortable;
|
let Sortable;
|
||||||
|
|
||||||
let sortStyles: CSSResult;
|
|
||||||
|
|
||||||
@customElement("ha-sidebar")
|
@customElement("ha-sidebar")
|
||||||
class HaSidebar extends LitElement {
|
class HaSidebar extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@@ -171,12 +169,12 @@ class HaSidebar extends LitElement {
|
|||||||
|
|
||||||
@property({ type: Boolean, reflect: true }) public expanded = false;
|
@property({ type: Boolean, reflect: true }) public expanded = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean }) public editMode = false;
|
||||||
|
|
||||||
@internalProperty() private _externalConfig?: ExternalConfig;
|
@internalProperty() private _externalConfig?: ExternalConfig;
|
||||||
|
|
||||||
@internalProperty() private _notifications?: PersistentNotification[];
|
@internalProperty() private _notifications?: PersistentNotification[];
|
||||||
|
|
||||||
@internalProperty() private _editMode = false;
|
|
||||||
|
|
||||||
// property used only in css
|
// property used only in css
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@property({ type: Boolean, reflect: true }) public rtl = false;
|
@property({ type: Boolean, reflect: true }) public rtl = false;
|
||||||
@@ -227,19 +225,12 @@ class HaSidebar extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
${this._editMode
|
|
||||||
? html`
|
|
||||||
<style>
|
|
||||||
${sortStyles?.cssText}
|
|
||||||
</style>
|
|
||||||
`
|
|
||||||
: ""}
|
|
||||||
<div
|
<div
|
||||||
class="menu"
|
class="menu"
|
||||||
@action=${this._handleAction}
|
@action=${this._handleAction}
|
||||||
.actionHandler=${actionHandler({
|
.actionHandler=${actionHandler({
|
||||||
hasHold: !this._editMode,
|
hasHold: !this.editMode,
|
||||||
disabled: this._editMode,
|
disabled: this.editMode,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
${!this.narrow
|
${!this.narrow
|
||||||
@@ -257,7 +248,7 @@ class HaSidebar extends LitElement {
|
|||||||
`
|
`
|
||||||
: ""}
|
: ""}
|
||||||
<div class="title">
|
<div class="title">
|
||||||
${this._editMode
|
${this.editMode
|
||||||
? html`<mwc-button outlined @click=${this._closeEditMode}>
|
? html`<mwc-button outlined @click=${this._closeEditMode}>
|
||||||
${hass.localize("ui.sidebar.done")}
|
${hass.localize("ui.sidebar.done")}
|
||||||
</mwc-button>`
|
</mwc-button>`
|
||||||
@@ -273,7 +264,7 @@ class HaSidebar extends LitElement {
|
|||||||
@scroll=${this._listboxScroll}
|
@scroll=${this._listboxScroll}
|
||||||
@keydown=${this._listboxKeydown}
|
@keydown=${this._listboxKeydown}
|
||||||
>
|
>
|
||||||
${this._editMode
|
${this.editMode
|
||||||
? html`<div id="sortable">
|
? html`<div id="sortable">
|
||||||
${guard([this._hiddenPanels, this._renderEmptySortable], () =>
|
${guard([this._hiddenPanels, this._renderEmptySortable], () =>
|
||||||
this._renderEmptySortable
|
this._renderEmptySortable
|
||||||
@@ -283,7 +274,7 @@ class HaSidebar extends LitElement {
|
|||||||
</div>`
|
</div>`
|
||||||
: this._renderPanels(beforeSpacer)}
|
: this._renderPanels(beforeSpacer)}
|
||||||
<div class="spacer" disabled></div>
|
<div class="spacer" disabled></div>
|
||||||
${this._editMode && this._hiddenPanels.length
|
${this.editMode && this._hiddenPanels.length
|
||||||
? html`
|
? html`
|
||||||
${this._hiddenPanels.map((url) => {
|
${this._hiddenPanels.map((url) => {
|
||||||
const panel = this.hass.panels[url];
|
const panel = this.hass.panels[url];
|
||||||
@@ -307,7 +298,7 @@ class HaSidebar extends LitElement {
|
|||||||
: hass.localize(`panel.${panel.title}`) ||
|
: hass.localize(`panel.${panel.title}`) ||
|
||||||
panel.title}</span
|
panel.title}</span
|
||||||
>
|
>
|
||||||
<mwc-icon-button class="hide-panel">
|
<mwc-icon-button class="show-panel">
|
||||||
<ha-svg-icon .path=${mdiPlus}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiPlus}></ha-svg-icon>
|
||||||
</mwc-icon-button>
|
</mwc-icon-button>
|
||||||
</paper-icon-item>`;
|
</paper-icon-item>`;
|
||||||
@@ -412,10 +403,10 @@ class HaSidebar extends LitElement {
|
|||||||
changedProps.has("alwaysExpand") ||
|
changedProps.has("alwaysExpand") ||
|
||||||
changedProps.has("_externalConfig") ||
|
changedProps.has("_externalConfig") ||
|
||||||
changedProps.has("_notifications") ||
|
changedProps.has("_notifications") ||
|
||||||
changedProps.has("_editMode") ||
|
changedProps.has("editMode") ||
|
||||||
changedProps.has("_renderEmptySortable") ||
|
changedProps.has("_renderEmptySortable") ||
|
||||||
changedProps.has("_hiddenPanels") ||
|
changedProps.has("_hiddenPanels") ||
|
||||||
(changedProps.has("_panelOrder") && !this._editMode)
|
(changedProps.has("_panelOrder") && !this.editMode)
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -449,9 +440,6 @@ class HaSidebar extends LitElement {
|
|||||||
subscribeNotifications(this.hass.connection, (notifications) => {
|
subscribeNotifications(this.hass.connection, (notifications) => {
|
||||||
this._notifications = notifications;
|
this._notifications = notifications;
|
||||||
});
|
});
|
||||||
window.addEventListener("hass-edit-sidebar", () =>
|
|
||||||
this._activateEditMode()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected updated(changedProps) {
|
protected updated(changedProps) {
|
||||||
@@ -459,6 +447,13 @@ class HaSidebar extends LitElement {
|
|||||||
if (changedProps.has("alwaysExpand")) {
|
if (changedProps.has("alwaysExpand")) {
|
||||||
this.expanded = this.alwaysExpand;
|
this.expanded = this.alwaysExpand;
|
||||||
}
|
}
|
||||||
|
if (changedProps.has("editMode")) {
|
||||||
|
if (this.editMode) {
|
||||||
|
this._activateEditMode();
|
||||||
|
} else {
|
||||||
|
this._deactivateEditMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!changedProps.has("hass")) {
|
if (!changedProps.has("hass")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -489,7 +484,7 @@ class HaSidebar extends LitElement {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._activateEditMode();
|
fireEvent(this, "hass-edit-sidebar", { editMode: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _activateEditMode() {
|
private async _activateEditMode() {
|
||||||
@@ -499,15 +494,14 @@ class HaSidebar extends LitElement {
|
|||||||
import("../resources/ha-sortable-style"),
|
import("../resources/ha-sortable-style"),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
sortStyles = sortStylesImport.sortableStyles;
|
const style = document.createElement("style");
|
||||||
|
style.innerHTML = sortStylesImport.sortableStyles.cssText;
|
||||||
|
this.shadowRoot!.appendChild(style);
|
||||||
|
|
||||||
Sortable = sortableImport.Sortable;
|
Sortable = sortableImport.Sortable;
|
||||||
Sortable.mount(sortableImport.OnSpill);
|
Sortable.mount(sortableImport.OnSpill);
|
||||||
Sortable.mount(sortableImport.AutoScroll());
|
Sortable.mount(sortableImport.AutoScroll());
|
||||||
}
|
}
|
||||||
this._editMode = true;
|
|
||||||
|
|
||||||
fireEvent(this, "hass-open-menu");
|
|
||||||
|
|
||||||
await this.updateComplete;
|
await this.updateComplete;
|
||||||
|
|
||||||
@@ -519,16 +513,20 @@ class HaSidebar extends LitElement {
|
|||||||
animation: 150,
|
animation: 150,
|
||||||
fallbackClass: "sortable-fallback",
|
fallbackClass: "sortable-fallback",
|
||||||
dataIdAttr: "data-panel",
|
dataIdAttr: "data-panel",
|
||||||
|
handle: "paper-icon-item",
|
||||||
onSort: async () => {
|
onSort: async () => {
|
||||||
this._panelOrder = this._sortable.toArray();
|
this._panelOrder = this._sortable.toArray();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private _closeEditMode() {
|
private _deactivateEditMode() {
|
||||||
this._sortable?.destroy();
|
this._sortable?.destroy();
|
||||||
this._sortable = undefined;
|
this._sortable = undefined;
|
||||||
this._editMode = false;
|
}
|
||||||
|
|
||||||
|
private _closeEditMode() {
|
||||||
|
fireEvent(this, "hass-edit-sidebar", { editMode: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _hidePanel(ev: Event) {
|
private async _hidePanel(ev: Event) {
|
||||||
@@ -692,16 +690,16 @@ class HaSidebar extends LitElement {
|
|||||||
></ha-svg-icon>`
|
></ha-svg-icon>`
|
||||||
: html`<ha-icon slot="item-icon" .icon=${icon}></ha-icon>`}
|
: html`<ha-icon slot="item-icon" .icon=${icon}></ha-icon>`}
|
||||||
<span class="item-text">${title}</span>
|
<span class="item-text">${title}</span>
|
||||||
${this._editMode
|
|
||||||
? html`<mwc-icon-button
|
|
||||||
class="hide-panel"
|
|
||||||
.panel=${urlPath}
|
|
||||||
@click=${this._hidePanel}
|
|
||||||
>
|
|
||||||
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
|
|
||||||
</mwc-icon-button>`
|
|
||||||
: ""}
|
|
||||||
</paper-icon-item>
|
</paper-icon-item>
|
||||||
|
${this.editMode
|
||||||
|
? html`<mwc-icon-button
|
||||||
|
class="hide-panel"
|
||||||
|
.panel=${urlPath}
|
||||||
|
@click=${this._hidePanel}
|
||||||
|
>
|
||||||
|
<ha-svg-icon .path=${mdiClose}></ha-svg-icon>
|
||||||
|
</mwc-icon-button>`
|
||||||
|
: ""}
|
||||||
</a>
|
</a>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@@ -777,6 +775,10 @@ class HaSidebar extends LitElement {
|
|||||||
.title mwc-button {
|
.title mwc-button {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
#sortable,
|
||||||
|
.hidden-panel {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
paper-listbox {
|
paper-listbox {
|
||||||
padding: 4px 0;
|
padding: 4px 0;
|
||||||
|
@@ -25,7 +25,7 @@ import { debounce } from "../../common/util/debounce";
|
|||||||
import {
|
import {
|
||||||
browseLocalMediaPlayer,
|
browseLocalMediaPlayer,
|
||||||
browseMediaPlayer,
|
browseMediaPlayer,
|
||||||
BROWSER_SOURCE,
|
BROWSER_PLAYER,
|
||||||
MediaClassBrowserSettings,
|
MediaClassBrowserSettings,
|
||||||
MediaPickedEvent,
|
MediaPickedEvent,
|
||||||
MediaPlayerBrowseAction,
|
MediaPlayerBrowseAction,
|
||||||
@@ -35,6 +35,7 @@ import { showAlertDialog } from "../../dialogs/generic/show-dialog-box";
|
|||||||
import { installResizeObserver } from "../../panels/lovelace/common/install-resize-observer";
|
import { installResizeObserver } from "../../panels/lovelace/common/install-resize-observer";
|
||||||
import { haStyle } from "../../resources/styles";
|
import { haStyle } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
import "../entity/ha-entity-picker";
|
import "../entity/ha-entity-picker";
|
||||||
import "../ha-button-menu";
|
import "../ha-button-menu";
|
||||||
import "../ha-card";
|
import "../ha-card";
|
||||||
@@ -108,9 +109,11 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
text: this._renderError(this._error),
|
text: this._renderError(this._error),
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return html`<div class="container">
|
return html`
|
||||||
${this._renderError(this._error)}
|
<div class="container">
|
||||||
</div>`;
|
${this._renderError(this._error)}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,7 +238,7 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
${this._error
|
${this._error
|
||||||
? html`
|
? html`
|
||||||
<div class="container error">
|
<div class="container">
|
||||||
${this._renderError(this._error)}
|
${this._renderError(this._error)}
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
@@ -354,7 +357,31 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
`
|
`
|
||||||
: html`
|
: html`
|
||||||
<div class="container">
|
<div class="container">
|
||||||
${this.hass.localize("ui.components.media-browser.no_items")}
|
${this.hass.localize("ui.components.media-browser.no_items")}<br />
|
||||||
|
|
||||||
|
${currentItem.media_content_id.startsWith(
|
||||||
|
"media-source://media_source/local_source"
|
||||||
|
)
|
||||||
|
? html`${this.hass.localize(
|
||||||
|
"ui.components.media-browser.learn_adding_local_media",
|
||||||
|
"documentation",
|
||||||
|
html`<a
|
||||||
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/more-info/local-media/add-media"
|
||||||
|
)}"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>${this.hass.localize(
|
||||||
|
"ui.components.media-browser.documentation"
|
||||||
|
)}</a
|
||||||
|
>`
|
||||||
|
)}
|
||||||
|
<br />
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.components.media-browser.local_media_files"
|
||||||
|
)}.`
|
||||||
|
: ""}
|
||||||
</div>
|
</div>
|
||||||
`}
|
`}
|
||||||
`;
|
`;
|
||||||
@@ -456,7 +483,7 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
mediaContentType?: string
|
mediaContentType?: string
|
||||||
): Promise<MediaPlayerItem> {
|
): Promise<MediaPlayerItem> {
|
||||||
const itemData =
|
const itemData =
|
||||||
this.entityId !== BROWSER_SOURCE
|
this.entityId !== BROWSER_PLAYER
|
||||||
? await browseMediaPlayer(
|
? await browseMediaPlayer(
|
||||||
this.hass,
|
this.hass,
|
||||||
this.entityId,
|
this.entityId,
|
||||||
@@ -498,29 +525,35 @@ export class HaMediaPlayerBrowse extends LitElement {
|
|||||||
private _renderError(err: { message: string; code: string }) {
|
private _renderError(err: { message: string; code: string }) {
|
||||||
if (err.message === "Media directory does not exist.") {
|
if (err.message === "Media directory does not exist.") {
|
||||||
return html`
|
return html`
|
||||||
<h2>No local media found.</h2>
|
<h2>
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.components.media-browser.no_local_media_found"
|
||||||
|
)}
|
||||||
|
</h2>
|
||||||
<p>
|
<p>
|
||||||
It looks like you have not yet created a media directory.
|
${this.hass.localize("ui.components.media-browser.no_media_folder")}
|
||||||
<br />Create a directory with the name <b>"media"</b> in the
|
<br />
|
||||||
configuration directory of Home Assistant
|
${this.hass.localize(
|
||||||
(${this.hass.config.config_dir}). <br />Place your video, audio and
|
"ui.components.media-browser.setup_local_help",
|
||||||
image files in this directory to be able to browse and play them in
|
"documentation",
|
||||||
the browser or on supported media players.
|
html`<a
|
||||||
</p>
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
<p>
|
"/more-info/local-media/setup-media"
|
||||||
Check the
|
)}"
|
||||||
<a
|
target="_blank"
|
||||||
href="https://www.home-assistant.io/integrations/media_source/#local-media"
|
rel="noreferrer"
|
||||||
target="_blank"
|
>${this.hass.localize(
|
||||||
rel="noreferrer"
|
"ui.components.media-browser.documentation"
|
||||||
>documentation</a
|
)}</a
|
||||||
>
|
>`
|
||||||
for more info
|
)}
|
||||||
|
<br />
|
||||||
|
${this.hass.localize("ui.components.media-browser.local_media_files")}
|
||||||
</p>
|
</p>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
return html`<span class="error">err.message</span>`;
|
return html`<span class="error">${err.message}</span>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles(): CSSResultArray {
|
static get styles(): CSSResultArray {
|
||||||
|
@@ -62,12 +62,22 @@ class StateHistoryChartLine extends LocalizeMixin(PolymerElement) {
|
|||||||
this.drawChart();
|
this.drawChart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ready() {
|
||||||
|
super.ready();
|
||||||
|
// safari doesn't always render the canvas when we animate it, so we remove overflow hidden when the animation is complete
|
||||||
|
this.addEventListener("transitionend", () => {
|
||||||
|
this.style.overflow = "auto";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
dataChanged() {
|
dataChanged() {
|
||||||
this.drawChart();
|
this.drawChart();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onRenderedChanged(rendered) {
|
_onRenderedChanged(rendered) {
|
||||||
if (rendered) this.animateHeight();
|
if (rendered) {
|
||||||
|
this.animateHeight();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
animateHeight() {
|
animateHeight() {
|
||||||
@@ -79,15 +89,15 @@ class StateHistoryChartLine extends LocalizeMixin(PolymerElement) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
drawChart() {
|
drawChart() {
|
||||||
|
if (!this._isAttached) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const unit = this.unit;
|
const unit = this.unit;
|
||||||
const deviceStates = this.data;
|
const deviceStates = this.data;
|
||||||
const datasets = [];
|
const datasets = [];
|
||||||
let endTime;
|
let endTime;
|
||||||
|
|
||||||
if (!this._isAttached) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (deviceStates.length === 0) {
|
if (deviceStates.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -1,23 +1,23 @@
|
|||||||
|
import {
|
||||||
|
mdiAccountMusic,
|
||||||
|
mdiAccountMusicOutline,
|
||||||
|
mdiAlbum,
|
||||||
|
mdiApplication,
|
||||||
|
mdiDramaMasks,
|
||||||
|
mdiFileMusic,
|
||||||
|
mdiFolder,
|
||||||
|
mdiGamepadVariant,
|
||||||
|
mdiImage,
|
||||||
|
mdiMovie,
|
||||||
|
mdiMusic,
|
||||||
|
mdiPlaylistMusic,
|
||||||
|
mdiPodcast,
|
||||||
|
mdiTelevisionClassic,
|
||||||
|
mdiVideo,
|
||||||
|
mdiWeb,
|
||||||
|
} from "@mdi/js";
|
||||||
import type { HassEntity } from "home-assistant-js-websocket";
|
import type { HassEntity } from "home-assistant-js-websocket";
|
||||||
import type { HomeAssistant } from "../types";
|
import type { HomeAssistant } from "../types";
|
||||||
import {
|
|
||||||
mdiFolder,
|
|
||||||
mdiPlaylistMusic,
|
|
||||||
mdiFileMusic,
|
|
||||||
mdiAlbum,
|
|
||||||
mdiMusic,
|
|
||||||
mdiTelevisionClassic,
|
|
||||||
mdiMovie,
|
|
||||||
mdiVideo,
|
|
||||||
mdiImage,
|
|
||||||
mdiWeb,
|
|
||||||
mdiGamepadVariant,
|
|
||||||
mdiAccountMusic,
|
|
||||||
mdiPodcast,
|
|
||||||
mdiApplication,
|
|
||||||
mdiAccountMusicOutline,
|
|
||||||
mdiDramaMasks,
|
|
||||||
} from "@mdi/js";
|
|
||||||
|
|
||||||
export const SUPPORT_PAUSE = 1;
|
export const SUPPORT_PAUSE = 1;
|
||||||
export const SUPPORT_SEEK = 2;
|
export const SUPPORT_SEEK = 2;
|
||||||
@@ -38,7 +38,7 @@ export const CONTRAST_RATIO = 4.5;
|
|||||||
|
|
||||||
export type MediaPlayerBrowseAction = "pick" | "play";
|
export type MediaPlayerBrowseAction = "pick" | "play";
|
||||||
|
|
||||||
export const BROWSER_SOURCE = "browser";
|
export const BROWSER_PLAYER = "browser";
|
||||||
|
|
||||||
export type MediaClassBrowserSetting = {
|
export type MediaClassBrowserSetting = {
|
||||||
icon: string;
|
icon: string;
|
||||||
|
@@ -20,6 +20,7 @@ import { LocalizeFunc } from "../../common/translations/localize";
|
|||||||
import "../../components/ha-icon-next";
|
import "../../components/ha-icon-next";
|
||||||
import { domainToName } from "../../data/integration";
|
import { domainToName } from "../../data/integration";
|
||||||
import { HomeAssistant } from "../../types";
|
import { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
import { FlowConfig } from "./show-dialog-data-entry-flow";
|
import { FlowConfig } from "./show-dialog-data-entry-flow";
|
||||||
import { configFlowContentStyles } from "./styles";
|
import { configFlowContentStyles } from "./styles";
|
||||||
|
|
||||||
@@ -122,7 +123,7 @@ class StepFlowPickHandler extends LitElement {
|
|||||||
${this.hass.localize(
|
${this.hass.localize(
|
||||||
"ui.panel.config.integrations.note_about_website_reference"
|
"ui.panel.config.integrations.note_about_website_reference"
|
||||||
)}<a
|
)}<a
|
||||||
href="https://www.home-assistant.io/integrations/"
|
href="${documentationUrl(this.hass, "/integrations/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
|
@@ -48,6 +48,7 @@ class MoreInfoCamera extends LitElement {
|
|||||||
<ha-camera-stream
|
<ha-camera-stream
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
.stateObj=${this.stateObj}
|
.stateObj=${this.stateObj}
|
||||||
|
allow-exoplayer
|
||||||
controls
|
controls
|
||||||
></ha-camera-stream>
|
></ha-camera-stream>
|
||||||
${this._cameraPrefs
|
${this._cameraPrefs
|
||||||
|
@@ -32,7 +32,7 @@ class MoreInfoPerson extends LitElement {
|
|||||||
return html`
|
return html`
|
||||||
<ha-attributes
|
<ha-attributes
|
||||||
.stateObj=${this.stateObj}
|
.stateObj=${this.stateObj}
|
||||||
extraFilters="id,user_id,editable"
|
extra-filters="id,user_id,editable"
|
||||||
></ha-attributes>
|
></ha-attributes>
|
||||||
${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude
|
${this.stateObj.attributes.latitude && this.stateObj.attributes.longitude
|
||||||
? html`
|
? html`
|
||||||
@@ -78,6 +78,9 @@ class MoreInfoPerson extends LitElement {
|
|||||||
margin: 36px 0 8px 0;
|
margin: 36px 0 8px 0;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
ha-map {
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,10 +26,8 @@ import { navigate } from "../../common/navigate";
|
|||||||
import "../../components/ha-dialog";
|
import "../../components/ha-dialog";
|
||||||
import "../../components/ha-header-bar";
|
import "../../components/ha-header-bar";
|
||||||
import "../../components/ha-svg-icon";
|
import "../../components/ha-svg-icon";
|
||||||
import "../../components/state-history-charts";
|
|
||||||
import { removeEntityRegistryEntry } from "../../data/entity_registry";
|
import { removeEntityRegistryEntry } from "../../data/entity_registry";
|
||||||
import { showEntityEditorDialog } from "../../panels/config/entities/show-dialog-entity-editor";
|
import { showEntityEditorDialog } from "../../panels/config/entities/show-dialog-entity-editor";
|
||||||
import "../../panels/logbook/ha-logbook";
|
|
||||||
import { haStyleDialog } from "../../resources/styles";
|
import { haStyleDialog } from "../../resources/styles";
|
||||||
import "../../state-summary/state-card-content";
|
import "../../state-summary/state-card-content";
|
||||||
import { HomeAssistant } from "../../types";
|
import { HomeAssistant } from "../../types";
|
||||||
@@ -394,7 +392,9 @@ export class MoreInfoDialog extends LitElement {
|
|||||||
--dialog-content-padding: 0;
|
--dialog-content-padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
state-card-content {
|
state-card-content,
|
||||||
|
ha-more-info-history,
|
||||||
|
ha-more-info-logbook:not(:last-child) {
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import {
|
import {
|
||||||
css,
|
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
internalProperty,
|
internalProperty,
|
||||||
@@ -13,7 +12,6 @@ import { throttle } from "../../common/util/throttle";
|
|||||||
import "../../components/state-history-charts";
|
import "../../components/state-history-charts";
|
||||||
import { getRecentWithCache } from "../../data/cached-history";
|
import { getRecentWithCache } from "../../data/cached-history";
|
||||||
import { HistoryResult } from "../../data/history";
|
import { HistoryResult } from "../../data/history";
|
||||||
import { haStyle } from "../../resources/styles";
|
|
||||||
import { HomeAssistant } from "../../types";
|
import { HomeAssistant } from "../../types";
|
||||||
|
|
||||||
@customElement("ha-more-info-history")
|
@customElement("ha-more-info-history")
|
||||||
@@ -88,18 +86,6 @@ export class MoreInfoHistory extends LitElement {
|
|||||||
this.hass!.language
|
this.hass!.language
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
|
||||||
return [
|
|
||||||
haStyle,
|
|
||||||
css`
|
|
||||||
state-history-charts {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
`,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
@@ -152,8 +152,6 @@ export class MoreInfoLogbook extends LitElement {
|
|||||||
ha-logbook {
|
ha-logbook {
|
||||||
max-height: 250px;
|
max-height: 250px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
display: block;
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
}
|
||||||
ha-circular-progress {
|
ha-circular-progress {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@@ -7,12 +7,13 @@ import {
|
|||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { fireEvent } from "../common/dom/fire_event";
|
import { fireEvent, HASSDomEvent } from "../common/dom/fire_event";
|
||||||
import { listenMediaQuery } from "../common/dom/media_query";
|
import { listenMediaQuery } from "../common/dom/media_query";
|
||||||
import { toggleAttribute } from "../common/dom/toggle_attribute";
|
import { toggleAttribute } from "../common/dom/toggle_attribute";
|
||||||
import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer";
|
import { showNotificationDrawer } from "../dialogs/notifications/show-notification-drawer";
|
||||||
@@ -24,10 +25,17 @@ const NON_SWIPABLE_PANELS = ["map"];
|
|||||||
declare global {
|
declare global {
|
||||||
// for fire event
|
// for fire event
|
||||||
interface HASSDomEvents {
|
interface HASSDomEvents {
|
||||||
"hass-open-menu": undefined;
|
|
||||||
"hass-toggle-menu": undefined;
|
"hass-toggle-menu": undefined;
|
||||||
|
"hass-edit-sidebar": EditSideBarEvent;
|
||||||
"hass-show-notifications": undefined;
|
"hass-show-notifications": undefined;
|
||||||
}
|
}
|
||||||
|
interface HTMLElementEventMap {
|
||||||
|
"hass-edit-sidebar": HASSDomEvent<EditSideBarEvent>;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EditSideBarEvent {
|
||||||
|
editMode: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@customElement("home-assistant-main")
|
@customElement("home-assistant-main")
|
||||||
@@ -36,7 +44,9 @@ class HomeAssistantMain extends LitElement {
|
|||||||
|
|
||||||
@property() public route?: Route;
|
@property() public route?: Route;
|
||||||
|
|
||||||
@property({ type: Boolean }) private narrow?: boolean;
|
@property({ type: Boolean }) public narrow?: boolean;
|
||||||
|
|
||||||
|
@internalProperty() private _sidebarEditMode = false;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
const hass = this.hass;
|
const hass = this.hass;
|
||||||
@@ -48,7 +58,9 @@ class HomeAssistantMain extends LitElement {
|
|||||||
const sidebarNarrow = this._sidebarNarrow;
|
const sidebarNarrow = this._sidebarNarrow;
|
||||||
|
|
||||||
const disableSwipe =
|
const disableSwipe =
|
||||||
!sidebarNarrow || NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
|
this._sidebarEditMode ||
|
||||||
|
!sidebarNarrow ||
|
||||||
|
NON_SWIPABLE_PANELS.indexOf(hass.panelUrl) !== -1;
|
||||||
|
|
||||||
// Style block in render because of the mixin that is not supported
|
// Style block in render because of the mixin that is not supported
|
||||||
return html`
|
return html`
|
||||||
@@ -76,6 +88,7 @@ class HomeAssistantMain extends LitElement {
|
|||||||
<ha-sidebar
|
<ha-sidebar
|
||||||
.hass=${hass}
|
.hass=${hass}
|
||||||
.narrow=${sidebarNarrow}
|
.narrow=${sidebarNarrow}
|
||||||
|
.editMode=${this._sidebarEditMode}
|
||||||
.alwaysExpand=${sidebarNarrow ||
|
.alwaysExpand=${sidebarNarrow ||
|
||||||
this.hass.dockedSidebar === "docked"}
|
this.hass.dockedSidebar === "docked"}
|
||||||
></ha-sidebar>
|
></ha-sidebar>
|
||||||
@@ -93,18 +106,28 @@ class HomeAssistantMain extends LitElement {
|
|||||||
protected firstUpdated() {
|
protected firstUpdated() {
|
||||||
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
import(/* webpackChunkName: "ha-sidebar" */ "../components/ha-sidebar");
|
||||||
|
|
||||||
this.addEventListener("hass-open-menu", () => {
|
this.addEventListener(
|
||||||
if (this._sidebarNarrow) {
|
"hass-edit-sidebar",
|
||||||
this.drawer.open();
|
(ev: HASSDomEvent<EditSideBarEvent>) => {
|
||||||
} else {
|
this._sidebarEditMode = ev.detail.editMode;
|
||||||
fireEvent(this, "hass-dock-sidebar", {
|
|
||||||
dock: "docked",
|
if (this._sidebarEditMode) {
|
||||||
});
|
if (this._sidebarNarrow) {
|
||||||
setTimeout(() => this.appLayout.resetLayout());
|
this.drawer.open();
|
||||||
|
} else {
|
||||||
|
fireEvent(this, "hass-dock-sidebar", {
|
||||||
|
dock: "docked",
|
||||||
|
});
|
||||||
|
setTimeout(() => this.appLayout.resetLayout());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
);
|
||||||
|
|
||||||
this.addEventListener("hass-toggle-menu", () => {
|
this.addEventListener("hass-toggle-menu", () => {
|
||||||
|
if (this._sidebarEditMode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this._sidebarNarrow) {
|
if (this._sidebarNarrow) {
|
||||||
if (this.drawer.opened) {
|
if (this.drawer.opened) {
|
||||||
this.drawer.close();
|
this.drawer.close();
|
||||||
|
@@ -39,6 +39,7 @@ import "../../../layouts/ha-app-layout";
|
|||||||
import "../../../layouts/hass-tabs-subpage";
|
import "../../../layouts/hass-tabs-subpage";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant, Route } from "../../../types";
|
import { HomeAssistant, Route } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import "../ha-config-section";
|
import "../ha-config-section";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
import "./action/ha-automation-action";
|
import "./action/ha-automation-action";
|
||||||
@@ -159,7 +160,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
"ui.panel.config.automation.editor.modes.description",
|
"ui.panel.config.automation.editor.modes.description",
|
||||||
"documentation_link",
|
"documentation_link",
|
||||||
html`<a
|
html`<a
|
||||||
href="https://www.home-assistant.io/integrations/automation/#automation-modes"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/integrations/automation/#automation-modes"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
@@ -247,7 +251,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/automation/trigger/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/automation/trigger/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@@ -276,7 +283,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scripts/conditions/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/scripts/conditions/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@@ -305,7 +315,10 @@ export class HaAutomationEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/automation/action/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/automation/action/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -124,6 +124,26 @@ class CloudAlexa extends LitElement {
|
|||||||
? exposedCards
|
? exposedCards
|
||||||
: notExposedCards;
|
: notExposedCards;
|
||||||
|
|
||||||
|
const iconButton = html`<mwc-icon-button
|
||||||
|
slot="trigger"
|
||||||
|
class=${classMap({
|
||||||
|
exposed: isExposed!,
|
||||||
|
"not-exposed": !isExposed,
|
||||||
|
})}
|
||||||
|
.disabled=${!emptyFilter}
|
||||||
|
.title=${this.hass!.localize("ui.panel.config.cloud.google.expose")}
|
||||||
|
>
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${config.should_expose !== null
|
||||||
|
? isExposed
|
||||||
|
? mdiCheckboxMarked
|
||||||
|
: mdiCloseBox
|
||||||
|
: isDomainExposed
|
||||||
|
? mdiCheckboxMultipleMarked
|
||||||
|
: mdiCloseBoxMultiple}
|
||||||
|
></ha-svg-icon>
|
||||||
|
</mwc-icon-button>`;
|
||||||
|
|
||||||
target.push(html`
|
target.push(html`
|
||||||
<ha-card>
|
<ha-card>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
@@ -139,67 +159,50 @@ class CloudAlexa extends LitElement {
|
|||||||
.map((ifc) => ifc.replace(/(Alexa.|Controller)/g, ""))
|
.map((ifc) => ifc.replace(/(Alexa.|Controller)/g, ""))
|
||||||
.join(", ")}
|
.join(", ")}
|
||||||
</state-info>
|
</state-info>
|
||||||
<ha-button-menu
|
${!emptyFilter
|
||||||
corner="BOTTOM_START"
|
? html`${iconButton}`
|
||||||
.entityId=${stateObj.entity_id}
|
: html`<ha-button-menu
|
||||||
@action=${this._exposeChanged}
|
corner="BOTTOM_START"
|
||||||
>
|
.entityId=${stateObj.entity_id}
|
||||||
<mwc-icon-button
|
@action=${this._exposeChanged}
|
||||||
slot="trigger"
|
>
|
||||||
class=${classMap({
|
${iconButton}
|
||||||
exposed: isExposed!,
|
<mwc-list-item hasMeta>
|
||||||
"not-exposed": !isExposed,
|
${this.hass!.localize(
|
||||||
})}
|
"ui.panel.config.cloud.google.expose_entity"
|
||||||
.title=${this.hass!.localize(
|
)}
|
||||||
"ui.panel.config.cloud.alexa.expose"
|
<ha-svg-icon
|
||||||
)}
|
class="exposed"
|
||||||
>
|
slot="meta"
|
||||||
<ha-svg-icon
|
.path=${mdiCheckboxMarked}
|
||||||
.path=${config.should_expose !== null
|
></ha-svg-icon>
|
||||||
? isExposed
|
</mwc-list-item>
|
||||||
? mdiCheckboxMarked
|
<mwc-list-item hasMeta>
|
||||||
: mdiCloseBox
|
${this.hass!.localize(
|
||||||
: isDomainExposed
|
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||||
? mdiCheckboxMultipleMarked
|
)}
|
||||||
: mdiCloseBoxMultiple}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class="not-exposed"
|
||||||
</mwc-icon-button>
|
slot="meta"
|
||||||
<mwc-list-item hasMeta>
|
.path=${mdiCloseBox}
|
||||||
${this.hass!.localize(
|
></ha-svg-icon>
|
||||||
"ui.panel.config.cloud.alexa.expose_entity"
|
</mwc-list-item>
|
||||||
)}
|
<mwc-list-item hasMeta>
|
||||||
<ha-svg-icon
|
${this.hass!.localize(
|
||||||
class="exposed"
|
"ui.panel.config.cloud.google.follow_domain"
|
||||||
slot="meta"
|
)}
|
||||||
.path=${mdiCheckboxMarked}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class=${classMap({
|
||||||
</mwc-list-item>
|
exposed: isDomainExposed,
|
||||||
<mwc-list-item hasMeta>
|
"not-exposed": !isDomainExposed,
|
||||||
${this.hass!.localize(
|
})}
|
||||||
"ui.panel.config.cloud.alexa.dont_expose_entity"
|
slot="meta"
|
||||||
)}
|
.path=${isDomainExposed
|
||||||
<ha-svg-icon
|
? mdiCheckboxMultipleMarked
|
||||||
class="not-exposed"
|
: mdiCloseBoxMultiple}
|
||||||
slot="meta"
|
></ha-svg-icon>
|
||||||
.path=${mdiCloseBox}
|
</mwc-list-item>
|
||||||
></ha-svg-icon>
|
</ha-button-menu>`}
|
||||||
</mwc-list-item>
|
|
||||||
<mwc-list-item hasMeta>
|
|
||||||
${this.hass!.localize(
|
|
||||||
"ui.panel.config.cloud.alexa.follow_domain"
|
|
||||||
)}
|
|
||||||
<ha-svg-icon
|
|
||||||
class=${classMap({
|
|
||||||
exposed: isDomainExposed,
|
|
||||||
"not-exposed": !isDomainExposed,
|
|
||||||
})}
|
|
||||||
slot="meta"
|
|
||||||
.path=${isDomainExposed
|
|
||||||
? mdiCheckboxMultipleMarked
|
|
||||||
: mdiCloseBoxMultiple}
|
|
||||||
></ha-svg-icon>
|
|
||||||
</mwc-list-item>
|
|
||||||
</ha-button-menu>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ha-card>
|
</ha-card>
|
||||||
|
@@ -14,6 +14,7 @@ import type { HaPaperDialog } from "../../../../components/dialog/ha-paper-dialo
|
|||||||
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box";
|
||||||
import { haStyle } from "../../../../resources/styles";
|
import { haStyle } from "../../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../../types";
|
import { HomeAssistant } from "../../../../types";
|
||||||
|
import { documentationUrl } from "../../../../util/documentation-url";
|
||||||
import { WebhookDialogParams } from "./show-dialog-manage-cloudhook";
|
import { WebhookDialogParams } from "./show-dialog-manage-cloudhook";
|
||||||
|
|
||||||
const inputLabel = "Public URL – Click to copy to clipboard";
|
const inputLabel = "Public URL – Click to copy to clipboard";
|
||||||
@@ -37,8 +38,11 @@ export class DialogManageCloudhook extends LitElement {
|
|||||||
const { webhook, cloudhook } = this._params;
|
const { webhook, cloudhook } = this._params;
|
||||||
const docsUrl =
|
const docsUrl =
|
||||||
webhook.domain === "automation"
|
webhook.domain === "automation"
|
||||||
? "https://www.home-assistant.io/docs/automation/trigger/#webhook-trigger"
|
? documentationUrl(
|
||||||
: `https://www.home-assistant.io/integrations/${webhook.domain}/`;
|
this.hass!,
|
||||||
|
"/docs/automation/trigger/#webhook-trigger"
|
||||||
|
)
|
||||||
|
: documentationUrl(this.hass!, `/integrations/${webhook.domain}/`);
|
||||||
return html`
|
return html`
|
||||||
<ha-paper-dialog with-backdrop>
|
<ha-paper-dialog with-backdrop>
|
||||||
<h2>
|
<h2>
|
||||||
|
@@ -130,6 +130,26 @@ class CloudGoogleAssistant extends LitElement {
|
|||||||
? exposedCards
|
? exposedCards
|
||||||
: notExposedCards;
|
: notExposedCards;
|
||||||
|
|
||||||
|
const iconButton = html`<mwc-icon-button
|
||||||
|
slot="trigger"
|
||||||
|
class=${classMap({
|
||||||
|
exposed: isExposed!,
|
||||||
|
"not-exposed": !isExposed,
|
||||||
|
})}
|
||||||
|
.disabled=${!emptyFilter}
|
||||||
|
.title=${this.hass!.localize("ui.panel.config.cloud.google.expose")}
|
||||||
|
>
|
||||||
|
<ha-svg-icon
|
||||||
|
.path=${config.should_expose !== null
|
||||||
|
? isExposed
|
||||||
|
? mdiCheckboxMarked
|
||||||
|
: mdiCloseBox
|
||||||
|
: isDomainExposed
|
||||||
|
? mdiCheckboxMultipleMarked
|
||||||
|
: mdiCloseBoxMultiple}
|
||||||
|
></ha-svg-icon>
|
||||||
|
</mwc-icon-button>`;
|
||||||
|
|
||||||
target.push(html`
|
target.push(html`
|
||||||
<ha-card>
|
<ha-card>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
@@ -144,67 +164,50 @@ class CloudGoogleAssistant extends LitElement {
|
|||||||
.map((trait) => trait.substr(trait.lastIndexOf(".") + 1))
|
.map((trait) => trait.substr(trait.lastIndexOf(".") + 1))
|
||||||
.join(", ")}
|
.join(", ")}
|
||||||
</state-info>
|
</state-info>
|
||||||
<ha-button-menu
|
${!emptyFilter
|
||||||
corner="BOTTOM_START"
|
? html`${iconButton}`
|
||||||
.entityId=${stateObj.entity_id}
|
: html`<ha-button-menu
|
||||||
@action=${this._exposeChanged}
|
corner="BOTTOM_START"
|
||||||
>
|
.entityId=${stateObj.entity_id}
|
||||||
<mwc-icon-button
|
@action=${this._exposeChanged}
|
||||||
slot="trigger"
|
>
|
||||||
class=${classMap({
|
${iconButton}
|
||||||
exposed: isExposed!,
|
<mwc-list-item hasMeta>
|
||||||
"not-exposed": !isExposed,
|
${this.hass!.localize(
|
||||||
})}
|
"ui.panel.config.cloud.google.expose_entity"
|
||||||
.title=${this.hass!.localize(
|
)}
|
||||||
"ui.panel.config.cloud.google.expose"
|
<ha-svg-icon
|
||||||
)}
|
class="exposed"
|
||||||
>
|
slot="meta"
|
||||||
<ha-svg-icon
|
.path=${mdiCheckboxMarked}
|
||||||
.path=${config.should_expose !== null
|
></ha-svg-icon>
|
||||||
? isExposed
|
</mwc-list-item>
|
||||||
? mdiCheckboxMarked
|
<mwc-list-item hasMeta>
|
||||||
: mdiCloseBox
|
${this.hass!.localize(
|
||||||
: isDomainExposed
|
"ui.panel.config.cloud.google.dont_expose_entity"
|
||||||
? mdiCheckboxMultipleMarked
|
)}
|
||||||
: mdiCloseBoxMultiple}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class="not-exposed"
|
||||||
</mwc-icon-button>
|
slot="meta"
|
||||||
<mwc-list-item hasMeta>
|
.path=${mdiCloseBox}
|
||||||
${this.hass!.localize(
|
></ha-svg-icon>
|
||||||
"ui.panel.config.cloud.google.expose_entity"
|
</mwc-list-item>
|
||||||
)}
|
<mwc-list-item hasMeta>
|
||||||
<ha-svg-icon
|
${this.hass!.localize(
|
||||||
class="exposed"
|
"ui.panel.config.cloud.google.follow_domain"
|
||||||
slot="meta"
|
)}
|
||||||
.path=${mdiCheckboxMarked}
|
<ha-svg-icon
|
||||||
></ha-svg-icon>
|
class=${classMap({
|
||||||
</mwc-list-item>
|
exposed: isDomainExposed,
|
||||||
<mwc-list-item hasMeta>
|
"not-exposed": !isDomainExposed,
|
||||||
${this.hass!.localize(
|
})}
|
||||||
"ui.panel.config.cloud.google.dont_expose_entity"
|
slot="meta"
|
||||||
)}
|
.path=${isDomainExposed
|
||||||
<ha-svg-icon
|
? mdiCheckboxMultipleMarked
|
||||||
class="not-exposed"
|
: mdiCloseBoxMultiple}
|
||||||
slot="meta"
|
></ha-svg-icon>
|
||||||
.path=${mdiCloseBox}
|
</mwc-list-item>
|
||||||
></ha-svg-icon>
|
</ha-button-menu>`}
|
||||||
</mwc-list-item>
|
|
||||||
<mwc-list-item hasMeta>
|
|
||||||
${this.hass!.localize(
|
|
||||||
"ui.panel.config.cloud.google.follow_domain"
|
|
||||||
)}
|
|
||||||
<ha-svg-icon
|
|
||||||
class=${classMap({
|
|
||||||
exposed: isDomainExposed,
|
|
||||||
"not-exposed": !isDomainExposed,
|
|
||||||
})}
|
|
||||||
slot="meta"
|
|
||||||
.path=${isDomainExposed
|
|
||||||
? mdiCheckboxMultipleMarked
|
|
||||||
: mdiCloseBoxMultiple}
|
|
||||||
></ha-svg-icon>
|
|
||||||
</mwc-list-item>
|
|
||||||
</ha-button-menu>
|
|
||||||
</div>
|
</div>
|
||||||
${entity.might_2fa
|
${entity.might_2fa
|
||||||
? html`
|
? html`
|
||||||
|
@@ -8,6 +8,7 @@ import "../../../../layouts/hass-subpage";
|
|||||||
import { EventsMixin } from "../../../../mixins/events-mixin";
|
import { EventsMixin } from "../../../../mixins/events-mixin";
|
||||||
import LocalizeMixin from "../../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../../mixins/localize-mixin";
|
||||||
import "../../../../styles/polymer-ha-style";
|
import "../../../../styles/polymer-ha-style";
|
||||||
|
import { documentationUrl } from "../../../../util/documentation-url";
|
||||||
import "../../ha-config-section";
|
import "../../ha-config-section";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -70,8 +71,8 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
|
|||||||
<p>
|
<p>
|
||||||
[[localize('ui.panel.config.cloud.register.information4')]]
|
[[localize('ui.panel.config.cloud.register.information4')]]
|
||||||
</p><ul>
|
</p><ul>
|
||||||
<li><a href="https://home-assistant.io/tos/" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_terms_conditions')]]</a></li>
|
<li><a href="[[_computeDocumentationUrlTos(hass)]]" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_terms_conditions')]]</a></li>
|
||||||
<li><a href="https://home-assistant.io/privacy/" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_privacy_policy')]]</a></li>
|
<li><a href="[[_computeDocumentationUrlPrivacy(hass)]]" target="_blank" rel="noreferrer">[[localize('ui.panel.config.cloud.register.link_privacy_policy')]]</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -137,6 +138,14 @@ class CloudRegister extends LocalizeMixin(EventsMixin(PolymerElement)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrlTos(hass) {
|
||||||
|
return documentationUrl(hass, "/tos/");
|
||||||
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrlPrivacy(hass) {
|
||||||
|
return documentationUrl(hass, "/privacy/");
|
||||||
|
}
|
||||||
|
|
||||||
_handleRegister() {
|
_handleRegister() {
|
||||||
let invalid = false;
|
let invalid = false;
|
||||||
|
|
||||||
|
@@ -6,10 +6,11 @@ import { html } from "@polymer/polymer/lib/utils/html-tag";
|
|||||||
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
import { PolymerElement } from "@polymer/polymer/polymer-element";
|
||||||
import { computeStateDomain } from "../../../common/entity/compute_state_domain";
|
import { computeStateDomain } from "../../../common/entity/compute_state_domain";
|
||||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||||
import hassAttributeUtil from "../../../util/hass-attributes-util";
|
|
||||||
import "./ha-form-customize-attributes";
|
|
||||||
import "../ha-form-style";
|
|
||||||
import "../../../styles/polymer-ha-style";
|
import "../../../styles/polymer-ha-style";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
import hassAttributeUtil from "../../../util/hass-attributes-util";
|
||||||
|
import "../ha-form-style";
|
||||||
|
import "./ha-form-customize-attributes";
|
||||||
|
|
||||||
class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
||||||
static get template() {
|
static get template() {
|
||||||
@@ -30,7 +31,7 @@ class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
|||||||
<div class="warning">
|
<div class="warning">
|
||||||
[[localize('ui.panel.config.customize.warning.include_sentence')]]
|
[[localize('ui.panel.config.customize.warning.include_sentence')]]
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/docs/configuration/customizing-devices/#customization-using-the-ui"
|
href="[[_computeDocumentationUrl(hass)]]"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>[[localize('ui.panel.config.customize.warning.include_link')]]</a
|
>[[localize('ui.panel.config.customize.warning.include_link')]]</a
|
||||||
@@ -210,6 +211,13 @@ class HaFormCustomize extends LocalizeMixin(PolymerElement) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrl(hass) {
|
||||||
|
return documentationUrl(
|
||||||
|
hass,
|
||||||
|
"/docs/configuration/customizing-devices/#customization-using-the-ui"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
computeLocalAttributes(localConfig) {
|
computeLocalAttributes(localConfig) {
|
||||||
if (!localConfig) return [];
|
if (!localConfig) return [];
|
||||||
const localKeys = Object.keys(localConfig);
|
const localKeys = Object.keys(localConfig);
|
||||||
|
@@ -12,6 +12,7 @@ import "./integrations-card";
|
|||||||
import "./system-health-card";
|
import "./system-health-card";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
import "../../../layouts/hass-tabs-subpage";
|
import "../../../layouts/hass-tabs-subpage";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
const JS_TYPE = __BUILD__;
|
const JS_TYPE = __BUILD__;
|
||||||
const JS_VERSION = __VERSION__;
|
const JS_VERSION = __VERSION__;
|
||||||
@@ -42,7 +43,7 @@ class HaConfigInfo extends LitElement {
|
|||||||
>
|
>
|
||||||
<div class="about">
|
<div class="about">
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io"
|
href="${documentationUrl(this.hass, "")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
><img
|
><img
|
||||||
@@ -63,7 +64,7 @@ class HaConfigInfo extends LitElement {
|
|||||||
</p>
|
</p>
|
||||||
<p class="develop">
|
<p class="develop">
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/developers/credits/"
|
href="${documentationUrl(this.hass, "/developers/credits/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -159,11 +159,13 @@ class OZWNetworkDashboard extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _generateServiceButton(service: string) {
|
private _generateServiceButton(service: string) {
|
||||||
|
const serviceData = { instance_id: this.ozwInstance };
|
||||||
return html`
|
return html`
|
||||||
<ha-call-service-button
|
<ha-call-service-button
|
||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
domain="ozw"
|
domain="ozw"
|
||||||
.service=${service}
|
.service=${service}
|
||||||
|
.serviceData=${serviceData}
|
||||||
>
|
>
|
||||||
${this.hass!.localize(`ui.panel.config.ozw.services.${service}`)}
|
${this.hass!.localize(`ui.panel.config.ozw.services.${service}`)}
|
||||||
</ha-call-service-button>
|
</ha-call-service-button>
|
||||||
|
@@ -1,20 +1,20 @@
|
|||||||
import "../../../../../components/ha-icon-button";
|
|
||||||
import "../../../../../components/ha-circular-progress";
|
|
||||||
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import "../../../../../components/buttons/ha-call-api-button";
|
import "../../../../../components/buttons/ha-call-api-button";
|
||||||
import "../../../../../components/buttons/ha-call-service-button";
|
import "../../../../../components/buttons/ha-call-service-button";
|
||||||
import "../../../../../components/ha-card";
|
import "../../../../../components/ha-card";
|
||||||
|
import "../../../../../components/ha-circular-progress";
|
||||||
import "../../../../../components/ha-icon";
|
import "../../../../../components/ha-icon";
|
||||||
|
import "../../../../../components/ha-icon-button";
|
||||||
import "../../../../../components/ha-service-description";
|
import "../../../../../components/ha-service-description";
|
||||||
import {
|
import {
|
||||||
fetchNetworkStatus,
|
fetchNetworkStatus,
|
||||||
@@ -26,6 +26,7 @@ import {
|
|||||||
} from "../../../../../data/zwave";
|
} from "../../../../../data/zwave";
|
||||||
import { haStyle } from "../../../../../resources/styles";
|
import { haStyle } from "../../../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../../../types";
|
import { HomeAssistant } from "../../../../../types";
|
||||||
|
import { documentationUrl } from "../../../../../util/documentation-url";
|
||||||
import "../../../ha-config-section";
|
import "../../../ha-config-section";
|
||||||
|
|
||||||
@customElement("zwave-network")
|
@customElement("zwave-network")
|
||||||
@@ -71,7 +72,10 @@ export class ZwaveNetwork extends LitElement {
|
|||||||
)}
|
)}
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/docs/z-wave/control-panel/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/z-wave/control-panel/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -4,23 +4,24 @@ import {
|
|||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import memoizeOne from "memoize-one";
|
import memoizeOne from "memoize-one";
|
||||||
import "../../../components/ha-picture-upload";
|
|
||||||
import type { HaPictureUpload } from "../../../components/ha-picture-upload";
|
|
||||||
import "../../../components/entity/ha-entities-picker";
|
import "../../../components/entity/ha-entities-picker";
|
||||||
import { createCloseHeading } from "../../../components/ha-dialog";
|
import { createCloseHeading } from "../../../components/ha-dialog";
|
||||||
|
import "../../../components/ha-picture-upload";
|
||||||
|
import type { HaPictureUpload } from "../../../components/ha-picture-upload";
|
||||||
import "../../../components/user/ha-user-picker";
|
import "../../../components/user/ha-user-picker";
|
||||||
import { PersonMutableParams } from "../../../data/person";
|
import { PersonMutableParams } from "../../../data/person";
|
||||||
|
import { CropOptions } from "../../../dialogs/image-cropper-dialog/show-image-cropper-dialog";
|
||||||
import { PolymerChangedEvent } from "../../../polymer-types";
|
import { PolymerChangedEvent } from "../../../polymer-types";
|
||||||
import { haStyleDialog } from "../../../resources/styles";
|
import { haStyleDialog } from "../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../types";
|
import { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import { PersonDetailDialogParams } from "./show-dialog-person-detail";
|
import { PersonDetailDialogParams } from "./show-dialog-person-detail";
|
||||||
import { CropOptions } from "../../../dialogs/image-cropper-dialog/show-image-cropper-dialog";
|
|
||||||
|
|
||||||
const includeDomains = ["device_tracker"];
|
const includeDomains = ["device_tracker"];
|
||||||
|
|
||||||
@@ -153,7 +154,10 @@ class DialogPersonDetail extends LitElement {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/integrations/#presence-detection"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/integrations/#presence-detection"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass!.localize(
|
>${this.hass!.localize(
|
||||||
|
@@ -25,6 +25,7 @@ import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
|||||||
import "../../../layouts/hass-tabs-subpage-data-table";
|
import "../../../layouts/hass-tabs-subpage-data-table";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant, Route } from "../../../types";
|
import { HomeAssistant, Route } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import { showToast } from "../../../util/toast";
|
import { showToast } from "../../../util/toast";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
|
|
||||||
@@ -191,7 +192,7 @@ class HaSceneDashboard extends LitElement {
|
|||||||
${this.hass.localize("ui.panel.config.scene.picker.introduction")}
|
${this.hass.localize("ui.panel.config.scene.picker.introduction")}
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scene/editor/"
|
href="${documentationUrl(this.hass, "/docs/scene/editor/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -1,46 +1,47 @@
|
|||||||
|
import "@material/mwc-fab";
|
||||||
|
import { mdiContentSave } from "@mdi/js";
|
||||||
import "@polymer/app-layout/app-header/app-header";
|
import "@polymer/app-layout/app-header/app-header";
|
||||||
import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
|
|
||||||
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
import "@polymer/app-layout/app-toolbar/app-toolbar";
|
||||||
import "../../../components/ha-icon-button";
|
import "@polymer/paper-dropdown-menu/paper-dropdown-menu-light";
|
||||||
|
import { PaperListboxElement } from "@polymer/paper-listbox";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { classMap } from "lit-html/directives/class-map";
|
import { classMap } from "lit-html/directives/class-map";
|
||||||
import { computeObjectId } from "../../../common/entity/compute_object_id";
|
import { computeObjectId } from "../../../common/entity/compute_object_id";
|
||||||
import { navigate } from "../../../common/navigate";
|
import { navigate } from "../../../common/navigate";
|
||||||
|
import { slugify } from "../../../common/string/slugify";
|
||||||
import { computeRTL } from "../../../common/util/compute_rtl";
|
import { computeRTL } from "../../../common/util/compute_rtl";
|
||||||
import "../../../components/ha-card";
|
import "../../../components/ha-card";
|
||||||
|
import "../../../components/ha-icon-button";
|
||||||
import "../../../components/ha-icon-input";
|
import "../../../components/ha-icon-input";
|
||||||
import { showToast } from "../../../util/toast";
|
import "../../../components/ha-svg-icon";
|
||||||
import "@material/mwc-fab";
|
|
||||||
import {
|
import {
|
||||||
Action,
|
Action,
|
||||||
deleteScript,
|
deleteScript,
|
||||||
getScriptEditorInitData,
|
getScriptEditorInitData,
|
||||||
ScriptConfig,
|
|
||||||
triggerScript,
|
|
||||||
MODES,
|
MODES,
|
||||||
MODES_MAX,
|
MODES_MAX,
|
||||||
|
ScriptConfig,
|
||||||
|
triggerScript,
|
||||||
} from "../../../data/script";
|
} from "../../../data/script";
|
||||||
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
import { showConfirmationDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||||
import "../../../layouts/ha-app-layout";
|
import "../../../layouts/ha-app-layout";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant, Route } from "../../../types";
|
import { HomeAssistant, Route } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
import { showToast } from "../../../util/toast";
|
||||||
import "../automation/action/ha-automation-action";
|
import "../automation/action/ha-automation-action";
|
||||||
import { HaDeviceAction } from "../automation/action/types/ha-automation-action-device_id";
|
import { HaDeviceAction } from "../automation/action/types/ha-automation-action-device_id";
|
||||||
import "../ha-config-section";
|
import "../ha-config-section";
|
||||||
import { configSections } from "../ha-panel-config";
|
import { configSections } from "../ha-panel-config";
|
||||||
import "../../../components/ha-svg-icon";
|
|
||||||
import { mdiContentSave } from "@mdi/js";
|
|
||||||
import { PaperListboxElement } from "@polymer/paper-listbox";
|
|
||||||
import { slugify } from "../../../common/string/slugify";
|
|
||||||
|
|
||||||
export class HaScriptEditor extends LitElement {
|
export class HaScriptEditor extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@@ -148,7 +149,10 @@ export class HaScriptEditor extends LitElement {
|
|||||||
"ui.panel.config.script.editor.modes.description",
|
"ui.panel.config.script.editor.modes.description",
|
||||||
"documentation_link",
|
"documentation_link",
|
||||||
html`<a
|
html`<a
|
||||||
href="https://www.home-assistant.io/integrations/script/#script-modes"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/integrations/script/#script-modes"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
@@ -197,18 +201,20 @@ export class HaScriptEditor extends LitElement {
|
|||||||
</div>
|
</div>
|
||||||
${this.scriptEntityId
|
${this.scriptEntityId
|
||||||
? html`
|
? html`
|
||||||
<div class="card-actions layout horizontal justified center">
|
<div
|
||||||
<span></span>
|
class="card-actions layout horizontal justified center"
|
||||||
<mwc-button
|
|
||||||
@click=${this._runScript}
|
|
||||||
title="${this.hass.localize(
|
|
||||||
"ui.panel.config.script.picker.activate_script"
|
|
||||||
)}"
|
|
||||||
?disabled=${this._dirty}
|
|
||||||
>
|
>
|
||||||
${this.hass.localize("ui.card.script.execute")}
|
<span></span>
|
||||||
</mwc-button>
|
<mwc-button
|
||||||
</div>
|
@click=${this._runScript}
|
||||||
|
title="${this.hass.localize(
|
||||||
|
"ui.panel.config.script.picker.activate_script"
|
||||||
|
)}"
|
||||||
|
?disabled=${this._dirty}
|
||||||
|
>
|
||||||
|
${this.hass.localize("ui.card.script.execute")}
|
||||||
|
</mwc-button>
|
||||||
|
</div>
|
||||||
`
|
`
|
||||||
: ``}
|
: ``}
|
||||||
</ha-card>
|
</ha-card>
|
||||||
@@ -227,7 +233,7 @@ export class HaScriptEditor extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scripts/"
|
href="${documentationUrl(this.hass, "/docs/scripts/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -25,6 +25,7 @@ import { configSections } from "../ha-panel-config";
|
|||||||
import "../../../components/ha-svg-icon";
|
import "../../../components/ha-svg-icon";
|
||||||
import { mdiPlus } from "@mdi/js";
|
import { mdiPlus } from "@mdi/js";
|
||||||
import { stateIcon } from "../../../common/entity/state_icon";
|
import { stateIcon } from "../../../common/entity/state_icon";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
@customElement("ha-script-picker")
|
@customElement("ha-script-picker")
|
||||||
class HaScriptPicker extends LitElement {
|
class HaScriptPicker extends LitElement {
|
||||||
@@ -187,7 +188,7 @@ class HaScriptPicker extends LitElement {
|
|||||||
${this.hass.localize("ui.panel.config.script.picker.introduction")}
|
${this.hass.localize("ui.panel.config.script.picker.introduction")}
|
||||||
<p>
|
<p>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/scripts/editor/"
|
href="${documentationUrl(this.hass, "/docs/scripts/editor/")}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -9,6 +9,7 @@ import "../../../components/ha-code-editor";
|
|||||||
import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
import { showAlertDialog } from "../../../dialogs/generic/show-dialog-box";
|
||||||
import { EventsMixin } from "../../../mixins/events-mixin";
|
import { EventsMixin } from "../../../mixins/events-mixin";
|
||||||
import LocalizeMixin from "../../../mixins/localize-mixin";
|
import LocalizeMixin from "../../../mixins/localize-mixin";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import "../../../styles/polymer-ha-style";
|
import "../../../styles/polymer-ha-style";
|
||||||
import "./event-subscribe-card";
|
import "./event-subscribe-card";
|
||||||
import "./events-list";
|
import "./events-list";
|
||||||
@@ -61,7 +62,7 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
|
|||||||
<p>
|
<p>
|
||||||
[[localize( 'ui.panel.developer-tools.tabs.events.description' )]]
|
[[localize( 'ui.panel.developer-tools.tabs.events.description' )]]
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/docs/configuration/events/"
|
href="[[_computeDocumentationUrl(hass)]]"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
@@ -149,6 +150,10 @@ class HaPanelDevEvent extends EventsMixin(LocalizeMixin(PolymerElement)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrl(hass) {
|
||||||
|
return documentationUrl(hass, "/docs/configuration/events/");
|
||||||
|
}
|
||||||
|
|
||||||
_computeValidJSON(parsedJSON) {
|
_computeValidJSON(parsedJSON) {
|
||||||
return parsedJSON !== ERROR_SENTINEL;
|
return parsedJSON !== ERROR_SENTINEL;
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,7 @@ import {
|
|||||||
} from "../../../data/ws-templates";
|
} from "../../../data/ws-templates";
|
||||||
import { haStyle } from "../../../resources/styles";
|
import { haStyle } from "../../../resources/styles";
|
||||||
import { HomeAssistant } from "../../../types";
|
import { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
const DEMO_TEMPLATE = `{## Imitate available variables: ##}
|
const DEMO_TEMPLATE = `{## Imitate available variables: ##}
|
||||||
{% set my_test_json = {
|
{% set my_test_json = {
|
||||||
@@ -107,7 +108,10 @@ class HaPanelDevTemplate extends LitElement {
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href="https://home-assistant.io/docs/configuration/templating/"
|
href="${documentationUrl(
|
||||||
|
this.hass,
|
||||||
|
"/docs/configuration/templating/"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -285,7 +285,7 @@ class HaLogbook extends LitElement {
|
|||||||
.narrow .entry {
|
.narrow .entry {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
padding: 8px;
|
padding: 8px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.narrow .icon-message ha-icon {
|
.narrow .icon-message ha-icon {
|
||||||
|
@@ -5,9 +5,9 @@ import {
|
|||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
query,
|
query,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
@@ -191,7 +191,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
|||||||
: html`
|
: html`
|
||||||
<paper-input
|
<paper-input
|
||||||
id="alarmCode"
|
id="alarmCode"
|
||||||
.label=${this.hass.localize('ui.card.alarm_control_panel.code')}
|
.label=${this.hass.localize("ui.card.alarm_control_panel.code")}
|
||||||
type="password"
|
type="password"
|
||||||
></paper-input>
|
></paper-input>
|
||||||
`}
|
`}
|
||||||
|
@@ -63,6 +63,9 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
type: "button",
|
type: "button",
|
||||||
|
tap_action: {
|
||||||
|
action: "toggle",
|
||||||
|
},
|
||||||
entity: foundEntities[0] || "",
|
entity: foundEntities[0] || "",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -115,7 +115,10 @@ export class HuiDialogEditCard extends LitElement implements HassDialog {
|
|||||||
const oldConfig = changedProps.get("_cardConfig") as LovelaceCardConfig;
|
const oldConfig = changedProps.get("_cardConfig") as LovelaceCardConfig;
|
||||||
|
|
||||||
if (oldConfig?.type !== this._cardConfig!.type) {
|
if (oldConfig?.type !== this._cardConfig!.type) {
|
||||||
this._documentationURL = getCardDocumentationURL(this._cardConfig!.type);
|
this._documentationURL = getCardDocumentationURL(
|
||||||
|
this.hass,
|
||||||
|
this._cardConfig!.type
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,14 +1,17 @@
|
|||||||
import {
|
import {
|
||||||
getCustomCardEntry,
|
|
||||||
CUSTOM_TYPE_PREFIX,
|
CUSTOM_TYPE_PREFIX,
|
||||||
|
getCustomCardEntry,
|
||||||
} from "../../../data/lovelace_custom_cards";
|
} from "../../../data/lovelace_custom_cards";
|
||||||
|
import { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
|
|
||||||
const coreDocumentationURLBase = "https://www.home-assistant.io/lovelace/";
|
export const getCardDocumentationURL = (
|
||||||
|
hass: HomeAssistant,
|
||||||
export const getCardDocumentationURL = (type: string): string | undefined => {
|
type: string
|
||||||
|
): string | undefined => {
|
||||||
if (type.startsWith(CUSTOM_TYPE_PREFIX)) {
|
if (type.startsWith(CUSTOM_TYPE_PREFIX)) {
|
||||||
return getCustomCardEntry(type)?.documentationURL;
|
return getCustomCardEntry(type)?.documentationURL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return `${coreDocumentationURLBase}${type}`;
|
return `${documentationUrl(hass, "/lovelace/")}${type}`;
|
||||||
};
|
};
|
||||||
|
@@ -1,33 +1,32 @@
|
|||||||
import "@material/mwc-button";
|
import "@material/mwc-button";
|
||||||
import "@material/mwc-icon-button/mwc-icon-button";
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
|
import { mdiHelpCircle } from "@mdi/js";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
property,
|
property,
|
||||||
internalProperty,
|
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { mdiHelpCircle } from "@mdi/js";
|
|
||||||
import { fireEvent } from "../../../common/dom/fire_event";
|
import { fireEvent } from "../../../common/dom/fire_event";
|
||||||
|
import { computeRTLDirection } from "../../../common/util/compute_rtl";
|
||||||
|
import "../../../components/ha-circular-progress";
|
||||||
|
import "../../../components/ha-dialog";
|
||||||
|
import "../../../components/ha-formfield";
|
||||||
|
import "../../../components/ha-svg-icon";
|
||||||
|
import "../../../components/ha-switch";
|
||||||
|
import "../../../components/ha-yaml-editor";
|
||||||
|
import type { HassDialog } from "../../../dialogs/make-dialog-manager";
|
||||||
import { haStyleDialog } from "../../../resources/styles";
|
import { haStyleDialog } from "../../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../../types";
|
import type { HomeAssistant } from "../../../types";
|
||||||
|
import { documentationUrl } from "../../../util/documentation-url";
|
||||||
import type { SaveDialogParams } from "./show-save-config-dialog";
|
import type { SaveDialogParams } from "./show-save-config-dialog";
|
||||||
import { computeRTLDirection } from "../../../common/util/compute_rtl";
|
|
||||||
import type { HassDialog } from "../../../dialogs/make-dialog-manager";
|
|
||||||
import "../../../components/ha-switch";
|
|
||||||
import "../../../components/ha-formfield";
|
|
||||||
import "../../../components/ha-yaml-editor";
|
|
||||||
import "../../../components/ha-svg-icon";
|
|
||||||
import "../../../components/ha-dialog";
|
|
||||||
import "../../../components/ha-circular-progress";
|
|
||||||
|
|
||||||
const EMPTY_CONFIG = { views: [] };
|
const EMPTY_CONFIG = { views: [] };
|
||||||
|
|
||||||
const coreDocumentationURLBase = "https://www.home-assistant.io/lovelace/";
|
|
||||||
|
|
||||||
@customElement("hui-dialog-save-config")
|
@customElement("hui-dialog-save-config")
|
||||||
export class HuiSaveConfig extends LitElement implements HassDialog {
|
export class HuiSaveConfig extends LitElement implements HassDialog {
|
||||||
@property({ attribute: false }) public hass?: HomeAssistant;
|
@property({ attribute: false }) public hass?: HomeAssistant;
|
||||||
@@ -68,7 +67,7 @@ export class HuiSaveConfig extends LitElement implements HassDialog {
|
|||||||
"ui.panel.lovelace.editor.save_config.header"
|
"ui.panel.lovelace.editor.save_config.header"
|
||||||
)}<a
|
)}<a
|
||||||
class="header_button"
|
class="header_button"
|
||||||
href=${coreDocumentationURLBase}
|
href=${documentationUrl(this.hass!, "/lovelace/")}
|
||||||
title=${this.hass!.localize("ui.panel.lovelace.menu.help")}
|
title=${this.hass!.localize("ui.panel.lovelace.menu.help")}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
|
@@ -53,6 +53,7 @@ import { showVoiceCommandDialog } from "../../dialogs/voice-command-dialog/show-
|
|||||||
import "../../layouts/ha-app-layout";
|
import "../../layouts/ha-app-layout";
|
||||||
import { haStyle } from "../../resources/styles";
|
import { haStyle } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
import { swapView } from "./editor/config-util";
|
import { swapView } from "./editor/config-util";
|
||||||
import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog";
|
import { showEditLovelaceDialog } from "./editor/lovelace-editor/show-edit-lovelace-dialog";
|
||||||
import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog";
|
import { showEditViewDialog } from "./editor/view-editor/show-edit-view-dialog";
|
||||||
@@ -136,7 +137,7 @@ class HUIRoot extends LitElement {
|
|||||||
</mwc-icon-button>
|
</mwc-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/lovelace/"
|
href="${documentationUrl(this.hass, "/lovelace/")}"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
class="menu-link"
|
class="menu-link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -266,7 +267,7 @@ class HUIRoot extends LitElement {
|
|||||||
`
|
`
|
||||||
: ""}
|
: ""}
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/lovelace/"
|
href="${documentationUrl(this.hass, "/lovelace/")}"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
class="menu-link"
|
class="menu-link"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@@ -4,10 +4,12 @@ import {
|
|||||||
CSSResult,
|
CSSResult,
|
||||||
customElement,
|
customElement,
|
||||||
html,
|
html,
|
||||||
LitElement,
|
|
||||||
internalProperty,
|
internalProperty,
|
||||||
|
LitElement,
|
||||||
TemplateResult,
|
TemplateResult,
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
|
import { DOMAINS_TOGGLE } from "../../../common/const";
|
||||||
|
import { computeDomain } from "../../../common/entity/compute_domain";
|
||||||
import "../../../components/ha-icon";
|
import "../../../components/ha-icon";
|
||||||
import { ActionHandlerEvent } from "../../../data/lovelace";
|
import { ActionHandlerEvent } from "../../../data/lovelace";
|
||||||
import { HomeAssistant } from "../../../types";
|
import { HomeAssistant } from "../../../types";
|
||||||
@@ -31,11 +33,16 @@ export class HuiButtonRow extends LitElement implements LovelaceRow {
|
|||||||
throw new Error("Error in card configuration. No name specified.");
|
throw new Error("Error in card configuration. No name specified.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config.tap_action) {
|
this._config = {
|
||||||
throw new Error("Error in card configuration. No action specified.");
|
tap_action: {
|
||||||
}
|
action:
|
||||||
|
config.entity && DOMAINS_TOGGLE.has(computeDomain(config.entity))
|
||||||
this._config = config;
|
? "toggle"
|
||||||
|
: "more-info",
|
||||||
|
},
|
||||||
|
hold_action: { action: "more-info" },
|
||||||
|
...config,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
|
@@ -17,7 +17,7 @@ import { supportsFeature } from "../../common/entity/supports-feature";
|
|||||||
import "../../components/ha-menu-button";
|
import "../../components/ha-menu-button";
|
||||||
import "../../components/media-player/ha-media-player-browse";
|
import "../../components/media-player/ha-media-player-browse";
|
||||||
import {
|
import {
|
||||||
BROWSER_SOURCE,
|
BROWSER_PLAYER,
|
||||||
MediaPickedEvent,
|
MediaPickedEvent,
|
||||||
SUPPORT_BROWSE_MEDIA,
|
SUPPORT_BROWSE_MEDIA,
|
||||||
} from "../../data/media-player";
|
} from "../../data/media-player";
|
||||||
@@ -36,7 +36,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@LocalStorage("mediaBrowseEntityId", true)
|
@LocalStorage("mediaBrowseEntityId", true)
|
||||||
private _entityId = BROWSER_SOURCE;
|
private _entityId = BROWSER_PLAYER;
|
||||||
|
|
||||||
protected render(): TemplateResult {
|
protected render(): TemplateResult {
|
||||||
const stateObj = this._entityId
|
const stateObj = this._entityId
|
||||||
@@ -44,7 +44,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const title =
|
const title =
|
||||||
this._entityId === BROWSER_SOURCE
|
this._entityId === BROWSER_PLAYER
|
||||||
? `${this.hass.localize("ui.components.media-browser.web-browser")}`
|
? `${this.hass.localize("ui.components.media-browser.web-browser")}`
|
||||||
: stateObj?.attributes.friendly_name
|
: stateObj?.attributes.friendly_name
|
||||||
? `${stateObj?.attributes.friendly_name}`
|
? `${stateObj?.attributes.friendly_name}`
|
||||||
@@ -95,7 +95,7 @@ class PanelMediaBrowser extends LitElement {
|
|||||||
ev: HASSDomEvent<MediaPickedEvent>
|
ev: HASSDomEvent<MediaPickedEvent>
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const item = ev.detail.item;
|
const item = ev.detail.item;
|
||||||
if (this._entityId === BROWSER_SOURCE) {
|
if (this._entityId === BROWSER_PLAYER) {
|
||||||
const resolvedUrl: any = await this.hass.callWS({
|
const resolvedUrl: any = await this.hass.callWS({
|
||||||
type: "media_source/resolve_media",
|
type: "media_source/resolve_media",
|
||||||
media_content_id: item.media_content_id,
|
media_content_id: item.media_content_id,
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
import "@material/mwc-list/mwc-list";
|
||||||
|
import "@material/mwc-list/mwc-list-item";
|
||||||
import "@polymer/paper-item/paper-item";
|
import "@polymer/paper-item/paper-item";
|
||||||
import "@polymer/paper-listbox/paper-listbox";
|
import "@polymer/paper-listbox/paper-listbox";
|
||||||
import {
|
import {
|
||||||
@@ -13,7 +15,8 @@ import { fireEvent } from "../../common/dom/fire_event";
|
|||||||
import { computeStateName } from "../../common/entity/compute_state_name";
|
import { computeStateName } from "../../common/entity/compute_state_name";
|
||||||
import { compare } from "../../common/string/compare";
|
import { compare } from "../../common/string/compare";
|
||||||
import { createCloseHeading } from "../../components/ha-dialog";
|
import { createCloseHeading } from "../../components/ha-dialog";
|
||||||
import { BROWSER_SOURCE } from "../../data/media-player";
|
import { UNAVAILABLE_STATES } from "../../data/entity";
|
||||||
|
import { BROWSER_PLAYER } from "../../data/media-player";
|
||||||
import { haStyleDialog } from "../../resources/styles";
|
import { haStyleDialog } from "../../resources/styles";
|
||||||
import type { HomeAssistant } from "../../types";
|
import type { HomeAssistant } from "../../types";
|
||||||
import type { SelectMediaPlayerDialogParams } from "./show-select-media-source-dialog";
|
import type { SelectMediaPlayerDialogParams } from "./show-select-media-source-dialog";
|
||||||
@@ -49,30 +52,31 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
|
|||||||
)}
|
)}
|
||||||
@closed=${this.closeDialog}
|
@closed=${this.closeDialog}
|
||||||
>
|
>
|
||||||
<paper-listbox
|
<mwc-list>
|
||||||
attr-for-selected="itemName"
|
<mwc-list-item .player=${BROWSER_PLAYER} @click=${this._selectPlayer}
|
||||||
@iron-select=${this._selectSource}
|
|
||||||
><paper-item .itemName=${BROWSER_SOURCE}
|
|
||||||
>${this.hass.localize(
|
>${this.hass.localize(
|
||||||
"ui.components.media-browser.web-browser"
|
"ui.components.media-browser.web-browser"
|
||||||
)}</paper-item
|
)}</mwc-list-item
|
||||||
>
|
>
|
||||||
${this._params.mediaSources
|
${this._params.mediaSources
|
||||||
.sort((a, b) => compare(computeStateName(a), computeStateName(b)))
|
.sort((a, b) => compare(computeStateName(a), computeStateName(b)))
|
||||||
.map(
|
.map(
|
||||||
(source) => html`
|
(source) => html`
|
||||||
<paper-item .itemName=${source.entity_id}
|
<mwc-list-item
|
||||||
>${computeStateName(source)}</paper-item
|
.disabled=${UNAVAILABLE_STATES.includes(source.state)}
|
||||||
|
.player=${source.entity_id}
|
||||||
|
@click=${this._selectPlayer}
|
||||||
|
>${computeStateName(source)}</mwc-list-item
|
||||||
>
|
>
|
||||||
`
|
`
|
||||||
)}
|
)}
|
||||||
</paper-listbox>
|
</mwc-list>
|
||||||
</ha-dialog>
|
</ha-dialog>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _selectSource(ev: CustomEvent): void {
|
private _selectPlayer(ev: CustomEvent): void {
|
||||||
const entityId = ev.detail.item.itemName;
|
const entityId = (ev.currentTarget as any).player;
|
||||||
this._params!.sourceSelectedCallback(entityId);
|
this._params!.sourceSelectedCallback(entityId);
|
||||||
this.closeDialog();
|
this.closeDialog();
|
||||||
}
|
}
|
||||||
@@ -84,8 +88,8 @@ export class HuiDialogSelectMediaPlayer extends LitElement {
|
|||||||
ha-dialog {
|
ha-dialog {
|
||||||
--dialog-content-padding: 0 24px 20px;
|
--dialog-content-padding: 0 24px 20px;
|
||||||
}
|
}
|
||||||
paper-item {
|
mwc-list-item[disabled] {
|
||||||
cursor: pointer;
|
--mdc-theme-text-primary-on-background: var(--disabled-text-color);
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-button/mwc-button";
|
||||||
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
import { mdiDelete } from "@mdi/js";
|
import { mdiDelete } from "@mdi/js";
|
||||||
import {
|
import {
|
||||||
css,
|
css,
|
||||||
@@ -80,14 +81,14 @@ class HaLongLivedTokens extends LitElement {
|
|||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<mwc-button
|
<mwc-icon-button
|
||||||
.token=${token}
|
.token=${token}
|
||||||
.disabled=${token.is_current}
|
.disabled=${token.is_current}
|
||||||
.title=${this.hass.localize(`ui.common.delete`)}
|
.title=${this.hass.localize(`ui.common.delete`)}
|
||||||
@click=${this._deleteToken}
|
@click=${this._deleteToken}
|
||||||
>
|
>
|
||||||
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
||||||
</mwc-button>
|
</mwc-icon-button>
|
||||||
</ha-settings-row>`
|
</ha-settings-row>`
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -185,6 +186,9 @@ class HaLongLivedTokens extends LitElement {
|
|||||||
mwc-button {
|
mwc-button {
|
||||||
--mdc-theme-primary: var(--primary-color);
|
--mdc-theme-primary: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
mwc-icon-button {
|
||||||
|
color: var(--primary-text-color);
|
||||||
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@@ -201,7 +201,7 @@ class HaPanelProfile extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _customizeSidebar() {
|
private _customizeSidebar() {
|
||||||
fireEvent(this, "hass-edit-sidebar");
|
fireEvent(this, "hass-edit-sidebar", { editMode: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _refreshRefreshTokens() {
|
private async _refreshRefreshTokens() {
|
||||||
|
@@ -1,24 +1,25 @@
|
|||||||
|
import "@material/mwc-button/mwc-button";
|
||||||
|
import "@polymer/paper-input/paper-input";
|
||||||
import "@polymer/paper-item/paper-item";
|
import "@polymer/paper-item/paper-item";
|
||||||
import "@polymer/paper-listbox/paper-listbox";
|
import "@polymer/paper-listbox/paper-listbox";
|
||||||
import "../../components/ha-paper-dropdown-menu";
|
|
||||||
import { TemplateResult, html } from "lit-html";
|
|
||||||
import {
|
import {
|
||||||
property,
|
css,
|
||||||
|
CSSResult,
|
||||||
|
customElement,
|
||||||
internalProperty,
|
internalProperty,
|
||||||
LitElement,
|
LitElement,
|
||||||
customElement,
|
property,
|
||||||
PropertyValues,
|
PropertyValues,
|
||||||
CSSResult,
|
|
||||||
css,
|
|
||||||
} from "lit-element";
|
} from "lit-element";
|
||||||
import { HomeAssistant } from "../../types";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import "../../components/ha-settings-row";
|
|
||||||
import { fireEvent } from "../../common/dom/fire_event";
|
import { fireEvent } from "../../common/dom/fire_event";
|
||||||
import "../../components/ha-formfield";
|
import "../../components/ha-formfield";
|
||||||
|
import "../../components/ha-paper-dropdown-menu";
|
||||||
import "../../components/ha-radio";
|
import "../../components/ha-radio";
|
||||||
import "@polymer/paper-input/paper-input";
|
|
||||||
import type { HaRadio } from "../../components/ha-radio";
|
import type { HaRadio } from "../../components/ha-radio";
|
||||||
import "@material/mwc-button/mwc-button";
|
import "../../components/ha-settings-row";
|
||||||
|
import { HomeAssistant } from "../../types";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
|
|
||||||
@customElement("ha-pick-theme-row")
|
@customElement("ha-pick-theme-row")
|
||||||
export class HaPickThemeRow extends LitElement {
|
export class HaPickThemeRow extends LitElement {
|
||||||
@@ -45,7 +46,10 @@ export class HaPickThemeRow extends LitElement {
|
|||||||
? this.hass.localize("ui.panel.profile.themes.error_no_theme")
|
? this.hass.localize("ui.panel.profile.themes.error_no_theme")
|
||||||
: ""}
|
: ""}
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/integrations/frontend/#defining-themes"
|
href="${documentationUrl(
|
||||||
|
this.hass!,
|
||||||
|
"/integrations/frontend/#defining-themes"
|
||||||
|
)}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
|
@@ -7,6 +7,7 @@ import { isComponentLoaded } from "../../common/config/is_component_loaded";
|
|||||||
import { pushSupported } from "../../components/ha-push-notifications-toggle";
|
import { pushSupported } from "../../components/ha-push-notifications-toggle";
|
||||||
import LocalizeMixin from "../../mixins/localize-mixin";
|
import LocalizeMixin from "../../mixins/localize-mixin";
|
||||||
import "../../components/ha-settings-row";
|
import "../../components/ha-settings-row";
|
||||||
|
import { documentationUrl } from "../../util/documentation-url";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @appliesMixin LocalizeMixin
|
* @appliesMixin LocalizeMixin
|
||||||
@@ -26,7 +27,7 @@ class HaPushNotificationsRow extends LocalizeMixin(PolymerElement) {
|
|||||||
<span slot="description">
|
<span slot="description">
|
||||||
[[_description(_platformLoaded, _pushSupported)]]
|
[[_description(_platformLoaded, _pushSupported)]]
|
||||||
<a
|
<a
|
||||||
href="https://www.home-assistant.io/integrations/html5"
|
href="[[_computeDocumentationUrl(hass)]]"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>[[localize('ui.panel.profile.push_notifications.link_promo')]]</a
|
>[[localize('ui.panel.profile.push_notifications.link_promo')]]</a
|
||||||
@@ -59,6 +60,10 @@ class HaPushNotificationsRow extends LocalizeMixin(PolymerElement) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_computeDocumentationUrl(hass) {
|
||||||
|
return documentationUrl(hass, "/integrations/html5");
|
||||||
|
}
|
||||||
|
|
||||||
_compPlatformLoaded(hass) {
|
_compPlatformLoaded(hass) {
|
||||||
return isComponentLoaded(hass, "notify.html5");
|
return isComponentLoaded(hass, "notify.html5");
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import "@material/mwc-button/mwc-button";
|
import "@material/mwc-icon-button/mwc-icon-button";
|
||||||
import { mdiDelete } from "@mdi/js";
|
import { mdiDelete } from "@mdi/js";
|
||||||
import "@polymer/paper-tooltip/paper-tooltip";
|
import "@polymer/paper-tooltip/paper-tooltip";
|
||||||
import {
|
import {
|
||||||
@@ -83,14 +83,14 @@ class HaRefreshTokens extends LitElement {
|
|||||||
)}
|
)}
|
||||||
</paper-tooltip>`
|
</paper-tooltip>`
|
||||||
: ""}
|
: ""}
|
||||||
<mwc-button
|
<mwc-icon-button
|
||||||
.token=${token}
|
.token=${token}
|
||||||
.disabled=${token.is_current}
|
.disabled=${token.is_current}
|
||||||
.title=${this.hass.localize(`ui.common.delete`)}
|
.title=${this.hass.localize(`ui.common.delete`)}
|
||||||
@click=${this._deleteToken}
|
@click=${this._deleteToken}
|
||||||
>
|
>
|
||||||
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
<ha-svg-icon .path=${mdiDelete}></ha-svg-icon>
|
||||||
</mwc-button>
|
</mwc-icon-button>
|
||||||
</div>
|
</div>
|
||||||
</ha-settings-row>`
|
</ha-settings-row>`
|
||||||
)
|
)
|
||||||
@@ -135,8 +135,8 @@ class HaRefreshTokens extends LitElement {
|
|||||||
ha-settings-row {
|
ha-settings-row {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
mwc-button {
|
mwc-icon-button {
|
||||||
--mdc-theme-primary: var(--primary-color);
|
color: var(--primary-text-color);
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
];
|
];
|
||||||
|
@@ -18,8 +18,22 @@ export const sortableStyles = css`
|
|||||||
animation-duration: 0.33s;
|
animation-duration: 0.33s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sortable a {
|
||||||
|
height: 48px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
#sortable {
|
#sortable {
|
||||||
outline: none;
|
outline: none;
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden-panel {
|
||||||
|
display: flex !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sortable-fallback {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sortable-ghost {
|
.sortable-ghost {
|
||||||
@@ -54,13 +68,25 @@ export const sortableStyles = css`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.show-panel,
|
||||||
.hide-panel {
|
.hide-panel {
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
|
--mdc-icon-button-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide-panel {
|
||||||
|
top: 4px;
|
||||||
|
right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
:host([expanded]) .hide-panel {
|
:host([expanded]) .hide-panel {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
:host([expanded]) .show-panel {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,13 +16,11 @@ declare global {
|
|||||||
interface HASSDomEvents {
|
interface HASSDomEvents {
|
||||||
"hass-dock-sidebar": DockSidebarParams;
|
"hass-dock-sidebar": DockSidebarParams;
|
||||||
"hass-default-panel": DefaultPanelParams;
|
"hass-default-panel": DefaultPanelParams;
|
||||||
"hass-edit-sidebar": undefined;
|
|
||||||
}
|
}
|
||||||
// for add event listener
|
// for add event listener
|
||||||
interface HTMLElementEventMap {
|
interface HTMLElementEventMap {
|
||||||
"hass-dock-sidebar": HASSDomEvent<DockSidebarParams>;
|
"hass-dock-sidebar": HASSDomEvent<DockSidebarParams>;
|
||||||
"hass-default-panel": HASSDomEvent<DefaultPanelParams>;
|
"hass-default-panel": HASSDomEvent<DefaultPanelParams>;
|
||||||
"hass-edit-sidebar": undefined;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -374,6 +374,12 @@
|
|||||||
"video_not_supported": "Your browser does not support the video element.",
|
"video_not_supported": "Your browser does not support the video element.",
|
||||||
"media_not_supported": "The Browser Media Player does not support this type of media",
|
"media_not_supported": "The Browser Media Player does not support this type of media",
|
||||||
"media_browsing_error": "Media Browsing Error",
|
"media_browsing_error": "Media Browsing Error",
|
||||||
|
"learn_adding_local_media": "Learn more about adding media in the {documentation}.",
|
||||||
|
"local_media_files": "Place your video, audio and image files in the media directory to be able to browse and play them in the browser or on supported media players.",
|
||||||
|
"documentation": "documentation",
|
||||||
|
"no_local_media_found": "No local media found",
|
||||||
|
"no_media_folder": "It looks like you have not yet created a media directory.",
|
||||||
|
"setup_local_help": "Check the {documentation} on how to setup local media.",
|
||||||
"class": {
|
"class": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"app": "App",
|
"app": "App",
|
||||||
@@ -2150,7 +2156,7 @@
|
|||||||
"save": "Save",
|
"save": "Save",
|
||||||
"unsaved_changes": "Unsaved changes",
|
"unsaved_changes": "Unsaved changes",
|
||||||
"saved": "Saved",
|
"saved": "Saved",
|
||||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration? We will automatically generate your Lovelace UI views with your areas and devices.",
|
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration?",
|
||||||
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
||||||
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
||||||
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
||||||
|
11
src/util/documentation-url.ts
Normal file
11
src/util/documentation-url.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { HomeAssistant } from "../types";
|
||||||
|
|
||||||
|
export const documentationUrl = (hass: HomeAssistant, path: string) => {
|
||||||
|
return `https://${
|
||||||
|
hass.config.version.includes("b")
|
||||||
|
? "rc"
|
||||||
|
: hass.config.version.includes("dev")
|
||||||
|
? "next"
|
||||||
|
: "www"
|
||||||
|
}.home-assistant.io${path}`;
|
||||||
|
};
|
19
test-mocha/util/generate-documentation-url.spec.ts
Normal file
19
test-mocha/util/generate-documentation-url.spec.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import * as assert from "assert";
|
||||||
|
import { documentationUrl } from "../../src/util/documentation-url";
|
||||||
|
|
||||||
|
describe("Generate documentation URL", function () {
|
||||||
|
it("Generate documentation url for stable", function () {
|
||||||
|
assert.strictEqual(
|
||||||
|
// @ts-ignore
|
||||||
|
documentationUrl({ config: { version: "1.0.0" } }, "/blog"),
|
||||||
|
"https://www.home-assistant.io/blog"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it("Generate documentation url for rc", function () {
|
||||||
|
assert.strictEqual(
|
||||||
|
// @ts-ignore
|
||||||
|
documentationUrl({ config: { version: "1.0.0b0" } }, "/blog"),
|
||||||
|
"https://rc.home-assistant.io/blog"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
@@ -440,6 +440,7 @@
|
|||||||
"common": {
|
"common": {
|
||||||
"cancel": "Kanselleer",
|
"cancel": "Kanselleer",
|
||||||
"close": "Sluit",
|
"close": "Sluit",
|
||||||
|
"copied": "Copiato",
|
||||||
"loading": "Laai tans",
|
"loading": "Laai tans",
|
||||||
"save": "Stoor"
|
"save": "Stoor"
|
||||||
},
|
},
|
||||||
@@ -470,6 +471,25 @@
|
|||||||
"loading_history": "Laai tans toestandsgeskiedenis ...",
|
"loading_history": "Laai tans toestandsgeskiedenis ...",
|
||||||
"no_history_found": "Geen toestandsgeskiedenis gevind nie."
|
"no_history_found": "Geen toestandsgeskiedenis gevind nie."
|
||||||
},
|
},
|
||||||
|
"media-browser": {
|
||||||
|
"class": {
|
||||||
|
"composer": "Compositore",
|
||||||
|
"directory": "Libreria",
|
||||||
|
"episode": "Episodio",
|
||||||
|
"game": "Gioco",
|
||||||
|
"genre": "Genere",
|
||||||
|
"image": "Immagine",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musica",
|
||||||
|
"playlist": "Playlist",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Stagione",
|
||||||
|
"track": "Traccia",
|
||||||
|
"tv_show": "Programma televisivo",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Video"
|
||||||
|
}
|
||||||
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Area",
|
"area": "Area",
|
||||||
"automation": "Deel van die volgende outomatisering",
|
"automation": "Deel van die volgende outomatisering",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Cancel·la",
|
"cancel": "Cancel·la",
|
||||||
"close": "Tanca",
|
"close": "Tanca",
|
||||||
"continue": "Continua",
|
"continue": "Continua",
|
||||||
|
"copied": "Copiat",
|
||||||
"delete": "Elimina",
|
"delete": "Elimina",
|
||||||
"error_required": "Obligatori",
|
"error_required": "Obligatori",
|
||||||
"loading": "Carregant",
|
"loading": "Carregant",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Zrušit",
|
"cancel": "Zrušit",
|
||||||
"close": "Zavřít",
|
"close": "Zavřít",
|
||||||
"continue": "Pokračovat",
|
"continue": "Pokračovat",
|
||||||
|
"copied": "Zkopírováno",
|
||||||
"delete": "Smazat",
|
"delete": "Smazat",
|
||||||
"error_required": "Povinné",
|
"error_required": "Povinné",
|
||||||
"loading": "Načítání",
|
"loading": "Načítání",
|
||||||
@@ -2691,7 +2692,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "Pokud odeberete konfiguraci uživatelského rozhraní Lovelace, automaticky vygenerujeme pohledy Lovelace s vašimi oblastmi a zařízeními.",
|
"confirm_remove_config_text": "Pokud odeberete konfiguraci uživatelského rozhraní Lovelace, automaticky vygenerujeme pohledy Lovelace s vašimi oblastmi a zařízeními.",
|
||||||
"confirm_remove_config_title": "Opravdu chcete odstranit nastavení Lovelace? Automaticky vygenerujeme vaše zobrazení Lovelace s vašimi oblastmi a zařízeními.",
|
"confirm_remove_config_title": "Opravdu chcete odstranit nastavení uživatelského rozhraní Lovelace?",
|
||||||
"confirm_unsaved_changes": "Máte neuložené změny. Opravdu chcete odejít?",
|
"confirm_unsaved_changes": "Máte neuložené změny. Opravdu chcete odejít?",
|
||||||
"confirm_unsaved_comments": "Vaše konfigurace obsahuje komentáře, které se neuloží. Chcete pokračovat?",
|
"confirm_unsaved_comments": "Vaše konfigurace obsahuje komentáře, které se neuloží. Chcete pokračovat?",
|
||||||
"error_invalid_config": "Vaše konfigurace není platná: {error}",
|
"error_invalid_config": "Vaše konfigurace není platná: {error}",
|
||||||
|
@@ -419,6 +419,7 @@
|
|||||||
"unlock": "Entriegeln"
|
"unlock": "Entriegeln"
|
||||||
},
|
},
|
||||||
"media_player": {
|
"media_player": {
|
||||||
|
"media_next_track": "Weiter",
|
||||||
"media_play": "Abspielen",
|
"media_play": "Abspielen",
|
||||||
"sound_mode": "Sound-Modus",
|
"sound_mode": "Sound-Modus",
|
||||||
"source": "Quelle",
|
"source": "Quelle",
|
||||||
@@ -501,6 +502,8 @@
|
|||||||
"back": "Zurück",
|
"back": "Zurück",
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
"close": "Schließen",
|
"close": "Schließen",
|
||||||
|
"continue": "Weiter",
|
||||||
|
"copied": "Kopiert",
|
||||||
"delete": "Löschen",
|
"delete": "Löschen",
|
||||||
"error_required": "Benötigt",
|
"error_required": "Benötigt",
|
||||||
"loading": "Laden",
|
"loading": "Laden",
|
||||||
@@ -557,8 +560,26 @@
|
|||||||
"loading_history": "Lade Zustandsverlauf...",
|
"loading_history": "Lade Zustandsverlauf...",
|
||||||
"no_history_found": "Kein Zustandsverlauf gefunden."
|
"no_history_found": "Kein Zustandsverlauf gefunden."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Keine Logbucheinträge gefunden."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
|
"audio_not_supported": "Ihr Browser unterstützt das Audioelement nicht.",
|
||||||
"choose-source": "Quelle wählen",
|
"choose-source": "Quelle wählen",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"directory": "Bibliothek",
|
||||||
|
"episode": "Episode",
|
||||||
|
"game": "Spiel",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musik",
|
||||||
|
"playlist": "Wiedergabeliste",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Episode",
|
||||||
|
"url": "URL",
|
||||||
|
"video": "Video"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Künstler",
|
"artist": "Künstler",
|
||||||
@@ -566,7 +587,13 @@
|
|||||||
"playlist": "Playlist",
|
"playlist": "Playlist",
|
||||||
"server": "Server"
|
"server": "Server"
|
||||||
},
|
},
|
||||||
"play": "Abspielen"
|
"no_items": "Keine Einträge",
|
||||||
|
"play": "Abspielen",
|
||||||
|
"video_not_supported": "Ihr Browser unterstützt das Videoelement nicht."
|
||||||
|
},
|
||||||
|
"picture-upload": {
|
||||||
|
"label": "Bild",
|
||||||
|
"unsupported_format": "Nicht unterstütztes Format, bitte wähle ein JPEG-, PNG- oder GIF-Bild."
|
||||||
},
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Bereich",
|
"area": "Bereich",
|
||||||
@@ -672,8 +699,10 @@
|
|||||||
"yaml_not_editable": "Die Einstellungen dieser Entität können nicht über die Benutzeroberfläche bearbeitet werden. Nur über die Benutzeroberfläche eingerichtete Entitäten können über die Benutzeroberfläche konfiguriert werden."
|
"yaml_not_editable": "Die Einstellungen dieser Entität können nicht über die Benutzeroberfläche bearbeitet werden. Nur über die Benutzeroberfläche eingerichtete Entitäten können über die Benutzeroberfläche konfiguriert werden."
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"details": "Details",
|
||||||
"dismiss": "Dialog ausblenden",
|
"dismiss": "Dialog ausblenden",
|
||||||
"edit": "Entität bearbeiten",
|
"edit": "Entität bearbeiten",
|
||||||
|
"history": "Verlauf",
|
||||||
"person": {
|
"person": {
|
||||||
"create_zone": "Zone vom aktuellen Standort erstellen"
|
"create_zone": "Zone vom aktuellen Standort erstellen"
|
||||||
},
|
},
|
||||||
@@ -849,7 +878,13 @@
|
|||||||
"type_select": "Aktionstyp",
|
"type_select": "Aktionstyp",
|
||||||
"type": {
|
"type": {
|
||||||
"choose": {
|
"choose": {
|
||||||
"label": "Auswählen"
|
"add_option": "Option hinzufügen",
|
||||||
|
"conditions": "Bedingungen",
|
||||||
|
"default": "Standard-Aktionen",
|
||||||
|
"label": "Auswählen",
|
||||||
|
"option": "Option {number}",
|
||||||
|
"remove_option": "Option entfernen",
|
||||||
|
"sequence": "Aktionen"
|
||||||
},
|
},
|
||||||
"condition": {
|
"condition": {
|
||||||
"label": "Bedingung"
|
"label": "Bedingung"
|
||||||
@@ -872,6 +907,7 @@
|
|||||||
},
|
},
|
||||||
"repeat": {
|
"repeat": {
|
||||||
"label": "Wiederholen",
|
"label": "Wiederholen",
|
||||||
|
"sequence": "Aktionen",
|
||||||
"type_select": "Wiederholungstyp",
|
"type_select": "Wiederholungstyp",
|
||||||
"type": {
|
"type": {
|
||||||
"count": {
|
"count": {
|
||||||
@@ -1044,6 +1080,7 @@
|
|||||||
"value_template": "Wert-Template (optional)"
|
"value_template": "Wert-Template (optional)"
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
|
"attribute": "Attribut (Optional)",
|
||||||
"for": "Für",
|
"for": "Für",
|
||||||
"from": "Von",
|
"from": "Von",
|
||||||
"label": "Zustand",
|
"label": "Zustand",
|
||||||
@@ -1068,7 +1105,8 @@
|
|||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"at": "Um",
|
"at": "Um",
|
||||||
"label": "Zeit"
|
"label": "Zeit",
|
||||||
|
"type_value": "Feste Zeit"
|
||||||
},
|
},
|
||||||
"webhook": {
|
"webhook": {
|
||||||
"label": "Webhook",
|
"label": "Webhook",
|
||||||
@@ -1091,6 +1129,8 @@
|
|||||||
"add_automation": "Automatisierung hinzufügen",
|
"add_automation": "Automatisierung hinzufügen",
|
||||||
"delete_automation": "Automatisierung löschen",
|
"delete_automation": "Automatisierung löschen",
|
||||||
"delete_confirm": "Bist du sicher, dass du diese Automatisierung löschen möchtest?",
|
"delete_confirm": "Bist du sicher, dass du diese Automatisierung löschen möchtest?",
|
||||||
|
"duplicate": "Duplizieren",
|
||||||
|
"duplicate_automation": "Automatisierung kopieren",
|
||||||
"edit_automation": "Automatisierung bearbeiten",
|
"edit_automation": "Automatisierung bearbeiten",
|
||||||
"header": "Automatisierungseditor",
|
"header": "Automatisierungseditor",
|
||||||
"headers": {
|
"headers": {
|
||||||
@@ -1314,6 +1354,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"devices": {
|
"devices": {
|
||||||
|
"add_prompt": "Mit diesem Gerät wurden noch keine {name} hinzugefügt. Du kannst eins hinzufügen, indem du auf den + Knopf drückst.",
|
||||||
"automation": {
|
"automation": {
|
||||||
"actions": {
|
"actions": {
|
||||||
"caption": "Wenn etwas ausgelöst wird ..."
|
"caption": "Wenn etwas ausgelöst wird ..."
|
||||||
@@ -1477,6 +1518,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Integration hinzufügen",
|
"add_integration": "Integration hinzufügen",
|
||||||
|
"attention": "Aufmerksamkeit erforderlich",
|
||||||
"caption": "Integrationen",
|
"caption": "Integrationen",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"area": "In {area}",
|
"area": "In {area}",
|
||||||
@@ -1495,6 +1537,8 @@
|
|||||||
"no_device": "Entitäten ohne Geräte",
|
"no_device": "Entitäten ohne Geräte",
|
||||||
"no_devices": "Diese Integration hat keine Geräte.",
|
"no_devices": "Diese Integration hat keine Geräte.",
|
||||||
"options": "Optionen",
|
"options": "Optionen",
|
||||||
|
"reload": "Neu laden",
|
||||||
|
"reload_confirm": "Die Integration wurde neu geladen",
|
||||||
"rename": "Umbenennen",
|
"rename": "Umbenennen",
|
||||||
"restart_confirm": "Starte Home Assistant neu, um das Entfernen dieser Integration abzuschließen",
|
"restart_confirm": "Starte Home Assistant neu, um das Entfernen dieser Integration abzuschließen",
|
||||||
"settings_button": "Einstellungen für {integration} bearbeiten",
|
"settings_button": "Einstellungen für {integration} bearbeiten",
|
||||||
@@ -1543,6 +1587,7 @@
|
|||||||
"none_found_detail": "Passe deine Suchkriterien an.",
|
"none_found_detail": "Passe deine Suchkriterien an.",
|
||||||
"note_about_integrations": "Nicht alle Integrationen können über die Benutzeroberfläche konfiguriert werden.",
|
"note_about_integrations": "Nicht alle Integrationen können über die Benutzeroberfläche konfiguriert werden.",
|
||||||
"note_about_website_reference": "Weitere Informationen findest du auf der ",
|
"note_about_website_reference": "Weitere Informationen findest du auf der ",
|
||||||
|
"reconfigure": "Neu konfigurieren",
|
||||||
"rename_dialog": "Bearbeite den Namen dieses Konfigurationseintrags",
|
"rename_dialog": "Bearbeite den Namen dieses Konfigurationseintrags",
|
||||||
"rename_input_label": "Eintragsname",
|
"rename_input_label": "Eintragsname",
|
||||||
"search": "Such-Integrationen"
|
"search": "Such-Integrationen"
|
||||||
@@ -1653,8 +1698,11 @@
|
|||||||
"topic": "Topic"
|
"topic": "Topic"
|
||||||
},
|
},
|
||||||
"ozw": {
|
"ozw": {
|
||||||
|
"button": "Konfigurieren",
|
||||||
"common": {
|
"common": {
|
||||||
"instance": "Instanz"
|
"instance": "Instanz",
|
||||||
|
"network": "Netzwerk",
|
||||||
|
"zwave": "Z-Wave"
|
||||||
},
|
},
|
||||||
"device_info": {
|
"device_info": {
|
||||||
"zwave_info": "Z-Wave Infos"
|
"zwave_info": "Z-Wave Infos"
|
||||||
@@ -1664,12 +1712,27 @@
|
|||||||
"select_instance": "Instanz auswählen"
|
"select_instance": "Instanz auswählen"
|
||||||
},
|
},
|
||||||
"network_status": {
|
"network_status": {
|
||||||
|
"details": {
|
||||||
|
"driverremoved": "Der Treiber wurde entfernt",
|
||||||
|
"driverreset": "Der Treiber wurde zurückgesetzt",
|
||||||
|
"ready": "Bereit zum Verbinden",
|
||||||
|
"started": "Verbindung mit MQTT hergestellt",
|
||||||
|
"starting": "Verbinde zu MQTT"
|
||||||
|
},
|
||||||
"offline": "Offline",
|
"offline": "Offline",
|
||||||
"online": "Online",
|
"online": "Online",
|
||||||
|
"starting": "Startet",
|
||||||
"unknown": "Unbekannt"
|
"unknown": "Unbekannt"
|
||||||
},
|
},
|
||||||
"network": {
|
"network": {
|
||||||
"header": "Netzwerkverwaltung"
|
"header": "Netzwerkverwaltung"
|
||||||
|
},
|
||||||
|
"nodes_table": {
|
||||||
|
"failed": "Fehlgeschlagen",
|
||||||
|
"manufacturer": "Hersteller"
|
||||||
|
},
|
||||||
|
"refresh_node": {
|
||||||
|
"start_refresh_button": "Aktualisierung starten"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"person": {
|
"person": {
|
||||||
@@ -1798,6 +1861,7 @@
|
|||||||
"core": "Ort & Anpassungen neu laden",
|
"core": "Ort & Anpassungen neu laden",
|
||||||
"group": "Gruppen neu laden",
|
"group": "Gruppen neu laden",
|
||||||
"heading": "Neuladen der YAML-Konfiguration",
|
"heading": "Neuladen der YAML-Konfiguration",
|
||||||
|
"homekit": "HomeKit neu laden",
|
||||||
"input_boolean": "Eingabe-Booleans neu laden",
|
"input_boolean": "Eingabe-Booleans neu laden",
|
||||||
"input_datetime": "Eingabe-Datums- und Zeitfelder neu laden",
|
"input_datetime": "Eingabe-Datums- und Zeitfelder neu laden",
|
||||||
"input_number": "Eingabenummern neu laden",
|
"input_number": "Eingabenummern neu laden",
|
||||||
@@ -1807,6 +1871,7 @@
|
|||||||
"person": "Personen neu laden",
|
"person": "Personen neu laden",
|
||||||
"scene": "Szenen neu laden",
|
"scene": "Szenen neu laden",
|
||||||
"script": "Skripte neu laden",
|
"script": "Skripte neu laden",
|
||||||
|
"telegram": "Telegram-Benachrichtigungsdienste neu laden",
|
||||||
"zone": "Zonen neu laden"
|
"zone": "Zonen neu laden"
|
||||||
},
|
},
|
||||||
"server_management": {
|
"server_management": {
|
||||||
@@ -1828,12 +1893,18 @@
|
|||||||
},
|
},
|
||||||
"tags": {
|
"tags": {
|
||||||
"detail": {
|
"detail": {
|
||||||
"name": "Name"
|
"delete": "Löschen",
|
||||||
|
"description": "Beschreibung",
|
||||||
|
"name": "Name",
|
||||||
|
"update": "Aktualisieren"
|
||||||
},
|
},
|
||||||
|
"edit": "Bearbeiten",
|
||||||
"headers": {
|
"headers": {
|
||||||
|
"last_scanned": "Zuletzt gescannt",
|
||||||
"name": "Name"
|
"name": "Name"
|
||||||
},
|
},
|
||||||
"never_scanned": "Nie gescannt"
|
"never_scanned": "Nie gescannt",
|
||||||
|
"write": "Schreiben"
|
||||||
},
|
},
|
||||||
"users": {
|
"users": {
|
||||||
"add_user": {
|
"add_user": {
|
||||||
@@ -1841,6 +1912,7 @@
|
|||||||
"create": "Benutzerkonto anlegen",
|
"create": "Benutzerkonto anlegen",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"password": "Passwort",
|
"password": "Passwort",
|
||||||
|
"password_confirm": "Passwort bestätigen",
|
||||||
"username": "Benutzername"
|
"username": "Benutzername"
|
||||||
},
|
},
|
||||||
"caption": "Benutzer",
|
"caption": "Benutzer",
|
||||||
@@ -1857,7 +1929,9 @@
|
|||||||
"group": "Gruppe",
|
"group": "Gruppe",
|
||||||
"id": "ID",
|
"id": "ID",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
|
"new_password": "Neues Passwort",
|
||||||
"owner": "Besitzer",
|
"owner": "Besitzer",
|
||||||
|
"password_changed": "Das Passwort wurde geändert!",
|
||||||
"system_generated": "System generiert",
|
"system_generated": "System generiert",
|
||||||
"system_generated_users_not_editable": "Systemgenerierte Benutzer können nicht aktualisiert werden.",
|
"system_generated_users_not_editable": "Systemgenerierte Benutzer können nicht aktualisiert werden.",
|
||||||
"system_generated_users_not_removable": "Vom System generierte Benutzer können nicht entfernt werden.",
|
"system_generated_users_not_removable": "Vom System generierte Benutzer können nicht entfernt werden.",
|
||||||
@@ -2728,6 +2802,9 @@
|
|||||||
"submit": "Absenden"
|
"submit": "Absenden"
|
||||||
},
|
},
|
||||||
"current_user": "Sie sind derzeit als {fullName} angemeldet.",
|
"current_user": "Sie sind derzeit als {fullName} angemeldet.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Bearbeiten"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Wähle ein Standard-Dashboard für dieses Gerät.",
|
"description": "Wähle ein Standard-Dashboard für dieses Gerät.",
|
||||||
"dropdown_label": "Dashboard",
|
"dropdown_label": "Dashboard",
|
||||||
@@ -2750,6 +2827,7 @@
|
|||||||
"confirm_delete": "Möchten Sie den Zugriffs-Token für {name} wirklich löschen?",
|
"confirm_delete": "Möchten Sie den Zugriffs-Token für {name} wirklich löschen?",
|
||||||
"create": "Token erstellen",
|
"create": "Token erstellen",
|
||||||
"create_failed": "Das Zugriffs-Token konnte nicht erstellt werden.",
|
"create_failed": "Das Zugriffs-Token konnte nicht erstellt werden.",
|
||||||
|
"created": "Erstellt am {date}",
|
||||||
"created_at": "Erstellt am {date}",
|
"created_at": "Erstellt am {date}",
|
||||||
"delete_failed": "Fehler beim Löschen des Zugriffs-Tokens.",
|
"delete_failed": "Fehler beim Löschen des Zugriffs-Tokens.",
|
||||||
"description": "Erstelle langlebige Zugriffstoken, damit deine Skripte mit deiner Home Assistant-Instanz interagieren können. Jedes Token ist ab der Erstellung für 10 Jahre gültig. Die folgenden langlebigen Zugriffstoken sind derzeit aktiv.",
|
"description": "Erstelle langlebige Zugriffstoken, damit deine Skripte mit deiner Home Assistant-Instanz interagieren können. Jedes Token ist ab der Erstellung für 10 Jahre gültig. Die folgenden langlebigen Zugriffstoken sind derzeit aktiv.",
|
||||||
@@ -2757,6 +2835,7 @@
|
|||||||
"header": "Langlebige Zugangs-Token",
|
"header": "Langlebige Zugangs-Token",
|
||||||
"last_used": "Zuletzt verwendet am {date} in {location}",
|
"last_used": "Zuletzt verwendet am {date} in {location}",
|
||||||
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
|
"learn_auth_requests": "Erfahre, wie du authentifizierte Anfragen stellen kannst.",
|
||||||
|
"name": "Name",
|
||||||
"not_used": "Wurde noch nie benutzt",
|
"not_used": "Wurde noch nie benutzt",
|
||||||
"prompt_copy_token": "Kopiere deinen Zugangs-Token. Er wird nicht wieder angezeigt werden.",
|
"prompt_copy_token": "Kopiere deinen Zugangs-Token. Er wird nicht wieder angezeigt werden.",
|
||||||
"prompt_name": "Name?"
|
"prompt_name": "Name?"
|
||||||
@@ -2808,7 +2887,8 @@
|
|||||||
"error_no_theme": "Keine Themen verfügbar.",
|
"error_no_theme": "Keine Themen verfügbar.",
|
||||||
"header": "Thema",
|
"header": "Thema",
|
||||||
"link_promo": "Erfahre mehr über Themen",
|
"link_promo": "Erfahre mehr über Themen",
|
||||||
"primary_color": "Primärfarbe"
|
"primary_color": "Primärfarbe",
|
||||||
|
"reset": "zurücksetzen"
|
||||||
},
|
},
|
||||||
"vibrate": {
|
"vibrate": {
|
||||||
"description": "Aktiviere oder deaktiviere die Vibration an diesem Gerät, wenn du Geräte steuerst.",
|
"description": "Aktiviere oder deaktiviere die Vibration an diesem Gerät, wenn du Geräte steuerst.",
|
||||||
@@ -2822,6 +2902,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "fertig",
|
||||||
"external_app_configuration": "App-Konfiguration",
|
"external_app_configuration": "App-Konfiguration",
|
||||||
"sidebar_toggle": "Seitenleiste umschalten"
|
"sidebar_toggle": "Seitenleiste umschalten"
|
||||||
}
|
}
|
||||||
|
@@ -604,15 +604,21 @@
|
|||||||
"playlist": "Playlist",
|
"playlist": "Playlist",
|
||||||
"server": "Server"
|
"server": "Server"
|
||||||
},
|
},
|
||||||
|
"documentation": "documentation",
|
||||||
|
"learn_adding_local_media": "Learn more about adding media in the {documentation}.",
|
||||||
|
"local_media_files": "Place your video, audio and image files in the media directory to be able to browse and play them in the browser or on supported media players.",
|
||||||
"media_browsing_error": "Media Browsing Error",
|
"media_browsing_error": "Media Browsing Error",
|
||||||
"media_not_supported": "The Browser Media Player does not support this type of media",
|
"media_not_supported": "The Browser Media Player does not support this type of media",
|
||||||
"media_player": "Media Player",
|
"media_player": "Media Player",
|
||||||
"media-player-browser": "Media Player Browser",
|
"media-player-browser": "Media Player Browser",
|
||||||
"no_items": "No items",
|
"no_items": "No items",
|
||||||
|
"no_local_media_found": "No local media found",
|
||||||
|
"no_media_folder": "It looks like you have not yet created a media directory.",
|
||||||
"pick": "Pick",
|
"pick": "Pick",
|
||||||
"pick-media": "Pick Media",
|
"pick-media": "Pick Media",
|
||||||
"play": "Play",
|
"play": "Play",
|
||||||
"play-media": "Play Media",
|
"play-media": "Play Media",
|
||||||
|
"setup_local_help": "Check the {documentation} on how to setup local media.",
|
||||||
"video_not_supported": "Your browser does not support the video element.",
|
"video_not_supported": "Your browser does not support the video element.",
|
||||||
"web-browser": "Web Browser"
|
"web-browser": "Web Browser"
|
||||||
},
|
},
|
||||||
@@ -2692,7 +2698,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
"confirm_remove_config_text": "We will automatically generate your Lovelace UI views with your areas and devices if you remove your Lovelace UI configuration.",
|
||||||
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration? We will automatically generate your Lovelace UI views with your areas and devices.",
|
"confirm_remove_config_title": "Are you sure you want to remove your Lovelace UI configuration?",
|
||||||
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
"confirm_unsaved_changes": "You have unsaved changes, are you sure you want to exit?",
|
||||||
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
"confirm_unsaved_comments": "Your configuration contains comment(s), these will not be saved. Do you want to continue?",
|
||||||
"error_invalid_config": "Your configuration is not valid: {error}",
|
"error_invalid_config": "Your configuration is not valid: {error}",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Cancelar",
|
"cancel": "Cancelar",
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
"continue": "Continuar",
|
"continue": "Continuar",
|
||||||
|
"copied": "Copiado",
|
||||||
"delete": "Eliminar",
|
"delete": "Eliminar",
|
||||||
"error_required": "Obligatorio",
|
"error_required": "Obligatorio",
|
||||||
"loading": "Cargando",
|
"loading": "Cargando",
|
||||||
@@ -567,11 +568,27 @@
|
|||||||
"loading_history": "Cargando historial de estado...",
|
"loading_history": "Cargando historial de estado...",
|
||||||
"no_history_found": "No se encontró historial de estado."
|
"no_history_found": "No se encontró historial de estado."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "No se han encontrado entradas en el registro."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
"audio_not_supported": "Tu navegador no es compatible con el elemento de audio.",
|
"audio_not_supported": "Tu navegador no es compatible con el elemento de audio.",
|
||||||
"choose_player": "Elige reproductor",
|
"choose_player": "Elige reproductor",
|
||||||
"choose-source": "Elige la fuente",
|
"choose-source": "Elige la fuente",
|
||||||
"class": {
|
"class": {
|
||||||
|
"album": "Álbum",
|
||||||
|
"app": "Aplicación",
|
||||||
|
"artist": "Artista",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compositor",
|
||||||
|
"contributing_artist": "Artista colaborador",
|
||||||
|
"directory": "Biblioteca",
|
||||||
|
"episode": "Episodio",
|
||||||
|
"game": "Juego",
|
||||||
|
"genre": "Género",
|
||||||
|
"image": "Imagen",
|
||||||
|
"movie": "Película",
|
||||||
|
"music": "Música",
|
||||||
"playlist": "Lista de reproducción",
|
"playlist": "Lista de reproducción",
|
||||||
"podcast": "Podcast",
|
"podcast": "Podcast",
|
||||||
"season": "Temporada",
|
"season": "Temporada",
|
||||||
@@ -712,6 +729,7 @@
|
|||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
"controls": "Controles",
|
"controls": "Controles",
|
||||||
|
"details": "Detalles",
|
||||||
"dismiss": "Descartar diálogo",
|
"dismiss": "Descartar diálogo",
|
||||||
"edit": "Editar entidad",
|
"edit": "Editar entidad",
|
||||||
"history": "Historial",
|
"history": "Historial",
|
||||||
@@ -2357,9 +2375,14 @@
|
|||||||
"title": "Estados"
|
"title": "Estados"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Esta plantilla escucha todos los eventos de cambio de estado.",
|
||||||
"description": "Las plantillas se muestran utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
"description": "Las plantillas se muestran utilizando el motor de plantillas Jinja2 con algunas extensiones específicas de Home Assistant.",
|
||||||
|
"domain": "Dominio",
|
||||||
"editor": "Editor de plantillas",
|
"editor": "Editor de plantillas",
|
||||||
|
"entity": "Entidad",
|
||||||
"jinja_documentation": "Documentación de plantilla Jinja2",
|
"jinja_documentation": "Documentación de plantilla Jinja2",
|
||||||
|
"listeners": "Esta plantilla escucha los siguientes eventos de cambio de estado:",
|
||||||
|
"no_listeners": "Esta plantilla no escucha ningún evento de cambio de estado y no se actualizará automáticamente.",
|
||||||
"reset": "Reiniciar a la plantilla de demostración",
|
"reset": "Reiniciar a la plantilla de demostración",
|
||||||
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
"template_extensions": "Extensiones de plantilla de Home Assistant",
|
||||||
"title": "Plantillas",
|
"title": "Plantillas",
|
||||||
@@ -2946,6 +2969,11 @@
|
|||||||
"submit": "Enviar"
|
"submit": "Enviar"
|
||||||
},
|
},
|
||||||
"current_user": "Has iniciado sesión como {fullName}.",
|
"current_user": "Has iniciado sesión como {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Editar",
|
||||||
|
"description": "También puedes mantener pulsada la cabecera de la barra lateral para activar el modo de edición.",
|
||||||
|
"header": "Cambiar el orden y ocultar elementos de la barra lateral"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Selecciona un panel de control predeterminado para este dispositivo.",
|
"description": "Selecciona un panel de control predeterminado para este dispositivo.",
|
||||||
"dropdown_label": "Panel de control",
|
"dropdown_label": "Panel de control",
|
||||||
@@ -2968,6 +2996,7 @@
|
|||||||
"confirm_delete": "¿Estás seguro de que quieres eliminar el token de acceso para {name}?",
|
"confirm_delete": "¿Estás seguro de que quieres eliminar el token de acceso para {name}?",
|
||||||
"create": "Crear Token",
|
"create": "Crear Token",
|
||||||
"create_failed": "No se ha podido crear el token de acceso.",
|
"create_failed": "No se ha podido crear el token de acceso.",
|
||||||
|
"created": "Creado en {date}",
|
||||||
"created_at": "Creado el {date}",
|
"created_at": "Creado el {date}",
|
||||||
"delete_failed": "Error al eliminar el token de acceso.",
|
"delete_failed": "Error al eliminar el token de acceso.",
|
||||||
"description": "Crea tokens de acceso de larga duración para permitir que tus scripts interactúen con tu instancia de Home Assistant. Cada token será válido por 10 años desde la creación. Los siguientes tokens de acceso de larga duración están actualmente activos.",
|
"description": "Crea tokens de acceso de larga duración para permitir que tus scripts interactúen con tu instancia de Home Assistant. Cada token será válido por 10 años desde la creación. Los siguientes tokens de acceso de larga duración están actualmente activos.",
|
||||||
@@ -2975,9 +3004,10 @@
|
|||||||
"header": "Tokens de acceso de larga duración",
|
"header": "Tokens de acceso de larga duración",
|
||||||
"last_used": "Último uso el {date} desde {location}",
|
"last_used": "Último uso el {date} desde {location}",
|
||||||
"learn_auth_requests": "Aprende cómo realizar solicitudes autenticadas.",
|
"learn_auth_requests": "Aprende cómo realizar solicitudes autenticadas.",
|
||||||
|
"name": "Nombre",
|
||||||
"not_used": "Nunca ha sido usado",
|
"not_used": "Nunca ha sido usado",
|
||||||
"prompt_copy_token": "Copia tu token de acceso. No se mostrará de nuevo.",
|
"prompt_copy_token": "Copia tu token de acceso. No se mostrará de nuevo.",
|
||||||
"prompt_name": "¿Nombre?"
|
"prompt_name": "Dale un nombre al token"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Cerrar",
|
"close": "Cerrar",
|
||||||
@@ -3041,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Hecho",
|
||||||
"external_app_configuration": "Configuración de la aplicación",
|
"external_app_configuration": "Configuración de la aplicación",
|
||||||
"sidebar_toggle": "Alternar barra lateral"
|
"sidebar_toggle": "Alternar barra lateral"
|
||||||
}
|
}
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"close": "Fermer",
|
"close": "Fermer",
|
||||||
"continue": "Continuer",
|
"continue": "Continuer",
|
||||||
|
"copied": "Copié",
|
||||||
"delete": "Supprimer",
|
"delete": "Supprimer",
|
||||||
"error_required": "Obligatoire",
|
"error_required": "Obligatoire",
|
||||||
"loading": "Chargement",
|
"loading": "Chargement",
|
||||||
@@ -567,10 +568,35 @@
|
|||||||
"loading_history": "Chargement de l'historique des valeurs ...",
|
"loading_history": "Chargement de l'historique des valeurs ...",
|
||||||
"no_history_found": "Aucun historique des valeurs trouvé."
|
"no_history_found": "Aucun historique des valeurs trouvé."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Aucune entrée trouvée dans le journal."
|
||||||
|
},
|
||||||
"media-browser": {
|
"media-browser": {
|
||||||
"audio_not_supported": "Votre navigateur ne prend pas en charge l'élément audio.",
|
"audio_not_supported": "Votre navigateur ne prend pas en charge l'élément audio.",
|
||||||
"choose_player": "Choisissez le lecteur",
|
"choose_player": "Choisissez le lecteur",
|
||||||
"choose-source": "Choisissez la source",
|
"choose-source": "Choisissez la source",
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "App",
|
||||||
|
"artist": "Artiste",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compositeur",
|
||||||
|
"contributing_artist": "Artiste collaborateur",
|
||||||
|
"directory": "Bibliothèque",
|
||||||
|
"episode": "Épisode",
|
||||||
|
"game": "Jeu",
|
||||||
|
"genre": "Genre",
|
||||||
|
"image": "Image",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musique",
|
||||||
|
"playlist": "Liste de lecture",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Saison",
|
||||||
|
"track": "Piste",
|
||||||
|
"tv_show": "Émission de télévision",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Vidéo"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artiste",
|
"artist": "Artiste",
|
||||||
@@ -703,6 +729,7 @@
|
|||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
"controls": "Contrôles",
|
"controls": "Contrôles",
|
||||||
|
"details": "Détails",
|
||||||
"dismiss": "Fermer la fenêtre de dialogue",
|
"dismiss": "Fermer la fenêtre de dialogue",
|
||||||
"edit": "Modifier l'entité",
|
"edit": "Modifier l'entité",
|
||||||
"history": "Historique",
|
"history": "Historique",
|
||||||
@@ -934,9 +961,12 @@
|
|||||||
"service_data": "Données du service"
|
"service_data": "Données du service"
|
||||||
},
|
},
|
||||||
"wait_for_trigger": {
|
"wait_for_trigger": {
|
||||||
"label": "Attendre le déclencheur"
|
"continue_timeout": "Continuer à l'expiration du délai",
|
||||||
|
"label": "Attendre le déclencheur",
|
||||||
|
"timeout": "Délai d'expiration (optionnel)"
|
||||||
},
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Continuer à l'expiration du délai",
|
||||||
"label": "Attendre",
|
"label": "Attendre",
|
||||||
"timeout": "Délai d'expiration (optionnel)",
|
"timeout": "Délai d'expiration (optionnel)",
|
||||||
"wait_template": "Template d'attente"
|
"wait_template": "Template d'attente"
|
||||||
@@ -1000,7 +1030,9 @@
|
|||||||
"time": {
|
"time": {
|
||||||
"after": "Après",
|
"after": "Après",
|
||||||
"before": "Avant",
|
"before": "Avant",
|
||||||
"label": "Heure"
|
"label": "Heure",
|
||||||
|
"type_input": "Valeur d'une aide de date/heure",
|
||||||
|
"type_value": "Temps fixe"
|
||||||
},
|
},
|
||||||
"zone": {
|
"zone": {
|
||||||
"entity": "Entité avec localisation",
|
"entity": "Entité avec localisation",
|
||||||
@@ -1567,6 +1599,7 @@
|
|||||||
"reload_restart_confirm": "Redémarrer Home Assistant pour finaliser le rechargement de cette intégration",
|
"reload_restart_confirm": "Redémarrer Home Assistant pour finaliser le rechargement de cette intégration",
|
||||||
"rename": "Renommer",
|
"rename": "Renommer",
|
||||||
"restart_confirm": "Redémarrer Home Assistant pour terminer la suppression de cette intégration",
|
"restart_confirm": "Redémarrer Home Assistant pour terminer la suppression de cette intégration",
|
||||||
|
"services": "{count} {count, plural,\n one {service}\n other {services}\n}",
|
||||||
"settings_button": "Modifier les paramètres pour {integration}",
|
"settings_button": "Modifier les paramètres pour {integration}",
|
||||||
"system_options": "Options système",
|
"system_options": "Options système",
|
||||||
"system_options_button": "Options système pour {integration}",
|
"system_options_button": "Options système pour {integration}",
|
||||||
@@ -2342,9 +2375,14 @@
|
|||||||
"title": "États"
|
"title": "États"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Ce modèle écoute tous les événements de changement d'état.",
|
||||||
"description": "Les modèles sont rendus à l'aide du moteur de modèles Jinja2 avec certaines extensions spécifiques de Home Assistant.",
|
"description": "Les modèles sont rendus à l'aide du moteur de modèles Jinja2 avec certaines extensions spécifiques de Home Assistant.",
|
||||||
|
"domain": "Domaine",
|
||||||
"editor": "Éditeur de modèles",
|
"editor": "Éditeur de modèles",
|
||||||
|
"entity": "Entité",
|
||||||
"jinja_documentation": "Documentation de modèle Jinja2",
|
"jinja_documentation": "Documentation de modèle Jinja2",
|
||||||
|
"listeners": "Ce modèle écoute les événements de changement d'état suivants:",
|
||||||
|
"no_listeners": "Ce modèle n'écoute aucun événement de changement d'état et ne sera pas mis à jour automatiquement.",
|
||||||
"reset": "Réinitialiser au modèle de démonstration",
|
"reset": "Réinitialiser au modèle de démonstration",
|
||||||
"template_extensions": "Extensions de modèles de Home Assistant",
|
"template_extensions": "Extensions de modèles de Home Assistant",
|
||||||
"title": "Modèle",
|
"title": "Modèle",
|
||||||
@@ -2931,6 +2969,11 @@
|
|||||||
"submit": "Envoyer"
|
"submit": "Envoyer"
|
||||||
},
|
},
|
||||||
"current_user": "Vous êtes actuellement connecté en tant que {fullName}.",
|
"current_user": "Vous êtes actuellement connecté en tant que {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Modifier",
|
||||||
|
"description": "Vous pouvez également appuyer et maintenir l'en-tête de la barre latérale pour activer le mode d'édition.",
|
||||||
|
"header": "Modifier l'ordre et masquer les éléments de la barre latérale"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Choisissez un tableau de bord par défaut pour cet appareil.",
|
"description": "Choisissez un tableau de bord par défaut pour cet appareil.",
|
||||||
"dropdown_label": "Tableau de bord",
|
"dropdown_label": "Tableau de bord",
|
||||||
@@ -2953,6 +2996,7 @@
|
|||||||
"confirm_delete": "Êtes-vous sûr de vouloir supprimer le jeton d'accès de {name} ?",
|
"confirm_delete": "Êtes-vous sûr de vouloir supprimer le jeton d'accès de {name} ?",
|
||||||
"create": "Créer un jeton",
|
"create": "Créer un jeton",
|
||||||
"create_failed": "Impossible de créer le jeton d'accès.",
|
"create_failed": "Impossible de créer le jeton d'accès.",
|
||||||
|
"created": "Créé le {date}",
|
||||||
"created_at": "Créé le {date}",
|
"created_at": "Créé le {date}",
|
||||||
"delete_failed": "Impossible de supprimer le jeton d'accès.",
|
"delete_failed": "Impossible de supprimer le jeton d'accès.",
|
||||||
"description": "Créez des jetons d'accès de longue durée pour permettre à vos scripts d'interagir avec votre instance de Home Assistant. Chaque jeton sera valable 10 ans à compter de sa création. Les jetons d'accès longue durée suivants sont actuellement actifs.",
|
"description": "Créez des jetons d'accès de longue durée pour permettre à vos scripts d'interagir avec votre instance de Home Assistant. Chaque jeton sera valable 10 ans à compter de sa création. Les jetons d'accès longue durée suivants sont actuellement actifs.",
|
||||||
@@ -2960,6 +3004,7 @@
|
|||||||
"header": "Jetons d'accès de longue durée",
|
"header": "Jetons d'accès de longue durée",
|
||||||
"last_used": "Dernière utilisation le {date} à partir de {location}",
|
"last_used": "Dernière utilisation le {date} à partir de {location}",
|
||||||
"learn_auth_requests": "Apprenez comment faire des demandes authentifiées.",
|
"learn_auth_requests": "Apprenez comment faire des demandes authentifiées.",
|
||||||
|
"name": "Nom",
|
||||||
"not_used": "N'a jamais été utilisé",
|
"not_used": "N'a jamais été utilisé",
|
||||||
"prompt_copy_token": "Copiez votre jeton d'accès. Il ne sera plus affiché à nouveau.",
|
"prompt_copy_token": "Copiez votre jeton d'accès. Il ne sera plus affiché à nouveau.",
|
||||||
"prompt_name": "Nom ?"
|
"prompt_name": "Nom ?"
|
||||||
@@ -3026,6 +3071,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Terminé",
|
||||||
"external_app_configuration": "Configuration de l'application",
|
"external_app_configuration": "Configuration de l'application",
|
||||||
"sidebar_toggle": "Activer la barre latérale"
|
"sidebar_toggle": "Activer la barre latérale"
|
||||||
}
|
}
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Annulla",
|
"cancel": "Annulla",
|
||||||
"close": "Chiudi",
|
"close": "Chiudi",
|
||||||
"continue": "Continua",
|
"continue": "Continua",
|
||||||
|
"copied": "Copiato",
|
||||||
"delete": "Elimina",
|
"delete": "Elimina",
|
||||||
"error_required": "Necessario",
|
"error_required": "Necessario",
|
||||||
"loading": "Caricamento",
|
"loading": "Caricamento",
|
||||||
@@ -574,6 +575,12 @@
|
|||||||
"audio_not_supported": "Il tuo browser non supporta l'elemento audio.",
|
"audio_not_supported": "Il tuo browser non supporta l'elemento audio.",
|
||||||
"choose_player": "Scegli il lettore",
|
"choose_player": "Scegli il lettore",
|
||||||
"choose-source": "Scegli origine",
|
"choose-source": "Scegli origine",
|
||||||
|
"class": {
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Musica",
|
||||||
|
"season": "Stagione",
|
||||||
|
"track": "Traccia dispositivo"
|
||||||
|
},
|
||||||
"content-type": {
|
"content-type": {
|
||||||
"album": "Album",
|
"album": "Album",
|
||||||
"artist": "Artista",
|
"artist": "Artista",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Avbryt",
|
"cancel": "Avbryt",
|
||||||
"close": "Lukk",
|
"close": "Lukk",
|
||||||
"continue": "Fortsette",
|
"continue": "Fortsette",
|
||||||
|
"copied": "Kopiert",
|
||||||
"delete": "Slett",
|
"delete": "Slett",
|
||||||
"error_required": "Nødvendig",
|
"error_required": "Nødvendig",
|
||||||
"loading": "Laster",
|
"loading": "Laster",
|
||||||
@@ -910,7 +911,7 @@
|
|||||||
"add_option": "Legg til alternativ",
|
"add_option": "Legg til alternativ",
|
||||||
"conditions": "Betingelser",
|
"conditions": "Betingelser",
|
||||||
"default": "Standard handlinger",
|
"default": "Standard handlinger",
|
||||||
"label": "Velge",
|
"label": "Velg",
|
||||||
"option": "Alternativ {number}",
|
"option": "Alternativ {number}",
|
||||||
"remove_option": "Fjern alternativ",
|
"remove_option": "Fjern alternativ",
|
||||||
"sequence": "Handlinger"
|
"sequence": "Handlinger"
|
||||||
@@ -943,11 +944,11 @@
|
|||||||
"label": "Antall"
|
"label": "Antall"
|
||||||
},
|
},
|
||||||
"until": {
|
"until": {
|
||||||
"conditions": "Inntil forholdene",
|
"conditions": "Inntil betingelser",
|
||||||
"label": "Før"
|
"label": "Til"
|
||||||
},
|
},
|
||||||
"while": {
|
"while": {
|
||||||
"conditions": "Mens forholdene",
|
"conditions": "Mens betingelser",
|
||||||
"label": "Mens"
|
"label": "Mens"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2043,7 +2044,7 @@
|
|||||||
"tag_id_placeholder": "Automatisk generert når den er tom",
|
"tag_id_placeholder": "Automatisk generert når den er tom",
|
||||||
"update": "Oppdater"
|
"update": "Oppdater"
|
||||||
},
|
},
|
||||||
"edit": "Redigere",
|
"edit": "Rediger",
|
||||||
"headers": {
|
"headers": {
|
||||||
"last_scanned": "Sist skannet",
|
"last_scanned": "Sist skannet",
|
||||||
"name": "Navn"
|
"name": "Navn"
|
||||||
@@ -2374,11 +2375,14 @@
|
|||||||
"title": "Tilstander"
|
"title": "Tilstander"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Denne malen lytter etter alle tilstand endret hendelser.",
|
||||||
"description": "Maler blir rendret ved hjelp av Jinja2-malmotoren med noen spesifikke utvidelser for Home Assistant.",
|
"description": "Maler blir rendret ved hjelp av Jinja2-malmotoren med noen spesifikke utvidelser for Home Assistant.",
|
||||||
"domain": "Domene",
|
"domain": "Domene",
|
||||||
"editor": "Maleditor",
|
"editor": "Maleditor",
|
||||||
"entity": "Entitet",
|
"entity": "Entitet",
|
||||||
"jinja_documentation": "Jinja2 mal dokumentasjon",
|
"jinja_documentation": "Jinja2 mal dokumentasjon",
|
||||||
|
"listeners": "Denne malen lytter etter følgende tilstand endret hendelser:",
|
||||||
|
"no_listeners": "Denne malen lytter ikke etter noen tilstand endret hendelser og oppdateres ikke automatisk.",
|
||||||
"reset": "Tilbakestill til demomal",
|
"reset": "Tilbakestill til demomal",
|
||||||
"template_extensions": "Mal utvidelser for Home Assistant",
|
"template_extensions": "Mal utvidelser for Home Assistant",
|
||||||
"title": "Mal",
|
"title": "Mal",
|
||||||
@@ -2626,7 +2630,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cardpicker": {
|
"cardpicker": {
|
||||||
"by_card": "Med kort",
|
"by_card": "Etter kort",
|
||||||
"by_entity": "Etter entitet",
|
"by_entity": "Etter entitet",
|
||||||
"custom_card": "Tilpasset",
|
"custom_card": "Tilpasset",
|
||||||
"domain": "Domene",
|
"domain": "Domene",
|
||||||
@@ -2688,7 +2692,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "Vi vil automatisk opprette Lovelace-visningene dine med områdene og enhetene dine hvis du fjerner Lovelace-konfigurasjonen.",
|
"confirm_remove_config_text": "Vi vil automatisk opprette Lovelace-visningene dine med områdene og enhetene dine hvis du fjerner Lovelace-konfigurasjonen.",
|
||||||
"confirm_remove_config_title": "Er du sikker på at du vil fjerne Lovelace-konfigurasjonen? Vi vil automatisk opprette Lovelace-visningene dine med områdene og enhetene dine.",
|
"confirm_remove_config_title": "Er du sikker på at du vil fjerne Lovelace UI-konfigurasjonen?",
|
||||||
"confirm_unsaved_changes": "Du har ulagrede endringer, er du sikker på at du vil avslutte?",
|
"confirm_unsaved_changes": "Du har ulagrede endringer, er du sikker på at du vil avslutte?",
|
||||||
"confirm_unsaved_comments": "Konfigurasjonen din inneholder kommentarer, disse vil ikke bli lagret. Vil du fortsette?",
|
"confirm_unsaved_comments": "Konfigurasjonen din inneholder kommentarer, disse vil ikke bli lagret. Vil du fortsette?",
|
||||||
"error_invalid_config": "Konfigurasjonen din er ikke gyldig: {error}",
|
"error_invalid_config": "Konfigurasjonen din er ikke gyldig: {error}",
|
||||||
@@ -2966,6 +2970,8 @@
|
|||||||
},
|
},
|
||||||
"current_user": "Du er logget inn som {fullName}.",
|
"current_user": "Du er logget inn som {fullName}.",
|
||||||
"customize_sidebar": {
|
"customize_sidebar": {
|
||||||
|
"button": "Rediger",
|
||||||
|
"description": "Du kan også trykke på og holde nede overskriften på sidepanelet for å aktivere redigeringsmodus.",
|
||||||
"header": "Endre rekkefølgen og skjul elementer fra sidepanelet"
|
"header": "Endre rekkefølgen og skjul elementer fra sidepanelet"
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
@@ -3001,7 +3007,7 @@
|
|||||||
"name": "Navn",
|
"name": "Navn",
|
||||||
"not_used": "Har aldri blitt brukt",
|
"not_used": "Har aldri blitt brukt",
|
||||||
"prompt_copy_token": "Kopier tilgangstoken. Det blir ikke vist igjen.",
|
"prompt_copy_token": "Kopier tilgangstoken. Det blir ikke vist igjen.",
|
||||||
"prompt_name": "Navn?"
|
"prompt_name": "Gi tokenet et navn"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Lukk",
|
"close": "Lukk",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Annuleren",
|
"cancel": "Annuleren",
|
||||||
"close": "Sluiten",
|
"close": "Sluiten",
|
||||||
"continue": "Ga verder",
|
"continue": "Ga verder",
|
||||||
|
"copied": "Gekopieerd",
|
||||||
"delete": "Verwijderen",
|
"delete": "Verwijderen",
|
||||||
"error_required": "Verplicht",
|
"error_required": "Verplicht",
|
||||||
"loading": "Bezig met laden",
|
"loading": "Bezig met laden",
|
||||||
@@ -2374,11 +2375,14 @@
|
|||||||
"title": "Toestanden"
|
"title": "Toestanden"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Deze template luistert naar alle gebeurtenissen met gewijzigde status.",
|
||||||
"description": "Sjablonen worden weergegeven met de Jinja2-sjabloonediter samen met enkele extensies van Home Assistant.",
|
"description": "Sjablonen worden weergegeven met de Jinja2-sjabloonediter samen met enkele extensies van Home Assistant.",
|
||||||
"domain": "Domein",
|
"domain": "Domein",
|
||||||
"editor": "Sjabloonediter",
|
"editor": "Sjabloonediter",
|
||||||
"entity": "Entiteit",
|
"entity": "Entiteit",
|
||||||
"jinja_documentation": "Jinja2-sjabloondocumentatie",
|
"jinja_documentation": "Jinja2-sjabloondocumentatie",
|
||||||
|
"listeners": "Deze template luistert naar de volgende gebeurtenissen met gewijzigde status:",
|
||||||
|
"no_listeners": "Deze template luistert niet naar gebeurtenissen met statuswijziging en wordt niet automatisch bijgewerkt.",
|
||||||
"reset": "Resetten naar demosjabloon",
|
"reset": "Resetten naar demosjabloon",
|
||||||
"template_extensions": "Home Assistant sjabloon extensiesHome Assistant",
|
"template_extensions": "Home Assistant sjabloon extensiesHome Assistant",
|
||||||
"title": "Sjablonen",
|
"title": "Sjablonen",
|
||||||
@@ -2688,7 +2692,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "We zullen je Lovelace gebruikersinterface automatisch genereren met je gebieden en apparaten als je de huidige Lovelace gebruikersinterface verwijdert.",
|
"confirm_remove_config_text": "We zullen je Lovelace gebruikersinterface automatisch genereren met je gebieden en apparaten als je de huidige Lovelace gebruikersinterface verwijdert.",
|
||||||
"confirm_remove_config_title": "Weet je zeker dat je de huidige Lovelace gebruikersinterface wilt verwijderen? We zullen automatisch een nieuwe Lovelace gebruikersinterface genereren op basis van je gebieden en apparaten.",
|
"confirm_remove_config_title": "Weet u zeker dat u uw Lovelace UI-configuratie wilt verwijderen?",
|
||||||
"confirm_unsaved_changes": "Er zijn nog niet-opgeslagen wijzigingen, weet je zeker dat je wilt afsluiten?",
|
"confirm_unsaved_changes": "Er zijn nog niet-opgeslagen wijzigingen, weet je zeker dat je wilt afsluiten?",
|
||||||
"confirm_unsaved_comments": "Uw configuratie bevat opmerkingen, deze worden niet opgeslagen. Wil je doorgaan?",
|
"confirm_unsaved_comments": "Uw configuratie bevat opmerkingen, deze worden niet opgeslagen. Wil je doorgaan?",
|
||||||
"error_invalid_config": "Uw configuratie is niet geldig: {error}",
|
"error_invalid_config": "Uw configuratie is niet geldig: {error}",
|
||||||
@@ -3003,7 +3007,7 @@
|
|||||||
"name": "Naam",
|
"name": "Naam",
|
||||||
"not_used": "Is nog nooit gebruikt",
|
"not_used": "Is nog nooit gebruikt",
|
||||||
"prompt_copy_token": "Kopieer je toegangstoken. Het wordt niet meer getoond.",
|
"prompt_copy_token": "Kopieer je toegangstoken. Het wordt niet meer getoond.",
|
||||||
"prompt_name": "Naam?"
|
"prompt_name": "Geef het token een naam"
|
||||||
},
|
},
|
||||||
"mfa_setup": {
|
"mfa_setup": {
|
||||||
"close": "Sluiten",
|
"close": "Sluiten",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Anuluj",
|
"cancel": "Anuluj",
|
||||||
"close": "Zamknij",
|
"close": "Zamknij",
|
||||||
"continue": "Kontynuuj",
|
"continue": "Kontynuuj",
|
||||||
|
"copied": "Skopiowano",
|
||||||
"delete": "Usuń",
|
"delete": "Usuń",
|
||||||
"error_required": "To pole jest wymagane",
|
"error_required": "To pole jest wymagane",
|
||||||
"loading": "Ładowanie",
|
"loading": "Ładowanie",
|
||||||
|
@@ -489,6 +489,7 @@
|
|||||||
"back": "Înapoi",
|
"back": "Înapoi",
|
||||||
"cancel": "Revocare",
|
"cancel": "Revocare",
|
||||||
"close": "Închide",
|
"close": "Închide",
|
||||||
|
"copied": "Copiat",
|
||||||
"delete": "Șterge",
|
"delete": "Șterge",
|
||||||
"error_required": "Necesar",
|
"error_required": "Necesar",
|
||||||
"loading": "Se încarcă",
|
"loading": "Se încarcă",
|
||||||
@@ -544,6 +545,32 @@
|
|||||||
"loading_history": "Încărcarea istoricului de stare ...",
|
"loading_history": "Încărcarea istoricului de stare ...",
|
||||||
"no_history_found": "Nici un istoric de stare nu a fost găsit."
|
"no_history_found": "Nici un istoric de stare nu a fost găsit."
|
||||||
},
|
},
|
||||||
|
"logbook": {
|
||||||
|
"entries_not_found": "Nu s-au găsit intrări în jurnal."
|
||||||
|
},
|
||||||
|
"media-browser": {
|
||||||
|
"class": {
|
||||||
|
"album": "Album",
|
||||||
|
"app": "Aplicație",
|
||||||
|
"artist": "Artist",
|
||||||
|
"channel": "Canal",
|
||||||
|
"composer": "Compozitor",
|
||||||
|
"contributing_artist": "Artist contribuitor",
|
||||||
|
"directory": "Bibliotecă",
|
||||||
|
"episode": "Episod",
|
||||||
|
"game": "Joc",
|
||||||
|
"genre": "Gen",
|
||||||
|
"image": "Imagine",
|
||||||
|
"movie": "Film",
|
||||||
|
"music": "Muzică",
|
||||||
|
"playlist": "Playlist",
|
||||||
|
"podcast": "Podcast",
|
||||||
|
"season": "Sezon",
|
||||||
|
"tv_show": "Emisiune TV",
|
||||||
|
"url": "Url",
|
||||||
|
"video": "Video"
|
||||||
|
}
|
||||||
|
},
|
||||||
"related-items": {
|
"related-items": {
|
||||||
"area": "Zonă",
|
"area": "Zonă",
|
||||||
"automation": "Parte din următoarele automatizări",
|
"automation": "Parte din următoarele automatizări",
|
||||||
@@ -647,6 +674,7 @@
|
|||||||
"yaml_not_editable": "Setările acestei entități nu se pot edita din interfața grafica. Numai entitățile configurate in interfața grafica sunt configurabile din interfața grafica."
|
"yaml_not_editable": "Setările acestei entități nu se pot edita din interfața grafica. Numai entitățile configurate in interfața grafica sunt configurabile din interfața grafica."
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"details": "Detalii",
|
||||||
"dismiss": "Se respinge dialogul",
|
"dismiss": "Se respinge dialogul",
|
||||||
"edit": "Editează entitatea",
|
"edit": "Editează entitatea",
|
||||||
"person": {
|
"person": {
|
||||||
@@ -850,7 +878,13 @@
|
|||||||
"label": "Cheama serviciu",
|
"label": "Cheama serviciu",
|
||||||
"service_data": "Date serviciu"
|
"service_data": "Date serviciu"
|
||||||
},
|
},
|
||||||
|
"wait_for_trigger": {
|
||||||
|
"continue_timeout": "Continua la timeout",
|
||||||
|
"label": "Așteptați declanșatorul",
|
||||||
|
"timeout": "Timeout (optional)"
|
||||||
|
},
|
||||||
"wait_template": {
|
"wait_template": {
|
||||||
|
"continue_timeout": "Continuați la expirare",
|
||||||
"label": "Asteptare",
|
"label": "Asteptare",
|
||||||
"timeout": "Timeout (opțional)",
|
"timeout": "Timeout (opțional)",
|
||||||
"wait_template": "Sablon Asteptare"
|
"wait_template": "Sablon Asteptare"
|
||||||
@@ -1260,6 +1294,7 @@
|
|||||||
},
|
},
|
||||||
"integrations": {
|
"integrations": {
|
||||||
"add_integration": "Adăugați integrare",
|
"add_integration": "Adăugați integrare",
|
||||||
|
"attention": "Atenție necesară",
|
||||||
"caption": "Integrări",
|
"caption": "Integrări",
|
||||||
"config_entry": {
|
"config_entry": {
|
||||||
"delete": "Șterge",
|
"delete": "Șterge",
|
||||||
@@ -1317,6 +1352,7 @@
|
|||||||
"none": "Nimic nu a fost configurat încă",
|
"none": "Nimic nu a fost configurat încă",
|
||||||
"none_found": "Nu s-au găsit integrări",
|
"none_found": "Nu s-au găsit integrări",
|
||||||
"none_found_detail": "Ajustați criteriile de căutare.",
|
"none_found_detail": "Ajustați criteriile de căutare.",
|
||||||
|
"reconfigure": "Reconfigurați",
|
||||||
"rename_dialog": "Editați numele acestei intrări de configurare",
|
"rename_dialog": "Editați numele acestei intrări de configurare",
|
||||||
"rename_input_label": "Introdu nume",
|
"rename_input_label": "Introdu nume",
|
||||||
"search": "Căutare integrari"
|
"search": "Căutare integrari"
|
||||||
@@ -1848,9 +1884,14 @@
|
|||||||
"title": "Status"
|
"title": "Status"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||||
"description": "Șabloanele sunt redate utilizând motorul de șablon Jinja2 cu unele extensii specifice Home Assistant.",
|
"description": "Șabloanele sunt redate utilizând motorul de șablon Jinja2 cu unele extensii specifice Home Assistant.",
|
||||||
|
"domain": "Domeniu",
|
||||||
"editor": "Editor șabloane",
|
"editor": "Editor șabloane",
|
||||||
|
"entity": "Entitate",
|
||||||
"jinja_documentation": "Șablon documentație Jinja2",
|
"jinja_documentation": "Șablon documentație Jinja2",
|
||||||
|
"listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||||
|
"no_listeners": "Acest șablon ascultă următoarele evenimente modificate de stare:",
|
||||||
"template_extensions": "Șabloane de extensie pentru Home Assistant",
|
"template_extensions": "Șabloane de extensie pentru Home Assistant",
|
||||||
"title": "Sabloane",
|
"title": "Sabloane",
|
||||||
"unknown_error_template": "Sa produs o eroare de randare necunoscută."
|
"unknown_error_template": "Sa produs o eroare de randare necunoscută."
|
||||||
@@ -2353,6 +2394,11 @@
|
|||||||
"submit": "Trimite"
|
"submit": "Trimite"
|
||||||
},
|
},
|
||||||
"current_user": "În prezent sunteți conectat ca {fullName}.",
|
"current_user": "În prezent sunteți conectat ca {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Editeaza",
|
||||||
|
"description": "De asemenea, puteți apăsa și ține apăsat antetul barei laterale pentru a activa modul de editare.",
|
||||||
|
"header": "Schimbați ordinea și ascundeți elementele din bara laterală"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Alegeți un tablou de bord implicit pentru acest dispozitiv.",
|
"description": "Alegeți un tablou de bord implicit pentru acest dispozitiv.",
|
||||||
"dropdown_label": "Tablou de bord",
|
"dropdown_label": "Tablou de bord",
|
||||||
@@ -2375,6 +2421,7 @@
|
|||||||
"confirm_delete": "Sigur doriti sa stergeti tokenul de acces pentru {name}?",
|
"confirm_delete": "Sigur doriti sa stergeti tokenul de acces pentru {name}?",
|
||||||
"create": "Creaza un Token",
|
"create": "Creaza un Token",
|
||||||
"create_failed": "Crearea tokenului de acces eşuată",
|
"create_failed": "Crearea tokenului de acces eşuată",
|
||||||
|
"created": "Creat in {data}",
|
||||||
"created_at": "Creat in {date}",
|
"created_at": "Creat in {date}",
|
||||||
"delete_failed": "Ştergerea tokenului de acces eşuată",
|
"delete_failed": "Ştergerea tokenului de acces eşuată",
|
||||||
"description": "Creați tokenuri de acces cu durată lungă de viață pentru a permite script-urilor dvs. să interacționeze cu instanța dvs. Home Assistant. Fiecare token va fi valabil timp de 10 ani de la creatie. Următoarele tokenuri de acces de lungă durată sunt active la ora actuala.",
|
"description": "Creați tokenuri de acces cu durată lungă de viață pentru a permite script-urilor dvs. să interacționeze cu instanța dvs. Home Assistant. Fiecare token va fi valabil timp de 10 ani de la creatie. Următoarele tokenuri de acces de lungă durată sunt active la ora actuala.",
|
||||||
@@ -2382,6 +2429,7 @@
|
|||||||
"header": "Tokenuri de acces de lunga durata",
|
"header": "Tokenuri de acces de lunga durata",
|
||||||
"last_used": "Ultima utilizare la {date} din {location}",
|
"last_used": "Ultima utilizare la {date} din {location}",
|
||||||
"learn_auth_requests": "Aflați cum să faceți cereri autentificate.",
|
"learn_auth_requests": "Aflați cum să faceți cereri autentificate.",
|
||||||
|
"name": "Nume",
|
||||||
"not_used": "Nu a fost utilizat niciodata",
|
"not_used": "Nu a fost utilizat niciodata",
|
||||||
"prompt_copy_token": "Copia token-ul de acces. Acesta nu va fi afișat din nou.",
|
"prompt_copy_token": "Copia token-ul de acces. Acesta nu va fi afișat din nou.",
|
||||||
"prompt_name": "Nume?"
|
"prompt_name": "Nume?"
|
||||||
@@ -2443,6 +2491,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
|
"done": "Terminat",
|
||||||
"external_app_configuration": "Configurație aplicație",
|
"external_app_configuration": "Configurație aplicație",
|
||||||
"sidebar_toggle": "Schimbati bara laterală"
|
"sidebar_toggle": "Schimbati bara laterală"
|
||||||
}
|
}
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "Отменить",
|
"cancel": "Отменить",
|
||||||
"close": "Закрыть",
|
"close": "Закрыть",
|
||||||
"continue": "Продолжить",
|
"continue": "Продолжить",
|
||||||
|
"copied": "Скопировано",
|
||||||
"delete": "Удалить",
|
"delete": "Удалить",
|
||||||
"error_required": "Обязательное поле",
|
"error_required": "Обязательное поле",
|
||||||
"loading": "Загрузка",
|
"loading": "Загрузка",
|
||||||
@@ -580,6 +581,7 @@
|
|||||||
"artist": "Исполнитель",
|
"artist": "Исполнитель",
|
||||||
"channel": "Канал",
|
"channel": "Канал",
|
||||||
"composer": "Композитор",
|
"composer": "Композитор",
|
||||||
|
"contributing_artist": "Соисполнитель",
|
||||||
"directory": "Библиотека",
|
"directory": "Библиотека",
|
||||||
"episode": "Эпизод",
|
"episode": "Эпизод",
|
||||||
"game": "Игра",
|
"game": "Игра",
|
||||||
@@ -2373,11 +2375,14 @@
|
|||||||
"title": "Состояния"
|
"title": "Состояния"
|
||||||
},
|
},
|
||||||
"templates": {
|
"templates": {
|
||||||
|
"all_listeners": "Этот шаблон отслеживает все события изменения состояния.",
|
||||||
"description": "Здесь Вы можете протестировать поведение шаблонов. В Home Assistant используется шаблонизатор Jinja2 с некоторыми специальными расширениями.",
|
"description": "Здесь Вы можете протестировать поведение шаблонов. В Home Assistant используется шаблонизатор Jinja2 с некоторыми специальными расширениями.",
|
||||||
"domain": "Домен",
|
"domain": "Домен",
|
||||||
"editor": "Редактор шаблонов",
|
"editor": "Редактор шаблонов",
|
||||||
"entity": "Объект",
|
"entity": "Объект",
|
||||||
"jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2",
|
"jinja_documentation": "Узнайте больше о шаблонизаторе Jinja2",
|
||||||
|
"listeners": "Этот шаблон отслеживает следующие события изменения состояния:",
|
||||||
|
"no_listeners": "Этот шаблон не отслеживает события изменения состояния и не обновляется автоматически.",
|
||||||
"reset": "Вернуться к демонстрационному шаблону",
|
"reset": "Вернуться к демонстрационному шаблону",
|
||||||
"template_extensions": "Узнайте больше о шаблонах Home Assistant",
|
"template_extensions": "Узнайте больше о шаблонах Home Assistant",
|
||||||
"title": "Шаблоны",
|
"title": "Шаблоны",
|
||||||
@@ -2687,7 +2692,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "Если Вы очистите конфигурацию этой панели Lovelace, карточки с Вашими устройствами и помещениями будут создаваться автоматически.",
|
"confirm_remove_config_text": "Если Вы очистите конфигурацию этой панели Lovelace, карточки с Вашими устройствами и помещениями будут создаваться автоматически.",
|
||||||
"confirm_remove_config_title": "Очистить конфигурацию?",
|
"confirm_remove_config_title": "Вы уверены, что хотите очистить конфигурацию пользовательского интерфейса Lovelace?",
|
||||||
"confirm_unsaved_changes": "У вас есть несохраненные изменения. Вы уверены, что хотите выйти?",
|
"confirm_unsaved_changes": "У вас есть несохраненные изменения. Вы уверены, что хотите выйти?",
|
||||||
"confirm_unsaved_comments": "Ваша конфигурация содержит комментарии, они не будут сохранены. Вы хотите продолжить?",
|
"confirm_unsaved_comments": "Ваша конфигурация содержит комментарии, они не будут сохранены. Вы хотите продолжить?",
|
||||||
"error_invalid_config": "Конфигурация недействительна: {error}",
|
"error_invalid_config": "Конфигурация недействительна: {error}",
|
||||||
|
@@ -505,6 +505,7 @@
|
|||||||
"back": "Tillbaka",
|
"back": "Tillbaka",
|
||||||
"cancel": "Avbryt",
|
"cancel": "Avbryt",
|
||||||
"close": "Stäng",
|
"close": "Stäng",
|
||||||
|
"continue": "Fortsätt",
|
||||||
"delete": "Radera",
|
"delete": "Radera",
|
||||||
"error_required": "Krävs",
|
"error_required": "Krävs",
|
||||||
"loading": "Läser in",
|
"loading": "Läser in",
|
||||||
@@ -688,8 +689,11 @@
|
|||||||
"crop": "Beskär"
|
"crop": "Beskär"
|
||||||
},
|
},
|
||||||
"more_info_control": {
|
"more_info_control": {
|
||||||
|
"controls": "Kontroller",
|
||||||
|
"details": "Detaljer",
|
||||||
"dismiss": "Avfärda",
|
"dismiss": "Avfärda",
|
||||||
"edit": "Redigera entitet",
|
"edit": "Redigera entitet",
|
||||||
|
"history": "Historik",
|
||||||
"person": {
|
"person": {
|
||||||
"create_zone": "Skapa zon från aktuell plats"
|
"create_zone": "Skapa zon från aktuell plats"
|
||||||
},
|
},
|
||||||
@@ -1574,6 +1578,7 @@
|
|||||||
"none_found_detail": "Justera dina sökkriterier.",
|
"none_found_detail": "Justera dina sökkriterier.",
|
||||||
"note_about_integrations": "Inte alla integrationer kan konfigureras via användargränssnittet ännu.",
|
"note_about_integrations": "Inte alla integrationer kan konfigureras via användargränssnittet ännu.",
|
||||||
"note_about_website_reference": "Fler finns på ",
|
"note_about_website_reference": "Fler finns på ",
|
||||||
|
"reconfigure": "Konfigurera om",
|
||||||
"rename_dialog": "Redigera namnet på den här konfigurationsposten",
|
"rename_dialog": "Redigera namnet på den här konfigurationsposten",
|
||||||
"rename_input_label": "Ange namn",
|
"rename_input_label": "Ange namn",
|
||||||
"search": "Sök integrationer"
|
"search": "Sök integrationer"
|
||||||
@@ -1724,6 +1729,9 @@
|
|||||||
"session": "Hämtar värden som sällan ändras från noden",
|
"session": "Hämtar värden som sällan ändras från noden",
|
||||||
"static": "Hämtar statiska värden från enheten"
|
"static": "Hämtar statiska värden från enheten"
|
||||||
},
|
},
|
||||||
|
"nodes_table": {
|
||||||
|
"id": "ID"
|
||||||
|
},
|
||||||
"refresh_node": {
|
"refresh_node": {
|
||||||
"complete": "Uppdatering av noden klar",
|
"complete": "Uppdatering av noden klar",
|
||||||
"node_status": "Nodstatus",
|
"node_status": "Nodstatus",
|
||||||
@@ -1875,6 +1883,7 @@
|
|||||||
"input_text": "Ladda om inmatningstext",
|
"input_text": "Ladda om inmatningstext",
|
||||||
"introduction": "Vissa delar av Home Assistant kan laddas om utan att en omstart krävs. Att trycka på \"ladda om\" innebär att den nuvarande konfiguration inaktiveras och den nya laddas.",
|
"introduction": "Vissa delar av Home Assistant kan laddas om utan att en omstart krävs. Att trycka på \"ladda om\" innebär att den nuvarande konfiguration inaktiveras och den nya laddas.",
|
||||||
"person": "Ladda om personer",
|
"person": "Ladda om personer",
|
||||||
|
"rpi_gpio": "Ladda om Raspberry Pi GPIO-entiteter",
|
||||||
"scene": "Ladda om scenarier",
|
"scene": "Ladda om scenarier",
|
||||||
"script": "Ladda om skript",
|
"script": "Ladda om skript",
|
||||||
"template": "Ladda om mallar för entiteter",
|
"template": "Ladda om mallar för entiteter",
|
||||||
@@ -1923,6 +1932,8 @@
|
|||||||
"create": "Skapa",
|
"create": "Skapa",
|
||||||
"name": "Namn",
|
"name": "Namn",
|
||||||
"password": "Lösenord",
|
"password": "Lösenord",
|
||||||
|
"password_confirm": "Bekräfta lösenord",
|
||||||
|
"password_not_match": "Lösenorden överensstämmer inte",
|
||||||
"username": "Användarnamn"
|
"username": "Användarnamn"
|
||||||
},
|
},
|
||||||
"caption": "Användare",
|
"caption": "Användare",
|
||||||
@@ -1939,7 +1950,9 @@
|
|||||||
"group": "Grupp",
|
"group": "Grupp",
|
||||||
"id": "ID",
|
"id": "ID",
|
||||||
"name": "Namn",
|
"name": "Namn",
|
||||||
|
"new_password": "Nytt lösenord",
|
||||||
"owner": "Ägare",
|
"owner": "Ägare",
|
||||||
|
"password_changed": "Lösenordet har ändrats!",
|
||||||
"system_generated": "Skapad av systemet",
|
"system_generated": "Skapad av systemet",
|
||||||
"system_generated_users_not_editable": "Det gick inte att uppdatera systemgenererade användare.",
|
"system_generated_users_not_editable": "Det gick inte att uppdatera systemgenererade användare.",
|
||||||
"system_generated_users_not_removable": "Det går inte att ta bort användare som skapats av systemet.",
|
"system_generated_users_not_removable": "Det går inte att ta bort användare som skapats av systemet.",
|
||||||
@@ -2485,6 +2498,8 @@
|
|||||||
},
|
},
|
||||||
"cardpicker": {
|
"cardpicker": {
|
||||||
"custom_card": "Anpassad",
|
"custom_card": "Anpassad",
|
||||||
|
"domain": "Domän",
|
||||||
|
"entity": "Entitet",
|
||||||
"no_description": "Ingen beskrivning finns tillgänglig."
|
"no_description": "Ingen beskrivning finns tillgänglig."
|
||||||
},
|
},
|
||||||
"edit_card": {
|
"edit_card": {
|
||||||
@@ -2818,6 +2833,9 @@
|
|||||||
"submit": "Skicka"
|
"submit": "Skicka"
|
||||||
},
|
},
|
||||||
"current_user": "Du är inloggad som {fullName}.",
|
"current_user": "Du är inloggad som {fullName}.",
|
||||||
|
"customize_sidebar": {
|
||||||
|
"button": "Redigera"
|
||||||
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
"description": "Välj en standardpanel för den här enheten.",
|
"description": "Välj en standardpanel för den här enheten.",
|
||||||
"dropdown_label": "Instrumentpanel",
|
"dropdown_label": "Instrumentpanel",
|
||||||
|
@@ -507,6 +507,7 @@
|
|||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"close": "關閉",
|
"close": "關閉",
|
||||||
"continue": "繼續",
|
"continue": "繼續",
|
||||||
|
"copied": "已複製",
|
||||||
"delete": "刪除",
|
"delete": "刪除",
|
||||||
"error_required": "必填",
|
"error_required": "必填",
|
||||||
"loading": "讀取中",
|
"loading": "讀取中",
|
||||||
@@ -2691,7 +2692,7 @@
|
|||||||
},
|
},
|
||||||
"raw_editor": {
|
"raw_editor": {
|
||||||
"confirm_remove_config_text": "假如移除 Lovelace UI 設定的話,將自動以區域與設備產生 Lovelace UI 視圖。",
|
"confirm_remove_config_text": "假如移除 Lovelace UI 設定的話,將自動以區域與設備產生 Lovelace UI 視圖。",
|
||||||
"confirm_remove_config_title": "確定要移除 Lovelace UI 設定?將依據區域與設備自動產生 Lovelace UI 視圖。",
|
"confirm_remove_config_title": "確定要移除 Lovelace UI 設定?",
|
||||||
"confirm_unsaved_changes": "變更尚未儲存,確定要退出?",
|
"confirm_unsaved_changes": "變更尚未儲存,確定要退出?",
|
||||||
"confirm_unsaved_comments": "設定包含命令、將不會被儲存。是否要繼續?",
|
"confirm_unsaved_comments": "設定包含命令、將不會被儲存。是否要繼續?",
|
||||||
"error_invalid_config": "設定無效:{error}",
|
"error_invalid_config": "設定無效:{error}",
|
||||||
|
Reference in New Issue
Block a user