Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
67acc64
Add beta samples for the formatter demo kit pack and binding_call
claude Jul 18, 2026
94cd10b
abaplint diffs
oblomov-dev Jul 18, 2026
d5716c2
Fix ObjectStatus nesting in 453, add PlanningCalendar Date sample 456
claude Jul 18, 2026
e45a74f
Add minimal date-object sample 457 (DatePicker dateValue)
claude Jul 18, 2026
33dfaa0
fix
oblomov-dev Jul 18, 2026
134903f
Add beta sample 458: automatic validation via the message> model
claude Jul 18, 2026
95c40d3
Add sample 459: Table drag-and-drop reorder via resolved event args
claude Jul 18, 2026
4c39ec2
Fix abaplint omit_parameter_name in sample 459
claude Jul 18, 2026
2c3cab1
Fix unbound binding paths in 456/457, use _bind_edit everywhere
claude Jul 18, 2026
26d6ec0
Move sample 459 (Table DnD reorder) to framework - new (beta)
claude Jul 18, 2026
e7d2e1e
fix
oblomov-dev Jul 18, 2026
5c96279
Add tree model samples 460-462 (plain, drag and drop, popup)
claude Jul 18, 2026
cd01cfa
Move sample 383 to only non-openui5 or higher UI5 1.71 (00/02)
claude Jul 18, 2026
efcc6a3
Fix 461 node-move parser: context paths carry the /XX/ model prefix
claude Jul 18, 2026
212e75b
462: preserve the tree expand state across popup open/close
claude Jul 18, 2026
7289719
461: preserve the tree expand state across node moves
claude Jul 18, 2026
7be1732
fix
oblomov-dev Jul 18, 2026
90455d7
Regenerate overviews after graduation; keep 454/455 in beta
claude Jul 18, 2026
cb954b7
Graduate 454/455 to framework - action, pin lint dependency to branch
claude Jul 18, 2026
d3b1c5f
Sample polish: 461 text + no-op drop guards (459/461)
claude Jul 18, 2026
ce59d19
Add sample 463: editable tree (CustomTreeItem + two-way Input)
claude Jul 18, 2026
07d1484
Add sample 464: trigger an unexpected error to test the error popup
claude Jul 18, 2026
fff02fd
fix samples
oblomov-dev Jul 19, 2026
97c0c79
Merge framework subpackages into src/01/02 "framework - use cases"
claude Jul 19, 2026
30d42e8
Move the "under construction" strip to the extended overview
claude Jul 19, 2026
fea5489
Controls overview: drop namespace, truncate sub, blank line only on l…
claude Jul 19, 2026
8f89f00
fix samples
oblomov-dev Jul 19, 2026
ea0e627
Regenerate overviews for renamed subpackages (Basics / Extended / Con…
claude Jul 19, 2026
158e325
Move the Error Handling sample (464) to Basics
claude Jul 19, 2026
cd9c3da
Extended overview: info strip explaining Basic vs Extended compatibility
claude Jul 19, 2026
f839ac3
fix
oblomov-dev Jul 19, 2026
72737a0
Regenerate overview catalogs
claude Jul 19, 2026
6f65fdf
fix
oblomov-dev Jul 19, 2026
158f4bf
Extended overview: clarify info strip wording (basic vs extended samp…
claude Jul 19, 2026
cd81d80
Adopt subpackage renames: Basic I / Basic II
claude Jul 19, 2026
08463e1
fixes
oblomov-dev Jul 19, 2026
2bfc246
Rename overview apps: sample_app_001->demo_app_g00, sample_app_000->s…
claude Jul 19, 2026
79293b8
Regenerate basic overview catalog after DESCRIPT fixes
claude Jul 19, 2026
0599394
fix
oblomov-dev Jul 19, 2026
9cab598
fix
oblomov-dev Jul 19, 2026
c4d4ba6
Extended overview (g01): no blank lines between sample links
claude Jul 19, 2026
14f8ad4
Adopt src/00 restructuring + 445 description; regenerate overviews
claude Jul 19, 2026
8dc56c2
Samples 01/01 + 01/02: intro MessageStrips, A/C markers, tidy-ups
claude Jul 19, 2026
8c8c6e8
Sample 122: set the device-info input fields inactive
claude Jul 19, 2026
2abab53
Docs: add §12 sample content conventions (intro strip, A/C markers, r…
claude Jul 19, 2026
2995085
Samples 01: fix OpenUI5 1.71 crashes and align titles with descriptions
claude Jul 19, 2026
00f24a5
Samples 454/455: show product category as subtitle instead of right-a…
claude Jul 19, 2026
54b2937
Sample 143: wrap the page in a shell like the other samples
claude Jul 19, 2026
5f59bc9
AGENTS §12: record 1.71 + layout learnings from this session
claude Jul 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/abaplint/abap_cloud.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
},
{
"url": "https://github.com/abap2UI5/abap2UI5",
"branch": "claude/ui5-samples-ai-demokit-s5n5sg",
"folder": "/abap2UI5",
"files": "/src/**/*.*"
}
Expand Down
175 changes: 142 additions & 33 deletions AGENTS.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions abaplint.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
},
{
"url": "https://github.com/abap2UI5/abap2UI5",
"branch": "claude/ui5-samples-ai-demokit-s5n5sg",
"folder": "/abap2UI5",
"files": "/src/**/*.*"
}
Expand Down
48 changes: 42 additions & 6 deletions scripts/generate-launchpad.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/usr/bin/env node
/*
* Generates the two overview apps' catalogs from the folder tree.
* (These are the sample_app_000/001 index pages, not the Fiori Launchpad
* samples in src/00/03.)
* (These are the demo_app_g00 / sample_app_g01 index pages, not the Fiori
* Launchpad samples in src/00/03.)
*
* Job (see AGENTS.md §4):
* 1. Scan every demo app class under src/ and read its abapGit <DESCRIPT>
Expand All @@ -14,7 +14,7 @@
* Apps whose header is "ZZZ" are helper apps (called only by other apps)
* and are skipped.
* 3. Rewrite the result = VALUE #( ... ) block of get_catalog( ) in the
* overview app of each area (src/01 -> sample_app_001, src/00 -> sample_app_000):
* overview app of each area (src/01 -> demo_app_g00, src/00 -> sample_app_g01):
* - groups in folder-number order
* - tiles within a group sorted by header, then sub, then app
*
Expand All @@ -29,10 +29,18 @@ const SRC = path.join(__dirname, '..', 'src');

// area (top-level package under src) -> overview app file
const TARGETS = {
'01': path.join(SRC, '01', 'z2ui5_cl_sample_app_001.clas.abap'),
'00': path.join(SRC, '00', 'z2ui5_cl_sample_app_000.clas.abap'),
'01': path.join(SRC, '01', 'z2ui5_cl_demo_app_g00.clas.abap'),
'00': path.join(SRC, '00', 'z2ui5_cl_sample_app_g01.clas.abap'),
};

// The overview apps live under src/ too; the src/01 one (z2ui5_cl_demo_app_g00)
// even shares the demo-app class-name prefix. Skip both so an overview never
// lists itself as a tile.
const OVERVIEW_APPS = new Set([
'z2ui5_cl_demo_app_g00',
'z2ui5_cl_sample_app_g01',
]);

function walk(dir, out = []) {
for (const name of fs.readdirSync(dir)) {
const full = path.join(dir, name);
Expand Down Expand Up @@ -63,6 +71,25 @@ function splitDescript(d) {
return i === -1 ? { header: t, sub: '' } : { header: t.slice(0, i), sub: t.slice(i + 3) };
}

// Controls-section tiles (the 01/08 demo-kit rebuilds) are shown without their
// namespace prefix - the group heading already states it (sap.m, sap.uxap, …) -
// and with a one-line, truncated description so the overview never wraps.
const CONTROLS_SUB_MAX = 90;

// keep only the entity name after the last dot: sap.m.Switch -> Switch
function stripNamespace(header) {
return header.replace(/^.*\./, '');
}

// cut to CONTROLS_SUB_MAX, backing off to the last word boundary, + " ..."
function truncateSub(sub) {
if (sub.length <= CONTROLS_SUB_MAX) return sub;
let cut = sub.slice(0, CONTROLS_SUB_MAX);
const space = cut.lastIndexOf(' ');
if (space > CONTROLS_SUB_MAX * 0.6) cut = cut.slice(0, space);
return `${cut.replace(/[\s.,;:]+$/, '')} ...`;
}

// --- 1. scan --------------------------------------------------------------
const ctextCache = {};
function groupOf(dir) {
Expand All @@ -79,6 +106,7 @@ let hidden = 0;
for (const abap of walk(SRC)) {
if (!abap.endsWith('.clas.abap')) continue;
const cls = path.basename(abap, '.clas.abap');
if (OVERVIEW_APPS.has(cls)) continue; // an overview app is never a tile
if (!cls.startsWith('z2ui5_cl_demo_app')) continue;

const rel = path.relative(SRC, abap).split(path.sep); // [ area, ...subfolders, file ]
Expand Down Expand Up @@ -109,9 +137,17 @@ for (const abap of walk(SRC)) {
}

if (header.trim().toUpperCase() === 'ZZZ') { hidden++; continue; }

const group = groupOf(path.dirname(abap));
// controls section: drop the namespace prefix and truncate the description
if (group.startsWith('controls -')) {
header = stripNamespace(header);
sub = truncateSub(sub);
}

if ((header + sub).includes('`')) throw new Error(`backtick in DESCRIPT of ${cls}`);

tiles[area].push({ subnum, group: groupOf(path.dirname(abap)), header, sub, app: cls });
tiles[area].push({ subnum, group, header, sub, app: cls });
}

// --- 2. sort --------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion src/01/06/package.devc.xml → src/00/00/package.devc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DEVC>
<CTEXT>framework - use cases</CTEXT>
<CTEXT>extended</CTEXT>
<SRV_CHECK>X</SRV_CHECK>
</DEVC>
</asx:values>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
Expand Down
10 changes: 0 additions & 10 deletions src/00/04/package.devc.xml

This file was deleted.

115 changes: 0 additions & 115 deletions src/00/07/z2ui5_cl_demo_app_370.clas.abap

This file was deleted.

11 changes: 0 additions & 11 deletions src/00/08/package.devc.xml

This file was deleted.

80 changes: 0 additions & 80 deletions src/00/08/z2ui5_cl_demo_app_451.clas.abap

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_DEMO_APP_080</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>sap.m.PlanningCalendar - PlanningCalendar with single row se</DESCRIPT>
<DESCRIPT>sap.m.PlanningCalendar - use of z2ui5</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_DEMO_APP_231</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>sap.m.DateRangeSelection - The Date Range Selection is an ex</DESCRIPT>
<DESCRIPT>sap.m.DateRangeSelection - use of z2ui5</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
Expand Down
Loading
Loading