diff options
| -rw-r--r-- | app/views/assets/index.html.erb | 10 | ||||
| -rw-r--r-- | app/views/events/index.html.erb | 12 | ||||
| -rw-r--r-- | app/views/menu_items/index.html.erb | 10 | ||||
| -rw-r--r-- | app/views/nodes/_node_list.html.erb | 8 | ||||
| -rw-r--r-- | app/views/nodes/index.html.erb | 14 | ||||
| -rw-r--r-- | app/views/shared/_page_actions.html.erb | 32 | ||||
| -rw-r--r-- | app/views/users/_user.html.erb | 6 | ||||
| -rw-r--r-- | app/views/users/index.html.erb | 18 | ||||
| -rw-r--r-- | config/initializers/will_paginate.rb | 4 | ||||
| -rw-r--r-- | config/locales/de.yml | 9 | ||||
| -rw-r--r-- | config/locales/en.yml | 9 | ||||
| -rw-r--r-- | public/stylesheets/admin.css | 108 |
12 files changed, 177 insertions, 63 deletions
diff --git a/app/views/assets/index.html.erb b/app/views/assets/index.html.erb index 81d2686a..af11f54f 100644 --- a/app/views/assets/index.html.erb +++ b/app/views/assets/index.html.erb | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | <h1><%= t(".title") %></h1> | 1 | <%= render "shared/page_actions", |
| 2 | 2 | :title => t(".title"), | |
| 3 | <%= link_to new_asset_path, class: 'action_button' do %> | 3 | :icon_name => "photo-plus", |
| 4 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> <%= t(".create_asset") %> | 4 | :label => t(".create_asset"), |
| 5 | <% end %> | 5 | :options => [[t(".create_asset"), new_asset_path]] %> |
| 6 | 6 | ||
| 7 | <%= will_paginate @assets %> | 7 | <%= will_paginate @assets %> |
| 8 | 8 | ||
diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb index cc3f163d..c4f0a7f9 100644 --- a/app/views/events/index.html.erb +++ b/app/views/events/index.html.erb | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | <h1><%= t(".title") %></h1> | 1 | <%= render "shared/page_actions", |
| 2 | 2 | :title => t(".title"), | |
| 3 | <div class="button_row"> | 3 | :icon_name => "calendar-plus", |
| 4 | <%= link_to new_event_path, class: 'action_button' do %> | 4 | :label => t(".create_event"), |
| 5 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> <%= t(".create_event") %> | 5 | :options => [[t(".create_event"), new_event_path]] %> |
| 6 | <% end %> | ||
| 7 | </div> | ||
| 8 | 6 | ||
| 9 | <%= will_paginate @events %> | 7 | <%= will_paginate @events %> |
| 10 | 8 | ||
diff --git a/app/views/menu_items/index.html.erb b/app/views/menu_items/index.html.erb index 0eacc34a..b1c235da 100644 --- a/app/views/menu_items/index.html.erb +++ b/app/views/menu_items/index.html.erb | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | <h1><%= t(".title") %></h1> | 1 | <%= render "shared/page_actions", |
| 2 | 2 | :title => t(".title"), | |
| 3 | <%= link_to new_menu_item_path, class: 'action_button' do %> | 3 | :icon_name => "list-details", |
| 4 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> <%= t(".create_item") %> | 4 | :label => t(".create_item"), |
| 5 | <% end %> | 5 | :options => [[t(".create_item"), new_menu_item_path]] %> |
| 6 | 6 | ||
| 7 | <p class="field_hint"><%= t(".reorder_hint") %></p> | 7 | <p class="field_hint"><%= t(".reorder_hint") %></p> |
| 8 | 8 | ||
diff --git a/app/views/nodes/_node_list.html.erb b/app/views/nodes/_node_list.html.erb index 458ab1ae..f3101058 100644 --- a/app/views/nodes/_node_list.html.erb +++ b/app/views/nodes/_node_list.html.erb | |||
| @@ -14,11 +14,6 @@ | |||
| 14 | 14 | ||
| 15 | <%= will_paginate @nodes %> | 15 | <%= will_paginate @nodes %> |
| 16 | <table class="node_table"> | 16 | <table class="node_table"> |
| 17 | <tr class="header"> | ||
| 18 | <th class="title"><%= t("admin.columns.title") %></th> | ||
| 19 | <th class="actions"><%= t("admin.columns.actions") %></th> | ||
| 20 | <th class="revision"><%= t("admin.columns.rev") %></th> | ||
| 21 | </tr> | ||
| 22 | <% @nodes.each do |node| %> | 17 | <% @nodes.each do |node| %> |
| 23 | <tr class="<%= cycle("even", "odd") %>"> | 18 | <tr class="<%= cycle("even", "odd") %>"> |
| 24 | <td class="title"> | 19 | <td class="title"> |
| @@ -30,7 +25,7 @@ | |||
| 30 | t(".flag_embargo", :date => admin_datetime(node.head.published_at)), | 25 | t(".flag_embargo", :date => admin_datetime(node.head.published_at)), |
| 31 | :tier => :attention) if node.embargoed? %> | 26 | :tier => :attention) if node.embargoed? %> |
| 32 | <%= flag("file-pencil", t(".flag_draft")) if node.draft %> | 27 | <%= flag("file-pencil", t(".flag_draft")) if node.draft %> |
| 33 | <%= flag("file-off", t(".flag_no_head")) unless node.head %> | 28 | <%= flag("world-off", t(".flag_no_head")) unless node.head %> |
| 34 | </span> | 29 | </span> |
| 35 | <div class="title_body"> | 30 | <div class="title_body"> |
| 36 | <div class="node_title"><%= link_to title_for_node(node), node_path(node) %></div> | 31 | <div class="node_title"><%= link_to title_for_node(node), node_path(node) %></div> |
| @@ -54,7 +49,6 @@ | |||
| 54 | </span> | 49 | </span> |
| 55 | </div> | 50 | </div> |
| 56 | </td> | 51 | </td> |
| 57 | <td><%= node.head ? node.head.revision : t(".no_revision") %></td> | ||
| 58 | </tr> | 52 | </tr> |
| 59 | <% end %> | 53 | <% end %> |
| 60 | </table> | 54 | </table> |
diff --git a/app/views/nodes/index.html.erb b/app/views/nodes/index.html.erb index 357c938b..b88eca06 100644 --- a/app/views/nodes/index.html.erb +++ b/app/views/nodes/index.html.erb | |||
| @@ -1,10 +1,8 @@ | |||
| 1 | <h1><%= t(".title") %></h1> | 1 | <%= render "shared/page_actions", |
| 2 | 2 | :title => t(".title"), | |
| 3 | <div> | 3 | :icon_name => "file-plus", |
| 4 | <%= link_to new_node_path, class: 'action_button' do %> | 4 | :label => t(".create_node"), |
| 5 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> <%= t(".create_node") %> | 5 | :options => [[t(".create_node"), new_node_path]], |
| 6 | <% end %> | 6 | :hint => t(".create_hint") %> |
| 7 | <span class="field_hint"><%= t(".create_hint") %></span> | ||
| 8 | </div> | ||
| 9 | 7 | ||
| 10 | <%= render 'node_list' %> | 8 | <%= render 'node_list' %> |
diff --git a/app/views/shared/_page_actions.html.erb b/app/views/shared/_page_actions.html.erb new file mode 100644 index 00000000..66aeb785 --- /dev/null +++ b/app/views/shared/_page_actions.html.erb | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | <div class="page_actions"> | ||
| 2 | <h1><%= title %></h1> | ||
| 3 | |||
| 4 | <% if options.size == 1 %> | ||
| 5 | <%= link_to options.first.last, class: "action_button", | ||
| 6 | "aria-label" => options.first.first, title: options.first.first do %> | ||
| 7 | <%= icon(icon_name, library: "tabler", "aria-hidden": true) %> | ||
| 8 | <% end %> | ||
| 9 | <% else %> | ||
| 10 | <div class="page_action_group"> | ||
| 11 | <details class="action_menu"> | ||
| 12 | <summary class="action_button" aria-label="<%= label %>" title="<%= label %>"> | ||
| 13 | <%= icon(icon_name, library: "tabler", "aria-hidden": true) %> | ||
| 14 | <%= icon("chevron-down", library: "tabler", "aria-hidden": true) %> | ||
| 15 | </summary> | ||
| 16 | <div class="action_menu_items"> | ||
| 17 | <% options.each do |option_label, path| %> | ||
| 18 | <%= link_to option_label, path, class: "action_button" %> | ||
| 19 | <% end %> | ||
| 20 | </div> | ||
| 21 | </details> | ||
| 22 | |||
| 23 | <% if local_assigns[:hint].present? %> | ||
| 24 | <details class="action_hint"> | ||
| 25 | <summary aria-label="<%= t("admin.common.explain") %>" | ||
| 26 | title="<%= t("admin.common.explain") %>">?</summary> | ||
| 27 | <p><%= hint %></p> | ||
| 28 | </details> | ||
| 29 | <% end %> | ||
| 30 | </div> | ||
| 31 | <% end %> | ||
| 32 | </div> | ||
diff --git a/app/views/users/_user.html.erb b/app/views/users/_user.html.erb index 028ee02f..e70c7032 100644 --- a/app/views/users/_user.html.erb +++ b/app/views/users/_user.html.erb | |||
| @@ -79,7 +79,7 @@ | |||
| 79 | form: { data: { confirm: t(".confirm_revoke_redaktion", :login => user.login) }, | 79 | form: { data: { confirm: t(".confirm_revoke_redaktion", :login => user.login) }, |
| 80 | class: 'button_to destructive' }, | 80 | class: 'button_to destructive' }, |
| 81 | "aria-label" => t(".revoke_redaktion"), title: t(".revoke_redaktion") do %> | 81 | "aria-label" => t(".revoke_redaktion"), title: t(".revoke_redaktion") do %> |
| 82 | <%= icon("user-minus", library: "tabler", "aria-hidden": true) %> | 82 | <%= icon("users-minus", library: "tabler", "aria-hidden": true) %> |
| 83 | <% end %> | 83 | <% end %> |
| 84 | <% end %> | 84 | <% end %> |
| 85 | <% elsif user.otp_enrolled? %> | 85 | <% elsif user.otp_enrolled? %> |
| @@ -87,13 +87,13 @@ | |||
| 87 | form: { data: { confirm: t(".confirm_grant_redaktion", :login => user.login) }, | 87 | form: { data: { confirm: t(".confirm_grant_redaktion", :login => user.login) }, |
| 88 | class: 'button_to state_changing' }, | 88 | class: 'button_to state_changing' }, |
| 89 | "aria-label" => t(".grant_redaktion"), title: t(".grant_redaktion") do %> | 89 | "aria-label" => t(".grant_redaktion"), title: t(".grant_redaktion") do %> |
| 90 | <%= icon("user-plus", library: "tabler", "aria-hidden": true) %> | 90 | <%= icon("users-plus", library: "tabler", "aria-hidden": true) %> |
| 91 | <% end %> | 91 | <% end %> |
| 92 | <% else %> | 92 | <% else %> |
| 93 | <button type="button" class="disabled_action" disabled | 93 | <button type="button" class="disabled_action" disabled |
| 94 | title="<%= t(".grant_redaktion_blocked") %>" | 94 | title="<%= t(".grant_redaktion_blocked") %>" |
| 95 | aria-label="<%= t(".grant_redaktion_blocked") %>"> | 95 | aria-label="<%= t(".grant_redaktion_blocked") %>"> |
| 96 | <%= icon("user-plus", library: "tabler", "aria-hidden": true) %> | 96 | <%= icon("users-plus", library: "tabler", "aria-hidden": true) %> |
| 97 | </button> | 97 | </button> |
| 98 | <% end %> | 98 | <% end %> |
| 99 | <% end %> | 99 | <% end %> |
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index 2936bbea..71102c2c 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb | |||
| @@ -1,14 +1,10 @@ | |||
| 1 | <h1><%= t(".title") %></h1> | 1 | <%= render "shared/page_actions", |
| 2 | 2 | :title => t(".title"), | |
| 3 | <p class="button_row"> | 3 | :icon_name => "user-plus", |
| 4 | <% UsersController::ROLE_PRESETS.each_key do |preset| %> | 4 | :label => t(".create_account"), |
| 5 | <%= link_to new_user_path(:preset => preset), class: 'action_button' do %> | 5 | :options => UsersController::ROLE_PRESETS.each_key.map { |preset| |
| 6 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> | 6 | [t(".create_#{preset}"), new_user_path(:preset => preset)] }, |
| 7 | <%= t(".create_#{preset}") %> | 7 | :hint => t(".admin_hint") %> |
| 8 | <% end %> | ||
| 9 | <% end %> | ||
| 10 | </p> | ||
| 11 | <p class="field_hint"><%= t(".admin_hint") %></p> | ||
| 12 | 8 | ||
| 13 | <% UsersController::GROUP_ORDER.each do |group| %> | 9 | <% UsersController::GROUP_ORDER.each do |group| %> |
| 14 | <% members = @users[group] || [] %> | 10 | <% members = @users[group] || [] %> |
diff --git a/config/initializers/will_paginate.rb b/config/initializers/will_paginate.rb new file mode 100644 index 00000000..55c6d6e6 --- /dev/null +++ b/config/initializers/will_paginate.rb | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | Rails.application.config.to_prepare do | ||
| 2 | WillPaginate::ViewHelpers.pagination_options[:inner_window] = 1 | ||
| 3 | WillPaginate::ViewHelpers.pagination_options[:outer_window] = 0 | ||
| 4 | end | ||
diff --git a/config/locales/de.yml b/config/locales/de.yml index 6f8dd24a..a4181b9b 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml | |||
| @@ -76,9 +76,9 @@ de: | |||
| 76 | skip_last_comma: true | 76 | skip_last_comma: true |
| 77 | 77 | ||
| 78 | will_paginate: | 78 | will_paginate: |
| 79 | previous_label: "← Zurück" | 79 | previous_label: "←" |
| 80 | previous_aria_label: "Vorherige Seite" | 80 | previous_aria_label: "Vorherige Seite" |
| 81 | next_label: "Weiter →" | 81 | next_label: "→" |
| 82 | next_aria_label: "Nächste Seite" | 82 | next_aria_label: "Nächste Seite" |
| 83 | page_gap: "…" | 83 | page_gap: "…" |
| 84 | container_aria_label: "Seitennavigation" | 84 | container_aria_label: "Seitennavigation" |
| @@ -337,6 +337,7 @@ de: | |||
| 337 | action_log: "Letzte Änderungen dieses Kontos" | 337 | action_log: "Letzte Änderungen dieses Kontos" |
| 338 | index: | 338 | index: |
| 339 | title: "Benutzerkonten" | 339 | title: "Benutzerkonten" |
| 340 | create_account: "Konto anlegen" | ||
| 340 | create_editor: "Editor-Konto anlegen" | 341 | create_editor: "Editor-Konto anlegen" |
| 341 | create_redaktion: "Redaktions-Konto anlegen" | 342 | create_redaktion: "Redaktions-Konto anlegen" |
| 342 | create_admin: "Admin-Konto anlegen" | 343 | create_admin: "Admin-Konto anlegen" |
| @@ -374,14 +375,12 @@ de: | |||
| 374 | toggle_preview: "Live-Vorschau umschalten" | 375 | toggle_preview: "Live-Vorschau umschalten" |
| 375 | force_render: "Vorschau neu rendern" | 376 | force_render: "Vorschau neu rendern" |
| 376 | revisions: "Revisionen" | 377 | revisions: "Revisionen" |
| 378 | explain: "Was macht das?" | ||
| 377 | "yes": "ja" | 379 | "yes": "ja" |
| 378 | "no": "nein" | 380 | "no": "nein" |
| 379 | columns: | 381 | columns: |
| 380 | id: "ID" | ||
| 381 | title: "Titel" | 382 | title: "Titel" |
| 382 | actions: "Aktionen" | ||
| 383 | locked_by: "Gesperrt von" | 383 | locked_by: "Gesperrt von" |
| 384 | rev: "Rev." | ||
| 385 | path: "Pfad" | 384 | path: "Pfad" |
| 386 | preview: "Vorschau" | 385 | preview: "Vorschau" |
| 387 | name: "Name" | 386 | name: "Name" |
diff --git a/config/locales/en.yml b/config/locales/en.yml index c7a728ab..4cf7f61f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml | |||
| @@ -27,9 +27,9 @@ en: | |||
| 27 | ccc_date: "%d %B, %Y" | 27 | ccc_date: "%d %B, %Y" |
| 28 | 28 | ||
| 29 | will_paginate: | 29 | will_paginate: |
| 30 | previous_label: "← Previous" | 30 | previous_label: "←" |
| 31 | previous_aria_label: "Previous page" | 31 | previous_aria_label: "Previous page" |
| 32 | next_label: "Next →" | 32 | next_label: "→" |
| 33 | next_aria_label: "Next page" | 33 | next_aria_label: "Next page" |
| 34 | page_gap: "…" | 34 | page_gap: "…" |
| 35 | container_aria_label: "Pagination" | 35 | container_aria_label: "Pagination" |
| @@ -285,6 +285,7 @@ en: | |||
| 285 | 285 | ||
| 286 | index: | 286 | index: |
| 287 | title: "User accounts" | 287 | title: "User accounts" |
| 288 | create_account: "Create an account" | ||
| 288 | create_editor: "Create editor account" | 289 | create_editor: "Create editor account" |
| 289 | create_redaktion: "Create Redaktion account" | 290 | create_redaktion: "Create Redaktion account" |
| 290 | create_admin: "Create admin account" | 291 | create_admin: "Create admin account" |
| @@ -322,14 +323,12 @@ en: | |||
| 322 | toggle_preview: "Toggle live preview" | 323 | toggle_preview: "Toggle live preview" |
| 323 | force_render: "Force preview render" | 324 | force_render: "Force preview render" |
| 324 | revisions: "revisions" | 325 | revisions: "revisions" |
| 326 | explain: "What does this do?" | ||
| 325 | "yes": "yes" | 327 | "yes": "yes" |
| 326 | "no": "no" | 328 | "no": "no" |
| 327 | columns: | 329 | columns: |
| 328 | id: "ID" | ||
| 329 | title: "Title" | 330 | title: "Title" |
| 330 | actions: "Actions" | ||
| 331 | locked_by: "Locked by" | 331 | locked_by: "Locked by" |
| 332 | rev: "Rev." | ||
| 333 | path: "Path" | 332 | path: "Path" |
| 334 | preview: "Preview" | 333 | preview: "Preview" |
| 335 | name: "Name" | 334 | name: "Name" |
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css index 8b976599..e6f31709 100644 --- a/public/stylesheets/admin.css +++ b/public/stylesheets/admin.css | |||
| @@ -338,7 +338,7 @@ div.pagination span.gap { | |||
| 338 | justify-content: center; | 338 | justify-content: center; |
| 339 | min-width: 1.75rem; | 339 | min-width: 1.75rem; |
| 340 | height: 1.75rem; | 340 | height: 1.75rem; |
| 341 | padding: 0 0.4rem; | 341 | padding: 0 0.2rem; |
| 342 | border-radius: 4px; | 342 | border-radius: 4px; |
| 343 | font-style: normal; | 343 | font-style: normal; |
| 344 | } | 344 | } |
| @@ -357,6 +357,11 @@ div.pagination span.gap { | |||
| 357 | color: var(--text-muted); | 357 | color: var(--text-muted); |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | div.pagination .previous_page, | ||
| 361 | div.pagination .next_page { | ||
| 362 | min-width: 2rem; | ||
| 363 | } | ||
| 364 | |||
| 360 | div.pagination .previous_page.disabled, | 365 | div.pagination .previous_page.disabled, |
| 361 | div.pagination .next_page.disabled { | 366 | div.pagination .next_page.disabled { |
| 362 | color: var(--text-muted); | 367 | color: var(--text-muted); |
| @@ -824,11 +829,6 @@ table.revisions_table tr:hover { | |||
| 824 | .node_table td.actions { | 829 | .node_table td.actions { |
| 825 | width: 1px; | 830 | width: 1px; |
| 826 | white-space: nowrap; | 831 | white-space: nowrap; |
| 827 | } | ||
| 828 | |||
| 829 | /* Only where the action column is last. In the node lists rev. follows it, | ||
| 830 | and the 25px gutter is a real gap between columns there. */ | ||
| 831 | .user_table td.actions { | ||
| 832 | padding-right: 0; | 832 | padding-right: 0; |
| 833 | } | 833 | } |
| 834 | 834 | ||
| @@ -901,6 +901,7 @@ table.revisions_table tr:hover { | |||
| 901 | .flag_stack { | 901 | .flag_stack { |
| 902 | display: inline-flex; | 902 | display: inline-flex; |
| 903 | flex-direction: column; | 903 | flex-direction: column; |
| 904 | flex-shrink: 0; | ||
| 904 | align-items: flex-start; | 905 | align-items: flex-start; |
| 905 | gap: 0.25rem; | 906 | gap: 0.25rem; |
| 906 | vertical-align: -0.15em; | 907 | vertical-align: -0.15em; |
| @@ -917,6 +918,11 @@ table.revisions_table tr:hover { | |||
| 917 | .flag_stack .flag_attention svg { color: var(--accent); } | 918 | .flag_stack .flag_attention svg { color: var(--accent); } |
| 918 | .flag_stack .flag_alert svg { color: var(--danger); } | 919 | .flag_stack .flag_alert svg { color: var(--danger); } |
| 919 | 920 | ||
| 921 | table.node_table td { | ||
| 922 | padding-top: 0.8rem; | ||
| 923 | padding-bottom: 0.8rem; | ||
| 924 | } | ||
| 925 | |||
| 920 | .title_with_flags { | 926 | .title_with_flags { |
| 921 | display: flex; | 927 | display: flex; |
| 922 | align-items: flex-start; | 928 | align-items: flex-start; |
| @@ -931,9 +937,15 @@ table.revisions_table tr:hover { | |||
| 931 | } | 937 | } |
| 932 | 938 | ||
| 933 | .node_table .node_path { | 939 | .node_table .node_path { |
| 934 | margin-top: 0.15rem; | 940 | margin-top: 0.25rem; |
| 941 | font-size: 0.875rem; | ||
| 935 | } | 942 | } |
| 936 | 943 | ||
| 944 | .node_table .node_path a { | ||
| 945 | color: var(--text-muted); | ||
| 946 | } | ||
| 947 | |||
| 948 | |||
| 937 | .user_group_heading { | 949 | .user_group_heading { |
| 938 | margin-top: 1.5rem; | 950 | margin-top: 1.5rem; |
| 939 | } | 951 | } |
| @@ -1516,6 +1528,88 @@ input#menu_item_title { | |||
| 1516 | } | 1528 | } |
| 1517 | } | 1529 | } |
| 1518 | 1530 | ||
| 1531 | .page_actions { | ||
| 1532 | display: flex; | ||
| 1533 | flex-wrap: wrap; | ||
| 1534 | align-items: baseline; | ||
| 1535 | gap: 0.5rem; | ||
| 1536 | margin-bottom: 1rem; | ||
| 1537 | } | ||
| 1538 | |||
| 1539 | /* Pushes the actions to the right of the heading. */ | ||
| 1540 | .page_actions h1 { | ||
| 1541 | margin: 0 auto 0 0; | ||
| 1542 | } | ||
| 1543 | |||
| 1544 | .page_action_group { | ||
| 1545 | display: flex; | ||
| 1546 | align-items: flex-start; | ||
| 1547 | gap: 0.5rem; | ||
| 1548 | } | ||
| 1549 | |||
| 1550 | .action_menu { | ||
| 1551 | position: relative; | ||
| 1552 | } | ||
| 1553 | |||
| 1554 | /* Safari renders a disclosure triangle unless both are set. */ | ||
| 1555 | .action_menu > summary, | ||
| 1556 | .action_hint > summary { | ||
| 1557 | cursor: pointer; | ||
| 1558 | list-style: none; | ||
| 1559 | } | ||
| 1560 | |||
| 1561 | .action_menu > summary::-webkit-details-marker, | ||
| 1562 | .action_hint > summary::-webkit-details-marker { | ||
| 1563 | display: none; | ||
| 1564 | } | ||
| 1565 | |||
| 1566 | .action_menu_items { | ||
| 1567 | position: absolute; | ||
| 1568 | top: 100%; | ||
| 1569 | right: 0; | ||
| 1570 | z-index: 1; | ||
| 1571 | display: flex; | ||
| 1572 | flex-direction: column; | ||
| 1573 | align-items: stretch; | ||
| 1574 | gap: 0.25rem; | ||
| 1575 | margin-top: 0.25rem; | ||
| 1576 | padding: 0.5rem; | ||
| 1577 | background-color: var(--surface-raised); | ||
| 1578 | border: 1px solid var(--border); | ||
| 1579 | border-radius: var(--radius); | ||
| 1580 | } | ||
| 1581 | |||
| 1582 | .action_hint > summary { | ||
| 1583 | display: inline-flex; | ||
| 1584 | align-items: center; | ||
| 1585 | justify-content: center; | ||
| 1586 | width: 1.5rem; | ||
| 1587 | height: 1.5rem; | ||
| 1588 | border: 1px solid var(--border); | ||
| 1589 | border-radius: 50%; | ||
| 1590 | color: var(--text-muted); | ||
| 1591 | font-weight: bold; | ||
| 1592 | } | ||
| 1593 | |||
| 1594 | .action_hint { | ||
| 1595 | position: relative; | ||
| 1596 | } | ||
| 1597 | |||
| 1598 | .action_hint p { | ||
| 1599 | position: absolute; | ||
| 1600 | top: 100%; | ||
| 1601 | right: 0; | ||
| 1602 | z-index: 1; | ||
| 1603 | width: max-content; | ||
| 1604 | max-width: 22rem; | ||
| 1605 | margin: 0.5rem 0 0; | ||
| 1606 | padding: 0.5rem; | ||
| 1607 | color: var(--text-muted); | ||
| 1608 | background-color: var(--surface-raised); | ||
| 1609 | border: 1px solid var(--border); | ||
| 1610 | border-radius: var(--radius); | ||
| 1611 | } | ||
| 1612 | |||
| 1519 | /* ============================================================ | 1613 | /* ============================================================ |
| 1520 | Draft list (dashboard widget) | 1614 | Draft list (dashboard widget) |
| 1521 | ============================================================ */ | 1615 | ============================================================ */ |
