Skip to content
Back to skills

Source Cd23b4e9bab841bdabcad999

ASecurity

Fix deprecated `sap.ui.table.Table` row properties that UI5 linter reports but cannot auto-fix. Use this skill when linter outputs: - `no-deprecated-api` with messages about `visibleRowCountMode`, `visibleRowCount`, `rowHeight`, `fixedRowCount`, `fixedBottomRowCount`, or `minAutoRowCount` Trigger on: deprecated row-related properties on sap.ui.table.Table in JS or XML, modernization to rowMode aggregation. Converts deprecated flat properties to a structured `rowMode` aggregation using `sap.ui...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
developmentjavascriptgojavaapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add gutsofpratik/OpenClaude-Skills --skill source-cd23b4e9bab841bdabcad999 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Source Cd23b4e9bab841bdabcad999?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Source Cd23b4e9bab841bdabcad999
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gutsofpratik-source-cd23b4e9bab841bdabcad999/badge)](https://www.skillsdirectory.com/skills/gutsofpratik-source-cd23b4e9bab841bdabcad999)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fix-table-row-mode
description: |
  Fix deprecated `sap.ui.table.Table` row properties that UI5 linter reports but cannot auto-fix. Use this skill when linter outputs:
  - `no-deprecated-api` with messages about `visibleRowCountMode`, `visibleRowCount`, `rowHeight`, `fixedRowCount`, `fixedBottomRowCount`, or `minAutoRowCount`
  Trigger on: deprecated row-related properties on sap.ui.table.Table in JS or XML, modernization to rowMode aggregation.
  Converts deprecated flat properties to a structured `rowMode` aggregation using `sap.ui.table.rowmodes.Fixed`, `Interactive`, or `Auto`.
---

# Fix Table Row Mode (no-deprecated-api)

This skill fixes deprecated row-related properties on `sap.ui.table.Table` that the UI5 linter detects but cannot auto-fix. The modernization replaces flat properties with a structured `rowMode` aggregation.

**IMPORTANT**: Do NOT modernize `sap.ui.table.Table` to `sap.m.Table` — they are not equivalent.

## Linter Rule

| Rule ID | Message Pattern |
|---------|-----------------|
| `no-deprecated-api` | Use of deprecated property 'visibleRowCountMode' of class 'sap.ui.table.Table' |
| `no-deprecated-api` | Use of deprecated property 'visibleRowCount' of class 'sap.ui.table.Table' |
| `no-deprecated-api` | Use of deprecated property 'rowHeight' of class 'sap.ui.table.Table' |
| `no-deprecated-api` | Use of deprecated property 'fixedRowCount' of class 'sap.ui.table.Table' |
| `no-deprecated-api` | Use of deprecated property 'fixedBottomRowCount' of class 'sap.ui.table.Table' |
| `no-deprecated-api` | Use of deprecated property 'minAutoRowCount' of class 'sap.ui.table.Table' |

## Property Mapping

| Deprecated Property on `Table` | New Property on `RowMode` | Notes |
|---|---|---|
| `visibleRowCountMode` | (Determines RowMode class) | `"Fixed"` → `rowmodes:Fixed`, `"Interactive"` → `rowmodes:Interactive`, `"Auto"` → `rowmodes:Auto` |
| `visibleRowCount` | `rowCount` | Used in `Fixed` and `Interactive` mode |
| `minAutoRowCount` | `minRowCount` | Used only in `Auto` mode |
| `rowHeight` | `rowContentHeight` | Name change |
| `fixedRowCount` | `fixedTopRowCount` | Name change (`Top` added) |
| `fixedBottomRowCount` | `fixedBottomRowCount` | No change |

## RowMode Class Selection

Choose based on the old `visibleRowCountMode` value:
- `"Fixed"` (or not set — this is the default) → `rowmodes:Fixed`
- `"Interactive"` → `rowmodes:Interactive`
- `"Auto"` → `rowmodes:Auto`

## Pre-Modernization Safety Check

If a property set on the Table doesn't exist on the selected RowMode class (e.g., `minAutoRowCount` on a `Fixed` mode table), this indicates possible dynamic row mode switching. **Abort modernization for that table** and flag for manual review.

## Fix Strategy — XML Views

### Step 1: Add XML Namespace

Add to the root `<mvc:View>` tag:
```xml
xmlns:rowmodes="sap.ui.table.rowmodes"
```

### Step 2: Remove Deprecated Properties and Add rowMode Aggregation

**Before (Fixed mode):**
```xml
<table:Table
    rows="{/Products}"
    visibleRowCountMode="Fixed"
    visibleRowCount="5"
    fixedRowCount="1"
    fixedBottomRowCount="2"
    rowHeight="30">
    <table:columns>...</table:columns>
</table:Table>
```

**After:**
```xml
<table:Table
    rows="{/Products}">
    <table:rowMode>
        <rowmodes:Fixed
            rowCount="5"
            fixedTopRowCount="1"
            fixedBottomRowCount="2"
            rowContentHeight="30"/>
    </table:rowMode>
    <table:columns>...</table:columns>
</table:Table>
```

**Before (Interactive mode):**
```xml
<table:Table
    rows="{/Products}"
    visibleRowCountMode="Interactive"
    visibleRowCount="10"
    rowHeight="25">
```

**After:**
```xml
<table:Table
    rows="{/Products}">
    <table:rowMode>
        <rowmodes:Interactive
            rowCount="10"
            rowContentHeight="25"/>
    </table:rowMode>
```

**Before (Auto mode):**
```xml
<table:Table
    rows="{/Items}"
    visibleRowCountMode="Auto"
    minAutoRowCount="3">
```

**After:**
```xml
<table:Table
    rows="{/Items}">
    <table:rowMode>
        <rowmodes:Auto minRowCount="3"/>
    </table:rowMode>
```

## Fix Strategy — JavaScript

### Step 1: Add RowMode Import

Add the appropriate class to `sap.ui.define`:
- `"sap/ui/table/rowmodes/Fixed"` for Fixed mode
- `"sap/ui/table/rowmodes/Interactive"` for Interactive mode
- `"sap/ui/table/rowmodes/Auto"` for Auto mode

### Step 2: Replace Properties with rowMode

**Before:**
```javascript
sap.ui.define([
    "sap/ui/table/Table"
], function(Table) {
    var oTable = new Table({
        visibleRowCountMode: "Interactive",
        visibleRowCount: 10,
        rowHeight: 25
    });
});
```

**After:**
```javascript
sap.ui.define([
    "sap/ui/table/Table",
    "sap/ui/table/rowmodes/Interactive"
], function(Table, InteractiveRowMode) {
    var oTable = new Table({
        rowMode: new InteractiveRowMode({
            rowCount: 10,
            rowContentHeight: 25
        })
    });
});
```

Also handle setter-based patterns:

**Before:**
```javascript
oTable.setVisibleRowCountMode("Fixed");
oTable.setVisibleRowCount(8);
oTable.setFixedRowCount(2);
oTable.setRowHeight(40);
```

**After:**
```javascript
// Import: "sap/ui/table/rowmodes/Fixed"
oTable.setRowMode(new FixedRowMode({
    rowCount: 8,
    fixedTopRowCount: 2,
    rowContentHeight: 40
}));
```

## Implementation Steps

1. **Run linter with --details** to identify all affected Table instances
2. **For each Table**, determine the RowMode class from `visibleRowCountMode` (default: `"Fixed"`)
3. **Safety check**: Verify all deprecated properties are compatible with the chosen RowMode class
4. **XML views**: Add `xmlns:rowmodes="sap.ui.table.rowmodes"` namespace, remove deprecated properties, add `<rowMode>` aggregation
5. **JavaScript**: Add RowMode import, create RowMode instance with mapped properties, set via constructor or `setRowMode()`
6. **Verify** by re-running the linter

## RowMode Properties Reference

| Mode | Available Properties |
|---|---|
| `Fixed` | `rowCount`, `fixedTopRowCount`, `fixedBottomRowCount`, `rowContentHeight` |
| `Interactive` | `rowCount`, `rowContentHeight` |
| `Auto` | `minRowCount`, `fixedTopRowCount`, `fixedBottomRowCount`, `rowContentHeight` |

## Notes

- If `visibleRowCountMode` is not set, the default was `"Fixed"` — use `rowmodes:Fixed`
- The `<table:rowMode>` aggregation goes inside `<table:Table>`, alongside `<table:columns>`
- In XML, always use the `rowmodes:` namespace prefix for RowMode elements
- Both old and new APIs are synchronous — no async handling needed

## Related Skills

- **fix-deprecated-controls**: For other `no-deprecated-api` errors on `sap.ui.table.Table` (e.g., deprecated classes, properties not related to row mode), use fix-deprecated-controls
- **fix-js-globals**: If the Table is instantiated via global access (e.g., `new sap.ui.table.Table()`), fix-js-globals handles converting to proper module imports

Files in this skill

  • PROVENANCE.json238 B
  • SKILL.md6.8 KB
  • UPSTREAM-LICENSE.txt11.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.