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
* feat(fields): render select+multiple through the multi-value chip picker
A `select` field/param declared `multiple: true` is a multi-value selector
(spec allows `multiple` on select), but it rendered a single-value dropdown
that could hold only one value. SelectField now delegates to the multi-value
chip picker (the multiselect widget) when `multiple` is set, storing a string[].
Delegating inside SelectField — rather than at a type-resolution layer — means
every surface that renders the `select` widget inherits multi-select
identically: the object form, the inline grid editor, and the app-shell
ActionParamDialog. No per-surface drift, no divergence from the form (which was
the risk of special-casing it only in the param adapter). Single selects keep
the cascading dropdown; multi + per-option visibleWhen cascading is not a
combination in use today.
Tests: SelectField renders chip toggles (not a combobox) when multiple, toggles
values as an array, and renders badges in readonly mode. Docs: fields README
"Multi-value selects". Changeset: @object-ui/fields minor.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rg7oavKSUdb2KzYEEYrCHX
* fix(fields,core): clear baseline lint errors to restore package lint gates
The @object-ui/fields and @object-ui/core package lints were red at baseline,
so the gate could not catch NEW violations. Cleared all errors (behavior
unchanged):
fields (react-hooks/rules-of-hooks — hooks were called after early returns):
- ImageField: hoist the two useCallback handlers (+ their `images` dep) above
the readonly early return.
- TextAreaField: hoist the two useState calls above the readonly early return.
- index.tsx: useFieldTranslate no longer wraps useObjectTranslation in
try/catch (the hook is provider-safe and never throws; try/catch around a
hook is the violation). Mirrors useFieldLabel.
core:
- ExpressionEvaluator: preserve-caught-error — the package targets ES2020 whose
lib types only the 1-arg Error constructor, so `{ cause }` won't compile; the
original message is inlined and the rule is disabled with that justification.
- SafeExpressionParser: drop the useless `op` null-initializer (every branch
assigns or breaks); drop the useless `\-` escape in a char class.
- export-filename: drop the useless `\/` escape; the intentional control-char
range keeps a justified no-control-regex disable.
- record-title: `let display` -> `const` (never reassigned).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rg7oavKSUdb2KzYEEYrCHX
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments