menu css and wire

This commit is contained in:
2026-06-28 17:03:17 -03:00
parent 4597c6c61c
commit e6479c9ed9
3 changed files with 26 additions and 11 deletions

View File

@@ -13,8 +13,10 @@
* breathing room). A fixed-px budget is more reliable than a proportional vh value * breathing room). A fixed-px budget is more reliable than a proportional vh value
* because that chrome is a fixed height regardless of screen size. * because that chrome is a fixed height regardless of screen size.
* *
* Tune the single number below (240px) if the scrollbar is still clipped or if you * The pixel budget is the --sv-shrink-offset CSS variable. It is injected in the
* want the columns taller. * page head from the plugin setting (Settings -> Shrink Vertically); when unset it
* falls back to 240px below. Increase it if the scrollbar is still clipped, or
* decrease it to make the columns taller.
* *
* The selector is intentionally more specific than core's single-class rule, and * The selector is intentionally more specific than core's single-class rule, and
* uses !important, so this override wins even alongside a theme (e.g. Essential). * uses !important, so this override wins even alongside a theme (e.g. Essential).
@@ -27,6 +29,6 @@
* (non-important) min-height, so we reset it to 0 and let max-height win. * (non-important) min-height, so we reset it to 0 and let max-height win.
*/ */
#board td .board-task-list.board-task-list-compact { #board td .board-task-list.board-task-list-compact {
max-height: calc(100vh - 240px) !important; max-height: calc(100vh - var(--sv-shrink-offset, 240px)) !important;
min-height: 0 !important; min-height: 0 !important;
} }

View File

@@ -14,11 +14,17 @@ class Plugin extends Base
'template' => 'plugins/ShrinkVertically/Asset/css/shrink-vertically.css', 'template' => 'plugins/ShrinkVertically/Asset/css/shrink-vertically.css',
)); ));
// Inject the configured pixel offset as a CSS variable in the page head.
$this->template->hook->attach('template:layout:head', 'shrinkVertically:layout/variable');
// Append a "+" to the two vertical-collapse menu labels so it is visible // Append a "+" to the two vertical-collapse menu labels so it is visible
// that the behaviour is modified by this plugin. // that the behaviour is modified by this plugin.
$this->hook->on('template:layout:js', array( $this->hook->on('template:layout:js', array(
'template' => 'plugins/ShrinkVertically/Asset/js/shrink-vertically.js', 'template' => 'plugins/ShrinkVertically/Asset/js/shrink-vertically.js',
)); ));
// Add a "Shrink Vertically" entry to the Settings sidebar.
$this->template->hook->attach('template:config:sidebar', 'shrinkVertically:config/sidebar');
} }
public function getPluginName() public function getPluginName()
@@ -38,7 +44,7 @@ class Plugin extends Base
public function getPluginVersion() public function getPluginVersion()
{ {
return '0.1.0'; return '0.4.0';
} }
public function getPluginHomepage() public function getPluginHomepage()

View File

@@ -25,13 +25,19 @@ list:
```css ```css
#board td .board-task-list.board-task-list-compact { #board td .board-task-list.board-task-list-compact {
max-height: calc(100vh - 240px) !important; max-height: calc(100vh - var(--sv-shrink-offset, 240px)) !important;
min-height: 0 !important;
} }
``` ```
The `240px` reserves room for the page header, the board column header, the horizontal The offset reserves room for the page header, the board column header, the horizontal
scrollbar, and a little breathing space. A fixed-pixel budget is more reliable than a scrollbar, and a little breathing space. A fixed-pixel budget is more reliable than a
proportional value because that chrome is a fixed height regardless of screen size. proportional value because that chrome is a fixed height regardless of screen size. It
defaults to `240px` and is configurable (see Settings below).
The `min-height: 0` is essential: Kanboard's drag-and-drop sets an inline `min-height` on
each column equal to its full content height, and in CSS `min-height` beats `max-height`,
so without this reset the tall columns would never shrink.
The override only applies while columns are collapsed (when core adds the The override only applies while columns are collapsed (when core adds the
`board-task-list-compact` class). It changes no data and runs no database migration. `board-task-list-compact` class). It changes no data and runs no database migration.
@@ -53,11 +59,12 @@ Copy this folder into your Kanboard installation as `plugins/ShrinkVertically/`.
directory name must be exactly `ShrinkVertically` (Kanboard derives the plugin namespace directory name must be exactly `ShrinkVertically` (Kanboard derives the plugin namespace
from the folder name). Reload the board; no build step, no configuration. from the folder name). Reload the board; no build step, no configuration.
## Tuning ## Settings
Edit the single `240px` value in `Asset/css/shrink-vertically.css`. Increase it if the Go to "Settings -> Shrink Vertically" to set the pixel offset. The value is stored in the
scrollbar is still clipped (for example with a taller theme header); decrease it to make Kanboard configuration and injected in the page head as the `--sv-shrink-offset` CSS
the collapsed columns taller. variable. Increase it if the scrollbar is still clipped (for example with a taller theme
header); decrease it to make the collapsed columns taller. Default: 240.
## License ## License