Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e695d6699 | ||
|
|
bc81e8403d | ||
|
|
f4bb9323da |
@@ -4,7 +4,7 @@
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-active {
|
||||
--ncc-type-scale: 1;
|
||||
--ncc-content-scale: 1;
|
||||
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
@@ -12,6 +12,7 @@
|
||||
overflow: hidden;
|
||||
padding: 42px 48px;
|
||||
background: #11110f;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-qr {
|
||||
@@ -46,19 +47,26 @@
|
||||
height: 144px;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-recipe header {
|
||||
box-sizing: border-box;
|
||||
min-height: 175px;
|
||||
padding-right: 220px;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-recipe h1 {
|
||||
margin: 0 220px calc(26px * var(--ncc-type-scale)) 0;
|
||||
margin: 0 0 26px;
|
||||
color: #fff6d8;
|
||||
font-size: calc(82px * var(--ncc-type-scale));
|
||||
font-size: 82px;
|
||||
line-height: 1.08;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px 22px;
|
||||
align-items: baseline;
|
||||
margin: 0 0 calc(36px * var(--ncc-type-scale));
|
||||
font-size: calc(36px * var(--ncc-type-scale));
|
||||
margin: 0 0 36px;
|
||||
font-size: 36px;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-meta dt {
|
||||
@@ -71,27 +79,35 @@
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-columns {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-layout-stacked section:first-child {
|
||||
margin-bottom: calc(42px * var(--ncc-content-scale));
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-layout-side-by-side {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(260px, 0.8fr) minmax(400px, 1.4fr);
|
||||
gap: 42px;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-columns h2 {
|
||||
margin: 0 0 calc(18px * var(--ncc-type-scale));
|
||||
margin: 0 0 calc(18px * var(--ncc-content-scale));
|
||||
color: #d6b96b;
|
||||
font-size: calc(56px * var(--ncc-type-scale));
|
||||
font-size: calc(56px * var(--ncc-content-scale));
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-columns ul,
|
||||
.MMM-NextcloudCookbook .ncc-columns ol {
|
||||
margin: 0;
|
||||
padding-left: 1.25em;
|
||||
font-size: calc(50px * var(--ncc-type-scale));
|
||||
font-size: calc(50px * var(--ncc-content-scale));
|
||||
line-height: 1.36;
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-columns li {
|
||||
margin-bottom: calc(18px * var(--ncc-type-scale));
|
||||
margin-bottom: calc(18px * var(--ncc-content-scale));
|
||||
}
|
||||
|
||||
.MMM-NextcloudCookbook .ncc-error {
|
||||
|
||||
@@ -5,6 +5,7 @@ Module.register("MMM-NextcloudCookbook", {
|
||||
controlPath: "/MMM-NextcloudCookbook/control",
|
||||
controlUrl: "",
|
||||
animationSpeed: 400,
|
||||
layout: "stacked",
|
||||
shareUrl: "",
|
||||
sharePassword: ""
|
||||
},
|
||||
@@ -57,7 +58,7 @@ Module.register("MMM-NextcloudCookbook", {
|
||||
|
||||
for (let attempt = 0; attempt < 12; attempt++) {
|
||||
const scale = (minimum + maximum) / 2;
|
||||
root.style.setProperty("--ncc-type-scale", scale);
|
||||
root.style.setProperty("--ncc-content-scale", scale);
|
||||
const fits = recipe.scrollHeight <= availableHeight
|
||||
&& recipe.scrollWidth <= availableWidth;
|
||||
if (fits) {
|
||||
@@ -67,7 +68,7 @@ Module.register("MMM-NextcloudCookbook", {
|
||||
maximum = scale;
|
||||
}
|
||||
}
|
||||
root.style.setProperty("--ncc-type-scale", best.toFixed(3));
|
||||
root.style.setProperty("--ncc-content-scale", best.toFixed(3));
|
||||
},
|
||||
|
||||
setRecipeMode(active) {
|
||||
@@ -156,7 +157,8 @@ Module.register("MMM-NextcloudCookbook", {
|
||||
article.appendChild(header);
|
||||
|
||||
const columns = document.createElement("div");
|
||||
columns.className = "ncc-columns";
|
||||
const layout = this.config.layout === "side-by-side" ? "side-by-side" : "stacked";
|
||||
columns.className = `ncc-columns ncc-layout-${layout}`;
|
||||
|
||||
const ingredients = document.createElement("section");
|
||||
const ingredientsTitle = document.createElement("h2");
|
||||
|
||||
@@ -16,11 +16,20 @@ link; it should look like `https://cloud.example.test/s/SHARE_TOKEN`.
|
||||
position: "bottom_right",
|
||||
config: {
|
||||
shareUrl: "https://cloud.example.test/s/SHARE_TOKEN",
|
||||
controlUrl: "http://mirror.example.test:8080/MMM-NextcloudCookbook/control"
|
||||
controlUrl: "http://mirror.example.test:8080/MMM-NextcloudCookbook/control",
|
||||
layout: "stacked"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`layout` controls the full-screen recipe arrangement. Its default value,
|
||||
`"stacked"`, displays the ingredients above the instructions. Set it to
|
||||
`"side-by-side"` to display ingredients and instructions in two columns. Both
|
||||
layouts automatically scale the ingredient and instruction sections to make
|
||||
the best use of the available screen while keeping all recipe content visible.
|
||||
The recipe title, timing metadata, yield, and QR controller remain at fixed
|
||||
sizes.
|
||||
|
||||
The configured `position` controls where the QR controller appears during the
|
||||
normal MagicMirror layout. When a recipe is activated, the module displays a
|
||||
fixed full-screen overlay regardless of that region. Exiting recipe mode
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "mmm-nextcloud-cookbook",
|
||||
"version": "0.1.1",
|
||||
"version": "0.2.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "mmm-nextcloud-cookbook",
|
||||
"version": "0.1.1",
|
||||
"version": "0.2.1",
|
||||
"dependencies": {
|
||||
"fast-xml-parser": "5.10.1",
|
||||
"qrcode": "1.5.4"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mmm-nextcloud-cookbook",
|
||||
"version": "0.1.1",
|
||||
"version": "0.2.1",
|
||||
"private": true,
|
||||
"description": "Display recipes from a Nextcloud Cookbook share on MagicMirror",
|
||||
"main": "node_helper.js",
|
||||
|
||||
Reference in New Issue
Block a user