| <script lang="ts"> | |
| import { getContext } from 'svelte'; | |
| import Textarea from '$lib/components/common/Textarea.svelte'; | |
| import Tooltip from '$lib/components/common/Tooltip.svelte'; | |
| const i18n = getContext('i18n'); | |
| export let name = ''; | |
| export let color = ''; | |
| export let description = ''; | |
| export let data = {}; | |
| export let edit = false; | |
| export let onDelete: Function = () => {}; | |
| </script> | |
| <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('Color')}</div> | |
| <div class="flex-1"> | |
| <Tooltip content={$i18n.t('Hex Color - Leave empty for default color')} placement="top-start"> | |
| <div class="flex gap-0.5"> | |
| <div class="text-gray-500">#</div> | |
| <input | |
| class="w-full text-sm bg-transparent placeholder:text-gray-300 dark:placeholder:text-gray-700 outline-hidden" | |
| type="text" | |
| bind:value={color} | |
| placeholder={$i18n.t('Hex Color')} | |
| autocomplete="off" | |
| /> | |
| </div> | |
| </Tooltip> | |
| </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={4} | |
| bind:value={description} | |
| placeholder={$i18n.t('Group Description')} | |
| /> | |
| </div> | |
| </div> | |
| <hr class="border-gray-50 dark:border-gray-850/30 my-1" /> | |
| <div class="flex flex-col w-full mt-2"> | |
| <div class=" mb-1 text-xs text-gray-500">{$i18n.t('Setting')}</div> | |
| <div> | |
| <div class=" flex w-full justify-between"> | |
| <div class=" self-center text-xs"> | |
| {$i18n.t('Who can share to this group')} | |
| </div> | |
| <div class="flex items-center gap-2 p-1"> | |
| <select | |
| class="text-sm bg-transparent dark:bg-gray-900 outline-hidden rounded-lg px-2" | |
| value={data?.config?.share ?? true} | |
| on:change={(e) => { | |
| const value = e.target.value; | |
| let shareValue; | |
| if (value === 'false') { | |
| shareValue = false; | |
| } else if (value === 'true') { | |
| shareValue = true; | |
| } else { | |
| shareValue = value; | |
| } | |
| data.config = { ...(data?.config ?? {}), share: shareValue }; | |
| }} | |
| > | |
| <option value={false}>{$i18n.t('No one')}</option> | |
| <option value="members">{$i18n.t('Members')}</option> | |
| <option value={true}>{$i18n.t('Anyone')}</option> | |
| </select> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| {#if edit} | |
| <div class="flex flex-col w-full mt-2"> | |
| <div class=" mb-0.5 text-xs text-gray-500">{$i18n.t('Actions')}</div> | |
| <div class="flex-1"> | |
| <button | |
| class="text-xs bg-transparent hover:underline cursor-pointer" | |
| type="button" | |
| on:click={() => onDelete()} | |
| > | |
| {$i18n.t('Delete')} | |
| </button> | |
| </div> | |
| </div> | |
| {/if} | |