File size: 1,126 Bytes
b2ecf7d
76d4920
9d298eb
76d4920
 
b2ecf7d
 
 
 
 
76d4920
 
 
 
d738fa8
76d4920
 
 
 
 
 
 
 
 
 
 
 
d738fa8
76d4920
b2ecf7d
 
 
76d4920
 
 
 
 
 
 
 
 
 
 
 
 
 
b2ecf7d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<script lang="ts">
	import LogInPopover from "../../../LogInPopover/LogInPopover.svelte";
	import IconSpin from "../../..//Icons/IconSpin.svelte";
	import { isLoggedIn } from "../../stores.js";
	import { createEventDispatcher } from "svelte";

	export let classNames = "";
	export let isDisabled = false;
	export let isLoading: boolean;
	export let label = "Compute";
	export let withParentLoginPopover = false;

	let popOverOpen = false;

	const dispatch = createEventDispatcher<{ logInPopover: void; run: void }>();

	function _onClick() {
		if (!$isLoggedIn) {
			if (withParentLoginPopover) {
				// tell parent element to show log in pop over
				dispatch("logInPopover");
			} else {
				popOverOpen = true;
			}
			return;
		}

		dispatch("run");
	}
</script>

{#if !isDisabled}
	<LogInPopover bind:open={popOverOpen}>
		<button
			class="btn-widget h-10 w-24 px-5 {classNames}"
			disabled={isDisabled || isLoading}
			on:click|preventDefault={_onClick}
			type="submit"
		>
			{#if isLoading}
				<IconSpin classNames="text-gray-600 animate-spin" />
			{:else}
				{label}
			{/if}
		</button>
	</LogInPopover>
{/if}