diff --git a/.changeset/action-param-dialog-option-visiblewhen-4758.md b/.changeset/action-param-dialog-option-visiblewhen-4758.md deleted file mode 100644 index c0335d9f7b..0000000000 --- a/.changeset/action-param-dialog-option-visiblewhen-4758.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -'@object-ui/components': patch ---- - -`ActionParamDialog` (the `custom` barrel's published dialog) now resolves each -`select` param's options through `@object-ui/core`'s shared option evaluator, so a -per-option `visibleWhen` narrows the offered list here exactly as it does on the -app-shell action dialog and in the object form (objectui#4758). - -This surface is the repo's second action-param dialog, and its `select` branch -rendered `param.options?.map(...)` straight into Radix items. A per-option -`visibleWhen` was not evaluated wrongly — it was not evaluated at all, so an option -gated on `record.*` (a sibling param) or on `current_user.*` was offered -unconditionally, while the app-shell dialog filtered the identical field metadata. -Triage ruled the governed side authoritative; the dialog rebinds to -`resolveVisibleOptions`, resolving predicates against the dialog's own in-progress -values (the objectui#3765 Option B ruling) plus the ambient predicate scope. - -Rebind, not removal: the component stays a published export, its props and every -other branch are untouched, and retiring it remains a separate decision. - -A selection the predicate stops offering is now cleared rather than kept as a hidden -value — the same `isValueStillOffered` clear `SelectField` already performs. Without -it, filtering alone would let a picked-then-gated-out option vanish from the trigger -while still riding in the submitted payload. Params whose options declare no -predicate are untouched. diff --git a/.changeset/retire-components-action-param-dialog-5685.md b/.changeset/retire-components-action-param-dialog-5685.md new file mode 100644 index 0000000000..803fed5351 --- /dev/null +++ b/.changeset/retire-components-action-param-dialog-5685.md @@ -0,0 +1,39 @@ +--- +'@object-ui/components': minor +--- + +Retire `ActionParamDialog`: the `custom` barrel's second action-param dialog is +removed, and the app-shell dialog is recorded as the surviving implementation +(objectui#5685, maintainer ruling of 2026-08-22). + +**Breaking for any out-of-repo host that imported it** (declared `minor` per the +repo's version-alignment rule — the major tracks `@objectstack`, never an +API-break count): `@object-ui/components` no longer exports `ActionParamDialog` +or `ActionParamDialogProps`. Measured at the branch point, the export had zero +production consumers — its only in-repo importers were its own five test files, +which retire with it, and no other repository in the organization imports the +symbol from this package. + +This file was the repo's SECOND implementation of the action-param surface, and +its audit trail is the reason it retires instead of being maintained: the last +close look (objectui#4758) found per-option `visibleWhen` not evaluated at all, +and the five hardcoded English strings this card originally recorded were the +next drift installment. A dormant second dialect of a governed surface is one +production import away from being live; removing it removes the whole drift +class. + +FROM → TO for an out-of-repo host: + +- `import { ActionParamDialog } from '@object-ui/components'` — no drop-in + replacement is published. The surviving implementation is + `@object-ui/app-shell`'s `ActionParamDialog` (`src/views/ActionParamDialog.tsx`), + rendered by app-shell's action runtime (`useConsoleActionRuntime`, + `RecordDetailView`) rather than exported standalone. A host that needs its own + param form builds on `@object-ui/fields`' shared field widgets + (`resolveFormWidgetType` / `getLazyFieldWidget`, ADR-0059) — the same seam the + surviving dialog renders through. + +The unreleased objectui#4758 changeset for this component (`select` options +through the shared option evaluator) is withdrawn in the same change: the +component retires before that fix ever ships, so the release notes carry the +removal rather than new behaviour of a surface this release does not contain. diff --git a/packages/components/src/__tests__/action-param-dialog-aria-required.test.tsx b/packages/components/src/__tests__/action-param-dialog-aria-required.test.tsx deleted file mode 100644 index 2ecaa75be0..0000000000 --- a/packages/components/src/__tests__/action-param-dialog-aria-required.test.tsx +++ /dev/null @@ -1,136 +0,0 @@ -/** - * ObjectUI - * Copyright (c) 2024-present ObjectStack Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * ActionParamDialog (components/custom) — required must reach each CONTROL as - * a state, not sit in the label as a bare `*` (objectui#3299; same shape as - * #3290/#3298). - * - * Pre-fix, the five typed branches (textarea / number / select / date / text) - * each drew `*` inside `