diff --git a/webui/Cargo.toml b/webui/Cargo.toml index 70659bc49..da08fc805 100644 --- a/webui/Cargo.toml +++ b/webui/Cargo.toml @@ -28,14 +28,7 @@ wasm-bindgen-futures = "0" [dependencies.web-sys] version = "0.3" -features = [ - "Document", - "Element", - "Node", - "Window", - "HtmlCollection", - "HtmlInputElement", -] +features = ["Document", "Element", "Node", "Window", "HtmlCollection", "HtmlInputElement", "DomRect"] [dev-dependencies] js-sys = "0.3" diff --git a/webui/public/assets/i18n/en.json b/webui/public/assets/i18n/en.json index 6d9875c7c..f0b9a1ed0 100644 --- a/webui/public/assets/i18n/en.json +++ b/webui/public/assets/i18n/en.json @@ -92,8 +92,8 @@ "XTREAM_CODES": "xtream codes", "XC": "xc", "M3U": "m3u", - "XTREAM": "Xtream", - "HDHOMERUN": "HdHomerun", + "XTREAM": "xtream", + "HDHOMERUN": "hdHomerun", "STRM": "strm", "PLAYLIST_BROWSER": "Playlist Browser", "RATE_LIMIT": "Rate Limit", @@ -144,7 +144,9 @@ "DELAY": "Delay", "FILENAME": "Filename", "INCLUDE_TYPE_IN_URL": "Include type in url", - "MASK_REDIRECT_URL": "Mask redirect url" + "MASK_REDIRECT_URL": "Mask redirect url", + "EDIT": "Edit", + "DELETE": "Delete" }, "TABLE": { "EMPTY": "", diff --git a/webui/public/assets/icons.json b/webui/public/assets/icons.json index ee6cc5a9b..1aa0210db 100644 --- a/webui/public/assets/icons.json +++ b/webui/public/assets/icons.json @@ -346,5 +346,9 @@ { "keys": ["Ellipsis", "Show"], "path": "M 4.5000013,9 C 3.1249997,9 2,10.125024 2,11.500015 c 0,1.374992 1.1249997,2.499969 2.5000013,2.499969 1.3750012,0 2.500001,-1.124977 2.500001,-2.499969 C 7.0000023,10.125024 5.8750025,9 4.5000013,9 M 19.499999,9 c -1.375001,0 -2.500001,1.125024 -2.500001,2.500015 0,1.374992 1.125,2.499969 2.500001,2.499969 C 20.875,13.999984 22,12.875007 22,11.500015 22,10.125024 20.875,9 19.499999,9 M 12,9 c -1.375001,0 -2.5000012,1.125024 -2.5000012,2.500015 0,1.374992 1.1250002,2.499969 2.5000012,2.499969 1.375001,0 2.500001,-1.124977 2.500001,-2.499969 C 14.500001,10.125024 13.375001,9 12,9" + }, + { + "keys": ["Hamburger", "Menu", "Popup", "Bars"], + "path": "M 2,18.333002 H 21.9995 V 16.110835 H 2 Z M 2,12.777585 H 21.9995 V 10.555417 H 2 Z M 2,5 V 7.2221668 H 21.9995 V 5 Z" } ] \ No newline at end of file diff --git a/webui/scss/_default.scss b/webui/scss/_default.scss index 4ff356e61..4f015564f 100644 --- a/webui/scss/_default.scss +++ b/webui/scss/_default.scss @@ -63,8 +63,7 @@ dialog { padding: 0 !important; } -.tp__rotated_text { - writing-mode: vertical-rl; // or vertical-lr - text-orientation: upright; - font-size: 1rem; -} +.tp__delete_action { + color: var(--attention-color) !important; + fill: var(--attention-color) !important; +} \ No newline at end of file diff --git a/webui/scss/_theme.scss b/webui/scss/_theme.scss index 8e28ac50d..caee6a3c2 100644 --- a/webui/scss/_theme.scss +++ b/webui/scss/_theme.scss @@ -74,6 +74,18 @@ --tag-inactive-background-color: #3a3a3a; + --popup-background-color: #18181b; + --popup-shadow: 0 3px 8px #06070a; + --popup-border-color: #2f2f31; + --popup-color: #fff; + //--popup-hover-background-color: #5599f0; + //--popup-hover-color: #fff; + + --attention-color: #f67070; + --warn-color: #b88e22; + + + --hint-color: #888888; --label-color: #73d6fe; @@ -96,15 +108,6 @@ --toolbar-button-hover-color: #ffffff; --toolbar-button-hover-background-color: #004db4; - --popup-background-color: #282A36; - --popup-shadow-color: #06070a; - --popup-border-color: #646464; - --popup-color: #fff; - --popup-hover-background-color: #5599f0; - --popup-hover-color: #fff; - - --attention-color: red; - --warn-color: orange; --ok-color: #21e821; --card-background-color-darker: #1c2026; diff --git a/webui/scss/app/_component.scss b/webui/scss/app/_component.scss index 81bf045cf..c5ece47bd 100644 --- a/webui/scss/app/_component.scss +++ b/webui/scss/app/_component.scss @@ -24,5 +24,7 @@ @forward "components/playlist/target/m3u_output"; @forward "components/playlist/target/strm_output"; @forward "components/playlist/target/hdhomerun_output"; +@forward "components/playlist/target/target_table"; @forward "components/tag_list"; -@forward "components/chip"; \ No newline at end of file +@forward "components/chip"; +@forward "components/popup_menu"; diff --git a/webui/scss/app/components/_collapse_panel.scss b/webui/scss/app/components/_collapse_panel.scss index cf611cf3c..3723746c9 100644 --- a/webui/scss/app/components/_collapse_panel.scss +++ b/webui/scss/app/components/_collapse_panel.scss @@ -25,4 +25,15 @@ width: 1.2rem; } } + + &__body { + max-height: 5000px; + // transition: max-height 0.5s ease; + // max-height: 5000px; + } + &.tp__collapsed { + .tp__collapse-panel__body { + max-height: 0; + } + } } \ No newline at end of file diff --git a/webui/scss/app/components/_menu_item.scss b/webui/scss/app/components/_menu_item.scss index 7bf584313..850091352 100644 --- a/webui/scss/app/components/_menu_item.scss +++ b/webui/scss/app/components/_menu_item.scss @@ -16,6 +16,7 @@ } label { pointer-events: none; + color: inherit; } &:hover { diff --git a/webui/scss/app/components/_popup_menu.scss b/webui/scss/app/components/_popup_menu.scss new file mode 100644 index 000000000..9603e6482 --- /dev/null +++ b/webui/scss/app/components/_popup_menu.scss @@ -0,0 +1,22 @@ +.tp__popup-menu { + display: flex; + flex-flow: column; + padding: 8px; + border: 1px solid var(--border-color); + border-radius: 4px; + background-color: var(--popup-background-color); + color: var(--popup-color); + box-shadow: var(--popup-shadow); + z-index: 9999; + + ul { + margin: 0; + padding: 0; + list-style: none; + background: transparent; + } + + li { + background: transparent; + } +} diff --git a/webui/scss/app/components/_table.scss b/webui/scss/app/components/_table.scss index aa331f6a2..bd28ab45a 100644 --- a/webui/scss/app/components/_table.scss +++ b/webui/scss/app/components/_table.scss @@ -7,6 +7,7 @@ border-radius: var(--border-radius); border: 1px solid var(--border-color); overflow: hidden; + fill: var(--modest-text-color); &__container { display: flex; diff --git a/webui/scss/app/components/playlist/target/_m3u_output.scss b/webui/scss/app/components/playlist/target/_m3u_output.scss index 07f12ad18..6a18ed87a 100644 --- a/webui/scss/app/components/playlist/target/_m3u_output.scss +++ b/webui/scss/app/components/playlist/target/_m3u_output.scss @@ -1,29 +1,3 @@ .tp__m3u_output { - display: flex; - flex-flow: column; - gap: var(--gap-small); - - &__section { - display: flex; - flex-flow: column; - gap: var(--gap-small); - border: 1px solid var(--border-color); - border-radius: var(--border-radius); - padding: var(--padding-micro) var(--padding-mini); - background-color: var(--table-card-background-color); - - .tp__tag_list { - flex-flow: row nowrap; - } - } - - &__label { - font-size: 1.1rem; - white-space: nowrap; - - &:after { - content: ":"; - } - } } \ No newline at end of file diff --git a/webui/scss/app/components/playlist/target/_target_output.scss b/webui/scss/app/components/playlist/target/_target_output.scss index 16e563c68..7c16fa3fa 100644 --- a/webui/scss/app/components/playlist/target/_target_output.scss +++ b/webui/scss/app/components/playlist/target/_target_output.scss @@ -2,4 +2,36 @@ display: flex; flex-flow: column; gap: var(--gap-small); +} + +.tp__target_output__output { + display: flex; + justify-content: center; + flex-flow: column; + gap: var(--gap-small); + + &__section { + display: flex; + flex-flow: column; + gap: var(--gap-small); + justify-content: center; + border: 1px solid var(--border-color); + border-radius: var(--border-radius); + padding: var(--padding-micro) var(--padding-mini); + background-color: var(--table-card-background-color); + + .tp__tag_list { + flex-flow: row nowrap; + } + } + + &__label { + font-size: 1.1rem; + white-space: nowrap; + vertical-align: middle; + + &:after { + content: ":"; + } + } } \ No newline at end of file diff --git a/webui/scss/app/components/playlist/target/_target_table.scss b/webui/scss/app/components/playlist/target/_target_table.scss new file mode 100644 index 000000000..c3dca7a55 --- /dev/null +++ b/webui/scss/app/components/playlist/target/_target_table.scss @@ -0,0 +1,5 @@ +.tp__target-table { + .tp__icon-button { + width: 2rem; + } +} \ No newline at end of file diff --git a/webui/scss/app/components/playlist/target/_xtream_output.scss b/webui/scss/app/components/playlist/target/_xtream_output.scss index 041d790a1..7fad82bbe 100644 --- a/webui/scss/app/components/playlist/target/_xtream_output.scss +++ b/webui/scss/app/components/playlist/target/_xtream_output.scss @@ -1,25 +1,3 @@ .tp__xtream_output { - display: flex; - flex-flow: column; - gap: var(--gap-small); - - &__section { - display: flex; - flex-flow: column; - gap: var(--gap-small); - border: 1px solid var(--border-color); - border-radius: var(--border-radius); - padding: var(--padding-micro) var(--padding-mini); - background-color: var(--table-card-background-color); - - .tp__tag_list { - flex-flow: row nowrap; - } - } - - &__label { - font-size: 1.1rem; - white-space: nowrap; - } } \ No newline at end of file diff --git a/webui/src/app/components/collapse_panel.rs b/webui/src/app/components/collapse_panel.rs index e42b9d596..c8071d7f7 100644 --- a/webui/src/app/components/collapse_panel.rs +++ b/webui/src/app/components/collapse_panel.rs @@ -19,16 +19,14 @@ pub fn CollapsePanel(props: &CollapsePanelProps) -> Html { }; html! { -