+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/layouts/partials/download.html b/layouts/partials/download.html
index 68b52f75..a6405403 100644
--- a/layouts/partials/download.html
+++ b/layouts/partials/download.html
@@ -1,4 +1,4 @@
-{{ .title }}
- {{ .content | markdownify | emojify }}
+
{{ .content }}
+
+ {{ range $id, $topic := sort $topics "titleLength" "desc" }}
+
diff --git a/layouts/shortcodes/audio.html b/layouts/shortcodes/audio.html
index ca7efc81..91ef74d1 100644
--- a/layouts/shortcodes/audio.html
+++ b/layouts/shortcodes/audio.html
@@ -1,3 +1,3 @@
-
{{ .title }}
Download diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html index af69f5b6..9ded637e 100644 --- a/layouts/partials/footer.html +++ b/layouts/partials/footer.html @@ -49,7 +49,7 @@
-
{{ .Site.Params.copyright | markdownify | emojify }}
+Copyright © {{ time.Format "2006" now }} {{ .Site.Params.copyright | markdownify | emojify }}
-
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index c7508c39..24bd1373 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -17,11 +17,16 @@
+ {{ range .Site.Params.plugins.head_js }}
+
+ {{ end }}
+
+ });
-
- {{ range .Site.Params.plugins.head_js }}
-
- {{ end }}
+ $('#pagefind-search').on('shown.bs.modal', () => {
+ $('.pagefind-ui__search-input').focus();
+ });
+ });
+ })(jQuery);
+
- {{ .Content }}
-
+ {{ $topic.topic.title | safeHTML }}
+
+ {{ end }}
+
+
\ No newline at end of file
diff --git a/layouts/shortcodes/card.html b/layouts/shortcodes/card.html
index 64a27e17..43a9c640 100644
--- a/layouts/shortcodes/card.html
+++ b/layouts/shortcodes/card.html
@@ -1,4 +1,4 @@
-
+
{{ .Get "title" }}
Mehr anzeigen diff --git a/layouts/shortcodes/gallery.html b/layouts/shortcodes/gallery.html index be73fb21..b5addd88 100644 --- a/layouts/shortcodes/gallery.html +++ b/layouts/shortcodes/gallery.html @@ -1,4 +1,4 @@ -
+
{{ $dir := trim (.Get "dir") "/" }}
{{ with $dir }}
{{ $files := readDir (print "/static/" .) }}
diff --git a/layouts/shortcodes/image.html b/layouts/shortcodes/image.html
index 9f7ddbc8..159ea389 100644
--- a/layouts/shortcodes/image.html
+++ b/layouts/shortcodes/image.html
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/layouts/shortcodes/slider.html b/layouts/shortcodes/slider.html
index b10a75d1..d59ca6c5 100644
--- a/layouts/shortcodes/slider.html
+++ b/layouts/shortcodes/slider.html
@@ -1,7 +1,7 @@
{{ $dir := (.Get "dir") }}
{{ if $dir }}
-
-
+
+
{{ $images := slice }}
{{ range readDir (print "/static/" $dir) }}
{{ if (lower .Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp|webp|avif|jxl)") }}
diff --git a/layouts/shortcodes/youtube.html b/layouts/shortcodes/youtube.html
index a63ac426..84b342b4 100644
--- a/layouts/shortcodes/youtube.html
+++ b/layouts/shortcodes/youtube.html
@@ -1,10 +1,10 @@
-{{- $pc := .Page.Site.Config.Privacy.YouTube -}}
-{{- if not $pc.Disable -}}
-{{- $ytHost := cond $pc.PrivacyEnhanced "piped.kavin.rocks" "www.youtube.com" -}}
-{{- $id := .Get "id" | default (.Get 0) -}}
-{{- $class := .Get "class" | default (.Get 1) -}}
-{{- $title := .Get "title" | default "YouTube Video" }}
-
-
-
-{{ end -}}
\ No newline at end of file
+{{ $pc := .Page.Site.Config.Privacy.YouTube }}
+{{ if not $pc.Disable }}
+ {{ $ytHost := cond $pc.PrivacyEnhanced "piped.kavin.rocks" "www.youtube.com" }}
+ {{ $id := .Get "id" | default (.Get 0) }}
+ {{ $class := .Get "class" | default (.Get 1) }}
+ {{ $title := .Get "title" | default "YouTube Video" }}
+
+
+
+{{ end }}
\ No newline at end of file
diff --git a/static/admin/config/collections/chronikjahre.js b/static/admin/config/collections/chronikjahre.js
index 9301d373..1a3cd88a 100644
--- a/static/admin/config/collections/chronikjahre.js
+++ b/static/admin/config/collections/chronikjahre.js
@@ -1,4 +1,4 @@
-import { MarkdownProps } from "../props.js";
+import { MarkdownProps, EditorProps } from "../props.js";
import { DraftBoolean, EnableBoolean } from "./widgets.js";
const ChronikjahreCollection = {
@@ -13,11 +13,7 @@ const ChronikjahreCollection = {
field: "type",
value: "schulchronik",
},
- create: true,
- editor: {
- preview: false,
- size: "half",
- },
+ ...EditorProps,
summary_fields: ["title", "draft", "cantorpreisträger", "topics"],
sortable_fields: {
fields: ["title"],
@@ -44,7 +40,20 @@ const ChronikjahreCollection = {
label: "Einleitung",
hint: "Text für die Jahreszahl",
required: false,
- ...MarkdownProps,
+ widget: "object",
+ fields: [
+ EnableBoolean,
+ {
+ name: "content",
+ label: "Text",
+ condition: {
+ field: "pretext.enable",
+ value: true,
+ },
+ required: false,
+ ...MarkdownProps,
+ }
+ ]
},
{
name: "topics",
@@ -53,6 +62,7 @@ const ChronikjahreCollection = {
widget: "list",
required: false,
collapsed: true,
+ max: 4,
fields: [
{
name: "title",
@@ -63,6 +73,10 @@ const ChronikjahreCollection = {
{
name: "content",
label: "Inhalt",
+ condition: {
+ field: "superhaufen.enable",
+ value: false,
+ },
required: false,
...MarkdownProps,
},
@@ -80,6 +94,10 @@ const ChronikjahreCollection = {
collection: "superhaufen",
search_fields: ["title"],
value_field: "title",
+ condition: {
+ field: "superhaufen.enable",
+ value: true,
+ },
required: false,
collapsed: true,
},
@@ -96,13 +114,6 @@ const ChronikjahreCollection = {
value_field: "name",
required: false,
},
- {
- name: "body",
- label: "Text",
- hint: "Erscheint zusätzlich zu den Kreativen Haufen",
- required: false,
- ...MarkdownProps,
- },
],
};
diff --git a/static/admin/previews/page-previews/chronik-preview.js b/static/admin/previews/page-previews/chronik-preview.js
index e38cb52e..ed0b2a69 100644
--- a/static/admin/previews/page-previews/chronik-preview.js
+++ b/static/admin/previews/page-previews/chronik-preview.js
@@ -1,78 +1,79 @@
import { PageHeader } from "./components/index.js";
const ChronikPreview = ({ widgetFor, widgetsFor, entry, document, window }) => {
- /*return [PageHeader,
- h('section', {className: "section"},
- h('div', {className: "container"},
- h('div', {className: "row"},
- h('div', {className: "col-12 mb-4 content"},
- widgetsFor('topics').map(function(i, index) {
- return h('div', {"id": i.data.id, className: "modal"},
- h('div', {className: "modal-dialog modal-lg", "role": "document"},
- h('div', {className: "modal-content"},
- h('div', {className: "modal-header"},
- h('h5', {className: "modal-title"}, i.data.title),
- h('button', {className: "close", type: "button", "dataDismiss": "modal", "ariaLabel": "Close"},
- h('span', {"ariaHidden": "true"}, '\u{00d7}')
- )
- ),
- h('div', {className: "modal-body"},
- h('div', {className: "content"}, i.content)
- )
- )
- )
- );
- }),
- entry.data.pretext != "" && entry.data.pretext != null ? h('div', {"id": "pretext", className: "modal"},
- h('div', {className: "modal-dialog modal-lg", "role": "document"},
- h('div', {className: "modal-content"},
- h('div', {className: "modal-header"},
- h('h5', {className: "modal-title"}, entry.data.title),
- h('button', {className: "close", type: "button", "dataDismiss": "modal", "ariaLabel": "Close"},
- h('span', {"ariaHidden": "true"}, '\u{00d7}')
- )
- ),
- h('div', {className: "modal-body"},
- h('div', {className: "content"}, widgetFor('pretext'))
- )
- )
- )
- ) : null,
- h('div', {"id": "wc-canvas"}),
- () => {
- var topics = [[entry.data.title, 100, "pretext"]];
- widgetsFor('topics').map(function(i, index) {
- topics.push([i.data.title, 40, i.data.id]);
- });
- var script = document.createElement('script');
- var div = document.getElementById('sc-root');
- div.appendChild(script);
- WordCloud(
- document.getElementById('wc-canvas'),
- {
- click: function (item) {
- if (item[1] != 100 || (item[1] == 100 && item[2] == "pretext")) {
- $('#' + item[2]).modal('show');
- }
- },
- color: function (word, weight) {
- return (weight === 100) ? '#ffbc3b' : '#1a1a37';
- },
- fontFamily: 'Fira Sans, serif',
- fontWeight: 800,
- list: topics,
- shrinkToFit: true,
- gridSize: 25,
- rotateRatio: 0,
- }
- );
- },
- widgetFor('body')
- )
- )
- )
+ return [
+ PageHeader(entry),
+ h(
+ "section",
+ { className: "section" },
+ h(
+ "div",
+ { className: "container" },
+ h(
+ "div",
+ { className: "card-group" },
+ h(
+ "div",
+ { className: "card d-flex flex-row flex-wrap" },
+ h("img", {
+ src: "https://cantorgymnasium.de/media/people/gcg.webp",
+ className: "rounded-circle object-cover m-3",
+ width: "128px",
+ height: "128px",
+ }),
+ h(
+ "div",
+ { className: "flex-grow card-body min-w-0" },
+ h("h3", { className: "card-title" }, "Cantorpreisträger"),
+ h(
+ "p",
+ { className: "h4 card-text" },
+ widgetFor("cantorpreisträger")
+ )
)
- ];*/
+ ),
+ h(
+ "div",
+ { className: "card d-flex flex-row flex-wrap-reverse" },
+ h(
+ "div",
+ { className: "flex-grow card-body min-w-0" },
+ h(
+ "h3",
+ { className: "card-title" },
+ "Abiturienten " + entry.data.title
+ ),
+ h("p", { className: "h4 card-text" }, "Abiturdurchschnitt: 0.00")
+ ),
+ h("img", {
+ src: "https://cantorgymnasium.de/media/people/gcg.webp",
+ className: "rounded-circle object-cover m-3",
+ width: "128px",
+ height: "128px",
+ })
+ )
+ ),
+ h(
+ "div",
+ { className: "kh-parent" },
+ h(
+ "div",
+ { className: "kh-jahr h1" },
+ h("span", {}, entry.data.title)
+ ),
+ widgetsFor("topics")
+ .sort((a, b) => b.data.title.length - a.data.title.length)
+ .map((topic, index) =>
+ h(
+ "div",
+ { className: "kh h3", "data-id": `${index}` },
+ h("span", {}, topic.data.title)
+ )
+ )
+ )
+ )
+ ),
+ ];
};
export default ChronikPreview;
diff --git a/static/admin/previews/page-previews/styles.js b/static/admin/previews/page-previews/styles.js
index 91bcd227..4db35a1c 100644
--- a/static/admin/previews/page-previews/styles.js
+++ b/static/admin/previews/page-previews/styles.js
@@ -3,7 +3,7 @@ const PreviewStyles = [
"https://assets.cantorgymnasium.de/fonts/fira/fira.css",
"https://assets.cantorgymnasium.de/fonts/ubuntu/ubuntu.css",
"https://assets.cantorgymnasium.de/fonts/mdi/v7/css/materialdesignicons.min.css",
- "https://cantorgymnasium.de/css/style.min.css",
+ "/css/style.min.css",
];
export default PreviewStyles;
diff --git a/static/admin/shortcodes/audio.js b/static/admin/shortcodes/audio.js
index 3aa0449e..abb22e45 100644
--- a/static/admin/shortcodes/audio.js
+++ b/static/admin/shortcodes/audio.js
@@ -1,4 +1,4 @@
-import { Card, TextField } from "./components/index.js";
+import { Card, TextField, Label } from "./components.js";
const AudioShortcode = {
label: "Audiodatei",
@@ -33,24 +33,31 @@ const AudioShortcode = {
);
return Card([
- TextField({
- label: "Audiodatei",
- value: src,
- onChange: (event) => {
- onChange({ src: event.target.value });
- },
- }),
+ Label("Audiodatei"),
h(
"span",
- { key: "audio-button", className: "CMS_WidgetDateTime_NowButton_root" },
- h(
- "button",
- {
- type: "button",
- onClick: handleOpenMediaLibrary,
- className: "CMS_Button_root CMS_Button_outlined-primary",
+ { className: "CMS_WidgetDateTime_inputs" },
+ TextField({
+ value: src,
+ onChange: (event) => {
+ onChange({ src: event.target.value });
},
- "wählen"
+ }),
+ h(
+ "span",
+ {
+ key: "audio-button",
+ className: "CMS_WidgetDateTime_NowButton_root",
+ },
+ h(
+ "button",
+ {
+ type: "button",
+ onClick: handleOpenMediaLibrary,
+ className: "CMS_Button_root CMS_Button_outlined-primary",
+ },
+ "wählen"
+ )
)
),
]);
diff --git a/static/admin/shortcodes/card.js b/static/admin/shortcodes/card.js
index f8771dc5..b08edd0b 100644
--- a/static/admin/shortcodes/card.js
+++ b/static/admin/shortcodes/card.js
@@ -1,4 +1,4 @@
-import { Card, TextField } from "./components/index.js";
+import { Card, TextField, Label } from "./components.js";
const CardShortcode = {
label: "Link-Karte",
@@ -27,15 +27,15 @@ const CardShortcode = {
},
control: ({ title, link, onChange }) => {
return Card([
+ Label("Titel"),
TextField({
- label: "Titel",
value: title,
onChange: (event) => {
onChange({ title: event.target.value.trimStart(), link });
},
}),
+ Label("Link"),
TextField({
- label: "Link",
value: link,
onChange: (event) => {
onChange({ title, link: event.target.value });
diff --git a/static/admin/shortcodes/components.js b/static/admin/shortcodes/components.js
new file mode 100644
index 00000000..1b1941cb
--- /dev/null
+++ b/static/admin/shortcodes/components.js
@@ -0,0 +1,58 @@
+const Card = (children, opts = { vertical: false }) =>
+ h(
+ "span",
+ {
+ className:
+ "CMS_Card_root CMS_Field_root CMS_WidgetString_root CMS_WidgetString_required CMS_Field_cursor-text CMS_WidgetMarkdown_Paragraph_root" +
+ (opts.vertical ? " flex-col" : ""),
+ },
+ h("span", { className: "CMS_Field_wrapper" }, children)
+ );
+
+const Image = ({ assetSource, handleOpenMediaLibrary }) =>
+ h(
+ "span",
+ { className: "CMS_WidgetFileImage_content" },
+ h(
+ "span",
+ {},
+ h("img", {
+ role: "presentation",
+ src: assetSource,
+ className: "CMS_Image_root",
+ })
+ ),
+ h(
+ "span",
+ { className: "CMS_WidgetFileImage_actions" },
+ h(
+ "button",
+ {
+ type: "button",
+ onClick: handleOpenMediaLibrary,
+ className: "CMS_Button_root CMS_Button_outlined-primary",
+ },
+ "Bild auswählen"
+ )
+ )
+ );
+
+const TextField = ({ value, onChange }) =>
+ h("input", {
+ className:
+ "MuiInput-input CMS_TextField_input CMS_WidgetString_input CMS_TextField_borderless CMS_Label_cursor-text",
+ type: "text",
+ value,
+ onChange,
+ });
+
+const Label = (label) =>
+ h(
+ "label",
+ {
+ className: "CMS_Label_root CMS_Label_cursor-pointer",
+ },
+ label
+ );
+
+export { Card, Image, TextField, Label };
diff --git a/static/admin/shortcodes/components/card.js b/static/admin/shortcodes/components/card.js
deleted file mode 100644
index 87468dbd..00000000
--- a/static/admin/shortcodes/components/card.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const Card = (child, opts = { vertical: false }) =>
- h(
- "span",
- {
- className:
- "CMS_Card_root CMS_Field_root CMS_WidgetString_root CMS_WidgetString_required CMS_Field_cursor-text CMS_WidgetMarkdown_Paragraph_root" +
- (opts.vertical ? " flex-col" : ""),
- },
- child
- );
-
-export default Card;
diff --git a/static/admin/shortcodes/components/image.js b/static/admin/shortcodes/components/image.js
deleted file mode 100644
index 91995b32..00000000
--- a/static/admin/shortcodes/components/image.js
+++ /dev/null
@@ -1,40 +0,0 @@
-const Image = ({ label, assetSource, handleOpenMediaLibrary }) =>
- h(
- "span",
- { className: "CMS_Field_wrapper" },
- h(
- "label",
- {
- className: "CMS_Label_root CMS_Label_cursor-pointer",
- },
- label
- ),
- h(
- "span",
- { className: "CMS_WidgetFileImage_content" },
- h(
- "span",
- {},
- h("img", {
- role: "presentation",
- src: assetSource,
- className: "CMS_Image_root",
- })
- ),
- h(
- "span",
- { className: "CMS_WidgetFileImage_actions" },
- h(
- "button",
- {
- type: "button",
- onClick: handleOpenMediaLibrary,
- className: "CMS_Button_root CMS_Button_outlined-primary",
- },
- "Bild auswählen"
- )
- )
- )
- );
-
-export default Image;
diff --git a/static/admin/shortcodes/components/index.js b/static/admin/shortcodes/components/index.js
deleted file mode 100644
index ebfbcc3f..00000000
--- a/static/admin/shortcodes/components/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import Card from "./card.js";
-import TextField from "./text-field.js";
-import Image from "./image.js";
-
-export { Card, TextField, Image };
diff --git a/static/admin/shortcodes/components/text-field.js b/static/admin/shortcodes/components/text-field.js
deleted file mode 100644
index be227327..00000000
--- a/static/admin/shortcodes/components/text-field.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const TextField = ({ label, value, onChange }) =>
- h(
- "span",
- { key: "text-" + label, className: "CMS_Field_wrapper" },
- h(
- "label",
- {
- className: "CMS_Label_root CMS_TextField_cursor-default",
- },
- label
- ),
- h("input", {
- className:
- "MuiInput-input CMS_TextField_input CMS_WidgetString_input CMS_TextField_borderless CMS_Label_cursor-text",
- type: "text",
- value,
- onChange,
- })
- );
-
-export default TextField;
diff --git a/static/admin/shortcodes/download.js b/static/admin/shortcodes/download.js
index b8527936..4c3848ff 100644
--- a/static/admin/shortcodes/download.js
+++ b/static/admin/shortcodes/download.js
@@ -1,4 +1,4 @@
-import { Card, TextField } from "./components/index.js";
+import { Card, TextField, Label } from "./components.js";
const DownloadShortcode = {
label: "Download-Karte",
@@ -39,24 +39,20 @@ const DownloadShortcode = {
);
return Card([
+ Label("Titel"),
TextField({
- label: "Titel",
value: title,
onChange: (event) => {
onChange({ title: event.target.value.trimStart(), link });
},
}),
+ Label("Download-Link"),
h(
"span",
{
- style: {
- display: "flex",
- "flex-direction": "row",
- "align-items": "end",
- },
+ class: "CMS_WidgetDateTime_inputs"
},
TextField({
- label: "Download-Link",
value: link,
onChange: (event) => {
onChange({ title, link: event.target.value });
diff --git a/static/admin/shortcodes/gallery.js b/static/admin/shortcodes/gallery.js
index f4708bba..4dcc86f3 100644
--- a/static/admin/shortcodes/gallery.js
+++ b/static/admin/shortcodes/gallery.js
@@ -1,4 +1,4 @@
-import { Card, TextField } from "./components/index.js";
+import { Card, TextField, Label } from "./components.js";
const GalleryShortcode = {
label: "Bildergallerie",
@@ -34,27 +34,31 @@ const GalleryShortcode = {
);
return Card([
- TextField({
- label: "Gallerie-Ordner",
- value: dir,
- onChange: (event) => {
- onChange({ dir: event.target.value });
- },
- }),
+ Label("Galerie-Ordner"),
h(
"span",
- {
- key: "gallery-button",
- className: "CMS_WidgetDateTime_NowButton_root",
- },
- h(
- "button",
- {
- type: "button",
- onClick: handleOpenMediaLibrary,
- className: "CMS_Button_root CMS_Button_outlined-primary",
+ { className: "CMS_WidgetDateTime_inputs" },
+ TextField({
+ value: dir,
+ onChange: (event) => {
+ onChange({ dir: event.target.value });
},
- "wählen"
+ }),
+ h(
+ "span",
+ {
+ key: "gallery-button",
+ className: "CMS_WidgetDateTime_NowButton_root",
+ },
+ h(
+ "button",
+ {
+ type: "button",
+ onClick: handleOpenMediaLibrary,
+ className: "CMS_Button_root CMS_Button_outlined-primary",
+ },
+ "wählen"
+ )
)
),
]);
diff --git a/static/admin/shortcodes/image.js b/static/admin/shortcodes/image.js
index 7256f404..f91cb7b3 100644
--- a/static/admin/shortcodes/image.js
+++ b/static/admin/shortcodes/image.js
@@ -1,4 +1,4 @@
-import { Card, Image } from "./components/index.js";
+import { Card, Image, Label } from "./components.js";
import { md5 } from "../previews/page-previews/components/index.js";
const ImageShortcode = {
@@ -36,13 +36,13 @@ const ImageShortcode = {
);
const assetSource = useMediaAsset(src, collection, field, entry);
- return Card(
+ return Card([
+ Label("Bild"),
Image({
- label: "Bild",
assetSource,
handleOpenMediaLibrary,
- })
- );
+ }),
+ ]);
},
preview: ({ src }) => {
return h(
diff --git a/static/admin/shortcodes/slider.js b/static/admin/shortcodes/slider.js
index b55ca762..4dd9f88e 100644
--- a/static/admin/shortcodes/slider.js
+++ b/static/admin/shortcodes/slider.js
@@ -1,4 +1,4 @@
-import { Card, TextField } from "./components/index.js";
+import { Card, TextField, Label } from "./components.js";
const SliderShortcode = {
label: "Bilderkarussell",
@@ -34,27 +34,31 @@ const SliderShortcode = {
);
return Card([
- TextField({
- label: "Bilderkarussell",
- value: dir,
- onChange: (event) => {
- onChange({ dir: event.target.value });
- },
- }),
+ Label("Bilderkarussell"),
h(
"span",
- {
- key: "slider-button",
- className: "CMS_WidgetDateTime_NowButton_root",
- },
- h(
- "button",
- {
- type: "button",
- onClick: handleOpenMediaLibrary,
- className: "CMS_Button_root CMS_Button_outlined-primary",
+ { className: "CMS_WidgetDateTime_inputs" },
+ TextField({
+ value: dir,
+ onChange: (event) => {
+ onChange({ dir: event.target.value });
},
- "wählen"
+ }),
+ h(
+ "span",
+ {
+ key: "slider-button",
+ className: "CMS_WidgetDateTime_NowButton_root",
+ },
+ h(
+ "button",
+ {
+ type: "button",
+ onClick: handleOpenMediaLibrary,
+ className: "CMS_Button_root CMS_Button_outlined-primary",
+ },
+ "wählen"
+ )
)
),
]);
diff --git a/static/admin/shortcodes/youtube.js b/static/admin/shortcodes/youtube.js
index 2ac57c1e..f47c66d7 100644
--- a/static/admin/shortcodes/youtube.js
+++ b/static/admin/shortcodes/youtube.js
@@ -1,4 +1,4 @@
-import { Card, TextField } from "./components/index.js";
+import { Card, TextField, Label } from "./components.js";
const YoutubeShortcode = {
label: "YouTube-Video",
@@ -18,8 +18,8 @@ const YoutubeShortcode = {
control: ({ src, onChange }) => {
return Card(
[
+ Label("YouTUbe-Video"),
TextField({
- label: "YouTube-Video-ID",
value: src,
onChange: (event) => {
onChange({ src: event.target.value });