File size: 4,234 Bytes
bc27e65
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<script lang="ts">

	import { toast } from 'svelte-sonner';

	import { getContext, onMount } from 'svelte';

	const i18n = getContext('i18n');



	import Modal from '$lib/components/common/Modal.svelte';

	import Textarea from '$lib/components/common/Textarea.svelte';

	export let onSubmit: Function = () => {};

	export let show = false;



	let name = '';

	let description = '';

	let userIds = [];



	let loading = false;



	const submitHandler = async () => {

		loading = true;



		const group = {

			name,

			description

		};



		await onSubmit(group);



		loading = false;

		show = false;



		name = '';

		description = '';

		userIds = [];

	};



	onMount(() => {

		console.log('mounted');

	});

</script>

<Modal size="sm" bind:show>
	<div>

		<div class=" flex justify-between dark:text-gray-100 px-5 pt-4 mb-1.5">

			<div class=" text-lg font-medium self-center font-primary">

				{$i18n.t('Add User Group')}

			</div>

			<button

				class="self-center"

				on:click={() => {

					show = false;

				}}

			>

				<svg

					xmlns="http://www.w3.org/2000/svg"

					viewBox="0 0 20 20"

					fill="currentColor"

					class="w-5 h-5"

				>

					<path

						d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"

					/>

				</svg>

			</button>
		</div>

		<div class="flex flex-col md:flex-row w-full px-4 pb-4 md:space-x-4 dark:text-gray-200">

			<div class=" flex flex-col w-full sm:flex-row sm:justify-center sm:space-x-6">

				<form

					class="flex flex-col w-full"

					on:submit={(e) => {

						e.preventDefault();

						submitHandler();

					}}

				>

					<div class="px-1 flex flex-col w-full">

						<div class="flex gap-2">

							<div class="flex flex-col w-full">

								<div class=" mb-0.5 text-xs text-gray-500">{$i18n.t('Name')}</div>



								<div class="flex-1">

									<input

										class="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden"

										type="text"

										bind:value={name}

										placeholder={$i18n.t('Group Name')}

										autocomplete="off"

										required

									/>

								</div>

							</div>

						</div>



						<div class="flex flex-col w-full mt-2">

							<div class=" mb-1 text-xs text-gray-500">{$i18n.t('Description')}</div>



							<div class="flex-1">

								<Textarea

									className="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden resize-none"

									rows={2}

									bind:value={description}

									placeholder={$i18n.t('Group Description')}

								/>

							</div>

						</div>

					</div>



					<div class="flex justify-end pt-3 text-sm font-medium gap-1.5">

						<button

							class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex flex-row space-x-1 items-center {loading

								? ' cursor-not-allowed'

								: ''}"

							type="submit"

							disabled={loading}

						>

							{$i18n.t('Create')}



							{#if loading}

								<div class="ml-2 self-center">

									<svg

										class=" w-4 h-4"

										viewBox="0 0 24 24"

										fill="currentColor"

										xmlns="http://www.w3.org/2000/svg"

										><style>

											.spinner_ajPY {

												transform-origin: center;

												animation: spinner_AtaB 0.75s infinite linear;

											}

											@keyframes spinner_AtaB {

												100% {

													transform: rotate(360deg);

												}

											}

										</style><path

											d="M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"

											opacity=".25"

										/><path

											d="M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"

											class="spinner_ajPY"

										/></svg

									>

								</div>

							{/if}

						</button>

					</div>

				</form>
			</div>
		</div>
	</div>
</Modal>