Unify dialog infrastructure

This commit is contained in:
2026-03-20 07:56:41 +01:00
parent 96cc82db9e
commit a3f021e5e1
6 changed files with 2047 additions and 1150 deletions

263
style.css
View File

@@ -1,3 +1,5 @@
/* Dialog infrastructure styles are in dialog.css, loaded via CSS_STYLES_INCLUDED hook in action.php */
/* luxtools plugin styles
* Keep this minimal and scoped to the plugin container.
*/
@@ -7,7 +9,6 @@ div.luxtools-plugin table thead tr:hover > * {
background-color: @ini_background_alt !important;
}
/* "Open Location" row above the header should be visually smaller. */
div.luxtools-plugin table thead tr.luxtools-openlocation-row td {
font-size: 80%;
@@ -229,8 +230,12 @@ div.plugin_luxtools_admin form.plugin_luxtools_admin_form label.block > br {
}
div.plugin_luxtools_admin form.plugin_luxtools_admin_form textarea.edit,
div.plugin_luxtools_admin form.plugin_luxtools_admin_form input[type="text"].edit,
div.plugin_luxtools_admin form.plugin_luxtools_admin_form input[type="number"].edit,
div.plugin_luxtools_admin
form.plugin_luxtools_admin_form
input[type="text"].edit,
div.plugin_luxtools_admin
form.plugin_luxtools_admin_form
input[type="number"].edit,
div.plugin_luxtools_admin form.plugin_luxtools_admin_form select {
flex: 1 1 auto;
margin-left: auto;
@@ -249,7 +254,10 @@ div.plugin_luxtools_admin form.plugin_luxtools_admin_form select {
}
/* Checkbox controls: keep them in the control column, left-aligned. */
div.plugin_luxtools_admin form.plugin_luxtools_admin_form label.block input[type="checkbox"] {
div.plugin_luxtools_admin
form.plugin_luxtools_admin_form
label.block
input[type="checkbox"] {
margin-left: 0;
align-self: center;
}
@@ -265,8 +273,12 @@ div.plugin_luxtools_admin form.plugin_luxtools_admin_form label.block input[type
}
div.plugin_luxtools_admin form.plugin_luxtools_admin_form textarea.edit,
div.plugin_luxtools_admin form.plugin_luxtools_admin_form input[type="text"].edit,
div.plugin_luxtools_admin form.plugin_luxtools_admin_form input[type="number"].edit,
div.plugin_luxtools_admin
form.plugin_luxtools_admin_form
input[type="text"].edit,
div.plugin_luxtools_admin
form.plugin_luxtools_admin_form
input[type="number"].edit,
div.plugin_luxtools_admin form.plugin_luxtools_admin_form select {
width: 100%;
max-width: 100%;
@@ -386,12 +398,12 @@ html.luxtools-noscroll body {
}
.luxtools-lightbox button.luxtools-lightbox-zone-prev::after {
content: '';
content: "";
left: 0.35em;
}
.luxtools-lightbox button.luxtools-lightbox-zone-next::after {
content: '';
content: "";
right: 0.35em;
}
@@ -416,7 +428,7 @@ html.luxtools-noscroll body {
.luxtools-lightbox button.luxtools-lightbox-close:hover,
.luxtools-lightbox button.luxtools-lightbox-close:focus-visible {
background: rgba(0, 0, 0, 0.60);
background: rgba(0, 0, 0, 0.6);
border-radius: 999px;
}
@@ -432,7 +444,10 @@ html.luxtools-noscroll body {
.luxtools-grouping {
display: grid;
grid-template-columns: repeat(var(--luxtools-grouping-cols, 2), minmax(0, 1fr));
grid-template-columns: repeat(
var(--luxtools-grouping-cols, 2),
minmax(0, 1fr)
);
gap: var(--luxtools-grouping-gap, 0);
justify-content: var(--luxtools-grouping-justify, start);
align-items: var(--luxtools-grouping-align, start);
@@ -604,7 +619,10 @@ div.luxtools-calendar td.luxtools-calendar-day-today {
}
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a {
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a {
display: flex;
align-items: center;
justify-content: center;
@@ -617,33 +635,77 @@ div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > sp
padding: 0.1em 0;
}
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a.wikilink2:visited,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a.wikilink2:visited {
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> a.wikilink2:visited,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a.wikilink2:visited {
color: @ini_missing;
border-bottom: 0;
}
}
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a:hover,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a:focus,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a:active,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > a:visited,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:hover,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:focus,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:active,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:visited {
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> a:hover,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> a:focus,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> a:active,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> a:visited,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:hover,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:focus,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:active,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:visited {
text-decoration: none;
border-bottom: 0;
box-shadow: none;
}
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:visited,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:hover,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:focus,
div.luxtools-calendar.luxtools-calendar-size-small td.luxtools-calendar-day > span.curid > a:active {
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:visited,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:hover,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:focus,
div.luxtools-calendar.luxtools-calendar-size-small
td.luxtools-calendar-day
> span.curid
> a:active {
font-weight: bold;
text-decoration: underline;
border-bottom: 0;
@@ -654,7 +716,8 @@ div.luxtools-calendar td.luxtools-calendar-day:hover {
background-color: @ini_background_alt;
}
div.luxtools-calendar td.luxtools-calendar-day.luxtools-calendar-day-today:hover {
div.luxtools-calendar
td.luxtools-calendar-day.luxtools-calendar-day-today:hover {
background-color: @ini_highlight;
}
@@ -668,7 +731,9 @@ div.luxtools-calendar td.luxtools-calendar-day {
position: relative;
}
div.luxtools-calendar.luxtools-calendar-size-large table.luxtools-calendar-table td {
div.luxtools-calendar.luxtools-calendar-size-large
table.luxtools-calendar-table
td {
text-align: left;
vertical-align: top;
}
@@ -677,25 +742,36 @@ div.luxtools-calendar.luxtools-calendar-size-large td.luxtools-calendar-day {
height: 8.25em;
}
div.luxtools-calendar.luxtools-calendar-size-large td.luxtools-calendar-day-empty {
div.luxtools-calendar.luxtools-calendar-size-large
td.luxtools-calendar-day-empty {
height: 8.25em;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-frame {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-frame {
min-height: 8.25em;
padding: 0.35em 0.4em 0.4em 0.4em;
box-sizing: border-box;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number {
text-align: right;
margin-bottom: 0.25em;
line-height: 1.1;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number > a,
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number > span.curid > a,
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number span.curid > a {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
> a,
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
> span.curid
> a,
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
span.curid
> a {
display: inline;
min-height: 0;
padding: 0;
@@ -706,18 +782,30 @@ div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number
font-weight: bold;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number > a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number > a.wikilink2:visited,
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number span.curid > a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-number span.curid > a.wikilink2:visited {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
> a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
> a.wikilink2:visited,
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
span.curid
> a.wikilink2:link,
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-number
span.curid
> a.wikilink2:visited {
color: @ini_missing;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-events {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-events {
overflow: hidden;
}
div.luxtools-calendar.luxtools-calendar-size-large ul.luxtools-calendar-event-list {
div.luxtools-calendar.luxtools-calendar-size-large
ul.luxtools-calendar-event-list {
list-style: none;
margin: 0;
padding: 0;
@@ -735,17 +823,20 @@ div.luxtools-calendar.luxtools-calendar-size-large li.luxtools-calendar-event {
cursor: pointer;
}
div.luxtools-calendar.luxtools-calendar-size-large li.luxtools-calendar-event:hover {
div.luxtools-calendar.luxtools-calendar-size-large
li.luxtools-calendar-event:hover {
background-color: @ini_highlight;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-event-time {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-event-time {
flex: 0 0 auto;
font-weight: bold;
white-space: nowrap;
}
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-event-title {
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-event-title {
flex: 1 1 auto;
min-width: 0;
white-space: nowrap;
@@ -753,7 +844,8 @@ div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-event-titl
text-overflow: ellipsis;
}
div.luxtools-calendar.luxtools-calendar-size-large li.luxtools-calendar-event-more {
div.luxtools-calendar.luxtools-calendar-size-large
li.luxtools-calendar-event-more {
border-left-color: @ini_border;
justify-content: flex-end;
font-style: italic;
@@ -761,8 +853,10 @@ div.luxtools-calendar.luxtools-calendar-size-large li.luxtools-calendar-event-mo
@media (max-width: 800px) {
div.luxtools-calendar.luxtools-calendar-size-large td.luxtools-calendar-day,
div.luxtools-calendar.luxtools-calendar-size-large td.luxtools-calendar-day-empty,
div.luxtools-calendar.luxtools-calendar-size-large .luxtools-calendar-day-frame {
div.luxtools-calendar.luxtools-calendar-size-large
td.luxtools-calendar-day-empty,
div.luxtools-calendar.luxtools-calendar-size-large
.luxtools-calendar-day-frame {
height: 7em;
min-height: 7em;
}
@@ -807,7 +901,6 @@ div.luxtools-calendar.luxtools-calendar-size-large li.luxtools-calendar-event-mo
clip-path: polygon(0 0, 0 100%, 100% 100%);
}
/* ============================================================
* Chronological Events on Day Pages
* ============================================================ */
@@ -833,7 +926,6 @@ div.luxtools-chronological-events li[data-luxtools-event] .luxtools-event-time {
margin-right: 0.25em;
}
/* ============================================================
* Maintenance Tasks
* ============================================================ */
@@ -868,7 +960,6 @@ button.luxtools-task-complete-btn:disabled {
cursor: wait;
}
/* ============================================================
* Maintenance Task List (syntax plugin)
* ============================================================ */
@@ -907,61 +998,10 @@ li.luxtools-task-overdue .luxtools-task-date {
text-decoration: line-through;
}
/* ============================================================
* Event Popup
* Event Popup (content-specific styles structural dialog
* styles live in dialog.css)
* ============================================================ */
.luxtools-event-popup-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
z-index: 10000;
justify-content: center;
align-items: center;
}
.luxtools-event-popup {
background: @ini_background;
border: 1px solid @ini_border;
border-radius: 0.4em;
padding: 1.5em;
max-width: 500px;
width: 90%;
max-height: 80vh;
overflow-y: auto;
position: relative;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.luxtools-event-popup-close {
position: absolute;
top: 0.5em;
right: 0.75em;
background: none;
border: none;
font-size: 1.5em;
cursor: pointer;
color: @ini_text;
line-height: 1;
}
.luxtools-event-popup-close:hover {
opacity: 0.7;
}
.luxtools-event-popup-title {
margin: 0 0 0.75em 0;
padding-right: 1.5em;
}
.luxtools-event-popup-field {
margin: 0.5em 0;
}
.luxtools-event-popup-description {
white-space: pre-wrap;
word-break: break-word;
@@ -973,16 +1013,6 @@ li.luxtools-task-overdue .luxtools-task-date {
font-size: 0.9em;
}
/* Event popup action buttons */
.luxtools-event-popup-actions {
margin-top: 1em;
padding-top: 0.75em;
border-top: 1px solid @ini_border;
display: flex;
flex-wrap: wrap;
gap: 0.5em;
}
.luxtools-recurrence-actions {
flex-direction: column;
}
@@ -1051,7 +1081,6 @@ td.luxtools-calendar-day[data-luxtools-day] {
cursor: pointer;
}
/* ============================================================
* Notifications (fallback)
* ============================================================ */