diff --git a/.changeset/README.md b/.changeset/README.md index 755a964..8015e86 100644 --- a/.changeset/README.md +++ b/.changeset/README.md @@ -22,7 +22,9 @@ not `fixed`: a patch that only touches angular still must not bump and republish three packages whose tarballs did not change. **`onlyUpdatePeerDependentsWhenOutOfRange`** stops a core release from -rewriting each adapter's `@dynamic-field-kit/core` peer range. The adapters use -only core APIs that have existed since 1.3.0, so `^1.3.0` is the honest range — -tightening it on every core release would force consumers to upgrade core for -features their adapter does not call. +rewriting each adapter's `@dynamic-field-kit/core` peer range. The floor is the +oldest core that has every API the adapter imports, and it moves by hand when an +adapter starts calling something new: since 1.12.0 the adapters import +`resolveVisible` and `makeLabelId`, so the range is `^1.12.0`. Tightening it on +every core release would force consumers to upgrade core for features their +adapter does not call. diff --git a/.changeset/angular-builtin-types.md b/.changeset/angular-builtin-types.md deleted file mode 100644 index be461f4..0000000 --- a/.changeset/angular-builtin-types.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@dynamic-field-kit/angular': patch ---- - -The built-in fallback covers all fourteen field types the README lists, as in the React, Vue and Svelte adapters. `radio`, `range`, `file`, `date`, `time`, `datetime-local` and `switch` used to render "Unknown field type" when no renderer was registered. They now draw the same controls as the other adapters: a radio group (`role="radiogroup"`, named by its caption through `aria-labelledby`, a label per button, emitting the option's own value), a range that emits a number and starts at `min`, a file input that emits the `File` (an array for `multiple`, `null` when cleared), date and time inputs that emit the browser's ISO text, and a switch drawn as a checkbox. Each gets the label, `aria-invalid` and `aria-describedby` the other built-in controls have. diff --git a/.changeset/declarative-conditions.md b/.changeset/declarative-conditions.md deleted file mode 100644 index f3f1f87..0000000 --- a/.changeset/declarative-conditions.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@dynamic-field-kit/core': minor -'@dynamic-field-kit/react': minor -'@dynamic-field-kit/vue': minor -'@dynamic-field-kit/svelte': minor -'@dynamic-field-kit/angular': minor ---- - -Conditions as data. A field takes `appearWhen` and `requiredWhen`: a condition written as plain data, so a field list can be stored as JSON or sent from a server. A condition tests a value at the field's own level (`{ field: 'country', equals: 'US' }`, `notEquals`, `in: [...]`, `truthy`, `empty`; a dotted path reads deeper, `root: true` reads the top-level form) or combines others with `all`, `any` and `not`. `appearWhen` hides the field like `appearCondition`, which wins when both are set. `requiredWhen` passes `required: true` to the renderer and reports the `required` message for an empty value while it holds; `required: true` wins over it. Every adapter's `MultiFieldInput` reads `appearWhen` through core's new `resolveVisible`; core also exports `evaluateCondition` and `resolveRequired`. `fieldsToJsonSchema` writes both conditions as `if` / `then` instead of dropping them, and `fieldsFromJsonSchema` reads `dependentRequired` (and draft-07 `dependencies`) and `if` / `then` / `else` testing `const`, `enum` or presence back into them, so a field list survives the round trip. The adapters now import `resolveVisible` from core, so an adapter from this release needs core from this release too; upgrade them together. diff --git a/.changeset/default-renderer-labels.md b/.changeset/default-renderer-labels.md deleted file mode 100644 index 7236b6b..0000000 --- a/.changeset/default-renderer-labels.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@dynamic-field-kit/core': minor -'@dynamic-field-kit/react': patch -'@dynamic-field-kit/vue': patch -'@dynamic-field-kit/svelte': patch -'@dynamic-field-kit/angular': patch ---- - -Built-in renderers are labelled. A field without a registered renderer now renders its `label` as a `