---
# System prepended metadata

title: v3 Show & Tell (7/29/22)
tags: [' show and tell', ' blacksmiths', v3]

---

---
tags: v3, blacksmiths, show and tell
---

# v3 Show & Tell (7/29/22)

## FormBuilder Walkthrough

- FormBuilder is now a Context that wraps React Hook Form -> `useFormBuilder` but can also use `FormBuilder` within something like the UI Library
  - Can access the methods and state of FormBuilder within the inputs
- Injecting formState props such as disabled, errors via Context instead of on each Component
- FieldLego uses a map type via keyof to the component and then can be accessed via the key, which turns it into partials instead of 1 big object
  - Seems to be looking for everything to match every case
- In CoreFields:
  - Commenting out everything that isn't a text input resolves type errors but this is because this has the same props when being reconstituted

### Overview

- Receives Layout and then maps the FormBuilderFactory and also has the rhf DevTools
- Has the FormFooter
- Building a form:
  - Can embed with layout items such as the labels, title, etc.
  - Can customize the validation for each field
  - Have an object with each field (look to FormLego)
    - Fields reference FieldLego[] type
  - Wraps RHF
  - FieldLego has validation -- can pass in the `expectType`
  - Validation is rules.ts which has a rules object 
  - Form rules are being piped and woven together
  - RHF form rules are available
- Handles the loading + submit flow as well
- Direct improvement on the v2 Form Builder
- How are we going to get DAO state into a Form Builder library (when we're autofilling with existing values)
  - Leverage defaultValues
  - get metadata from context -> fill in the defaultValues object

### Limitations

- Can't find typesafe way to have ability to add app-specific or user-generated fields
- Keep type safety for the standard ones but potentially sacrifice this for the custom ones in the short term
  - How could we derive the types for these custom fields?
- CSInput -- wraps and incluedes a handlePlural so that we can minimize use of ternaries

## Ops Jam

- Current PRs are failing builds
- publish is broken for ui and daohaus-connect libraries aren't deploying to npm
  - `ngx deploy` is failing because it's not recognizing project in daohaus-connect and ui libraries
  - Producer PR has a migrate to nx 14 but that build is failing as there is an error at the last step of the build, but this may potentially fix it
  - migrating nx may fix this
  - nx report -- are there version mismatches?
    - these errors may have issues with the version of the library expecting and what the library is using
    - can try to overwrite the command with a run command that uses npm publish instead of a plugin
- automatic versioning
  - added a CI build that checks if there is a new version
  - builds failing when not being manually bumped up

### Fixes

- Issue is related to the vite packages as it's not happening on the non-vite packages
  - vite bundler for libaries (ui and daohaus-connect libraries) are impacted
  - https://github.com/vitejs/vite/issues/7484
- nx autoversioning plugin: https://github.com/jscutlery/semver
- semver:
  - We'd do this on commits to master
    - Can we set this to only run on commits into master instead of develop?
    - It reads all commits
    - Can we do something that only has this run on master?
    - Would then go through affected projects and bump
    - Not reading the package.json versions -- it's reading the `git tag` that are created from the command
    - Once things are tagged it fits in with the public command to deploy the latest tags to npm
    - 