►
Description
In this session we investigate solutions to an issue with ESC triggering the "Cancel comment" modal, when it should just trigger canceling the emoji dropdown.
MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91829
A
The
issue
I
am
bringing
along
so
this
milestone,
I'm
participating
in
the
beautifying,
our
ui
initiative,
and
there
is
one
of
those
bugs
that
I'm
currently
looking
into,
and
it
is
pretty
pretty
easy
to
to
reproduce
and
let
me
quickly
share
the
screen
so
start
a
video
it
is
about
when
you
are
definitely
issues
and
pretty
strong
merch
requests
as
well.
A
When
you
are
going
to
answer
a
comment
and
you're
going
to
be
handling
with
the
emoji
picker
and
you're
going
to
start
it,
and
now
you
want
to
get
out
of
it
using
the
escape
key.
It
will
not
only
close
the
emoji
picker,
but
it
will
give
you
the
model
that
basically
to
kind
of
dis,
discard
your
changes
and
quit
commenting
which
is
hugely
annoying.
So
that
is
the
thing
and
while
diving
into
this
this
part
of
our
code
base,
I
am
sure
it
is
safe
to
say
that
this
can
be
considered
legacy.
A
It
is
what
I
then
learned
done
by
a
plug-in,
which
I
think
it's
called
add
view
js,
and
we
are
including
this
as
an
yeah
as
a
dependency.
Basically,
it's
it's
done
in
coffee,
coffee
script.
To
my
large
surprise,
so
the
thing
with
that
is
the
emoji
picture.
It
is
not
part
of
our
view
application,
so
therefore
it
is
basically
just
inserted
into
the
dom
and
positioned
absolute
honest.
Let
me
let
me
see
if
I
can
reproduce
this
somewhere,
so
we
can
inspect
this.
B
You're
in
the
text
area
and
you
press
colon
and
then
the
the
drop
down
appears.
The
active
element
is
still
the
text
error.
B
So
when
you
hit
escape
your
whatever
key
down
or
key
press
it
listen,
you've
got
listening,
is
gonna
hit
all
the
listeners
on
the
text
area,
which
includes
the
cancel,
writing
comment
thing.
B
So
the
only
way
I
can
think
of
to
prevent
that
would
be
to
make
sure
that
the
gfm
or
whatever
app.who
js
listeners
bind
their
events
before
the
view.
Application
do
and
then
call
stop
immediate
propagation
when
you
get
escape,
but
that
is
horrible.
That's
a
horrible
mess,
so
I
hope
there's
an
easier
solution,
but
that's
mine.
A
A
I'm
I'm
not
quite
sure
if
this,
because
the
problem
is
that,
basically
what
we're,
when
the
the
view
application,
the
text
area
is
being
edited,
which
is
a
part
of
our
view,
application
and-
and
it
has
an
even
key
listener
on
the
escape
key.
We
kind
of
wanted
like
this
is.
This
is
not
a
bug.
This
is
a
feature
we
want
this.
We
want
this
to
work,
it's
just.
The
condition
is
going
to
be
always
work,
but
if
the
emoji
picker
is
open,
then
just
please
ignore
this.
A
That
that
is
what
I
currently
came
up
with
like
this
is
this
is
heavy
work
in
progress
and
not
going
to
to
be
a
proper,
mr,
but
so
this
is
the.
This
is
the
event
handler
for
the
escape
key
for
the
for
the
note
form-
and
this
is
then
just
checking
if
the
if
the
emoji
picker
has
a
style
blocked
to
it,
which
this,
to
my
surprise,
it
works
with
quite
a
high
reliability.
A
It's
still
rubbish,
but
just
to
basically
as
a
prototype.
This
is
this
is
currently
where
I'm
at
with
this.
D
I
yeah
I
I
agree
with
what
mark's
saying
it'd
be
nice
if
we
could
lean
into
our
data
structures
here
and
we
didn't
have
to
couple
into
the
note
form
needs
to
know
about
at
view,
and
things
like
that.
If
we
could
have
a
a
stack
of
listeners
such
that
the
latest
one
that
pushes
the
listener
is
the
first
one
that
handles
it,
that
would
be
sweet
yeah.
What
would
you
want
to
say
mark.
B
So
I
have
another
idea:
it's
less
bad
than
what
I
suggested
at
first,
but
it's
still
bad.
B
B
D
D
B
B
A
Do
awesome:
let's:
let's
do
this,
the
good
news
in
the
battles?
I've!
Definitely
I
have
been
there,
but
I
don't
have
it
oh.
A
So
let
me
see
if
I
can
quickly
refine
this
m,
so
I
need
to
figure
the
exact
name
of
the
library
which
I
currently
don't
have
at
the
top
of
my
mind
and
within
the
node
modules
folder,
there
will
be
around
seven
a
file
in
there
not
too
big
to
to
get
there
to
get
it
and
there
has
been
a
listener
in
there.
I.
D
D
A
Yeah,
this
is
basically
just
this
functionality
like
the
drop
down.
Emoji
picker
like
this
is
all
at
you.
A
A
I'd
say
like
as
a
user,
I
would
expect
so
if
we
are
not
opening
this,
this
add
to
add
hue
menu,
then
just
on
on
escape
press.
This
model
is
absolutely
fine,
but
when
we
do
have
the
the
text
area
in
this
kind
of
edu
field
and
when
I
now
press
escape
once,
I
would
expect
to
only
close
this
user
menu
for
now
or
emoji
pick
or
whatever
it
might
be,
but
not
go
into
not
asking
me
to
cancel
creating
the
comment
so.
A
Well,
basically,
with
handling
state,
I
suppose
that
we
could.
We
could
have
the
state
telling
us
that
the
the
ad
view
is
currently
active
and,
if
so,
just
ignore
the
key
press.
A
A
We
will
still
be
listening
for
the
escape
key
press
in
our
view,
application,
but
we'll
be
checking
on
the
event
if
it
has
been
prevented
by
default,
which
is
something
we
would
need
to
build
into
the
library
first
and
then
we
would
know
okay,
something
is
trying
to
keep
us
away
from
open
our
normal
menu,
and
this
comment
is
not
meant
to
be
cancelled.
D
D
Sorry,
I'm
sorry
for
breaking
up.
Another
idea
is
right
now
the
quick
fix
that
you
have
in
that
draft
tomorrow
is
asks
the
component
to
tell
if
the
emoji
thing
is
visible,
but
what,
if
we
told
at
who,
what
if
we
could
attach
listeners
for
whether
it's
visible
or
hidden,
to
put
some
sort
of
blocking
flag
on
that
contain
elements
container
so
like
what?
D
If
that
condition
in
the
view
component
was
like,
is
out
like
it
checks
if
it
has
a
class
out
of
control
or
something
like,
I
don't
have
control
of
this
whatever,
and
then
I
can't
I'm
not
gonna
close
it,
but
then,
whenever
the
emoji
thing
closes,
then
we
just
remove
that
blocking
flag.
A
A
No,
it
is,
it
is
just
very.
Let
me
see
if
I
can
reproduce
this
easily,
but
it
is
basically
just
a
touch,
the
very
end
of
our
of
a
body,
tech
and
then
positioned
in
an
absolute
race.
So
it
is
something
somewhere
in
our
dump,
but
it's
not
that
we
can
actually
deal
with
it
as
if
a
child
or
something
it's
just
somewhere.
A
So
and
sorry
for
one
more
quick
note,
because
you
just
mentioned
the
vendor
library,
with
the
current
setup,
we
haven't
actually
cut
many
moons
ago,
probably,
but
we
already
fought
this
this
library,
so
it
is
kind
of
a
vendorous
thing,
but
we
are
in
full
control
of
this
part.
So
making
changes
to
it
is
kind
of
a
realistic
thing
to
do.
D
Right
that
makes
sense,
no
suggestion
that
I'm,
I
think,
might
be
the
simplest
it's
still
not
great,
but
if
at
who
at
who
is
already
given
reference
to
some
sort
of
element,
it's
targeting,
and
so
when
it's
opened,
we
don't
have
to
couple
at
who
to
anything
else
and
what
we
could
do
is
have
leave
some
sort
of
artifact
onto
that
element
like
a
class
or
a
data
attribute
or
something
when
we're
open
and
when
we're
closed,
we'll
remove
that
artifact,
and
so
the
other
thing
that
has
reference
to
that
element
is
the
view
component
and
where
everywhere
else,
we're
using
gfm
stuff.
D
A
I'm
not
entirely
sure
if
I
fully
understood,
but
I
like
one
of
those
problems
I'm
seeing
is
that
this,
the
the
dom
elements
the
the
edge
hue
library
is
springing
along.
There
will
be
staying
in
the
dom,
basically
all
the
time,
so
here
on
the
right,
you
can
see
it
and
because
it's
just
triggering
the
start.
So
if
that
is,
that
is
why
I
came
up
with
this
check,
actually
checking
whether
or
not
they're
currently
displaying.
A
So
I'm
not
sure.
If
I,
if
I
understood
you
the
right
way
but
kind
of
what
I
was
hearing
was
basically
check,
whether
whether
or
not
these
things
are
available
in
the
dom
or
not
and
then
apply
something
on
on
a
view,
application
element.
If
that's
the
case,
then
I
do
see
some
issues
regarding
reliability,
because.
D
D
D
A
Do
you
have
a
line
number?
I'm
not!
I
don't
know
callbacks
okay,
gotcha
yep,
let's
so
that
should
be
in
that's
not
to
find
in
here
interesting.
D
A
D
So
I
was
wondering
if
there's
like
a,
I
think
that
there
is
I'm
looking
at
looking
at
these
random
lines
of
atmo
code
random
found
in
the
internet.
Oh
oh
cool,
yes,
are
there?
Is
there
like
shown
and
hidden.
D
D
Do
you
have
this
thing?
Do
you
have
this
thing
running
right
now,.
A
A
D
A
241
gotcha
sweet,
so
callbacks.
D
D
While
we're
writing
this,
what
what
we
could
do
is
create
a
proxy
that
takes
any
key
and
so
anytime
someone's
trying
to
access
anything
from
callbacks.
We
always
console
log
it
and
that's
one
way
we
can
investigate
what
the
api
is,
but
that's
too
much
work
right
now,
let's
look
at
it.
What's
console
log
here,
just
something
that
we're
hidden.
You
know.
D
A
Let's
see
so,
let's
pop
up
the
console
and
open
the
emoji
picker
and
really
nothing's
happened.
Oh
yeah
matches
running
matches
running.
D
B
I
found
in
the.
B
When
you,
when
you
trigger
escape
it,
calls
this
method
here,
this
I've
just
pasted
it
in
the
chat.
B
So
basic,
the
context,
I
think,
is
some
containing
element
somewhere.
I
don't
know
what
exactly
it
is
yet,
but
it's
emitting,
I'm
assuming
trigger,
must
be
the
jquery
trigger
method.
So
it's
trigging
trigging
a
hidden
event
right.
B
C
B
A
B
Well,
when
hidden
happens,
the
thing
is
we
don't
know
why
it's
hidden?
Oh
no!
We
do.
We
actually
passed
the
events
to
the
hidden
event
as
well,
so
we
could
find
out
if
it
was
hidden
because
of
escape
was
pressed.
B
In
which
case
yeah,
we
can
do
something
useful
there,
like,
I
don't
know,
like
paul
said,
like
add
dataset
something
somewhere
or.
A
We
could
like
this
might
be
might
be
a
very
bad
idea,
but
maybe
maybe
eventually
would
be
helpful
to
just
like
pretty
stupidly.
Add
a
glass
to
the
body
tag.
Basically
telling
add
you.
D
D
The
nputor-
and
so
this
is
great,
I
think,
let's
it
would
be
great
to
see
if
we
can
listen
to
you
shone
dot
at
who
and
hidden.adhoo
on
the
input
that
we
receive
from
the
gsm
monocomplete.
D
B
D
But
I,
based
on
that
code
that
I
just
shared,
I
think
these
are
namespace
events.
I
think
it
would
be
hidden
dot.
I
think
they're
building
it
with
the
name
and
then
they're,
appending
dot,
add
two
at
the
end
of
it,
so
it'd
be
hidden
dot.
Attu
is
the
name
of
the
event
like
that
yeah.
Let's
try
to
do
just
the
hidden
one.
We
can
worry
about
the
shown
one
later.
If
we
do
just
the
hidden
one
and
then
it's
just
yep,
we
would
just
add
comma
under
the
event
listener.
D
A
It
gets
to
know
I'm
yeah
something
along
those
lines.
D
B
Maybe
there
may
be
a
a
race
here
like
which,
which
event
this
sets
up,
gets
set
up.
First,
the
view
one
or
the
yahoo
one,
but.
D
It
looks
like
data
whenever
it's
the
second
argument
to
the
trigger
that
comes
from
context.
I'm
looking
at
the
source
graph,
the
code
and
source
graph,
okay,.
D
You're,
actually
gonna
get
the
key.
You
might
get
the
key
down
event:
you'll
get
whatever
it
seems
like
you'll
get
whatever
event
object
got
triggered
that
caused
this,
where
there
was
a
mouse
press
event
or
whatever
they're,
just
passing
whatever
that
native
event
object
is
they're,
just
passing
it
through,
which
is
kind
of
cool,
because
you
could
get
maybe
like
the
current
target
or
stuff,
but
I
don't
think
we
need
that.
A
Okay,
this
this
whole
thing
is
the
actual
event.
I
understood
yep
yeah
the
current
target,
since
we
are
kind
of
computing.
This
thing
in
view
land
is
probably
not
too
helpful.
Unfortunately,
I'd
say
yeah.
A
D
A
D
To
preparing,
let's
add
another
input
on
where
we
do
shown.addfield,
I
feel
like
there's
like
a
like
a
dr
seuss
library.
I
don't
mean
to
dis
at
him,
but.
D
A
Yep
that
that
could
be
our
like
the
the
body
indicator.
I
was
referring
to
basically
so
like,
let's
see,
if
that,
if
that
might
be
good
enough,
like.
D
A
Where
would
we
then
edit?
Is
it.
A
D
D
Yes,
except
I'm
pretty
sure
this
is
a
jquery
thing,
so
you'll
you
could
just
do
the
fancy.
What
is
it
called?
What's?
How
do
you
do
jquery.
B
A
Okay,
so
the
class
list
is
not:
oh,
it's
not
going
to
be
a
trajectory,
object,
gotcha,
add
class
and
remove
class.
E
A
So,
let's
see,
how
did
I
call
the
class
attractive.
A
D
A
So
that
would
base
it.
This
would
basically
mean
that
we.
D
Yeah
not
not
necessarily
because
we
can
still
keep
this
scoped
to
inputs.
A
D
It
should
be:
if
first
can
we
on
the
cancel
handler,
can
we
just
console.log
this
dot
dollar
refs
dot
text,
stereo.
A
Is
there
we
go
and
this
stuff
that
the
text
area?
That's
what
we
just
said
right,
it's
refs
yep!
Let
me
just
just
for
the
sake
of
it,
so
this
doesn't
ever
sweet.
Let's
use
the
cancel
event,
then
oopsie.
A
E
B
D
A
Are
on
the
same
element
yeah?
So
just
absolutely
do
you
agree
just
to
get
this
right,
because
if
we
catch
and
or
yeah,
if
we
catch
an
event
that
atku
actually
kind
of
computes
or
deals
with,
then
we
don't
want
this
event
to
fire
anything
else
and
therefore
it's
a
good
idea
to
immediately
stop
the
foundation
correct
sweet.
Where
would
that
go?
Let
me
have
a
check.
I'm
going
back
to
the
source.
I'd
say.
D
B
D
B
Yeah
because
otherwise,
well,
who
knows
what
else
we'll
be
stopping
like?
You
know,
maybe
there's
other
behaviors
that
we
do
want
to
actually
let
propagate
down.
D
B
D
A
B
A
A
This
might
be
because
this
one
does
not
have
the
modal
at
least.
So,
if
we're
just
gonna
be
adding
a
new
comment,
yeah
on
escape,
nothing
will
happen.
That's
the
thing
I'm
now
pressing
escapes
for
a
couple
of
times.
There
is
no
model
when
you're
just
gonna
be
adding
a
new
comment.
That's
that's!
Why
we're
not
running
into
this
issue,
but
when
you're
actually
responding
to
an
already
existing
comment,
then
we
are
still
running
into
it.
A
A
So
stop
propagation
does
not
seem
to
do
the
trick.
Just
yet,
I'm
afraid.
A
A
D
If
you
go
back
to
line
255,
if.
D
So
we
can
just
put
a
we
can
put:
let's:
let's
go
ahead
and
use
the
refs.
We
were
trying
to
use.
Oh
yeah.
That
would
be
fine,
but
that's
fine!
That's
fine!
We'll
we'll
refactor
later
see
if
this
works.
A
B
Well,
so
we're
doing
two
things
here:
we're
preventing
we're
stopping
immediate
propagation
and
we're
doing
this
event
this
this
class
toggling
thing
do
we
want
to
see
if
we
can
get
get
rid
of
the
class
toggling
thing
and
just
rely
on
the
event
stopping
propagation,
because
I
think
it's
not
clear
which
of
these
is
actually
fixing
the
problem
if
either,
if
you
know
both
or
whatever,
let's.
A
So
this
is,
I
just
commented
out
the
the
propagation
ones
that
we
are
now
running
on
the
class
solution
only
hitting
escape
once
hitting
escape
another
time
working,
just
fine
wow.
That
is
that's
amazing,
so
putting
in
the
stubble
media
propagation
copying
commenting
out
all
of
the
class
shenanigans.
A
What
are
we
going
to
do
regarding
the
star
propagation,
with
our
condition
in
here?
It's
basic
it
is,
it
shouldn't,
be
anything
required
or
I'm
against.
D
A
D
I
I
think
these
these
things
are
usually
deterministic
like
the
event.
Okay,.
B
A
Yeah,
I'm
sorry
yeah
reloading
once
more,
but
just
to
quickly
add
on
this.
I'm
with
you
mark
like
this
is
a
a
fragile
thing,
because
it'll
be
hard
to
document
the
connection
between
those
those
two
kind
of
events
in
our
code
base.
So
if
anybody
will
be
touching
one
of
those
files,
I
could
easily
see
this
being
broken
without
anybody
noticing
testing
this,
probably
not
to
trivial
as
well.
So
writing
a
couple
of
words.
Colin,
I'm
hitting
escape
once
everything's
fired
this
route.
B
So
that
doesn't
make
any
sense
to
me
because
hidden
so
hidden
event
fired.
B
B
B
Yeah,
so,
okay,
so
this
this
brings
me
back
to
my
suggestion,
where
in
view,
we
do
this
horrible
thing
where
we
like
do
an
asynchronous
callback
and
wait
for
the
you
know
later
event
handlers
to
to
fire
and
maybe
stop
well,
not
stop
propagation
but
prevent
default
or
something
nasty
like
that.
Yeah.
I
don't
know,
but
on
this
note
I'm
gonna,
I'm
gonna
go.
I'm
done.
E
E
So
like
what
we
were
saying
before,
if,
if
the
pop-up
can
add
some
kind
of
like
artifact,
I
think
you
said
before
paul
to
say
something
is
open,
and
then
you
can
say:
okay,
if
that
artifact
is.
D
D
What
I
think
mark
was
talking
about
is
we
you
could,
rather
than
having
his
view,
synchronously
handling
the
event
it
could
asynchronously
handle
the
event
such
that
when
that
asynchronous
process
actually
starts
any
other
event,
handlers
would
have
modified
the
event
by
either
calling
stop
propagation
or
something
like
that,
and
then
it
could
know.
Oh,
I
need
to
skip
this.
So
sometimes
you
can
have
like
an
event
handler
skip
its
place
in
line
by
waiting
to
process
a
day,
but
that's
really
but
you're
into
timing.
Weirdness.
A
E
So
could
it
not
say
like
so,
the
pop-up
always
gives
some
artifact
to
the
window
of
the
page
or
whatever
to
say
the
pop-up
is
open
and
it
also
stops
the
propagation
whenever
it
receives
it
right.
So
then,.
D
D
What
I
think
yannick
just
confirmed,
though,
is
that
the
stock
propagation
was
not
actually
stopping
the
propagation
like
we
thought
so
we're
not.
If
we
were
going
to
get
stop
propagation
to
work,
we
would
have
to
defer
some
things
in
the
view
thing,
which
would
add
a
lot
of
complexity,
which
we're
not
sure
we
want
to
do.
E
So
I
thought
stopping
the
propagation
didn't
work
because
vue
was
reading
it
before
the
pop-up
did.
E
A
An
artifact
for
something
like
a
class
we're
adding
to
the
element,
for
example,.
E
A
E
D
E
D
Ideally,
though,
we
should
have
a
recreatable
test
for
this
and
these
order
events
are
deterministic
because
of
the
way
like
the
javascript
engine
works
so
like
we
could
just
cover
all
our
bases
do
stop
propagation
so
that
either
order
the
events
will
probably
work.
But
then
you
run
into
like
it's
not
happening
as
other
orders.
D
A
D
We
could
do
a
feature
spec,
you
know
feature.
Specs
are
awesome,
lee
loves
feature
specs,
he
loves
writing
them.
D
We
do
have
actually
a
really
cool.
I
I
can't
wait
to
show
you
this.
This
just
got
merged
in,
and
the
mr
is
open
for
almost
like
two
years,
but
it
just
got
merged
in
oh
well.
I'll
share
my
screen,
then.
C
We
can
use
mousetrap,
though,
to
to
do
key,
presses
and
stuff
interviews
back
just.
A
To
just
to
to
get
us
right
as
just
so
we're
speaking
for
the
same
thing,
a
feature
spec
would
be
something
that
would
also
be
considered.
Integration
tests
would
basically
press
or
simulate
this
key
press
and
then
see
if
this
thing
is
still
attached
to
the
dom
or
something.
So
it's
like
a
fake
in
the
user
input
correct.
C
Yeah,
it
would
navigate
to
an
actual
like
issue
page
and
click
on
like
the
reply
button
and
yeah
really
like
emulate
a
user
and
we
were
we
normally,
I
think,
sort
of
inspect
the
dom
to
say.
Can
you
see
you
know,
can
you
see
the
model
or
can
you
see
the
emoji
picker,
or
can
you
see
whatever
we
want
to
check
should
or
shouldn't
exist?
That's
it.
D
D
We
have
one
where
we're
already
asserting
this
is
actually
in
js,
dom
land
opening
up
the
emoji
picker
by
focusing
in
on
that
text
area
and
filling
it
in
with
a
certain
input
and
stuff
and
then
we're
starting
what
our
auto
complete
suggestions
are.
D
So
we
could
take
a
front
end
integration
approach
to
this,
where
we're
mounting
one
of
these
inputs.
That
would
show
the
cancel
modal
and
we
we
do
this
through
the
jsdom
way.
These
could
be
a
little
bit
more
complex
than
they
would
in
copy
borrow.
So
I
would
suggest
doing
a
copy
bro
might
be
simple
enough,
but
their
copy
bar
is
a
little
bit
more
expensive
to
run
to,
but
here's
another
alternative
of
using
these
front-end
integration
tests.
E
A
A
Gotcha,
okay.
Now
I
see
I
don't
have
a
strong
opinion
on
this.
Basically,
I
would
prefer
something
that
is
as
big
as
possible,
probably
and
that
kind
of
drives
me
to
what
I'm
currently
seeing,
but
not
yeah.
D
So
I
would
use
I
would
use
this
as
a
template
for
usually
how
we
set
these
things
up.
You
notice
that
we're
not
importing
view
components
or
anything
we
import.
We
import
the
actual,
like
entry
points
for
these
apps
and
we
load
them
up
on
pictures
generated
from
our
hamil
stuff
or
just
whatever.
So
we,
the
subjects
here
are
those
app
entry
points
and
then
we
interact
with
the
dom
through
jsdom.
D
So
this
is
the
notes
app,
so
maybe
there's
a
way
that
we
can
get
the
we
can
interact
through
it
here.
I
don't
know
if
snippets
shows
the
this
we're
just
showing
the
snippets.
A
You
you're
sure
if
this
is
already
emerged,
because
I
can't
find
a
file
or
maybe
I
just
need
to
pull
I'm
sure.
It's
merged.
D
But
it's
your
call.
Copyright
spec
would
be
cool
too.
I
like
copyright
specs.
If
you
need,
if
you
want
any
help,
writing
the
test
board
feel
free
to
feel
free
to
ping
lee
on
it.
He
loves
where
he
needs
us.
A
Well,
do
so
I'm
trying
my
very
best
not
to
bring
this
to
the
next
pairing
session
as
well,
but
but
we'll
see
how
it
goes.
C
Didn't
you
promise
at
the
beginning
that
this
one
wouldn't
this
one
would
be
a
quick
one
that
wouldn't
take.
A
I
don't
I'm
not
exactly
sure
what
you're
talking
about
yeah
I
I
was.
I
was
expecting
an
easier
solution
to
be
honest,
but
still
this
this
was
great
progress
thanks
a
lot
for
all
the
inputs.
Do
you.
D
A
Sorry,
but
here
we
go.
D
A
Otherwise,
you're
of
the
the
classless
contains
right,
because
it's
actually
on
the
on
the
element
and
yeah.
This
actually
does
make
a
lot
more
sense.
Absolutely
much.
D
D
A
D
E
D
We
would
be
screwed
if
hidden
wasn't
triggered,
so
this
is
all
assuming
that
we
can
trust
at
hill
to
actually
trigger
hidden
when
this
thing
is
actually
hidden.
So
it's
worth
trying
out
all
of
the
things
like.
Can
we
try
some
other
edge
cases
out?
I
said
a
couple
of
minutes,
but
let's
we
had
to
change
any
posts.
We
shouldn't
have
to
refresh
anything,
but
if
you
open
something
and
then
actually
click
on
something
without
hitting
escape
on
the
emoji
open.
D
D
When
we
wanted
to
that's
that's
worth
asking
ourselves,
I
don't
know.
A
A
D
This
is
true:
we
want
to
make
sure
we're
not
introducing
any
further
regressions
and
or
any
other
bugs,
which
would
mean
we
get
in
a
weird
state
with
these
inputs
so
that
that
would
be
just
I
don't
know
something
to
think
about.
I
don't
have
a
good
answer
for
it.
The
other
point:
if
we
go
back
to
the
code,
sorry-
and
I
don't
mean
to
be
taking
your
time
too
much,
but
the
other
point
would
be
if
you
go
to
gfm
autocomplete.
E
A
C
Yeah,
because
if
you've
got
an
auto
complete
list
for
like
an
email
address
for
contacts
or
a
an
app
post,
a
lot
of
assignee
or
anything
you
you
don't
want
it
to,
and
it's
funny
because
until
you
mentioned
this
like
it's,
it's
a
little
niggle,
that's
bugged
me,
but
I've
never
kind
of
considered
it
to
be
big
enough
to
to
warrant
attacking.
If
that
makes
sense,.
A
Yeah
gotcha
so
just
to
get
this
right
on
every
call
to
the
actual
library
we're
making.
We
want
to
add
this
class
toggling.
We
don't
necessarily
have
to
then
compute
it
or
do
something
with
it,
but
we
want
to
add
the
ability
that
we
can
actually
hook
into
this.
If
you
want
to.
D
We
want
275
and
284
to
apply
to
every
ad
who
thing
so
that
is
just
a
there's
a
number
of
ways
we
could
do
that,
but
it's
going
to
take
probably
a
little
bit
of
refactoring
of
the
existing
stuff.
A
D
To
totally
duplicate
ourselves,
but
maybe
this
is
what
we
do
right
now.
We
create
some
sort
of
init
function
that
has
to
be
called
in
every
single
one
of
these
or
we
pipe
every
single
one
of
these
into
a
common
setup
thing
like
what,
if,
instead
of
line
307,
where
we
call
input.adw
what
if
we
had
a
function,
that
we
called
that
took
in
these
options
that
we'd
pass
through
to
input.field,
but
then
we
also
set
up
these
event
listeners.
A
D
D
But
yeah
the
paul
yes,
you
can.
You
can
leave
that
in
the
code.
D
D
D
And
then
the
last
thing
is
we
want
to
call
this.
What
do
we
want
to
call
the
class?
Do
we
want
it
to
be
at
who
active
or
maybe
because,
right
now,
the
subject
of
the
class
is
at
who?
But
maybe
it's
more
like
input,
blocked
or
something
like
that,
like
maybe
the
subject
is
actually
the
input
like
we
want
to
block
something.
So
just
I
built
your
thoughts
to,
I
don't
have
any
strong
opinions
to
it,
but.
D
A
Just
to
summarize,
what
I'm
taking
away
like
first
thing
would
probably
be
to
find
a
way
that
this
logic
should
be
during
every
call
that
you
add
to
let's
see
about
the
ee.
Maybe
that
will
then
sort
itself
off
but
we'll
see
and
then
come
up
with
a
test
for
this,
an
integration
test
hundred
percent
yeah.
That
was
quick
to
do.
As
I
said,.
D
A
A
Awesome,
that's
that's
letter
here,
yeah,
good,
fun,
good,
fun
for
sure
and
yeah.
I
haven't
seen
it
seem
kind
of
coming
up
this
complicated
but
good
fun.
All.
D
Right
all
right!
Well,
thanks,
yannick
thanks
james
thanks
lee
for
hopping
on
you
got
to
plug
in
your
your
your
laptop
yannick.
A
C
You
yeah,
I
just
wanted
to
say
thank
you
look
for
last
week.
We
that
mr
is
hit
now
so
not
only
did
paul
improve
rewrite
the
specs
using
view
test
details,
but
we've
now
got
the
the
reason
that
came
to
fruition
in
the
first
place
was
because
I
was
trying
to
add
handling
for
hitting,
enter
or
return
when
you
rename
or
add
a
file
in
the
web
ide,
and
that
merge
request
has
has
now
been
deployed
to
production,
and
that
sounds
very
much
like
this
issue.
Yannick.