Repository navigation
Releases: comentality/xrm-sealed-input
Release list
Sealed Input 0.5.0
- An entry typed only once is flagged when focus leaves the control, and the form will not save until it is fixed. The block holds for the Save button and for Ctrl+S on any model-driven form.
- A SIN shorter than nine digits is no longer stored when typed twice: all nine digits and the checksum are required.
- A cell made two columns wide now lays its two fields out like two stock cells on that row.
Install
Import xrm-sealed-input-0.5.0-managed.zip (or the unmanaged zip) into your environment, then add Sealed Input to a text column on a form. docs/usage.md has the maker-side steps, the screenshots, and the full list of interaction rules.
Vendor instead
The control is five files in one folder. xrm-sealed-input-0.5.0-source.zip holds them with VENDORING.md, or fetch straight from the repo:
npx degit comentality/xrm-sealed-input/SealedInput/SealedInput SealedInput/SealedInput
Notes
Requires platform libraries React 16.14.0 and Fluent 9.46.2. Protecting the column is Dataverse column security's job, not this control's. The save block needs a model-driven form; on a custom page the errors show and nothing else happens.
Sealed Input 0.4.0
A model-driven app field control for typing a sensitive number by hand — a bank account number, a Social Insurance Number — with nothing pasteable and nothing readable on screen.
- Sealed Input makes a person type a sensitive number twice, masking every character and blocking the clipboard. The character just typed stays readable for a second, then turns into a dot. Paste, drop, cut, autofill and password managers are shut off at the field.
- The column is written only once both entries agree and pass validation, so a half-typed number never reaches Dataverse. Digits only by default, optionally checked as a Canadian SIN (nine digits, Luhn), with a length cap for everything else. A stored value shows a fixed eight dots, which say nothing about the real length.
- The two fields borrow the form's own label placement, side by side in a wide cell and stacked in a narrow one. The control reads the section's label column out of the DOM so its inputs line up with the stock fields beside them. Nothing about labels is configurable.
Install
Import xrm-sealed-input-0.4.0-managed.zip (or the unmanaged zip) into your environment, then add Sealed Input to a text column on a form. docs/usage.md has the maker-side steps, the screenshots, and the full list of interaction rules.
Vendor instead
The control is five files in one folder. xrm-sealed-input-0.4.0-source.zip holds them with VENDORING.md, or fetch straight from the repo:
npx degit comentality/xrm-sealed-input/SealedInput/SealedInput SealedInput/SealedInput
sealedInput.ts holds the rules with no React or DOM in them — the file to edit for another country's checksum or a different character filter.
Requirements and caveats
- Bound to a
SingleLine.Textcolumn. Platform libraries React 16.14.0 and Fluent 9.46.2 (newer Fluent versions are rejected on import). - The control governs entry, not storage. Protecting the column itself is Dataverse column security's job.
- A half-finished entry cannot block the form's save: standard controls have no field notification API.
- Read-only and disabled rendering is untested — the harness has no disabled switch.
- First public release. The numbers below 0.4.0 were test-environment pushes, never published.
- Public domain, CC0 1.0. No attribution required.