From f986490a3e42af51b32b0a4123f89ed8d42aa23a Mon Sep 17 00:00:00 2001 From: zamang-smeup Date: Mon, 2 Mar 2026 09:38:17 +0100 Subject: [PATCH 1/4] fix: no error when adding formula column --- .../kup-data-table/kup-data-table.tsx | 26 +++++++++++++++---- .../kup-data/kup-data-column-helper.ts | 3 ++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx b/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx index 0f0e14147..99384bc1d 100644 --- a/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx +++ b/packages/ketchup/src/components/kup-data-table/kup-data-table.tsx @@ -2113,12 +2113,28 @@ export class KupDataTable { result: string | KupDataColumn, afterColumn: string ) { - this.visibleColumns = this.getVisibleColumns({ - includeCodVer: true, - }).map((col) => col.name); - if (typeof result !== 'string') { - if (this.visibleColumns.findIndex((c) => c === result.name) < 0) { + // Check if dataTable has visible columns + const dataTableHasVisibleColumns = + this.visibleColumns && this.visibleColumns.length > 0; + + // - If dataTableHasVisibleColumns is true: + // return every col.name without filterings + // - If dataTableHasVisibleColumns is false: + // result column is filtered out because it is already inserted in the data + // and will make resultColumnIndexNotFound false, not adding the column + this.visibleColumns = this.getVisibleColumns({ + includeCodVer: true, + }).map((col) => { + if (dataTableHasVisibleColumns || col.name !== result.name) { + return col.name; + } + }); + + const resultColumnIndexNotFound = + this.visibleColumns.findIndex((c) => c === result.name) < 0; + + if (resultColumnIndexNotFound) { this.#kupManager.debug.logMessage( this, 'New column [' + diff --git a/packages/ketchup/src/managers/kup-data/kup-data-column-helper.ts b/packages/ketchup/src/managers/kup-data/kup-data-column-helper.ts index 907cd3b77..d697ec6bc 100644 --- a/packages/ketchup/src/managers/kup-data/kup-data-column-helper.ts +++ b/packages/ketchup/src/managers/kup-data/kup-data-column-helper.ts @@ -370,8 +370,9 @@ function newColumnFromMath( ...firstColumn, name: newName, title: title ? title : newTitle, - obj: newObj, + obj: newObj ?? { t: '', p: '', k: '' }, resultOf: formula, + visible: true, }; dataset.columns.splice( dataset.columns.indexOf(firstColumn) + 1, From 6597c7bc9fbe6e1aafc6dc25c413c259e306eb37 Mon Sep 17 00:00:00 2001 From: zamang-smeup Date: Mon, 2 Mar 2026 09:50:01 +0100 Subject: [PATCH 2/4] fix: renamed button search into preview --- .../kup-card/dialog/kup-card-dialog.tsx | 10 +++++----- .../kup-card/standard/kup-card-standard.tsx | 18 +++++++++--------- .../kup-column-menu-declarations.ts | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/ketchup/src/components/kup-card/dialog/kup-card-dialog.tsx b/packages/ketchup/src/components/kup-card/dialog/kup-card-dialog.tsx index 9f4649d0a..7d90fe272 100644 --- a/packages/ketchup/src/components/kup-card/dialog/kup-card-dialog.tsx +++ b/packages/ketchup/src/components/kup-card/dialog/kup-card-dialog.tsx @@ -317,7 +317,7 @@ export function create8(component: KupCard): VNode { const isReservedID = (id: string) => { return ( id === KupColumnMenuIds.BUTTON_OPEN_IN_NEW || - id === KupColumnMenuIds.BUTTON_SEARCH || + id === KupColumnMenuIds.BUTTON_PREVIEW || id === KupColumnMenuIds.BUTTON_COPY_OBJ ); }; @@ -377,7 +377,7 @@ export function create8(component: KupCard): VNode {
{textArray[0] || buttonsIds.includes(KupColumnMenuIds.BUTTON_OPEN_IN_NEW) || - buttonsIds.includes(KupColumnMenuIds.BUTTON_SEARCH) || + buttonsIds.includes(KupColumnMenuIds.BUTTON_PREVIEW) || buttonsIds.includes(KupColumnMenuIds.BUTTON_COPY_OBJ) ? (
{textArray[0] ? ( @@ -394,7 +394,7 @@ export function create8(component: KupCard): VNode { KupColumnMenuIds.BUTTON_OPEN_IN_NEW ) || buttonsIds.includes( - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW ) || buttonsIds.includes( KupColumnMenuIds.BUTTON_COPY_OBJ @@ -412,13 +412,13 @@ export function create8(component: KupCard): VNode { /> ) : null} {buttonsIds.includes( - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW ) ? ( x.id === - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW )} /> ) : null} diff --git a/packages/ketchup/src/components/kup-card/standard/kup-card-standard.tsx b/packages/ketchup/src/components/kup-card/standard/kup-card-standard.tsx index c11d262eb..eab05081d 100644 --- a/packages/ketchup/src/components/kup-card/standard/kup-card-standard.tsx +++ b/packages/ketchup/src/components/kup-card/standard/kup-card-standard.tsx @@ -1094,7 +1094,7 @@ export function create14(component: KupCard): VNode { buttonsIds.includes( KupColumnMenuIds.BUTTON_OPEN_IN_NEW ) || - buttonsIds.includes(KupColumnMenuIds.BUTTON_SEARCH) ? ( + buttonsIds.includes(KupColumnMenuIds.BUTTON_PREVIEW) ? (
{textArray[0] ? (
@@ -1110,7 +1110,7 @@ export function create14(component: KupCard): VNode { KupColumnMenuIds.BUTTON_OPEN_IN_NEW ) || buttonsIds.includes( - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW ) ? (
{buttonsIds.includes( @@ -1125,13 +1125,13 @@ export function create14(component: KupCard): VNode { /> ) : null} {buttonsIds.includes( - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW ) ? ( x.id === - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW )} /> ) : null} @@ -1432,7 +1432,7 @@ export function create15(component: KupCard): VNode { const isReservedID = (id: string) => { return ( id === KupColumnMenuIds.BUTTON_OPEN_IN_NEW || - id === KupColumnMenuIds.BUTTON_SEARCH || + id === KupColumnMenuIds.BUTTON_PREVIEW || id === KupColumnMenuIds.BUTTON_COPY_OBJ ); }; @@ -1491,7 +1491,7 @@ export function create15(component: KupCard): VNode {
{textArray[0] || buttonsIds.includes(KupColumnMenuIds.BUTTON_OPEN_IN_NEW) || - buttonsIds.includes(KupColumnMenuIds.BUTTON_SEARCH) || + buttonsIds.includes(KupColumnMenuIds.BUTTON_PREVIEW) || buttonsIds.includes(KupColumnMenuIds.BUTTON_COPY_OBJ) ? (
{textArray[0] ? ( @@ -1508,7 +1508,7 @@ export function create15(component: KupCard): VNode { KupColumnMenuIds.BUTTON_OPEN_IN_NEW ) || buttonsIds.includes( - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW ) || buttonsIds.includes( KupColumnMenuIds.BUTTON_COPY_OBJ @@ -1526,13 +1526,13 @@ export function create15(component: KupCard): VNode { /> ) : null} {buttonsIds.includes( - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW ) ? ( x.id === - KupColumnMenuIds.BUTTON_SEARCH + KupColumnMenuIds.BUTTON_PREVIEW )} /> ) : null} diff --git a/packages/ketchup/src/utils/kup-column-menu/kup-column-menu-declarations.ts b/packages/ketchup/src/utils/kup-column-menu/kup-column-menu-declarations.ts index f41355b13..40b4a9571 100644 --- a/packages/ketchup/src/utils/kup-column-menu/kup-column-menu-declarations.ts +++ b/packages/ketchup/src/utils/kup-column-menu/kup-column-menu-declarations.ts @@ -8,7 +8,7 @@ export enum KupColumnMenuIds { BUTTON_NEW = 'new', BUTTON_OPEN_IN_NEW = 'open-in-new', BUTTON_REMOVE = 'remove', - BUTTON_SEARCH = 'search', + BUTTON_PREVIEW = 'preview', BUTTON_COPY_OBJ = 'copy-obj', CHECKBOX_GLOBAL = 'global-checkbox', SWITCH_GROUP = 'group', From fe66f89728245f387c2ab60a2f6a3bc875eb89b1 Mon Sep 17 00:00:00 2001 From: lucafoscili <45429703+lucafoscili@users.noreply.github.com> Date: Tue, 3 Mar 2026 17:03:28 +0100 Subject: [PATCH 3/4] fix: Use column size for Kup images; restrict icon removal Pass the column into setCellSizeKup so image cells can inherit column.size for sizeX when sizeX is not provided. Also tighten the mouseleave selector to only remove the action icon (kup-image.f-cell__iconfunction) instead of the first kup-image in the cell, preventing accidental removal of the main BAR/IMAGE element. --- .../ketchup/src/f-components/f-cell/f-cell.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/ketchup/src/f-components/f-cell/f-cell.tsx b/packages/ketchup/src/f-components/f-cell/f-cell.tsx index 63f31e1e0..beb31e8df 100644 --- a/packages/ketchup/src/f-components/f-cell/f-cell.tsx +++ b/packages/ketchup/src/f-components/f-cell/f-cell.tsx @@ -145,7 +145,7 @@ export const FCell: FunctionalComponent = ( content = setEditableCell(cellType, classObj, cell, column, props); } else if (cell.data && kupTypes.includes(cellType)) { if (props.setSizes) { - setCellSizeKup(cellType, subcomponentProps, cell); + setCellSizeKup(cellType, subcomponentProps, cell, column); } if (!props.renderKup) { const lazyClass = 'cell-' + cellType + ' placeholder'; @@ -295,7 +295,11 @@ const handleMouseEnter = ( const handleMouseLeave = (event: MouseEvent) => { const parent = event.currentTarget as HTMLElement; - const iconContainer = parent.querySelector('kup-image'); + // only remove the action icon we added on mouse enter, not the first + // kup-image in the cell (which might be the BAR/IMAGE itself) + const iconContainer = parent.querySelector( + 'kup-image.f-cell__iconfunction' + ); if (iconContainer) { iconContainer.remove(); @@ -607,13 +611,17 @@ function setCellSize( function setCellSizeKup( cellType: string, subcomponentProps: unknown, - cell: KupDataCell + cell: KupDataCell, + column: KupDataColumn ) { switch (cellType) { case FCellTypes.BAR: if (!(subcomponentProps as FImageProps).sizeY) { (subcomponentProps as FImageProps).sizeY = '26px'; } + if (!(subcomponentProps as FImageProps).sizeX && column.size) { + (subcomponentProps as FImageProps).sizeX = column.size; + } break; case FCellTypes.BUTTON: let height: string = ''; From 8b2d4b0a744d91bdc12ad56f16b4c1579e288ee7 Mon Sep 17 00:00:00 2001 From: lucafoscili <45429703+lucafoscili@users.noreply.github.com> Date: Thu, 5 Mar 2026 10:06:20 +0100 Subject: [PATCH 4/4] 10.4.10 --- packages/ketchup-react/package.json | 4 ++-- packages/ketchup-showcase/package.json | 2 +- packages/ketchup-showcase/src/App.vue | 4 ++-- packages/ketchup/package.json | 2 +- yarn.lock | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/ketchup-react/package.json b/packages/ketchup-react/package.json index 46da7a5e9..6f03891ab 100644 --- a/packages/ketchup-react/package.json +++ b/packages/ketchup-react/package.json @@ -1,6 +1,6 @@ { "name": "@sme.up/ketchup-react", - "version": "10.4.9", + "version": "10.4.10", "main": "dist/components.js", "module": "dist/components.js", "types": "dist/components.d.ts", @@ -22,7 +22,7 @@ "license": "Apache-2.0", "repository": "https://github.com/smeup/ketchup", "dependencies": { - "@sme.up/ketchup": "10.4.9", + "@sme.up/ketchup": "10.4.10", "@stencil/react-output-target": "^0.8" }, "devDependencies": { diff --git a/packages/ketchup-showcase/package.json b/packages/ketchup-showcase/package.json index 3cb65e105..2999b1a80 100644 --- a/packages/ketchup-showcase/package.json +++ b/packages/ketchup-showcase/package.json @@ -19,7 +19,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "@sme.up/ketchup": "^10.4.9", + "@sme.up/ketchup": "^10.4.10", "core-js": "^3.30.2", "vue": "^2.6.14", "vue-router": "^3.5.1" diff --git a/packages/ketchup-showcase/src/App.vue b/packages/ketchup-showcase/src/App.vue index 987ac3712..43e523868 100644 --- a/packages/ketchup-showcase/src/App.vue +++ b/packages/ketchup-showcase/src/App.vue @@ -55,8 +55,8 @@ @kup-tree-nodeselected="treeClick" >
diff --git a/packages/ketchup/package.json b/packages/ketchup/package.json index dea007998..8f39db04a 100644 --- a/packages/ketchup/package.json +++ b/packages/ketchup/package.json @@ -1,6 +1,6 @@ { "name": "@sme.up/ketchup", - "version": "10.4.9", + "version": "10.4.10", "keywords": [ "smeup", "KetchUP", diff --git a/yarn.lock b/yarn.lock index 5731e3e05..abd7e5a1d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3191,7 +3191,7 @@ __metadata: version: 0.0.0-use.local resolution: "@sme.up/ketchup-react@workspace:packages/ketchup-react" dependencies: - "@sme.up/ketchup": 10.4.9 + "@sme.up/ketchup": 10.4.10 "@stencil/core": ^4 "@stencil/react-output-target": ^0.8 react: ^19.0.0 @@ -3227,7 +3227,7 @@ __metadata: resolution: "@sme.up/ketchup-showcase@workspace:packages/ketchup-showcase" dependencies: "@babel/plugin-transform-private-methods": ^7.24.1 - "@sme.up/ketchup": ^10.4.9 + "@sme.up/ketchup": ^10.4.10 "@typescript-eslint/eslint-plugin": ^5.59.8 "@typescript-eslint/parser": ^5.59.8 "@vue/cli-plugin-babel": ~5.0.8 @@ -3251,7 +3251,7 @@ __metadata: languageName: unknown linkType: soft -"@sme.up/ketchup@10.4.9, @sme.up/ketchup@^10.4.9, @sme.up/ketchup@workspace:packages/ketchup": +"@sme.up/ketchup@10.4.10, @sme.up/ketchup@^10.4.10, @sme.up/ketchup@workspace:packages/ketchup": version: 0.0.0-use.local resolution: "@sme.up/ketchup@workspace:packages/ketchup" dependencies: