refactor(ui): better remove, delete icons, and select components

This commit is contained in:
liyasthomas
2021-08-18 13:30:01 +05:30
parent 4f5de51104
commit b9c233cdf9
37 changed files with 130 additions and 121 deletions

View File

@@ -41,7 +41,7 @@
// Dark Background color // Dark Background color
--primary-dark-color: theme("colors.blue-gray.100"); --primary-dark-color: theme("colors.blue-gray.100");
// Text color // Text color
--secondary-color: theme("colors.blue-gray.600"); --secondary-color: theme("colors.blue-gray.500");
// Light Text color // Light Text color
--secondary-light-color: theme("colors.blue-gray.400"); --secondary-light-color: theme("colors.blue-gray.400");
// Dark Text color // Dark Text color

View File

@@ -5,7 +5,7 @@
> >
<div class="space-x-2 group inline-flex items-center"> <div class="space-x-2 group inline-flex items-center">
<ButtonSecondary <ButtonSecondary
class="tracking-wide !font-bold" class="tracking-wide !font-bold !text-secondaryDark"
label="HOPPSCOTCH" label="HOPPSCOTCH"
to="/" to="/"
/> />

View File

@@ -6,6 +6,7 @@
:key="`navigation-${index}`" :key="`navigation-${index}`"
:to="localePath(navigation.target)" :to="localePath(navigation.target)"
class="nav-link" class="nav-link"
tabindex="0"
> >
<i v-if="navigation.icon" class="material-icons"> <i v-if="navigation.icon" class="material-icons">
{{ navigation.icon }} {{ navigation.icon }}

View File

@@ -77,9 +77,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -73,9 +73,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -75,9 +75,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -43,7 +43,7 @@
<ButtonSecondary <ButtonSecondary
v-if="doc && selected" v-if="doc && selected"
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="check_circle_outline" icon="check_circle_outline"
color="green" color="green"
@click.native="$emit('unselect-collection')" @click.native="$emit('unselect-collection')"
@@ -96,9 +96,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -78,9 +78,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -86,9 +86,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -35,7 +35,7 @@
<ButtonSecondary <ButtonSecondary
v-if="doc && selected" v-if="doc && selected"
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="check_circle_outline" icon="check_circle_outline"
color="green" color="green"
@click.native="$emit('unselect-collection')" @click.native="$emit('unselect-collection')"
@@ -92,9 +92,9 @@
/> />
<SmartItem <SmartItem
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'" v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -75,9 +75,9 @@
/> />
<SmartItem <SmartItem
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'" v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -79,9 +79,9 @@
" "
/> />
<SmartItem <SmartItem
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -24,7 +24,7 @@
<div class="flex"> <div class="flex">
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear_all')"
:icon="clearIcon" :icon="clearIcon"
class="rounded" class="rounded"
@click.native="clearContent()" @click.native="clearContent()"
@@ -60,7 +60,7 @@
<ButtonSecondary <ButtonSecondary
id="variable" id="variable"
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="removeEnvironmentVariable(index)" @click.native="removeEnvironmentVariable(index)"

View File

@@ -41,9 +41,9 @@
/> />
<SmartItem <SmartItem
v-if="!(environmentIndex === 'Global')" v-if="!(environmentIndex === 'Global')"
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
confirmRemove = true confirmRemove = true
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -10,33 +10,46 @@
sticky sticky
" "
> >
<div class="select-wrapper"> <tippy ref="options" interactive trigger="click" theme="popover" arrow>
<select <template #trigger>
v-model="selectedEnvironmentIndex" <span
:disabled="environments.length == 0" v-tippy="{ theme: 'tooltip' }"
class=" :title="$t('environment.select')"
bg-primaryLight class="border-b border-dividerLight flex-1 select-wrapper"
border-b border-dividerLight
flex
w-full
py-2
px-4
appearance-none
"
>
<option :value="-1">{{ $t("environment.no_environment") }}</option>
<option v-if="environments.length === 0" value="0">
{{ $t("environment.create_new") }}
</option>
<option
v-for="(environment, index) in environments"
:key="`environment-${index}`"
:value="index"
> >
{{ environment.name }} <ButtonSecondary
</option> v-if="selectedEnvironmentIndex !== -1"
</select> :label="environments[selectedEnvironmentIndex].name"
</div> class="rounded-none flex-1 pr-8"
/>
<ButtonSecondary
v-else
:label="$t('environment.no_environment')"
class="rounded-none flex-1 pr-8"
/>
</span>
</template>
<SmartItem
:label="$t('environment.no_environment')"
:info-icon="selectedEnvironmentIndex === -1 ? 'done' : ''"
:active-info-icon="selectedEnvironmentIndex === -1"
@click.native="
selectedEnvironmentIndex = -1
$refs.options.tippy().hide()
"
/>
<SmartItem
v-for="(gen, index) in environments"
:key="`gen-${index}`"
:label="gen.name"
:info-icon="index === selectedEnvironmentIndex ? 'done' : ''"
:active-info-icon="index === selectedEnvironmentIndex"
@click.native="
selectedEnvironmentIndex = index
$refs.options.tippy().hide()
"
/>
</tippy>
<div class="border-b border-dividerLight flex flex-1 justify-between"> <div class="border-b border-dividerLight flex flex-1 justify-between">
<ButtonSecondary <ButtonSecondary
icon="add" icon="add"

View File

@@ -7,18 +7,18 @@
> >
<template #body> <template #body>
<div v-if="mode === 'sign-in'" class="flex flex-col space-y-2 px-2"> <div v-if="mode === 'sign-in'" class="flex flex-col space-y-2 px-2">
<SmartItem
:loading="signingInWithGoogle"
svg="google"
:label="$t('auth.continue_with_google')"
@click.native="signInWithGoogle"
/>
<SmartItem <SmartItem
:loading="signingInWithGitHub" :loading="signingInWithGitHub"
svg="github" svg="github"
:label="$t('auth.continue_with_github')" :label="$t('auth.continue_with_github')"
@click.native="signInWithGithub" @click.native="signInWithGithub"
/> />
<SmartItem
:loading="signingInWithGoogle"
svg="google"
:label="$t('auth.continue_with_google')"
@click.native="signInWithGoogle"
/>
<SmartItem <SmartItem
icon="mail" icon="mail"
:label="$t('auth.continue_with_email')" :label="$t('auth.continue_with_email')"

View File

@@ -132,7 +132,7 @@
<div class="flex"> <div class="flex">
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native="headers = []" @click.native="headers = []"
/> />
@@ -220,7 +220,7 @@
<span> <span>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="removeRequestHeader(index)" @click.native="removeRequestHeader(index)"

View File

@@ -23,7 +23,7 @@
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
:title="$t('delete')" :title="$t('action.remove')"
class="hidden group-hover:inline-flex" class="hidden group-hover:inline-flex"
data-testid="delete_history_entry" data-testid="delete_history_entry"
@click.native="$emit('delete-entry')" @click.native="$emit('delete-entry')"

View File

@@ -31,7 +31,7 @@
data-testid="clear_history" data-testid="clear_history"
:disabled="history.length === 0" :disabled="history.length === 0"
icon="clear_all" icon="clear_all"
:title="$t('clear_all')" :title="$t('action.clear_all')"
@click.native="confirmRemove = true" @click.native="confirmRemove = true"
/> />
</div> </div>

View File

@@ -31,7 +31,7 @@
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
:title="$t('delete')" :title="$t('action.remove')"
class="group-hover:inline-flex hidden" class="group-hover:inline-flex hidden"
data-testid="delete_history_entry" data-testid="delete_history_entry"
@click.native="$emit('delete-entry')" @click.native="$emit('delete-entry')"

View File

@@ -75,7 +75,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />

View File

@@ -26,7 +26,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />
@@ -175,7 +175,7 @@
<span> <span>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="deleteBodyParam(index)" @click.native="deleteBodyParam(index)"

View File

@@ -9,36 +9,28 @@
<label for="requestType" class="px-4 pb-4"> <label for="requestType" class="px-4 pb-4">
{{ $t("request.choose_language") }} {{ $t("request.choose_language") }}
</label> </label>
<div class="flex"> <tippy ref="options" interactive trigger="click" theme="popover" arrow>
<tippy <template #trigger>
ref="options" <span class="select-wrapper">
interactive <ButtonSecondary
trigger="click" :label="codegens.find((x) => x.id === codegenType).name"
theme="popover" outline
arrow class="flex-1 pr-8"
> />
<template #trigger> </span>
<span class="select-wrapper"> </template>
<ButtonSecondary <SmartItem
:label="codegens.find((x) => x.id === codegenType).name" v-for="(gen, index) in codegens"
outline :key="`gen-${index}`"
class="pr-8" :label="gen.name"
/> :info-icon="gen.id === codegenType ? 'done' : ''"
</span> :active-info-icon="gen.id === codegenType"
</template> @click.native="
<SmartItem codegenType = gen.id
v-for="(gen, index) in codegens" $refs.options.tippy().hide()
:key="`gen-${index}`" "
:label="gen.name" />
:info-icon="gen.id === codegenType ? 'done' : ''" </tippy>
:active-info-icon="gen.id === codegenType"
@click.native="
codegenType = gen.id
$refs.options.tippy().hide()
"
/>
</tippy>
</div>
<div class="flex flex-1 justify-between"> <div class="flex flex-1 justify-between">
<label for="generatedCode" class="px-4 pt-4 pb-4"> <label for="generatedCode" class="px-4 pt-4 pb-4">
{{ $t("request.generated_code") }} {{ $t("request.generated_code") }}

View File

@@ -26,7 +26,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />
@@ -129,7 +129,7 @@
<span> <span>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="deleteHeader(index)" @click.native="deleteHeader(index)"

View File

@@ -26,7 +26,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear_all')" :title="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />
@@ -140,7 +140,7 @@
<span> <span>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="deleteParam(index)" @click.native="deleteParam(index)"

View File

@@ -26,7 +26,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />

View File

@@ -26,7 +26,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear')"
icon="clear_all" icon="clear_all"
@click.native="clearContent('rawParams', $event)" @click.native="clearContent('rawParams', $event)"
/> />

View File

@@ -121,7 +121,7 @@
/> />
<SmartItem <SmartItem
ref="clearAll" ref="clearAll"
:label="$t('clear_all')" :label="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native=" @click.native="
clearContent() clearContent()

View File

@@ -24,7 +24,7 @@
</label> </label>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear')"
icon="clear_all" icon="clear_all"
@click.native="clearContent()" @click.native="clearContent()"
/> />

View File

@@ -26,7 +26,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />

View File

@@ -6,7 +6,7 @@
<div v-if="tokens.length != 0"> <div v-if="tokens.length != 0">
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native="clearContent('tokens', $event)" @click.native="clearContent('tokens', $event)"
/> />
@@ -41,7 +41,7 @@
<li> <li>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="removeOAuthToken(index)" @click.native="removeOAuthToken(index)"

View File

@@ -117,7 +117,7 @@
<ButtonSecondary <ButtonSecondary
v-if="index + 1 !== communication.inputs.length" v-if="index + 1 !== communication.inputs.length"
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
class="rounded-l-none" class="rounded-l-none"
color="red" color="red"

View File

@@ -56,7 +56,7 @@
<div class="flex"> <div class="flex">
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear_all')" :title="$t('action.clear_all')"
icon="clear_all" icon="clear_all"
@click.native="clearContent" @click.native="clearContent"
/> />
@@ -112,7 +112,7 @@
<span> <span>
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="deleteProtocol({ index })" @click.native="deleteProtocol({ index })"

View File

@@ -82,7 +82,7 @@
<ButtonSecondary <ButtonSecondary
id="member" id="member"
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="removeExistingTeamMember(member.user.uid)" @click.native="removeExistingTeamMember(member.user.uid)"
@@ -142,7 +142,7 @@
<ButtonSecondary <ButtonSecondary
id="member" id="member"
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('delete')" :title="$t('action.remove')"
icon="remove_circle_outline" icon="remove_circle_outline"
color="red" color="red"
@click.native="removeTeamMember(index)" @click.native="removeTeamMember(index)"

View File

@@ -39,9 +39,9 @@
/> />
<SmartItem <SmartItem
v-if="team.myRole === 'OWNER'" v-if="team.myRole === 'OWNER'"
icon="remove_circle_outline" icon="delete"
color="red" color="red"
:label="$t('delete')" :label="$t('action.delete')"
@click.native=" @click.native="
deleteTeam() deleteTeam()
$refs.options.tippy().hide() $refs.options.tippy().hide()

View File

@@ -17,7 +17,11 @@
"dismiss": "Dismiss", "dismiss": "Dismiss",
"copy": "Copy", "copy": "Copy",
"learn_more": "Learn more", "learn_more": "Learn more",
"go_back": "Go back" "go_back": "Go back",
"delete": "Delete",
"remove": "Remove",
"clear": "Clear",
"clear_all": "Clear all"
}, },
"confirm": { "confirm": {
"logout": "Are you sure you want to logout?", "logout": "Are you sure you want to logout?",
@@ -27,7 +31,8 @@
"remove_request": "Are you sure you want to permanently delete this request?", "remove_request": "Are you sure you want to permanently delete this request?",
"remove_environment": "Are you sure you want to permanently delete this environment?", "remove_environment": "Are you sure you want to permanently delete this environment?",
"remove_telemetry": "Are you sure you want to opt-out of Telemetry?", "remove_telemetry": "Are you sure you want to opt-out of Telemetry?",
"remove_team": "Are you sure you want to delete this team?" "remove_team": "Are you sure you want to delete this team?",
"sync": "Are you sure you want to sync this workspace?"
}, },
"empty": { "empty": {
"protocols": "Protocols are empty", "protocols": "Protocols are empty",
@@ -307,7 +312,8 @@
"create_new": "Create new environment", "create_new": "Create new environment",
"edit": "Edit Environment", "edit": "Edit Environment",
"variable_list": "Variable List", "variable_list": "Variable List",
"invalid_name": "Please provide a valid name for the environment" "invalid_name": "Please provide a valid name for the environment",
"select": "Select environment"
}, },
"response": { "response": {
"title": "Response", "title": "Response",
@@ -401,8 +407,6 @@
"no_label": "No label", "no_label": "No label",
"search": "Search", "search": "Search",
"history_deleted": "History deleted", "history_deleted": "History deleted",
"clear": "Clear",
"clear_all": "Clear all",
"cleared": "Cleared", "cleared": "Cleared",
"time": "Time", "time": "Time",
"duration": "Duration", "duration": "Duration",
@@ -410,7 +414,6 @@
"new": "New", "new": "New",
"more": "More", "more": "More",
"edit": "Edit", "edit": "Edit",
"delete": "Delete",
"deleted": "Deleted", "deleted": "Deleted",
"undo": "Undo", "undo": "Undo",
"edit_request": "Edit Request", "edit_request": "Edit Request",

View File

@@ -52,7 +52,7 @@
/> />
<ButtonSecondary <ButtonSecondary
v-tippy="{ theme: 'tooltip' }" v-tippy="{ theme: 'tooltip' }"
:title="$t('clear')" :title="$t('action.clear')"
icon="clear_all" icon="clear_all"
@click.native="collectionJSON = '[]'" @click.native="collectionJSON = '[]'"
/> />