fix(editor): Show pin button on binary output but disable it with tooltip (#8388)

This commit is contained in:
Csaba Tuncsik
2024-01-26 06:54:49 +01:00
committed by GitHub
parent dafacb90c6
commit caab97e667
4 changed files with 212 additions and 47 deletions

View File

@@ -70,48 +70,24 @@
data-test-id="ndv-edit-pinned-data"
@click="enterEditMode({ origin: 'editIconButton' })"
/>
<n8n-tooltip
v-if="canPinData && rawInputData.length"
v-show="!editMode.enabled"
placement="bottom-end"
:visible="
isControlledPinDataTooltip
? isControlledPinDataTooltip && pinDataDiscoveryTooltipVisible
: undefined
"
>
<template v-if="!isControlledPinDataTooltip" #content>
<div :class="$style.tooltipContainer">
<strong>{{ $locale.baseText('ndv.pinData.pin.title') }}</strong>
<n8n-text size="small" tag="p">
{{ $locale.baseText('ndv.pinData.pin.description') }}
<n8n-link :to="dataPinningDocsUrl" size="small">
{{ $locale.baseText('ndv.pinData.pin.link') }}
</n8n-link>
</n8n-text>
</div>
</template>
<template v-else #content>
<div :class="$style.tooltipContainer">
{{ $locale.baseText('node.discovery.pinData.ndv') }}
</div>
</template>
<n8n-icon-button
:class="['ml-2xs', $style.pinDataButton]"
type="tertiary"
:active="pinnedData.hasData.value"
icon="thumbtack"
:disabled="
editMode.enabled ||
(rawInputData.length === 0 && !pinnedData.hasData.value) ||
isReadOnlyRoute ||
readOnlyEnv
"
data-test-id="ndv-pin-data"
@click="onTogglePinData({ source: 'pin-icon-click' })"
/>
</n8n-tooltip>
<RunDataPinButton
v-if="(canPinData || !!binaryData?.length) && rawInputData.length && !editMode.enabled"
:disabled="
(!rawInputData.length && !pinnedData.hasData.value) ||
isReadOnlyRoute ||
readOnlyEnv ||
!!binaryData?.length
"
:tooltip-contents-visibility="{
binaryDataTooltipContent: !!binaryData?.length,
pinDataDiscoveryTooltipContent:
isControlledPinDataTooltip && pinDataDiscoveryTooltipVisible,
}"
:data-pinning-docs-url="dataPinningDocsUrl"
:pinned-data="pinnedData"
@toggle-pin-data="onTogglePinData({ source: 'pin-icon-click' })"
/>
<div v-show="editMode.enabled" :class="$style.editModeActions">
<n8n-button
@@ -621,6 +597,7 @@ import { useToast } from '@/composables/useToast';
import { isObject } from 'lodash-es';
import { useExternalHooks } from '@/composables/useExternalHooks';
import { useSourceControlStore } from '@/stores/sourceControl.store';
import RunDataPinButton from '@/components/RunDataPinButton.vue';
const RunDataTable = defineAsyncComponent(
async () => await import('@/components/RunDataTable.vue'),
@@ -649,6 +626,7 @@ export default defineComponent({
RunDataSchema,
RunDataHtml,
RunDataSearch,
RunDataPinButton,
},
props: {
node: {
@@ -1727,12 +1705,6 @@ export default defineComponent({
max-width: 240px;
}
.pinDataButton {
svg {
transition: transform 0.3s ease;
}
}
.spinner {
* {
color: var(--color-primary);