Parcel Drafter widget ported from Web AppBuilder to Experience Builder
The WAB Parcel Drafter widget has no Experience Builder equivalent. I ported it as a custom widget for ExB Developer Edition 1.21. Posting for community testing.
GitHub: https://github.com/brianmcleer/parcel-drafter-widget (source and downloadable releases). The install zip is also attached to this post.
Background
This has been an open request for years:
- The custom widgets thread opened in December 2023 with Parcel Drafter described as the only thing keeping organizations in WAB. The WAB/ExB functionality matrix lists the capability as planned for "a future focused editing web product" - nothing shipped.
- The ExB Ideas submission (April 2024) has 37 kudos and remains Open, with comments through July 2026 from counties, cities, and military/civil engineering describing assessor, auditor, planning, and real-property workflows that depend on it. Requirements called out there: snapping to points and vertices, radius/tangent/chord bearings, arc and chord length, and misclose parameters - all covered below.
- On the ExB 2026 roadmap blog, the product manager confirmed in June 2026 there are no updates on this widget, and requests are still being posted in the comments.
One recent comment on the idea sums up the situation: a temporary custom widget is needed to bridge the gap. This is that widget.
Features
- New traverse: start point by map click or typed coordinates; bearing / length / radius entry with live drawing
- Bearing formats: S20-25-25W, 20-25-25-3, dd.mmss, decimal degrees; * copies previous line; *tb continues tangent to previous line or curve
- Boundary and connection line types with configurable default
- Misclose bearing, distance, ratio, and calculated area; compass rule applied within configured snap distance/ratio
- Rotation and scale by text entry or map drag around an anchor point
- Drag or arrow-key reordering of traverse legs
- Start point and digitize clicks snap to configured layers within tolerance
- Edit traverse: closed parcels selected via polygon footprint; unclosed via connectivity walk from clicked line; lines ordered end-to-start
- Edit save updates the existing polygon feature and replaces its lines (delete + add in one applyEdits); new save creates features
- Settings: map selection, three target layers with related line/point layers auto-detected from the polygon layer's service, COGO field dropdowns from the layer schema, attribute settings (fixed fields, webmap popup fields, or custom list with aliases), misclose and snapping config
Technical notes
- Surveying math (Vincenty geodesics, arcs, misclose, compass rule) ported directly from the WAB source
- Geometry services load at runtime via loadArcGISJSAPIModules: modern operator modules (projectOperator, geodeticAreaOperator, etc.) first, classic projection/geometryEngine fallback on older SDKs. The classic modules are removed in the SDK versions current ExB ships with
- Projection works in any organization spatial reference; drag-rotate/scale is not limited to Web Mercator as in WAB
- WCAG 2.1 AA: programmatic names on all controls, traverse grid exposed as a table with per-line labels, errors via role=alert and aria-describedby, live region for misclose updates, Escape exits map tools, keyboard reordering, info-icon tooltips on every setting and metric, Calcite-aligned jimu theme tokens
Known gaps
- English strings only (WAB shipped 30+ locales)
- No per-line-type symbol picker in settings; symbols configured in config.json
- On edit save, existing node points are not modified (points are not tracked by object ID); points are created on first save only
Requested testing
- Curve-heavy descriptions: major arcs, negative chord lengths, back-to-back *tb curves
- Non-Web-Mercator spatial references
- Edit-then-save against production parcel layers: confirm polygon object ID is unchanged and line count is correct
- Misclose behavior near configured snap thresholds
Report parsing errors, geometry placement issues, or console errors in the comments, or open a GitHub issue.