►
From YouTube: MR Widget Dynaminc Content - Pairing session
Description
This video contains the brainstorming / pairing session for developing the dynamic MR widget content. The issue page is here: https://gitlab.com/gitlab-org/gitlab/-/issues/368592
A
Okay,
I
think
it's
working,
it's
gonna
record
on
my
computer
and
then
I'm
gonna
put
this
on
on
youtube.
Hello.
Everyone
today
is
the
24th
of
august
2022
and
we're
gonna
work
we're
going
to
pair
up
on
an
mr
widget
issue,
which
is
this
one?
A
Basically,
the
idea
is
that
the
mr
widget,
it's
using
a
configuration
like
this
and
and
we
need
to
transform
this
into
a
component
that
renders
this
data.
It
takes
this
data
as
an
input
and
then
it
renders
something
like
this.
So
that's
that's
the
idea.
A
I
haven't
thought
about
this
so
far,
so
I
would
appreciate
if
this
is
a
collaborative
session,
so
we
all
think
about
the
solution
so
yeah.
I
think
we're
ready
to
get
started
right.
A
Do
you
understand
the
problem
so
far?
Okay,
cool!
So
the
extension
api
is
already
using
this
configuration
and
then
there
is
an
already
a
component
that
does
this,
but
it's
since
we're
rewriting
it
and
then
we
want
to
make
it
more
view
friendly,
because
right
now
it's
like
a
custom
solution.
We're
gonna
write
it
from
scratch,
so
I'm
gonna
go
ahead
and
open.
My
editor
just
quick
question.
A
That's
a
very
good
question:
the
extension
api.
It's
I
think
it's
this
one.
A
So
in
order
so
we
have
here,
we
have
merge,
request
widgets,
there
are
multiple
of
them
and
then
in
the
past
every
widget
was
using
a
different
implementation.
So
it
was
not
consistent.
So
we
came
up
with
the
idea
to
have
a
strict
api
which
basically
it
looks
like
this
terraform
index.
I
think
it's
this
file,
so
this
is,
for
instance,
a
a
widget
that
exports
a
configuration.
It
looks
like
view,
but
it's
not
view,
so
it
exports
this
one
which
makes
users
which
makes
use
of
this
configuration.
A
So
this
this
is,
it
solves
the
consistency
problem
because
you
can
just
pass
a
configuration
object,
but
if
you
have
a
more
complex
use
case,
for
instance
the
security
mr
had
a
more
complex
use
case-
you
are,
it
was
very
limiting.
We
were
not.
For
instance,
we
were
not
able
to
add
models
and
then,
when
you
clicked
on
the
model,
we
had
to
come
up
with
with
the
implementation
once
again,
because
we
cannot
reuse
view
components.
A
So,
therefore,
we
came
up
with
the
idea
to
refactor
it
and
then
make
it
less
strict,
but
still
try
to
make
it
consistent
and
the
extension
apis
is
basically
this
is
we
call
this
the
extension
api.
So
this
this
configuration
it's
it's
not
an
api,
it's
not
a
rest
call
or
whatever
it's
just
on
the
client
side.
A
For
instance,
if
you
look
here
the
data
structure,
so
if
you
pass
the
the
extension
api,
this
data
structure,
like
a
header
text
subtext,
it
suffices
that
the
header
it
corresponds
to
this.
I'm
sorry
here
it
corresponds
to
this
part.
So,
for
instance,
new
is
the
header
and
then
for
the
text.
You
need
to
pass
this,
but
for
some
cases,
since
this
is
a
string,
we
had
to
do
html
injection.
A
Okay
and
now
the
idea
is
to
pass
this
object
and
create
a
component
that
takes
this
in
and
then
renders
it
using
view,
and
let
me
quickly
walk
you
through
the
the
mr
widgets
security
reports
component.
So
this
is
the
new
way
of
writing
a
vmr
widget.
So,
instead
of
exporting
an
object,
we
export
a
view
component,
a
traditional
view
component
and
we
use
dmr
widget
wrapper
component
to
pass
data.
For
instance,
the
fetch
collapse
data.
A
A
So
we're
gonna
pass
today.
We're
gonna
pass
here,
something
that
is
called
content.
I
think,
and
that
content
is
going
to
be
transformed
into
a
real,
a
ui
into
a
ui,
so
vmr
visit
the
way
it
works.
A
So,
if
you,
if
you
pass
them
as
properties,
they
are
rendered
otherwise
slots
are
rendered
and
sorry
widgets
view
so,
for
instance,
the
content
part
it's
just
it's
a
slot
and
if
there
is
no
slot
it
renders
the
content
property.
So
today
we're
going
to
use
this
content
property
and
then
pass
this
data
so,
for
instance,
content
equals
to
this
part.
A
Let's
take,
I
think
this
is
this
should
be
an
array
by
the
way
this
should
be.
An
array
of
this
is
an
image.
A
This
should
be
an
array
of
items
because
every
array
is
going
to
be
rendered
as
a
row.
Every
I
item
of
the
array
so
yeah
is:
is
it
clear.
C
A
So
let's
get
started,
this
is
the
widget
component
and
I
think
what
we
need
to
do
is
so
this
content
it
we.
We
cannot
display
it
like
this,
because
it's
going
to
be
an
object,
so
we
need
something,
a
component
that
is
called,
for
instance,
dynamic,
content
or
whatever,
and
then
we
need
to
pass
the
content
to
this
component,
so
we're
gonna
create
this
component
today.
A
My
computer
is
a
bit
slow.
I
still
need
to
retrieve
my
new
computer
waiting
for
that.
Okay,
so
let's
create
this
dynamic
content
view.
I'm
sorry.
A
D
A
Cool
yeah
I
can,
I
can
show
you
the
existing
the
existing
implementation.
I
think
it's
this
one,
the
base
view
component.
So
there
is
the
dynamic
scroller.
Okay,
it
passes
the
full
data
and
then
the
dynamic
explorer
is
what
is
it.
B
A
Okay,
it
creates
a
template
and
then
it
passes
the
item.
So
full
data
is
an
array
of
items
and
then
for
each
item.
We
do
create
something
like
this
child
content
and
child
content
is.
A
A
So
basically,
it
says
if
there
is
a
data.
Header
then
render
the
header
part.
If
there
is
the
icon
and
then
render
the
status
icon
and
so
on,
if
there
is
so,
there
are
a
lot
of
ifs
and
then
it's
renders
so
we
should
probably
do
something
similar.
B
A
Cool
awesome,
so
there
is
the
header.
So
this
is
a
content
item
exactly
okay
yeah.
This
one
gets
passed
to
the
content
item
and
then.
A
Yeah,
let's,
let's
try
and
see
how
this
this
looks
like
widget
view,
and
then
we
call
dynamic
content.
A
A
Right
so
data
widget
label
model
id
so
the
model
I
differences.
We
don't
need
this
because
in
the
previous
implementation,
since
this
this
was
not
allowing
us
to
use
more
view
components,
we
had
to
pass
them
through
a
configuration
and
we
we
don't
need
this
anymore,
but
the
thing
is
yeah:
let's
just
remove
everything
and
then
let's
just
use
the
data
part
for
now,
but
there
is
a
level
three
level,
I'm
not
sure.
If
we
can
reuse
this
one.
A
Because
one
second,
let
me
find
that
issue.
A
Yeah,
so
this
this
is,
this
is
the
design
and
we
have
the
level
system.
So
this
is,
for
instance,
level
one,
the
header
part.
This
is
level
two
and
then
we
have
level
level
three.
So
you
can.
You
can
nest
item
roles
with
with
the
children
property.
A
So
that's
why
it
starts
with
the
level
level
three.
So
this
is
only
for
the
for
for
the
for
the
third
level.
I
think
it's
easier
if
we
start
like
this.
Let's
just
remove
this
and
then
components
tag.
A
This
part
as
well
generate
text
is
not
needed.
Anymore.
Generate
text
was
since
we
were
passing
string
and
then
we
were
hard
html.
It
was
kind
of
injecting
them.
A
A
Which
is
the
id,
for
instance?
That's
a
very
good
idea.
Let
me
just
create
here
in
the
computer
property
content,
expanded
content
maybe
make.
B
A
A
Yeah,
let's
just
pick
one
for
now
heather,
I
think
the
header
is
going
to
be
something
like
says:
detected
three
potential
sas
detected,
three
potential
vulnerabilities
and
then
what
else
we
have
required
text
mean
text
for
the
role.
B
B
A
Okay,
so
we
have
one
oops,
I'm
sorry.
We
have
only
these
two
or
yeah
these
three
options
that
are
required
on
the
top
level.
So,
let's
see
and
then
we
need
the
text
and
text
should
be.
A
Okay
to
this
one
yeah,
this
is
level
one.
This
is
level
two
and
then
this
is
level
level
three.
I
guess,
okay,
that
was
a
bit
confusing
to
me.
Okay,
so
I
suppose.
A
Or
let
me
check
actually,
let
me
check
one
so
header.
B
A
Okay,
so
this
is
map
test
as
child.
I
think
it's
this
one
test
header,
but
then
the
text
is
missing,
so
I'm
not
sure
if
this
is
required.
D
A
So
if
it's
a
structure.
A
If
it's
a
string,
it's
a
header,
if
it's
an
array,
it's
an
array.
The
first
item
is
the
height.
D
A
Main
text
for
the
row:
let's
leave
it
for
now
I'll
I'll
check
that
later.
Okay,
so
we
have
no,
not
this
one,
this
one
okay.
So
this
is
text
right.
A
A
A
This
is
a
bit
tricky
because
so
there
are
multiple
widgets
and
all
of
them
have
different
displays.
So
it's
it's
hard
to
understand
like
what
the
whole
data
looks
like
when
the
whole
data
is
passed.
D
So
in
the
chat
I
included
some
pajama
mocks.
A
A
D
D
C
A
But
anyways:
let's,
let's
see
if
this
so
far
it
works.
Okay,
just
expected
con
expected
object
gut
array.
Okay,
just
I
think
it's
the
digit
component
here,
content,
which
this
should
be
an
array
required
false
type
and
then
still
it
should.
B
A
Yeah,
maybe
we
could
do
another
pairing
session
for
that
one.
You
lead
that
one.
B
Yeah
no
sounds
good.
You
should
do
that.
D
D
B
A
I'm
sorry,
I
need
to
change
the
macro
here
to
something
more
so
basically,
this
I'm
using
an
extension
to
mark
the
api
calls
so
that
I
return
whatever
data
I
need,
and
I'm
using
marker
for
that-
and
here
I
have
all
the
rest.
Endpoints
marked
that
I'm
using
for
the
for
this
widget
and
I
put
10
seconds
as
return
for
one
endpoint.
That's
why
it
was
to
see
the
spinner.
That's
why
it
was
loading
so
clicking
on
this.
Okay.
A
So
this
one
needs
to
return
something.
I'm
just
gonna
do
this
so
that
next
time,
when
I
click
on
this,
it
displays
it.
It
displays
the
content,
it's
because
to
give
more
context,
as
mentioned
before,
the
fetch
collapse
data
and
fetch
expanded
data,
there
are
required
properties
for
vmr
widgets
and
the
mr
widget
on
mount
calls.
This
fetch
collapse
data
which
renders
the
summary
part,
and
then,
once
you
click
on
the
toggle.
B
I
have
to
jump
out
right.
I've
got
an
appointment,
okay,
but
I'll
watch
the
rest
of
the
recording.
If
you.
A
Yeah
otherwise
like
if
you
also
have
to
jump
off,
I
can
continue
recording
this,
and
then
I
will
post
this.
At
least
I
want
to
display
one
level
or
two
level
content.
B
Okay,
we
we
could
set
up
another
session.
I'd
be
happy
to
do
some
more
on
this.
It's
really
interesting,
so
yeah
I'd
be
up
for
more.
A
It
depends
like
if
you
also
have
to
jump
samantha
and
gerardo.
A
Cool
so
maybe
like
we
record
and
then
I
will
post
the
the
recording.
A
Okay,
so
clicking
this,
it
displays
the
content,
but
then
it
disappears.
So,
let's
find
out
why
the
digit
component,
so
fetch
x,
I
think
it's
the
toggle
collapsed
right,
so
toggling
the
collapsed,
it
fetches
the
expanded
data,
and
then
we
saw
the
spinner
and
the
fetch
expanded
content
should
set
the
the
data.
A
A
A
And
the
the
reason
why
we
have
two
ways
of
of
setting
the
data
is
because,
for
most
of
the
cases
the
widgets
are
going
to
use
this,
this
config
object
and
for
other
more
complex
cases.
We
want
to
allow
the
developer
to
have
a
way
to
modify
the
the
content
using
review
components.
A
A
This
content
should
be
right:
props,
dynamic
content,
dynamic
content,
dynamic
content,
export
default,
hello,
world
mounted.
A
So
from
context
that
object
got
undefined.
B
D
C
A
D
A
Okay,
while
this
is
loading,
so
I
think
here
we
need
to
do
something
like.
A
So
if
it's,
we
need
to
render
the
header
first
and
let's
assume
this
one
is
the
header
also
by
the
way.
Okay,
for
this
use
case
princess.
This
is
a
bit
more
complex
because
it
has
links.
Then
it
has
different
colors,
so
probably
for
this
one,
the
slot
makes
more
sense
instead
of
using
the
content,
but,
for
instance,
the
theraform
vision
is
a
good
candidate
for
the
data
that
the
con
like
use
using
the
the
javascript
object,
because
it
just
renders
some
some
text
and
also
license
compliance.
A
So
this
is
standard.
We
first
displayed
the
link
and
then
the
text
and
the
this
this
this
content
is
basically
structured.
That
way,
so
we
have
the
link.
If
you
provide
the
link,
it
displays
it
first
and
then
it
displays
text.
Is
this
one?
Okay?
C
A
A
But
let's
make
it
later:
let's
just
design,
okay,
so
gonna
say.
A
Think
content,
dot
header
and
this
should
be
probably
an
h3.
I
guess,
and
then,
if
we
have,
let's
see
text
and
subtext.
B
A
Text
a
string
or
an
array
of
an
area
of
strings,
so
for
that
reason
I
think
it
makes
sense
to
create
a
computed
property
and
then
say
return
if,
let's
do
this
content
header,
let's
make
this
type
of
equals
string
then
return
this
content
header.
A
Otherwise
we
turn
this
content
header
first
item
and
then
subheader
is
the
same.
Let's
make
let's
check
here:
it's
either:
okay,
it's
just
there's
only
one
way
of
setting
the
sub
header,
this
content,
header
zero,
but
only
if
the
type
of
this
content
header
equals.
A
No,
let's
make.
Maybe
array
is
array.
A
Now
I
think
it's
because
we
don't
need
this
anymore
cool,
it's
recompiling,
and
then
we
need
to
set
the
indent
this
to
this
level.
Do
you
have
any
idea
on
how
we
can
do
this
without
using
the
icon.
A
So
this
one
has
uh-huh
okay,
so
it
has
a
fixed
width
within
with
with
margin.
A
A
This
one
and
then
we
need
to
display
the
subtext
right.
So
meanwhile,
I
think
we
can
just
add
the
subtext
as
well.
It's
probably
going
to
be
an
h4
if
content
subtext.
A
The
thing
is
so
what
makes
it
more
complex
is
that
transforming
this
into?
This
is
simple,
but
on
the
other
side,
if
we're
using
a
slot
like
in
the
mr
digit
reports,
we
need
to
make
sure
that
here
we
use,
we
reuse
the
same
components.
A
And
then
pass
past
the
header,
the
header
content,
because
otherwise
loop
wise
it's
going
to
be
different
than
we
don't
want.
We
don't
want
that.
So.
For
that
reason
we
probably
I'm
not
sure
if
it's
a
good
idea
to
group
like
if
it's
not
if
it's
a
good
idea
to
transform
all
of
these
into
a
component
or
whether
we
should
just
make
it
more
like,
for
instance,
the
header
part
is
a
component
and
it
handles
the
header
part.
And
then
the
text
is
is
a
different
component.
A
So
we
have
two
or
three
different
components
which
we
can
use
and
we
don't
have
to
like.
What
I
mean
is
we
don't
have
to
create
a
component
for
each
of
these
these
properties,
but
rather
we
group.
D
No
also,
if
they're
used,
if
they're
following
that
pattern,
minus
12,
utilize
our
api
and
then
and
then
focus
on
creative
they're
using
slots,
and
that's
the
one
that
we
probably
want
to
create
more.
It's
like
if,
if
they're
going
to
do
that,
something
simple,
let's
just
for
like
okay,
we
don't
have
to
create
a
new
wrapper,
just
use
the
api.
D
D
Because
right
now
we're
building
like
we're,
rebuilding
like
just
in
between
wrapper
right,
we're
passing
in
individual
values,
we're
creating
that
wrapper,
so
it
can
kind
of
engage
with
the
api.
I'm.
C
D
A
Otherwise,
if
we
want
to
customize
it,
we
we
can,
we
can
simply
skip
this
part,
yeah
removed,
and
then
we
we
provide
the
template
content.
D
A
But
the
thing
is
if,
for
instance,
for
the
security
reports,
if
I
need
to
do
this
bit
this
part,
then
I
will
have
to
rewrite
the
whole
child
design.
The
dynamic
content,
design.
A
And
I
will
have
to
duplicate
it
if
we
don't
provide
components,
that's
why
I
was
saying
if
we,
for
instance,
extract
this
part,
so,
for
instance,
this
is
the
header.
We
extract
this
and
call
it
a
widget
header
or
widget
content
header.
A
Header
and
then
we
pass
the
header
data
like
whatever
it
is,
either
okay
or
we
just
I
don't
know
it's
just
this
is
still
work
in
progress.
Okay,
then
I
think
that's
we
should
go
in
this
direction
because
otherwise,
like
we
will
have
to,
we
will
have
to
replicate
the
whole
yeah.
The
whole
design
here
by
the.
C
A
It's
because
content
is
an
array,
so
this
should
be
like
this
in
the
widget.
We
should
create
a
dynamic
content
for
so
for
free.
We
should
do
something
like
this.
We
for
content-
let's
just
let's
just
call
it
data
for
now
data
in
content,
then.
A
Should
go
before
content?
Okay,
it's
because
we're
passing
an
array
of
objects,
so
the
dynamic
content
should
render
one
one
row
at
least
should
be
easier
like
that.
A
But
this
makes
sense
right
like
creating
one
component
for
each
section
and
then
reusing
it.
So
we
can.
We
can
already
do.
C
A
So,
for
instance,
widget
content,
header
view
and
then
script
template,
and
here
we
pass
I'm
sorry
we
get
this
part.
A
Like
this,
but
the
problem
is
that
if
we
pass
so,
if
we
pass
these
these
these
values
as
property,
then
it's
still
not
very
flexible.
A
The
one
critical
one
high
and
one
other
it's
a
bit
custom.
So
it's
this
level
of
of
of
of
of
design
is
only
used
for
the
security
reports
and
therefore
not
going
to
be
added
in
the
in
the
represent
the
dynamic.
A
But
we
wanna
allow
the
developer
to
be
able
and
make
make
them
to
be
able
to
add
this.
This
part,
how
are
we
going
to
do
that?
Any
idea.
D
A
Yes,
like
like
this,
for
instance,
here
we
should
so
we
should
import
this,
this
digit
content
header
view,
or
should
we
yeah
that's
the
question?
Should
we
because
if
we
don't
import,
this,
then
design
wise.
A
Exactly
like,
for
instance,
I
can,
or
maybe
we
can
do
the
icon
is-
should
be
strict
because
we
have
a
set
of
icons
that
that
we
can.
We
can
reuse.
Actually,
let
me
open
the
component
library
here
so
either
we
have
an
icon
and
it's
very
strict
or
we
don't
have
an
icon
or
I'm
sorry.
This
is
this
is
the
header
for
this
row.
This
is
the
sub
header,
and
then
this
is
the
text
part,
but
still,
I
think.
A
Actually,
all
designs
have
have
an
icon,
so
that's
cool.
Maybe
we
can.
We
can
make
this
strict
and
we
can
pass
this
as
a
as
a
as
a
property
and
then
the
rest.
A
A
A
Same
goes
for
the
subheader
type
is
string
required
is
false,
but
does
this
get
too
complex
for.
D
I
was
just
thinking
like
the
purpose
of
having
a
slot
is
to
have
some
customization,
and
one
of
my
questions
would
be.
I
feel
like
this
is
still
very
constrained
like
okay.
Now
we
it's
still
constrained
to
this
kind
of
pattern,
and
I
don't
know
it
might
defeat
the
purpose
of
having
customers
like
customization
in
the
first
place
like
you're,
you
can
customize
but
limited.
D
It's
I
feel
like.
We
should
create
a
component,
that's
really
flexible,
but
again
I
don't
the
mr
widget.
The
purpose
I
know
is
to
have
consistency
and
yeah,
I'm
just
thinking
if
this
will
constrain
us
again.
A
Let's
think
about
it,
so,
looking
at
the
design,
I
see
that
the
instance
is
is
very
strict.
It's
only
one
design.
A
Is
not
so
this
part
should
be
the
header,
for
instance,
and
it's
not
very
unified
right,
so
I
think
this
one
is
the
subtext
or
subheader,
and
then
there
is
the
text
or
maybe
this
is
the
design
wise.
It's
the
same
anyways.
Let's
assume
this
is
the
the
header
and
then
this
is
the
text,
so
in
one
case,
for
instance,
it's
bold
in
one
case:
it's
not
and
here
as
well.
This
one
has
bold
in
that
in
the
text
and
you
cannot
using
the
content
object.
A
Otherwise
we
would
need
to
inject
html.
So
this
is
the
use
case.
I
think
so
here.
Let's
assume
that
we
are
using
the
dynamic.
What
was
it
called?
Widgets
content
header.
A
Let's
assume
this
is
our
header
and
then
we
don't
pass
the
data
like.
We
don't
pass
the
props
because
we
wanna
make
sure
we
we
want
to
use.
We
want
to
be
more
flexible,
so
here
we're
going
to
say,
template
header
and
in
the
header
part
it
goes
cest
detected
3
and
actually
this
is
bold
or
strong.
A
And
then
in
the
sub
header,
the
subheader
we
do
like,
I
think
it
was
called
status
page
or
whatever.
There
is
a
component
like
that.
A
Actually
summary
text
is
already
using.
This
summary
highlights,
I
think
yeah.
This
was
the
computer,
the
component
that
I
created
for
that
so
critical,
high
and
other,
and
we
need
to
pass,
highlights
okay.
So
here
it
should
be
summary
highlights,
and
then
we
pass
the
highlights
whatever
highlights.
A
So,
if
we
do
this,
we
we
will
have
this
design,
so
it's
already
flexible
and,
let's,
let's
imagine
you
want
to
add
your
your
banner,
the
security
training
banner
right
on
top,
and
you
can
still
do
that.
You
are
using
the
the
widget
con,
the
widget
content
header.
A
I
know
we
can
because
this
one
so,
for
instance,
for
the
other
things
like
no.
Actually
we
can
do
that
in
the
header
part,
you
can
provide
a
header
and
then
here
you
can
say
security
reports,
training
banner.
A
So
you
can
still
use
that
and
if
we
check
here
the
content
header,
but
it
will
go
inside
the
h3,
no,
it
won't
because
this
one
is
the
default.
So
it's
gonna
go
here.
A
I
think
it's
still
still
flexible.
Isn't
it
or.
D
D
D
A
A
A
Dynamic
content:
let's
take
this
padding
and
then
add
it
here.
A
Well
or
just
just
for
the
icon,
but
we
need
to
make
sure
that
the
developer
includes
the
icon,
because
we
wanted
like
at
least
the
design.
It's
not
true.
The
design
doesn't
always
provide
the
icon
because
the
icon
is
for
the
text
in
this
case,
it's
not
for
the
header.
A
But
if
we
want
to
include
the
icon,
what
will
be
the
the
well,
we
can
just
import
the
icon
here.
D
A
A
Actually,
the
status
cycle,
maybe
is
like
this
gl
flex
or
whatever
it's
called.
Then
we
put
it
here.
Status
icon
goes
here.
A
Yeah
and
then
for
the
text
yeah
we
just
render
text
links
are
we
can
use
the
gl
link,
so
this
one
is
the
header
or
like
yeah,
I
think
you're
right.
I
think
we
don't
need
here.
We
don't
need
the
dynamic
content
in
the
dynamic
content.
We
don't
need
these
sub
components
and
then
we
can
just
display
this.
The
whole
data
inside
this
dynamic
content
or
object
whatever
like
we
can
rename
it.
C
D
C
A
A
A
So
how?
How
would
we
develop
this
same
with
the
status
icon?
We
allow
the
developer
to
import
this
the
actions
part
and
then
pass
data
inside
it
and
then
expect
them
place
them
on
the
top
right
of
the
row.
D
Yeah,
I
would
okay,
I'm
I'm
now.
Thinking
in
terms
of
the
mr
security
training
see
what
design
it
is
because
then,
that
one's
the
really
customization
like
we're
not
conforming
just
give
me
a
sec
I'll
share
on
the
screen,
so
people
can
follow
along
as
well
security
training
and.
D
If
you
open
up
that
issue,
we're
not
really
customizing
that
one,
but
I
I
don't
want
to
introduce
something
that
might
not
because
right
now,
I
can't
think
of
a
use
case
where
we
need
to
custom
that
side.
So
this
is
what
it's
going
to
look
like,
so
we
don't
really
need
to
do
anything
on
the
action
part
see
how
this
one
is
expand.
The
whole
thing.
C
A
A
Yes,
but
if
you,
if
you
pass
the
object,
if
you
press.
A
A
So,
let's
break
this
down,
this
is
the
figma
right.
So
this
part.
A
So
we
want
the
status
icon
and
then
the
action
buttons
to
be
available
so
to
always
be
on
the
same
spot
like
always
on
this
left
that
is
icon
and
then
always
the
right.
The
status
actions
that
they're
the
action
buttons.
So
maybe
we
can
have
just
one
wrapper
here,
something
called
I
don't
know:
widget
content
wrapper
and
then
here
we
pass
the
step
as
an
icon
and
then
the
action
buttons
action
buttons
like
we
do
here.
I
think
yeah.
A
We
can
do
it
here,
but
it's
it's
not
yet
there
action
buttons
and
then
the
rest
is
just
like
this.
So
we
don't
need
the
status
icon
here.
A
Would
this
work
so
this
will
this
this
component
will
take,
so
it
will
render
the
whole
part
here
the
whole
content,
but
it's
just
going
to
or
let's
I
think
it's.
It
should
be
one
like
this
yeah
for
each
of
them.
So
let's
imagine
we
have
tag
multiple
sections,
because
this
one
is
a
section.
This
one
is
another
section.
A
So
it's
going
to
look
like
this
content
wrapper
and
then
status
icon
is
going
to
be
here.
Action
buttons
are
going
to
be
here
inside.
We
have
plenty
of
flexibility,
we
can
do
whatever
we
want.
We
don't
need
this.
We
don't
need
this
because
it's
just
h3.
A
Otherwise,
if
we
don't
provide
this
each
widget
that
is
complex
enough,
we'll
have
to
re-style
the
action
buttons
and
then
the
status
icons.
D
B
D
I
I
can
see
how
you're
saying
okay,
we
can
do
this,
hence
you're
having
another
rapper,
but
again
the
way
you
built
it
where,
if
I
want
like
the
training
banner
thing,
it's
the
it
takes
up
the
whole
thing.
It
still
allows
that
to
happen
here.
Yes,.
D
A
Exactly
so
so
we're
not
gonna
have
one
wrapper
for
each
for
each
property.
Sorry,
this
is
the
zoom
control
bar
conflicting
with
with
my
tabs.
I'm
just
gonna
move
them
here.
Okay,
here
we're
not
gonna,
have
one
wrapper
for
each
property
here
or
for
each
section,
we're
just
gonna
wrapper
for
the
whole
data
structure
and
it's
gonna
provide
the
status
icon
and
then
the
action
buttons
on
the
right
and
then
the
content
yeah
you're
free
to
do
whatever
you
want.
A
Yes,
by
the
content.
I
mean
this
part,
so
this
the.
D
B
D
A
As
far
as
I
know,
I
think
two
digits
are
a
bit
more
complex.
I
think
it's
one
one
is
the
license
compliance
and
then
the
other
one
is
security
reports.
So
I
assume
this
wrapper
is
going
to
be
used
in
both
cases.
A
And
for
the
others,
they're
going
to
use
the
object,
syntax,
so
they're
just
going
to
pass
the
content
property
and
then
it
will
be
populated
automatically
using
the
dynamic
content
component.
D
B
C
A
You're
right,
you're,
absolutely
right.
The
only
thing
that
I
see
here
is
that
this
row
this
is
also
pretty
standard
like
we
need
to
display
first,
the
icon
and
then
the
text,
but
I
think
in
this
case
they
can
like
in
the
slot.
We
can
just
use
the
status
icon
component
because
it's
already
an
export
component.
So
it's,
I
think
it's
fine.
A
I
was
just
yeah
saying
that
we
need
to
make
sure
that
this
is
also
on
the
left
side,
but
I
think
we
can
trust
the
developers
here
that
they
comply
with
the
design.
C
A
Cool,
I
think,
if
we
go
this
way,
we
can
solve
a
lot
of
problems
because
we
can
implement
this
design
right.
We
can
implement
this
design.
A
But
in
that
case
they
can
use
slots
exactly
so
we
can
do
this
design.
Each
section
here
would
be
the
the
wrapper
content,
widget
content
wrapper
or
whatever
it's
called.
D
C
A
Object,
syntax
status
checks,
icon
text
and
I
think
this
one
is
just
similar
to
our
here.
This
line,
it's
just
that
we're
not
using
a
header.
A
A
A
C
D
B
A
Yeah,
I
think
I'm
just
gonna
go
this
way
and
implement
this,
and
then
I
think
I
can
submit
dmr
and
maybe
you
can
review
it.
D
A
This
was
indeed
very
helpful
for
me
as
well,
because
I
get
to
use,
I
get
to
see
the
other
your
use
case,
you
know
shaping
the
thought
process,
so
it
was
very
helpful.