add licensing check to env dropdown

This commit is contained in:
Peter Clement 2023-01-25 11:27:57 +00:00
parent 22e1c1cccf
commit 100571b6fe
3 changed files with 70 additions and 38 deletions

View File

@ -15,7 +15,8 @@
export let autofocus = false export let autofocus = false
export let variables export let variables
export let showModal export let showModal
export let environmentVariablesEnabled
export let handleUpgradePanel
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
let field let field
@ -131,34 +132,41 @@
class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open" class="spectrum-Popover spectrum-Popover--bottom spectrum-Picker-popover is-open"
> >
<ul <ul
class:no-variables-height={variables.length} class:no-variables-height={variables.length &&
environmentVariablesEnabled}
class="spectrum-Menu" class="spectrum-Menu"
role="listbox" role="listbox"
> >
{#if variables.length} {#if !environmentVariablesEnabled}
{#each variables as variable, idx} <div class="no-variables-text primary-text">
<li Upgrade your plan to get environment variables
class="spectrum-Menu-item" </div>
role="option" {:else if variables.length}
aria-selected="true" <div style="max-height: 100px">
tabindex="0" {#each variables as variable, idx}
on:click={() => handleVarSelect(variable.name)} <li
> class="spectrum-Menu-item"
<span class="spectrum-Menu-itemLabel"> role="option"
<div class="primary-text"> aria-selected="true"
{variable.name} tabindex="0"
<span /> on:click={() => handleVarSelect(variable.name)}
</div> >
<svg <span class="spectrum-Menu-itemLabel">
class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon" <div class="primary-text">
focusable="false" {variable.name}
aria-hidden="true" <span />
> </div>
<use xlink:href="#spectrum-css-icon-Checkmark100" /> <svg
</svg> class="spectrum-Icon spectrum-UIIcon-Checkmark100 spectrum-Menu-checkmark spectrum-Menu-itemIcon"
</span> focusable="false"
</li> aria-hidden="true"
{/each} >
<use xlink:href="#spectrum-css-icon-Checkmark100" />
</svg>
</span>
</li>
{/each}
</div>
{:else} {:else}
<div class="no-variables-text primary-text"> <div class="no-variables-text primary-text">
You don't have any environment variables yet You don't have any environment variables yet
@ -166,16 +174,29 @@
{/if} {/if}
</ul> </ul>
<Divider noMargin /> <Divider noMargin />
<div on:click={() => showModal()} class="add-variable"> {#if environmentVariablesEnabled}
<svg <div on:click={() => showModal()} class="add-variable">
class="spectrum-Icon spectrum-Icon--sizeS " <svg
focusable="false" class="spectrum-Icon spectrum-Icon--sizeS "
aria-hidden="true" focusable="false"
> aria-hidden="true"
<use xlink:href="#spectrum-icon-18-Add" /> >
</svg> <use xlink:href="#spectrum-icon-18-Add" />
<div class="primary-text">Add Variable</div> </svg>
</div> <div class="primary-text">Add Variable</div>
</div>
{:else}
<div on:click={() => handleUpgradePanel()} class="add-variable">
<svg
class="spectrum-Icon spectrum-Icon--sizeS "
focusable="false"
aria-hidden="true"
>
<use xlink:href="#spectrum-icon-18-ArrowUp" />
</svg>
<div class="primary-text">Upgrade plan</div>
</div>
{/if}
</div> </div>
{/if} {/if}
</div> </div>
@ -222,7 +243,6 @@
} }
.no-variables-height { .no-variables-height {
height: 100px;
} }
.no-variables-text { .no-variables-text {

View File

@ -17,6 +17,8 @@
export let autofocus export let autofocus
export let variables export let variables
export let showModal export let showModal
export let environmentVariablesEnabled
export let handleUpgradePanel
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
const onChange = e => { const onChange = e => {
value = e.detail value = e.detail
@ -38,6 +40,8 @@
{autofocus} {autofocus}
{variables} {variables}
{showModal} {showModal}
{environmentVariablesEnabled}
{handleUpgradePanel}
on:change={onChange} on:change={onChange}
on:click on:click
on:input on:input

View File

@ -14,7 +14,7 @@
import { IntegrationTypes } from "constants/backend" import { IntegrationTypes } from "constants/backend"
import { createValidationStore } from "helpers/validation/yup" import { createValidationStore } from "helpers/validation/yup"
import { createEventDispatcher, onMount } from "svelte" import { createEventDispatcher, onMount } from "svelte"
import { environment } from "stores/portal" import { environment, licensing } from "stores/portal"
import CreateEditVariableModal from "components/portal/environment/CreateEditVariableModal.svelte" import CreateEditVariableModal from "components/portal/environment/CreateEditVariableModal.svelte"
export let datasource export let datasource
@ -75,6 +75,12 @@
function showModal() { function showModal() {
createVariableModal.show() createVariableModal.show()
} }
async function handleUpgradePanel() {
await environment.upgradePanelOpened()
$licensing.goToUpgradePage()
}
onMount(async () => { onMount(async () => {
await environment.loadVariables() await environment.loadVariables()
}) })
@ -127,6 +133,8 @@
on:change on:change
bind:value={config[configKey]} bind:value={config[configKey]}
error={$validation.errors[configKey]} error={$validation.errors[configKey]}
environmentVariablesEnabled={$licensing.environmentVariablesEnabled}
{handleUpgradePanel}
/> />
</div> </div>
{/if} {/if}