►
Description
In this session we resurrect an old MR to introduce a component `form-fields` which will encapsulate creating a design compliant form.
- https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/2586
A
All
right
already
started
thanks
everyone
for
hopping
on
the
front
end
pair
programming
time,
we're
gonna
air
up
on
some
front
end
specifically
gitlab
UI
front
end
where
we
got
this
form
Fields
component,
that
I
started
a
year
ago,
oh
gosh,
and
we're
gonna
try
to.
Maybe
we
could
finish
it
up
now.
A
A
And
then
yeah
I
ended
up
throwing
because
while
I
was
pairing
with
Leon,
this
I
think
he
had
a
very
specific
form
that
had
some
specific
needs.
So
each
of
these
fields
has
some
there's.
A
number
of
attributes
here
that
we
can
use
to
for
different
reasons
validate
is,
is
pretty
straightforward.
A
The
transform
is
probably
I,
don't
know
something
that
might
be
a
little
strange,
but
I
guess
this
is
because
these
are
just
going
to
be
input.
Number
inputs,
I
think
it's
for
some
reason.
We
still
get
it
as
a
string,
so
I
guess
we
have
to
transform
the
actual
value
before
doing
that.
A
I
don't
know
if
I
totally
remember
that
but
yeah,
let's
maybe
check
this
out.
Maybe
the
first
thing
to
do
is
rebase
it
and
then
yeah.
Maybe
we
can
start
just
playing
around
with
it
and
seeing
I
guess
one
be
really
curious
to
know
like
what
do
we
think
of
the
API
of
it
like?
A
Is
there
more
or
less
in
scope
that
we
should
have
here
and
then
after
we
feel
somewhat
good
about
the
API,
then
we'll
just
polish
it
up
test
it
ship
it
and
then
we
don't
have
to
worry
about
input,
validation
ever.
B
A
I'm
excited
about
this,
because
it
regularly
comes
up
to
me
in
code
review
that
it
regularly
comes
up
for
me
that.
A
Oh
gosh,
my
brain
is
I'm
on
a
one
thread
brain
right
now
it
regularly
comes
up
to
me
about
form
validation
and
it's
such
a
pain
to
re-implement
every
single
time.
We
need
to
do
it
because
there's
a
lot
that
goes
on
with
it.
There's
just
different
states.
You
have
to
manage
with
it
and
like
so
encapsulating
form,
validation,
I
think
is,
could
go
a
long
way.
D
I
know
I
know:
angular
2
is
like
out
of
fashion,
but
they're
declarative
form.
Api
is
probably
one
of
the
just
feels
nice
to
use
man.
A
C
You
can
only
have
a
one
validation
error
field
at
the
time
right.
You
just
return
the
stream.
Would
it
make
sense
to
return
an
array
to
do
to
validate
multiple
rules
at
a
time
like
for
a
password,
you
could
check
the
length
and
and
whether
there
are
symbols,
for
example,
this
kind
of
stuff.
A
A
F
Well,
I,
don't
know
if
this
is
what
Paul's
saying,
but
you
might
be
saying
like.
Could
we
make
it
so
that
a
field
can
have
can
support
multiple
rules?
Saying
like
it's
required
and
it
has
a
minimum
length
of
eight
or
something
like
that?
And
then
it
just
runs
the
rules
and
like
the
order
that
you
define
them
and.
B
G
F
That'd
be
pretty
sweet,
I
was
kind
of
playing
right
when
I
was
playing
around
with
this
I
was
playing
around
with
that
idea
as
well,
and
instead
of
having
like
a
a
validate
function,
I
just
had
like
a
a
key
called
rules.
That
was
an
array,
an
array
of
objects,
and
then
each
object
has
two
keys,
validator
and
message.
So
then
you
can
just
say,
like
these
are
all
the
rules,
and
then
this
is
the
order
you
put
them
in.
G
A
I'm
yeah,
that's
interesting,
there's
a
number
of
like
really
bad
ways.
We
could
do
this
it'd
be
really
funny
to
say
rules,
and
this
is
the
key.
A
I
almost
wonder
if
what,
if
it's
an
array
of
functions,
though,
like
okay,
what
what,
if
it's
an
array
of
functions,
do
you
really?
You
really
think
you
do
students.
F
Yeah
yeah
yeah,
that's
that's
kind
of
what
I
was.
What
I
had
that
makes
sense
of
it.
I
mean
functions
would
work.
How
would
you
define
the
message?
The.
A
F
A
Kind
of
like
the
idea
of
you,
you
brought
up
a
good
idea,
Paul
of
like
multiple
functions
here
and
we
that
sounds
like
a
really
really
easy
implementation,
but
a
really
flexible
way
to
declare
so
I,
don't
have
to
do
a
whole
bunch
of
if
statements
here
and
I
could
just
have
a
list
of
functions
here.
Marco
I'm,
looking
at
the
chat
and
Marco
you
mentioned
about
whether
this
is
works
with
view
or
Hamill.
A
This
is
going
to
be
just
via
specific,
because
this
is
about
the
client-side
validation,
which
I
don't
know
if
camel
can
do
the
client-side
validation,
but
maybe
but
yeah.
This
is
gonna,
be
just
the
good
lab,
UI
components.
D
D
D
Looking
at
this
now,
I,
don't
like
it
as
much
but
I
I
think
we
can.
We
can
probably
we
can
probably
take
some
shapes
from
form
groups
yeah
that
might.
A
A
F
Yeah
yeah
one
one
note
about
that,
though
one
use
case
that
we
use
a
lot
in
in
in
gitlab
is
we'll
have
a
form
that
you
just
submit
the
normal
way
like
with
a
normal
htu
ml
request
to
the
rails
controller.
So
the
name
of
the
input
might
be
like
have
weird
brackets
in
it,
which
is
you
can
you
can
define
an
object
like
that,
but
it's
kind
of
kind
of
funky.
Looking
I,
don't
know
it's
not
like
a
clean
like
camel
case
key.
Do.
A
A
You
know
Fubar,
but
if
we
have
to
make
it
merge
requests
full
bar.
We
could
do
it
like
that.
Otherwise,
this
would
just
be
the
name
and
we
wouldn't
have
to
worry
about
it.
D
But
the
so
the
rails
controller
depends
specifically
on,
like
the
input
name
attribute
right,
which
is
kind
of
disconnected
from
the
key.
If
you're,
if
you're
doing
this
to
like
spit
out
some
sort
of
pre-shaped
object
that
that
I
think
in
my
mind,
is
separate
from
like
they're
disconnected,
so
we
should
be
able
to
override
it
right.
A
C
A
A
But
I
really
I
really
don't
know.
I
I
think
it's
just
a
matter
of
preference,
because
I
think
you
could
even
end
up.
We
could
transform
the
objects
to,
and
rightly
we
could
support
both
and
as
it
could
be
very
robust.
I
F
To
wear
it,
what
we're
gonna
say.
One
thing
that
kind
of
confused
me
about
the
current
array
where
we
have
the
name
key
is
that's
used
for,
like
the
ID
attribute
and
the
name
attribute.
So
it's
a
little
bit
confusing
of
a
name
yeah.
So
if
what
we
could
call
it
like
either
we
could.
In
my
opinion
we
could
either
call
that
t
or
the
object,
syntax
kind
of
takes
away
the
the
arbitrary
part
of
it.
F
Well,
I
think
so,
because
you
have
to
use
the
label
Dash
four
on
the
form
group,
oh
well,
it
should
have
a
label-4
or
when
yeah.
D
H
D
A
G
A
We'll
figure
it
out,
but
then.
D
Oh
yeah,
oh
yeah,
the
one
thing
one
thing:
the
the
object:
the
object
version
has
going
for
it
I
think,
is
that
we
could
create,
like
nested
form
fields
in
a
way.
D
D
F
D
A
But
we
could,
but
it's
a
good
point
too
like
we
do
need
to.
We
do
need
to
respect
the
input
name
and
that's
that's
why
we
want
to
know
your
all
right
and
you
bring
up
a
good
point.
I
think
that's
why
an
object
is
a
really
great
idea
for
the
API,
because
that
that
has
symmetry
with
the
model
that
we're
gonna
get
back
right,
yeah,
it
Rhymes
exactly
it
Rhymes.
A
Therefore,
it
must
be
true
all
right,
but
the
first
thing
we
want
to
do
is:
let's
rebase
this
thing
and
then
and
then
let's
look
at
object
API,
but
before
we
look
at
object,
API
we're
going
to
see
if
it's
using
labels
or
not
correctly,.
A
Oh,
my
gosh
do
I,
have
just
all
right.
I
just
have
one
commit
here.
A
A
Yeah,
have
you
have
have
any
of
you
ever
tried
the
the
syntax
aware
like
get
diffing.
H
A
Only
I
only
saw
it
like
on
hacking,
his
in
passing,
but
I
I,
don't
even
like
left
hook
running
like
I,
don't
want
things
touching
my
get
like.
D
I
do
wish,
though,
I
wish,
instead
of
it
being
like
a
a
push-up
it'd,
be
like
a
pre-commit
hook
for
prettier.
That
would
be
nicer
and
it
could
just
change
the
files
before
they
go
in,
but.
A
E
A
You
push,
let
me
clarify
that
all
right,
but
I
mean
like
that's.
That
whole
thing
can
irk
me
from
time
to
time
all
right,
Let's,
oh
man,
I,
don't
have
the
right
node.
A
B
I
A
I
F
G
A
Of
stuff,
it's
great
okay,
so
we
rebased
this
successfully.
Let's
go
ahead
and
start
storybook,
so
we
can
get
our
some
feedback.
I'll
start.
A
Espl
is
really
nice,
it's
a
weird
npm
package
because
it
has
binaries
to
it.
It
has
like
optional
dependencies
for
every
single
OS
that
it
like
that's
how
I
guess
it
gets
the
right
binary
to
your
system.
It's
weird
form
fields,
all
right.
There.
G
H
A
D
A
Well,
but
here's
here's
the
reason
why
they
don't
need
to
be
linked
together
because,
like
if
you
click
on
because
of
the
nesting
structure
of
it,
because
you
can
do
this
with
labels
too,
like
clicking
on
it-
will
still
auto
focus
the
there's,
an
associations
here
with
them
as
well
still
do
we
do
we
really
not
like
field
sets.
F
A
The
with
labels,
as
soon
as
I
discovered
this
I
abandoned
IDs
all
together,
but
you
can
actually
put
your
input
inside
of
a
label
Tack
and
you
don't
need
to
do
the
four
binding
because
it
just
knows
the
labels,
for
whatever
is
inside
of
it.
It's
very
strange,
but
it's
h,
you
know
it's
par
for
the
course
for
HTML,
but
yeah.
Maybe
we
don't
need
IDs.
E
F
A
I
think
bootstrap.
Actually
they
might
expose
this
as
well
their
ID
generating
stuff
because
I
remember
looking
into
it
at
some
point,
but
I'm
not
entirely
sure
about
that.
Let's
do
the
objectifying.
That's.
B
G
A
So,
let's
kind
of
get
the
the
type
of
these
down,
maybe
so,
if
this
is
an
object
that
has
or
it's
I
guess,
a
record
from
string
to
some
kind
of
field
hype
and
we're
saying
a
field
is
a.
B
A
Oh,
that's
a
prop.
Yes,
yes,.
F
H
H
E
F
A
Yeah,
what
I'm
realizing
I'm
trying
to
14
months
ago,
man
I've,
really
neglected.
This
thing,
I
was
what
was
helpful
about
sorry.
I
just
want
to
click.
I
want
to
clarify
the
intent
here
was
before
this
meant.
Validators
always
got
a
string,
so
the
validator
needed
to
do
the
transform
and
then
to
actually
get
the
model
I
needed
to
transform
it
as
well,
and
so
it
it
just
wasn't
very
pleasant
and
I
toyed
around
this
idea
of
like
this
is
what
I
really
wanted
to
be.
A
C
D
A
So
here's
another
idiom,
this
one's,
like
my
my
dog,
wants
to
go
outside.
Let
me
let
me
let
my
dog
out
and
then
I
will
she
had
some
really
crazy
ideas
at
you
all
be
right
back.
C
F
A
F
A
F
F
A
That's
a
really
good,
that's
a
really
good
case:
okay,
first,
let's,
let's
rename
transform
I
like
map
and
put
I
think
I
did
transform
because
it's
based
off
of
view
like
I
think
that's
what
they
call
it
input
number
I
I!
Think
that's!
Why
I
did
it.
A
D
A
I
E
A
A
E
F
G
A
A
F
Yeah
I
think
that's
what
I
when
I
was
playing
around
with
it.
That
was
a
little
confusing
to
me
where,
when
we
ran
when
we
Mount
the
the
component,
there's
no
default
value
for
any
of
them,
I
think
or
like
the.
If
you
look
at
it
in
the
view,
Dev
tools
like
the
model
is
just
black
I
think,
instead
of
having
like
each
one
defined
and
then
it
it
gets
to,
once
you
actually
input
into
a
field,
then
it
gets
defined
in
the
model.
I
think
yeah.
E
A
F
Well,
like
yeah
I
guess
in
the
created
like
in
the
created
hook,
we
could
just
Loop
through
all
the
fields
and
then
just
put
a
default
value
of
an
empty
string
and
return
it
yeah
or
emit
the
input
event
mm-hmm.
But
then
you
start
off
with
like
the
model,
with
a
default
string
for
everything.
I
don't
know
if
that
makes.
But
then
we
don't
have
to
do
weird
things
and
get
value.
I,
don't
think.
A
Right
I
think
we
could
do
that.
I
think
what
what
what
Peter
is
mentioning
is.
This
can
totally
happen.
So,
if
I
don't
touch
anything
yeah,
this
is
the
model
you
see.
The
model's
empty,
yeah
I
hit
submit.
What's
going
to
happen,
so
we
lost
our
our
rhyming
and
symmetry
between
the
model
and
the
fields.
D
D
A
Right,
let's
see
that
I'm
going
to
add
that
as
a
to
do,
we
should
admit
a
default.
G
Yeah
right
and
it's
optional,
I
guess
label's
optional,
too
I
guess
input
attributes
is
optional,
optional.
A
This
Maps
the
inputted
string
value
from
the
rendered
component
element
to
it
would
be
it's
a
t,
you're
right,
but
I'm,
not
gonna.
A
E
D
A
F
Cool
I
would
say,
the
label
should
be
required
because
every
field
should
have
a
label,
probably.
F
What
do
you
mean
yeah?
You
could
potentially
pass
like
an
attribute
or
something
that's
like
the
SR,
only
or
something
class
I.
D
A
D
A
I'm
just
100
validated,
so
this
is.
B
G
F
A
B
A
D
D
A
That's
an
interesting
question:
yeah
we
might
need
to
pass
down
as
a
prop
something
about.
Oh
no,
we
actually
do
yeah.
It
comes
from
this
validation
state.
H
A
Model
is
I,
realize
too
model
is
an
overloaded
term.
That's
not
gonna
fly
V
model
model.
Are
we
sure
calling
this
thing
model
value?
Should
we
call
it
value
yeah.
A
A
A
I
think
I
want
to
call
it
fields:
okay,
I
get
what
you're
saying
I
get
what
you're
saying
but
I
just
know
like
on
my
head:
I'm
thinking,
I
gotta
declare
the
fields
and
it's
like
I'm
gonna,
if
I
See
Fields.
This
is
how
I
get
my
Fields
like
I,
think
that's
gonna
appeal
to
autocomplete
that
I
think
I'll
call
this
we'll
call
this
values
to
mirror
the
fields.
D
It's
unfortunate
that
future
doesn't
want
to
rename
things.
H
A
All
right,
so
this
is
all
going
to
blow
up
because
we
don't
we're,
have
an
array
here.
So
let's
transform
this
to
an
object
like
we
were
thinking
and
so
we're
thinking.
We
would
call
it
something
like.
A
Oh,
oh
wait.
H
A
Faders,
oh
my
gosh
I'm,
going
to
move
this
to
some
constant.
It's
going
to
be
so
cool.
D
G
A
Speaks
so
fancy
all
right,
it's
gonna
be
so
cool.
G
A
And
validators
required,
like
I,
think
I.
Think
that
shouldn't
be
its
own
option
like
we'll
need
to
we'll
figure
that
out
I.
Don't
think
you
know
what
I'm
saying
I
have
hard-coded
in
here:
oops
oops.
A
D
A
I
would
lean
towards
requiring
ex
requiring
explicit
expletives
I
would
lean
towards
requiring
expletives
in
the
code.
A
A
A
Right
here
we're
still
treating
Fields
as
an
array.
So
let
me
let
me
let
my
dog
in
now
and
I
have
another
crazy
idea
for
you.
Austin
be.
A
Okay,
so
how
do
you
all
feel
about
this
is
the
shape
of
the
props.
H
D
A
A
So
we
can
put
it
in
I.
Guess
I'm
already
doing
this
here.
What's
Fields,
oh
yeah,
here's
fields
to
render
I
guess
I,
guess
I
guess
I
am
already
doing
this.
Do
I
do
I
reference
the
fields
array
anywhere
else?
No,
oh
I'm
already
doing
this
all
right
all
right!
So,
let's
just
do
it!
A
A
H
F
It
has
to
do
with
like
if
the
input's
been
typed
in
yet
I
think
maybe.
A
F
H
F
The
value
to
play
Devil's
Advocate:
why
are
we
transforming
it
to
a
array
when
we
could
just
keep
it
as
an
object
and
always
have
it
as
an
object?
It
seems
like
we're
kind
of
like
I.
Don't
know
if
we
just
if
we
keep
it
as
an
object,
and
we
that
is
O
is
an
object
then,
but
if
we
transform
it
to
an
array,
then
we
have
one.
That's
an
array
and
one
that's
an
object
and
it
seems
like
it
might
get
more
confusing,
but.
A
F
A
A
A
A
A
A
Right,
oh
yeah:
this
is
the
default
one,
so
I'm
basically
going
to
just
then
I
think
we
could
just
do
this.
We
could
say
if
we
have
this
yeah.
So
we'll
say:
if
is
a
function?
Yeah
sorry,
I'm,
I'm,
all
right,
I'm,
I,
skipped
ahead
of
my
and
and
I
am
simplifying
I.
Think
what
we're
doing
here,
because
we
do
it
a
couple.
We
do
it
some
somewhere
else
and
I.
Think
let's
just
move
to
its
own
function.
A
A
A
Now
validate
field,
let's
see
if
we
can
get
just
field
name
here.
A
Yeah,
okay,
so
we
only
want
to
validate
if
it's
dirty
and
that's
what
this
should
validate
is
doing.
So
that's
easy
here,
field
name
here
we
get
the
value
by
the
field.
Name:
okay,
it
looks
like
I
still
need
to
hold
the
field
to
get
the
actual
validation
function.
A
So
I
think
I
will
yeah
yeah
all
right,
so
we
need
to
pull
the
field
here
from
this
Dot
Fields
field
name,
if
is
a
function.
A
H
F
C
C
C
Or,
should
we
just
Mark
all
the
filters
validatable
when
you
submit
the
form,
can
we
do
that.
A
A
We
could
like
create
a
scope
slot,
where
this
is
now
that
wouldn't
work
I
was
like
this
is
where
you
put
the
button.
F
I
was
running
into
this,
and
I
actually
was
playing
around
with
actually
putting
GL
form
the
actual
form
component
inside
form
fields.
And
then
then
you
can
listen
to
the
submit
event.
You
can
check
if
there's
any
errors,
and
then
you
can
admit
the
submit
if
it's
valid
or
you
can
emit
like
invalid,
submit
or
something
like
that.
F
It
kind
of
changes
how
the
component
works
like
overall,
but
it
kind
of
gets
rid
of
having
to
pass
a
bunch
of
state
to
the
root
component
and
that
type
of
stuff.
But.
A
F
A
F
Or
I
think
yeah
or
you
can
yeah
I,
think
that's
what
I
was
running
into
it
gets.
A
F
A
No,
no
you're
right,
but
let's,
let's,
let's
add
this
as
a
to-do.
This
component
probably
wants
to.
C
A
A
I
A
H
C
You
saying
I
think:
could
you
just
pass
a
ref
to
the
form
that
we
want
to
watch.
A
Along
the
way,
what
what
what
Paul
identify,
which
is
a
really
good
point,
is
we
only
show
validation
messages
when
they're,
dirty
or
when
the
form
has
been
submitted
is
when
we
do
the
validation
check,
and
so
we
can
test
for
dirtiness
here.
That's
great
form.
Submission
is
a
little
more
tricky,
so
we're
considering
opening
up
the
scope
of
this
thing.
F
So
I
I
mean
I,
think
that
would
work
but
like
what
what's
the
I
still
don't
understand
the
use
case
for
not
rendering
the
or
like
having
I.
Don't
still
don't
understand
the
use
case
for
passing
an
ID
instead
of
just
rendering
the
form
in
this
component
like
the
yeah?
What,
when
would
you
do
that
like?
When?
Would
you
want
to
render
just
the
fields
but
not
a.
H
A
That's
the
other
thing
is
like
yeah.
We
could
just
pass
along,
but
the
idea
is
oh
now.
This
component
is
doing
a
lot,
and
maybe
we
want
to
decouple
creating
the
form
from
this
component
and
I.
Don't
know,
but
maybe
listening
outside
of
the
component
is
a
lot
already
and
I
I.
Get
that
that's
not
ideal,
I
would
I
know.
We
have
some
really
gnarly
forms
like
like
the
merge
request.
Description
is
one
large
form
like
the
or
updating
a
merge
request.
A
F
F
Yes,
yes,
and
we
totally
have
that
yeah
yeah
I,
know
I,
guess
the
word
I,
just
hate
kind
of
enabling
people
to
create
that
type
of
stuff
which
I
I
do
all
the
time,
but
it
like
just
kind
of
feels
like
we're,
enabling
just
like
being
able
to
create
those
forms
that
are
like
part,
Hammel
part
view
it's
just
kind
of,
but
at
the
end
of
the
day
we
have
a
lot
of
that
stuff.
So
we
kind
of
got
to
deal
with
it.
So.
A
F
F
F
H
A
A
A
F
Yeah,
you
could
admit
like
a
state
event
like
form
State
event
or
something,
and
then
you
have
to
keep
track
of
the
form
state
in
the
root
component,
but
then
you're
kind
of
keeping
track
of
it
in
two
different
places
and
I
think
it
gets
confusing.
Yeah.
A
A
D
So
like
what?
If
so,
what
if
this
is
our
I'm
I'm
building
out
a
form
right-
and
this
is
like
the
the
top,
the
the
top
level
component
for
my
form
and
then
in
in
that
form
we
pass
in
it's
a.
We
have
a
scope
slot
and
we
pass
in
like
a
form
or
a
modal
or
something
so
that
we
can.
We
can
start
passing
functions
down
into
our
whatever
our
like
form
container
is
and
then
inside
the
container
can
go
all
the
fields
like.
Is
that
doable
and
is
that
too
complicated
man.
A
And
react:
you
could
do
it
sorry,
I
don't
mean
to
bring
up
I.
Don't
need
to
bring
up
react
at
a
time
like
this,
because.
D
A
It's
going
to
overwrite,
so
the
default
content
there's
no
way
to
get
access
to
it
from
the
parent.
The
default
content.
That's
what
you
kind
of
want.
You
want
a
function
that
returns
so
that
you
can
call
it
wherever
you
want
to
which
you
could
do
in
react,
because
it's
like.
Oh,
this
is
part
of
my
slot
scope.
I
get
this
function.
I
can
just
call
it
wherever
I
want
to
yeah.
A
I
think
we're
getting
pretty
close
to
doing
the
form
ID
listening,
because
I
almost
feel
like
because
I
feel
like
I
feel,
like
my
other
idea,
would
be
like
I
I
sense.
Another
component
wanting
to
come
from
this
of
like
this
is
the
form
Fields
container
or
like
this
is
the
one
that
creates
the
form
and
there's
now
some
sort
of
relationship
between
the
two.
But
this
is
almost
just
like.
A
We
should
just
listen
to
at
that
point:
you're
already
listening
to
a
parent
somehow,
but
now
you,
let's
just
listen
to
the
parent,
so
I
think
just
to
get
this
out
the
door,
we're
just
gonna,
listen,
we're
gonna,
require
form
ID
and
that
will
be
our
submit
listener
and
we'll
figure
it
out
a
more
elegant,
more
elegant
ways.
Another
time,
but
at
least
we
won't
have
to
worry
about
foreign
validation.
F
H
F
A
I
think
we
I
think
what
we'll
do
is.
A
We
are
always
going
to
prevent
default
the
submit
because
then
none
of
that
can
happen
by
default.
So
we
listened
to
the
form
submission
and
we
overwrite
everybody
else's,
submit,
listen,
but
then,
yes,
we
will
emit
our
own
submit
event
when
this.
A
G
A
Hide
is
a
cancelable
thing
and
then
you
could
actually
submit
the
form
we
could
create
still
hidden
form
that
we
could
submit
or
whatever
something
like
that
and
like.
We
could
still
manage
this
I.
Think
so.
I
think
it's
doable.
A
F
A
H
A
D
But
you
know
what
there's
some
like
weird
forms
out
there.
If
you
want
a
fun
example:
I
just
I
just
merged
one
ish,
but
it's
basically
like
a
dynamic
table,
editing
all
right,
it's
not
merged.
Yet
my
apologies.
F
A
H
D
It's
not
see,
that's
the
thing,
but
it
it
is
a
a
group
of
things
that
collect
information
and
then
gets
submitted
to
the
server
right
so
like
theoretically,
it
should
be,
but
this
the
if
you
scroll
up
a
little
bit
the
approval
stuff.
We
have
these
like
little
individual,
edit
buttons
that
make
the
field
editable
and
then
it.
H
A
H
A
F
H
A
H
A
That
one
is
very
weird
because
that's
that's
one
that
I
worked
on
depending
on
where
you're
editing
it
from
the
app
sometimes
it's
submitting
as
a
controller
action
and
sometimes
it's
submitting
as
an
API.
So
when
it's
a
controller
action,
we
have
to
mount
whatever
model
that
we
normally
just
submit,
gets
mounted.
I
create
a
separate
component
as
like.
Here's
all
our
hidden
inputs
to.
G
D
A
A
A
You
know
what
it
would
be
cool.
You
know
what
we
might
be
able
to
do
all
right
or
we're
over
engineering
this
and
and
it's
and
it's
time,
but
one
thing
bothered
me
because,
like
yeah,
what
if
we
have
a
form-
and
we
want
to
use
two
instances
of
form
Fields,
like
that's
gonna-
be
so
wild?
Let's
just
ignore
that.
A
The
other
thing
is
maybe,
instead
of
taking
a
form
ID
event,
maybe
it
can
just
take
a
function
of
this
is
this:
this
is
the
quote:
unquote
submit
Handler
and
then
we
kind
of
just
our
event
is
a
transform
of
that
function
of
like
well,
you
listen
to
us
and
we'll
tell
you
when
that
event
is
actually
good
to
go,
and
so
it
may
not
necessarily
need
to
be
coupled
to
a
form.
A
But
all
that
is
wildly
over
engineering
for
right
now,
we'll
see
all
right,
thanks,
I
think
I'm
I'm,
so
nerd
tonight
by
this
I'm
gonna
have
to
I
know:
I'm
gonna
have
to
push
it
forward
and
does
anyone
want
to
review
it
when
it's,
maybe
in
a
reviewable
state.
F
Yeah
I'd
like
to
take
a
look
just
so
you're
aware
like
when
I
kind
of
proposed
the
other
solution
which
I
don't
like
anymore
I
like
this
better
but
anyways,
I
kind
of
asked
for
feedback,
and
there
were
some
people
that
were
interested
in
kind
of
taking
a
look
at
some
third-party
libraries
and
I.
Don't
know
if
we
want
to
just
say
like
we
should
look
into
that
as
well
or
we
should
go
with
this,
but
it
might
be
worth
just
like
kind
of
taking
a
look
just
to
it.
A
It
was
pretty
pretty
nice,
but
it's
still
not
doing
this
whole
data-driven
Fields
thing
like
that
I
think
is
going
to
go
a
long
way
as
well.
A
F
Just
making
you
aware
that,
like
there's,
definitely
some
people
out
there
with
opinions
that
a
third
party
Library
might
be
a
better
solution,
but
I
don't
know,
and
there
is
also
an
RFC
about
adding
a
validation
Library.
So
that's
kind
of
why
I
bring
it
up
this
like
in
the
past.
It
has
been
like
something
where
we're
trying
to
get
everyone's
input
yeah
before
we
go
a
direction
which
we
never
actually
kind
of
did
really.
So
just
so,
you
know
yeah.
A
That's
a
that's
a
good
point,
and,
and
now
we
could
bring
it
up.
I
do
think
this
is
a
two-way
door
decision,
because
if
we
want
to
use
a
third
party
there's
that
would
just
replace
the
implementation
of
this
yeah
but
yeah,
we
should
hopefully
alert
people
to
drop
in
opinions
on
the
API
of
it.
F
I
A
Cool
well
thanks.
Everyone
for
working
on
it,
I
appreciate
it.
I'll
I'll
ping,
you
Peter
I'll
ping,
you
on
the
Mr
as
a
push
up
some
changes.
So
thanks.
Okay,.