You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(app-shell): give inline lookup action params a real record picker (#3405) (#2786)
An action param declared inline as `{ name: 'inspector', type: 'lookup',
reference: 'sys_user' }` always rendered as a plain text input asking the user
to paste a record id (UUID). A QC supervisor assigning an inspector had to go
find that person's UUID by hand, while the very same reference field picks
records by name in the create/edit dialog.
`paramToField()` degrades a picker param to text when it has no `referenceTo`
target, and `referenceTo` was only ever populated on the field-backed branch of
`resolveActionParams()`. The inline branch dropped the authored `reference` key
entirely — as did the spec schema, which stripped it as an unknown key without
an error — so an inline picker could never reach `<LookupField>` no matter how
it was authored. The user's config was correct and silently discarded.
- `resolveActionParam()` maps an inline `reference` onto `referenceTo`: on the
inline branch, on the missing-field fallback branch, and as an override on
the field-backed branch (matching how every other inline value overrides the
resolved field).
- The text degradation warns in dev naming the offending param. With
`@objectstack/spec` now rejecting a targetless inline picker at parse time,
reaching that path means the metadata is broken, not merely partial.
- The fallback's placeholder and help text no longer claim "a picker is coming
soon" — it shipped long ago, and that copy misreported a dropped config as a
missing feature. All 10 locales now say the param has no reference object
configured.
Verified against the framework showcase (examples/app-showcase) driven in a
browser: the inline `p_account` param renders the searchable picker, queries
`/api/v1/data/showcase_account`, filters server-side on typed input (incl. the
CJK-named account), and resolves the selection by record id.
Refs objectstack-ai/objectstack#3405
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/ar.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1496,8 +1496,8 @@ const ar = {
1496
1496
uploading: "جارٍ الرفع…",
1497
1497
defaultActionTitle: "إجراء",
1498
1498
ok: "موافق",
1499
-
lookupPlaceholder: "لصق معرف السجل (UUID) لـ {{label}}",
1500
-
lookupHelpText: "أدخل معرف سجل الكائن المرجع. سيتم إضافة أداة اختيار قريباً.",
1499
+
lookupPlaceholder: "معرف السجل لـ {{label}}",
1500
+
lookupHelpText: "لم يتم تكوين كائن مرجعي لهذه المعلمة، لذا فإن أداة اختيار السجلات غير متاحة. أدخل معرف السجل، أو اطلب من المسؤول تصحيح معلمة الإجراء.",
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/de.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1498,8 +1498,8 @@ const de = {
1498
1498
uploading: "Wird hochgeladen…",
1499
1499
defaultActionTitle: "Aktion",
1500
1500
ok: "OK",
1501
-
lookupPlaceholder: "Datensatz-ID (UUID) für {{label}} einfügen",
1502
-
lookupHelpText: "Geben Sie die Datensatz-ID des referenzierten Objekts ein. Eine Auswahlhilfe kommt bald.",
1501
+
lookupPlaceholder: "Datensatz-ID für {{label}}",
1502
+
lookupHelpText: "Für diesen Parameter ist kein Referenzobjekt konfiguriert, daher ist die Datensatzauswahl nicht verfügbar. Geben Sie eine Datensatz-ID ein oder bitten Sie einen Administrator, den Aktionsparameter zu korrigieren.",
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/en.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -2135,8 +2135,8 @@ const en = {
2135
2135
description: 'Please provide the required information to continue.',
2136
2136
selectPlaceholder: 'Select {{label}}',
2137
2137
requiredError: '{{label}} is required',
2138
-
lookupPlaceholder: 'Paste the {{label}} record id (UUID)',
2139
-
lookupHelpText: 'Enter the record id of the referenced object. A picker is coming soon.',
2138
+
lookupPlaceholder: 'Record id for {{label}}',
2139
+
lookupHelpText: 'No reference object is configured for this parameter, so the record picker is unavailable. Enter a record id, or ask an administrator to fix the action parameter.',
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/es.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1498,8 +1498,8 @@ const es = {
1498
1498
uploading: "Subiendo…",
1499
1499
defaultActionTitle: "Acción",
1500
1500
ok: "Aceptar",
1501
-
lookupPlaceholder: "Pegar ID de registro (UUID) para {{label}}",
1502
-
lookupHelpText: "Ingrese el ID del registro del objeto referenciado. Pronto se añadirá un selector.",
1501
+
lookupPlaceholder: "ID de registro para {{label}}",
1502
+
lookupHelpText: "Este parámetro no tiene un objeto de referencia configurado, por lo que el selector de registros no está disponible. Ingrese un ID de registro o pida a un administrador que corrija el parámetro de la acción.",
Copy file name to clipboardExpand all lines: packages/i18n/src/locales/fr.ts
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1496,8 +1496,8 @@ const fr = {
1496
1496
uploading: "Téléversement…",
1497
1497
defaultActionTitle: "Action",
1498
1498
ok: "OK",
1499
-
lookupPlaceholder: "Coller l'ID d'enregistrement (UUID) pour {{label}}",
1500
-
lookupHelpText: "Entrez l'ID de l'enregistrement de l'objet référencé. Un sélecteur sera bientôt ajouté.",
1499
+
lookupPlaceholder: "ID d'enregistrement pour {{label}}",
1500
+
lookupHelpText: "Aucun objet de référence n'est configuré pour ce paramètre, le sélecteur d'enregistrement est donc indisponible. Saisissez un ID d'enregistrement ou demandez à un administrateur de corriger le paramètre d'action.",
0 commit comments