Skip to content

Configs#129

Merged
qiyundai merged 28 commits into
devfrom
configs
May 22, 2026
Merged

Configs#129
qiyundai merged 28 commits into
devfrom
configs

Conversation

@qiyundai
Copy link
Copy Markdown
Collaborator

No description provided.

qiyundai and others added 12 commits April 7, 2026 22:44
…tion heading

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Collapsible RSVP field cards in Create/Edit dialog (only select/multi-select; non-option fields always expanded)
- Locale switcher in RSVP toolbar; all localizable fields reflect selected locale; per-field edit dialog handles locale-mode saves (base + override in one API call); Localizations section removed from RSVP dialog
- RSVP expanded options: replace numbered text list with read-only/editable TextFields (Value + Label)
- Custom attr expanded values: same inline edit pattern as RSVP options (Value + Label TextFields, Edit/Save/Discard/Add/Remove)
- displayAs: constrained to valid options per field type via getDisplayAsOptions(); column suppressed for non-select types; reset on incompatible type change
- Badge fixes: informative → neutral for type/inputType labels; wrapped in flex div to prevent full-width stretch in table columns; locale code column uses plain Text
- isRowExpandable predicate on DataTable/ResourceDashboardLayout: suppress expand chevron for RSVP fields with no options/rules/default/locale-overrides, and for custom attrs with no values
- Custom attr dialog: size="L"
- Fix Update button bug in custom attr dialog: normalize undefined label on openAttrEdit

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Renders scope-configured custom attributes (text, boolean, single-select,
multi-select) in a new form card at the bottom of the Additional Content
step. Multi-select uses an ordered repeater pattern to support user-defined
downstream sequencing. Card always visible — shows progress indicator
while loading and an empty-state message when no attributes are configured.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…s to scope configs API

- Update scope-configs integration guide: options now use {value, label} format,
  add localization merge patterns and option display logic notes
- Migrate RegistrationFieldsComponent from fetching external JSON configs to
  cachedApi.getConfigsForScope, using RsvpFormField labels directly
- Update RegistrationConfigComponent prop name cloudType → isExperienceCloud

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ields

When a locale is selected in the table toolbar, the Edit RSVP Config
dialog now shows and edits locale-specific labels, placeholders, and
option labels instead of base values. Structural controls (add/remove
field, add/remove option, option values) are hidden in locale mode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…l width

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ed indicator

Remove isRequired from agenda end time fields (TimeField and DatePicker).
Add a publish guard that validates all required fields across form steps
before allowing publish, including custom attributes with isRequired.
Shows a user-friendly dialog listing missing fields grouped by step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- README/PROJECT_OVERVIEW: port 3000, real npm scripts, structure
- EVENT_FORM/DEVELOPMENT_WORKFLOW/DEV_TOKEN: URLs and eventType route
- FRONTEND: S2, App routes table, TopNav-based new-route steps
- TESTING: Jest layout, test:unit, CI as lint+type-check, no e2e script
- TOP_NAV_LAYOUT/USER_PANEL: paths, nav items, remove SideBar confusion
- MODULAR_COMPONENT_PATTERN/EVENT_FORM: pages/EventForm paths

Made-with: Cursor
EventInfoComponent previously called cachedApi.getLocales(), which hits the ESP GET /v1/locales endpoint. That route is deprecated in events-service-platform in favor of scope-level configs with type "locales" (same LocalesScopeConfig shape as Cloud Management: localeNames + localeUrlCodes).

The picker now resolves the active ExC group scope via useGroup().activeGroup.scopeId and loads configs with cachedApi.getConfigsForScope(scopeId, 'locales'). When a locales config exists and localeNames is non-empty, options are built from those entries. If there is no scope id, the request fails, or no locales config is present, we fall back to SUPPORTED_SPEAKER_LOCALES + SPEAKER_LOCALE_LABELS so behavior matches ConfigManagement’s RSVP "available locales" fallback.

If the event’s current defaultLocale is not listed in the resolved set (e.g. legacy data), we inject a synthetic picker row so the selected key remains valid until the user changes language.

Made-with: Cursor
@adobe-kodiak
Copy link
Copy Markdown

adobe-kodiak Bot commented Apr 17, 2026

Kodiak: Security Findings Summary

No new findings introduced in this PR

High priority issues identified within this repository

Detect Outdated Nodejs Versions (1 finding(s))
Code Path Lines Dashboard (Needs VPN)
package-lock.json 8932 Manage finding

See all 1 findings for detect-outdated-nodejs-version in Kodiak Dashboard


Quick links: Dashboard Branch Violation Page, Dashboard Home, How does Kodiak track findings and violations?

This kodiak comment is based on the following commits

Note: This comment will be updated as new commits are pushed to the branch. If finding status changes a new comment will be published. For questions and answers please review Kodiak FAQ or reach out to #kodiak-support on Slack.

Have any feedback for us? Kodiak is always looking to improve our user experience - Let us know how we're doing!

qiyundai and others added 16 commits April 20, 2026 13:36
Align ConfigType, scope config models, and create bodies with ESP develop (customAttributes instead of custom-attributes).
Update Event Form and Config Management fetch/filter/create paths so ?type= and config type match ESP’s strict filter.
- Prefer scope RSVP config via getConfigsForScope; fall back to legacy cloud
  JSON (configService + mapLegacyRsvpConfigToFormFields) when scope has no fields
- Add RsvpFieldOptionSelectionState on EventFormData for select/multi-select
  option order and include toggles (client-only until ESP exposes a contract)
- S2 Disclosure for option lists; HTML5 DnD reorder; auto-remove field when all
  options disabled; reset option state when field hidden
- RegistrationConfigComponent wires cloudType and rsvpOptionSelections patch handler
- Hydrate rsvpOptionSelections as {} from API; TODO(PIM) on save path for future
  granular serialization

Co-authored-by: Cursor <cursoragent@cursor.com>
- Document pim context/report usage and pod binding in CLAUDE.md
- Add Claude Code sync command for PIM context pull
- Gitignore .pim/ directory for local PIM state

Co-authored-by: Cursor <cursoragent@cursor.com>
- Options list now renders inside the field card border rather than below it
- Replaced Disclosure/DisclosureTitle trigger with an inline ListBulleted icon in the field row (5th grid column)
- Icon is only shown for fields that have selectable options; absent otherwise
- Icon highlights in selection-ring color when panel is expanded
- Starting a field drag collapses all open option panels (mutually exclusive)
- Removed redundant borders from option rows; drag-over ring retained

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Blocking fixes:
- Replace div[role=button] with ActionButton isQuiet + onPress to fix drag-start
  interference and missing Spectrum focus ring
- Add e.stopPropagation() to handleOptionDragOver/handleOptionDrop so option drags
  don't bubble to the outer field-card drop target
- Clear optionDrag/optionDragOver in handleDragStart to avoid stale state
- Prune expandedOptions when a field is hidden so the panel doesn't auto-reopen on re-show

Code quality:
- Extract toggleExpanded local fn to deduplicate setExpandedOptions logic
- Replace <div /> fallback with null for the empty list-icon column
- Wrap mandatedFieldNames in useMemo; use stable ref in useEffect dep array
- Make isSelectableField a proper TypeScript type predicate
- Add aria-label/aria-hidden to Move drag handle divs
- Remove dead font styles from empty header span elements

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(rsvp): move options panel inside field card with inline toggle
# Conflicts:
#	web-src/src/components/shared/DataTable.tsx
#	web-src/src/components/shared/ResourceDashboardLayout.tsx
#	web-src/src/pages/EventForm/EventForm.tsx
#	web-src/src/pages/EventForm/RegistrationFieldsComponent.tsx
#	web-src/src/types/domain.ts
* RSVP Configs from the configs section

* retain the TODO comment
Merge dev into configs branch (resolves conflicts, preserves both feature sets)
@qiyundai qiyundai marked this pull request as ready for review May 22, 2026 19:02
@qiyundai qiyundai merged commit b5a2fdd into dev May 22, 2026
3 checks passed
@qiyundai qiyundai mentioned this pull request May 29, 2026
5 tasks
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.

2 participants