From fe846f66de3d6592998c44d197dced977cad7e58 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Sat, 7 Feb 2026 23:24:58 +0100 Subject: [PATCH] Element rebuild --- config/current.ver | 2 +- .../blocks-custom/elements/table-2xn.js | 65 +++++-------------- public/assets/js/bridge/blocks-placeholder.js | 16 +++-- public/assets/js/bridge/category-config.js | 2 +- public/assets/js/bridge/table-builder.js | 7 ++ 5 files changed, 34 insertions(+), 58 deletions(-) diff --git a/config/current.ver b/config/current.ver index 47ddbf2..d5bad6d 100644 --- a/config/current.ver +++ b/config/current.ver @@ -1 +1 @@ -1.2.66 \ No newline at end of file +1.2.67 \ No newline at end of file diff --git a/public/assets/js/bridge/blocks-custom/elements/table-2xn.js b/public/assets/js/bridge/blocks-custom/elements/table-2xn.js index b89bb1c..e4fe0c7 100644 --- a/public/assets/js/bridge/blocks-custom/elements/table-2xn.js +++ b/public/assets/js/bridge/blocks-custom/elements/table-2xn.js @@ -1,57 +1,22 @@ (function(){ window.BridgeBlocksCustomElements = window.BridgeBlocksCustomElements || []; window.BridgeBlocksCustomElements.push(function(ctx){ - const { bm, addOnce } = ctx; - const hasBridgeTable = !!(ctx.editor && ctx.editor.DomComponents && ctx.editor.DomComponents.getType && ctx.editor.DomComponents.getType('bridge-table')); - const tableType = hasBridgeTable ? 'bridge-table' : 'default'; + const { bm, addOnce, css } = ctx; addOnce(bm, 'cust-table', { id:'cust-table', label:'🧩 Tabelle (2xN)', - content:{ - type: tableType, - tagName:'table', - attributes:{ - role:'presentation', - width:'100%', - cellpadding:'0', - cellspacing:'0', - 'data-bridge-table':'1', - 'data-bridge-rows':'3', - 'data-bridge-cols':'2' - }, - style:{ - 'font-family':'Arial,sans-serif', - 'border-collapse':'collapse', - 'width':'100%', - 'margin-bottom':'16px' - }, - components: [ - { - tagName: 'tbody', - components: [ - { - tagName: 'tr', - components: [ - { tagName: 'th', content: 'Spalte A', style: {'text-align':'left','padding':'8px','border':'1px solid #e2e8f0','background-color':'#f8fafc','font-size':'13px'} }, - { tagName: 'th', content: 'Spalte B', style: {'text-align':'left','padding':'8px','border':'1px solid #e2e8f0','background-color':'#f8fafc','font-size':'13px'} }, - ], - }, - { - tagName: 'tr', - components: [ - { tagName: 'td', content: 'Zeile 1', style: {'padding':'8px','border':'1px solid #e2e8f0','font-size':'13px'} }, - { tagName: 'td', content: '...', style: {'padding':'8px','border':'1px solid #e2e8f0','font-size':'13px'} }, - ], - }, - { - tagName: 'tr', - components: [ - { tagName: 'td', content: 'Zeile 2', style: {'padding':'8px','border':'1px solid #e2e8f0','font-size':'13px'} }, - { tagName: 'td', content: '...', style: {'padding':'8px','border':'1px solid #e2e8f0','font-size':'13px'} }, - ], - }, - ], - }, - ] - } + content:` + + + + + + + + + + + + +
Spalte ASpalte B
Zeile 1...
Zeile 2...
` }); }); })(); diff --git a/public/assets/js/bridge/blocks-placeholder.js b/public/assets/js/bridge/blocks-placeholder.js index 0c3e6b9..aa02243 100644 --- a/public/assets/js/bridge/blocks-placeholder.js +++ b/public/assets/js/bridge/blocks-placeholder.js @@ -20,7 +20,8 @@ if (window.__PLACEHOLDER_BLOCKS_LOADED) return; window.__PLACEHOLDER_BLOCKS_LOADED = true; -const TARGET_CAT_ID = 'placeholders'; + const TARGET_CAT_ID = 'placeholders'; + const SHOW_PLACEHOLDER_BLOCKS = (B && B.SHOW_PLACEHOLDER_BLOCKS === true); const PLACEHOLDER_COMPONENT = 'placeholder-block'; const ALL_PLACEHOLDER_BLOCK_IDS = []; const INLINE_PLACEHOLDER_CLASS = 'bridge-placeholder-inline'; @@ -1088,11 +1089,13 @@ const refreshPlaceholderComponent = (component) => { editor.on('load', bindRteButton, { once: true }); } - addOnce(bm, 'cust-placeholder-custom', { - id: 'cust-placeholder-custom', - label: '🔖 Placeholder (Text)', - content: `{{UEBERSCHRIFT}}` - }); + if (SHOW_PLACEHOLDER_BLOCKS) { + addOnce(bm, 'cust-placeholder-custom', { + id: 'cust-placeholder-custom', + label: '🔖 Placeholder (Text)', + content: `{{UEBERSCHRIFT}}` + }); + } const ensureDbBlock = (tables) => { const fallback = { table: 'tabelle', column: 'feld' }; @@ -1109,6 +1112,7 @@ const refreshPlaceholderComponent = (component) => { const blockId = 'cust-placeholder-db'; const label = '🗄️ Placeholder (DB)'; const existing = typeof bm.get === 'function' ? bm.get(blockId) : null; + if (!SHOW_PLACEHOLDER_BLOCKS) return; if (existing && typeof existing.set === 'function') { existing.set('content', content); existing.set('label', label); diff --git a/public/assets/js/bridge/category-config.js b/public/assets/js/bridge/category-config.js index 25f596c..ba30dc8 100644 --- a/public/assets/js/bridge/category-config.js +++ b/public/assets/js/bridge/category-config.js @@ -29,7 +29,7 @@         // --- 3. API Custom-Blocks (Standard-API) ----         custom: {             ord: 1, -            label: 'Custom', +            label: 'Templates',             open: true,             files: ['library-api.js','blocks-api.js'],             registration_mode: 'async', diff --git a/public/assets/js/bridge/table-builder.js b/public/assets/js/bridge/table-builder.js index ba6257f..06dc044 100644 --- a/public/assets/js/bridge/table-builder.js +++ b/public/assets/js/bridge/table-builder.js @@ -173,6 +173,13 @@ }, }), view: BaseView, + isComponent(el) { + if (!el || !el.hasAttribute) return false; + if (el.tagName && el.tagName.toLowerCase() === 'table' && el.getAttribute('data-bridge-table') === '1') { + return { type: 'bridge-table' }; + } + return false; + }, }); }