Skip to content

Fix #470: Add AgCombobox to SDUI codegen#492

Merged
roblevintennis merged 6 commits into
masterfrom
issue-470/add-combobox-to-sdui-codegen
May 2, 2026
Merged

Fix #470: Add AgCombobox to SDUI codegen#492
roblevintennis merged 6 commits into
masterfrom
issue-470/add-combobox-to-sdui-codegen

Conversation

@roblevintennis

Copy link
Copy Markdown
Contributor

Summary

  • Removes AgCombobox from skipComponents and wires it into the full SDUI codegen pipeline
  • Adds typeOverrides for options (inline ComboboxOption[] object array, not auto-detectable by ts-morph) and value (widened to string | string[] for multi-select)
  • Adds omitConfig, noUndefinedProps, and per-framework on_change payload expressions (React, Vue, Lit)
  • Full multi-select support: multiple, closeOnSelect, maxOptionsVisible, value: string | string[] all in schema
  • Regenerates all 7 codegen artifacts; check-codegen passes
  • Adds renderer unit tests (basic render + multi-select variant) in all three frameworks
  • Adds combobox-demo workflow to the shared fixture bank (single-select department filter + multi-select skills filter), surfaced in all three demo apps automatically via shared fixture imports
  • Deletes legacy v2/sdui/examples/ (superseded by demo apps, no CI coverage)
  • Corrects skipped-components list in sdui-architecture.md
  • Adds manual verification checklist to DEV-WORKFLOW.md

Test plan

  • cd v2/sdui/schema && npm test — 43 tests pass
  • cd v2/sdui/renderers/react && npm test — 14 tests pass
  • cd v2/sdui/renderers/vue && npm test — 14 tests pass
  • cd v2/sdui/renderers/lit && npm test — 16 tests pass
  • cd v2/sdui/demo && npm test — 44 tests pass (fixtures + a11y)
  • cd v2/sdui/schema && npm run check-codegen — all 7 files up to date
  • cd v2/sdui/demo && npm run dev — Combobox workflow visible in picker; single-select and multi-select variations both render and dispatch correctly; confirmation fixture streams in on Apply
  • Same visual check passes in demo-vue and demo-lit

- Remove Combobox from skipComponents in codegen.config.ts
- Add typeOverrides for options (ComboboxOption[] is an object array,
  not auto-detectable by ts-morph)
- Add omitConfig for id/defaultValue/maxVisibleOptions/closeOnSelect/
  maxOptionsVisible/validationMessages
- Add noUndefinedProps for options/size/variant/value (reflect props
  and required array)
- Add on_change payload expressions for React, Vue, and Lit
- Regenerate schema.ts, types.ts, index.ts, all three renderers,
  and agnosticui-schema.json (52 components, check-codegen passes)
- Un-skip closeOnSelect and maxOptionsVisible from omitConfig
  (needed for multi-select UX: keep dropdown open, control tag count)
- Override value type to string | string[] via typeOverrides
  (codegen simplifies the union to string; multi-select requires arrays)
- Regenerate all generated files; check-codegen passes
Two tests per framework (React, Vue, Lit):
- basic render: node with options array produces ag-combobox element
- multi-select: multiple/value/closeOnSelect/maxOptionsVisible all
  accepted by the schema and passed through without TS errors
Two variations in fixtureBank: single-select department filter and
multi-select skills filter (multiple/closeOnSelect/maxOptionsVisible).
Confirmation fixture shows result screen after APPLY_FILTER dispatch.
Picker card added so all three demos (React, Vue, Lit) surface it via
the shared fixture imports. Fixtures spec passes (44 tests).
The three sdui-{react,vue,lit} examples were superseded by the full
demo apps (demo/, demo-vue/, demo-lit/) and had no CI coverage.
The renderer unit tests cover the same "does it render" smoke-test role.

Also correct the skipped-components list in sdui-architecture.md:
Combobox is no longer skipped (added in this branch); Flex replaces
it; Pagination/Slider/Combobox were never actually in skipComponents.
Remove the examples/ entry from the file layout section.
Documents the 7-step spot-check procedure: schema tests, renderer
tests (all 3 frameworks), fixture validation, check-codegen, visual
demo walkthrough for React/Vue/Lit, and confirming examples removal.
@netlify

netlify Bot commented May 2, 2026

Copy link
Copy Markdown

Deploy Preview for agnosticui-demo-react ready!

Name Link
🔨 Latest commit edea938
🔍 Latest deploy log https://app.netlify.com/projects/agnosticui-demo-react/deploys/69f6024885e8160008697003
😎 Deploy Preview https://deploy-preview-492--agnosticui-demo-react.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented May 2, 2026

Copy link
Copy Markdown

Deploy Preview for agnosticui-demo-vue ready!

Name Link
🔨 Latest commit edea938
🔍 Latest deploy log https://app.netlify.com/projects/agnosticui-demo-vue/deploys/69f602480a6be20008f3327f
😎 Deploy Preview https://deploy-preview-492--agnosticui-demo-vue.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented May 2, 2026

Copy link
Copy Markdown

Deploy Preview for agnosticui-demo-lit ready!

Name Link
🔨 Latest commit edea938
🔍 Latest deploy log https://app.netlify.com/projects/agnosticui-demo-lit/deploys/69f60248cb1ca00008411234
😎 Deploy Preview https://deploy-preview-492--agnosticui-demo-lit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@roblevintennis roblevintennis merged commit 21ae32a into master May 2, 2026
15 checks passed
@roblevintennis roblevintennis deleted the issue-470/add-combobox-to-sdui-codegen branch May 2, 2026 14:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant