From 5acb2499c1df14d6275b1ad9e139f02d1280cb9c Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Thu, 13 Jan 2022 10:15:12 +0100 Subject: facilitate managing repository URLs in a list; minor other changes --- html/dialog.js | 10 ++ html/grid.css | 6 +- html/item_list.html | 8 ++ html/item_list.js | 4 +- html/item_preview.html | 2 +- html/payload_create.html | 3 - html/payload_create.js | 5 +- html/text_entry_list.html | 65 ++++++++++ html/text_entry_list.js | 321 ++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 411 insertions(+), 13 deletions(-) create mode 100644 html/text_entry_list.html create mode 100644 html/text_entry_list.js (limited to 'html') diff --git a/html/dialog.js b/html/dialog.js index c4bba5d..a2406e8 100644 --- a/html/dialog.js +++ b/html/dialog.js @@ -129,3 +129,13 @@ const ask = (ctx, ...msg) => show_dialog(ctx, "ask_buts", msg); const loader = (ctx, ...msg) => show_dialog(ctx, null, msg); #EXPORT loader + +/* + * Wrapper around target.addEventListener() that makes the requested callback + * only execute if dialog is not shown. + */ +function onevent(ctx, target, event, cb) +{ + target.addEventListener(event, e => !ctx.shown && cb(e)); +} +#EXPORT onevent diff --git a/html/grid.css b/html/grid.css index aa8fc80..20bb85e 100644 --- a/html/grid.css +++ b/html/grid.css @@ -49,7 +49,7 @@ grid-column: 1 / span 2; } -span.grid_col_1 { +span.grid_col_1, label.grid_col_1 { text-align: right; } @@ -61,11 +61,11 @@ div.grid_col_both { text-align: initial; } -.grid_2>span { +.grid_2>span, grid_2>label { margin-top: 0.75em; } -.grid_form>span { +.grid_form>span, .grid_form>label { margin-top: 1.5em; margin-left: 1em; margin-right: 1em; diff --git a/html/item_list.html b/html/item_list.html index 5d2a163..4e23868 100644 --- a/html/item_list.html +++ b/html/item_list.html @@ -57,6 +57,14 @@ .item_list>li.item_li_highlight { cursor: default; } + .item_list.list_disabled, + .item_list.list_disabled *, + .item_list.list_disabled .item_li_highlight { + -moz-user-select: none; + user-select: none; + opacity: 0.75; + cursor: not-allowed; + } .list_buttons { margin: 1em auto; text-align: center; diff --git a/html/item_list.js b/html/item_list.js index 34dec83..198e0f9 100644 --- a/html/item_list.js +++ b/html/item_list.js @@ -185,14 +185,14 @@ async function item_list(preview_cb, track_cb, remove_cb) function on_dialog_show(list_ctx) { - list_ctx.ul; // TODO: make ul non-selectable when dialog is shown + list_ctx.ul.classList.add("list_disabled"); list_ctx.preview_container.classList.add("hide"); list_ctx.dialog_container.classList.remove("hide"); } function on_dialog_hide(list_ctx) { - list_ctx.ul; + list_ctx.ul.classList.remove("list_disabled"); if (list_ctx.previewed_item !== null) list_ctx.preview_container.classList.remove("hide"); list_ctx.dialog_container.classList.add("hide"); diff --git a/html/item_preview.html b/html/item_preview.html index 6cd15a8..160c01d 100644 --- a/html/item_preview.html +++ b/html/item_preview.html @@ -39,7 +39,7 @@ #LOADCSS html/grid.css