Skip to content

Releases: berserker5619/Dynamic-Entity

1.10.0

Choose a tag to compare

@berserker5619 berserker5619 released this 03 Sep 04:35

Date formatting reached some surfaces and not others, and a beforeSave veto could be walked around and could not be observed from the record editor.

Added

  • saveRejected on ngx-dynamic-record-form

Fixed

  • saveSection no longer bypasses beforeSave
  • setDateFormatters now reaches date and datetime fields (not only the record summary and time)

monthYear is unchanged. saveSection() now returns Promise<void>; callers that ignored the return value are unaffected.

See CHANGELOG.md for the full notes.

1.9.1

Choose a tag to compare

@berserker5619 berserker5619 released this 02 Sep 13:33

The npm README pages now document MASKED_PLACEHOLDER and setDateFormatters. Both shipped in 1.9.0; npm does not show EXTENDING.md, which was the only place they were written down.

No runtime change. See CHANGELOG.md.

1.9.0

Choose a tag to compare

@berserker5619 berserker5619 released this 02 Sep 12:57

Every word the libraries render themselves is now translatable, and every rendered control has a name and an id of its own.

Added

  • Translatable library chrome: UI_TEXT, provideNgxDynamicEntity({ uiText }), BUILDER_TEXT, uiLanguage
  • Configurable MASKED_PLACEHOLDER
  • setDateFormatters({ date, datetime, time }) in @dynamic-entity/core

Fixed

  • Five field types rendered a control with no accessible name
  • Duplicate DOM ids when a field rendered twice (array rows)
  • Common modules registered by selector took their tab down
  • resolveUiText could return a non-string
  • Configured validation messages now reach every field type
  • Core reports a collection that is present but is not an array

Upgrading

Control DOM ids are no longer field.id (now e.g. email-de7). Address a control through data-testid or its label. New APIs are additive; an unconfigured install renders what 1.8.1 rendered.

See CHANGELOG.md for the full notes.

v1.5.0

Choose a tag to compare

@berserker5619 berserker5619 released this 30 Aug 05:21

Work since 1.4.0: nothing in the builder names a field by typing any more, the
validator understands the paths the builder authors, and the rule editor stopped
locking the browser.

Added

  • validateConfig understands field paths, and can check rules. A showWhen keyed
    [work.address], or a cascade parent written the same way, used to be reported as an
    unknown field — the form the builder authors after 1.4.0. Those paths now resolve to the
    one field they name. Pass rules (or --rules rules.json on dynamic-entity validate)
    to apply the same check to a rule's trigger, compareToField and field targets; without
    that option, rules remain an @Input the config file cannot see and the renderer still
    warns in development.

Changed

  • The people entity in the reference dataset has an address on Personal Details
    and another on Work Details, with deskNumber shown only when [work.address] is
    HQ — a config the validator used to refuse, now the fixture the path tests hold.
  • Every field reference in the builder is now chosen from a list. 1.4.0 covered the
    rule form; showWhen, both ends of a patchOnTrue mapping and an autoPatch target
    were still text boxes, and the cascade parent was a list of bare ids. All of them offer
    the same field paths. Typing was the one way left to author a reference that names two
    fields at once.
  • A Tab picker on the field inspector. moveFieldToTab shipped in 1.4.0 with nothing
    calling it. Moving a field rewrites its path and repoints the rules that named it.
  • setActiveTab(tabId, { focusPanel: false }). Activating a tab moves focus into its
    panel, which is right for a keyboard user pressing a tab. A quick-jump also switches tabs
    and then focuses the field it was aiming at — and the panel focus runs on
    requestAnimationFrame, after afterNextRender, so it landed second and took the focus
    back. A caller that will focus something more specific can now say so.

Fixed

  • The rule editor locked the browser. [ngModel] on the targets multi-select was bound
    to a method returning a fresh array on every call, so ngModel saw a new value on each
    change-detection pass: it wrote, which scheduled another pass, which built another array.
    Clicking "Rule" froze the page outright. The array identity is now held stable while its
    contents are unchanged.
  • A new showWhen condition seeded the literal string field, which is not a field id
    — so the condition referenced nothing and hid the field until someone noticed. It seeds a
    real field, falling back to the placeholder only when there is nothing else to watch.
  • The cascade parent offered the field as its own parent.
  • Three capabilities the demo could not reach, and so nothing tested: the builder always
    opened a blank entity and can now open any saved one; the record editor — the only host of
    the quick-jump links — was never rendered; and no entity marked a field showOnMinimize.

v1.0.0 Production Release

Choose a tag to compare

@berserker5619 berserker5619 released this 14 Aug 03:04

Production-Grade Low-Code Enterprise Form Engine & Visual Builder for Angular 17+