This commit is contained in:
2025-06-17 22:24:13 +02:00
parent 70b25ed17b
commit c4f902b469
6 changed files with 169 additions and 170 deletions

View File

@ -1,58 +1,60 @@
<template> <template>
<UiCard <div class="p-1">
v-if="group" <UiCard
:title="mode === 'create' ? t('title.create') : t('title.edit')" v-if="group"
icon="mdi:folder-plus-outline" :title="mode === 'create' ? t('title.create') : t('title.edit')"
@close="$emit('close')" icon="mdi:folder-plus-outline"
> @close="$emit('close')"
<form
class="flex flex-col gap-4 w-full p-4"
@submit.prevent="$emit('submit')"
> >
<UiInput <form
:check-input="check" class="flex flex-col gap-4 w-full p-4"
:label="t('name')" @submit.prevent="$emit('submit')"
:placeholder="t('name')" >
autofocus <UiInput
v-model="group.name" :check-input="check"
ref="nameRef" :label="t('name')"
/> :placeholder="t('name')"
autofocus
<UiInput v-model="group.name"
v-model="group.description" ref="nameRef"
:check-input="check"
:label="t('description')"
:placeholder="t('description')"
/>
<div class="flex gap-4">
<UiSelectIcon
v-model="group.icon"
default-icon="mdi:folder-outline"
/> />
<UiSelectColor v-model="group.color" /> <UiInput
</div> v-model="group.description"
:check-input="check"
:label="t('description')"
:placeholder="t('description')"
/>
<div class="flex flex-wrap justify-end gap-4"> <div class="flex gap-4">
<UiButton <UiSelectIcon
class="btn-error btn-outline flex-1" v-model="group.icon"
@click="$emit('close')" default-icon="mdi:folder-outline"
> />
{{ t('abort') }}
<Icon name="mdi:close" />
</UiButton>
<UiButton <UiSelectColor v-model="group.color" />
class="btn-primary flex-1" </div>
@click="$emit('submit')"
> <div class="flex flex-wrap justify-end gap-4">
{{ mode === 'create' ? t('create') : t('save') }} <UiButton
<Icon name="mdi:check" /> class="btn-error btn-outline flex-1"
</UiButton> @click="$emit('close')"
</div> >
</form> {{ t('abort') }}
</UiCard> <Icon name="mdi:close" />
</UiButton>
<UiButton
class="btn-primary flex-1"
@click="$emit('submit')"
>
{{ mode === 'create' ? t('create') : t('save') }}
<Icon name="mdi:check" />
</UiButton>
</div>
</form>
</UiCard>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -1,112 +1,114 @@
<template> <template>
<UiCard <div class="p-1">
body-class="rounded overflow-auto px-0 h-full" <UiCard
@close="onClose" body-class="rounded overflow-auto px-0 h-full"
> @close="onClose"
<div class=""> >
<nav <div class="">
aria-label="Tabs Password Item" <nav
aria-orientation="horizontal" aria-label="Tabs Password Item"
class="tabs tabs-bordered w-full transition-all duration-700 sticky top-0 z-10" aria-orientation="horizontal"
role="tablist" class="tabs tabs-bordered w-full transition-all duration-700 sticky top-0 z-10"
> role="tablist"
<button
:id="id.details"
aria-controls="vaultDetailsId"
aria-selected="true"
class="tab active-tab:tab-active active w-full"
data-tab="#vaultDetailsId"
role="tab"
type="button"
> >
<Icon <button
name="material-symbols:key-outline" :id="id.details"
class="me-2" aria-controls="vaultDetailsId"
/> aria-selected="true"
<span class="hidden sm:block"> class="tab active-tab:tab-active active w-full"
{{ t('tab.details') }} data-tab="#vaultDetailsId"
</span> role="tab"
</button> type="button"
<button >
:id="id.keyValue" <Icon
aria-controls="tabs-basic-2" name="material-symbols:key-outline"
aria-selected="false" class="me-2"
class="tab active-tab:tab-active w-full" />
data-tab="#tabs-basic-2" <span class="hidden sm:block">
role="tab" {{ t('tab.details') }}
type="button" </span>
> </button>
<Icon <button
name="fluent:group-list-20-filled" :id="id.keyValue"
class="me-2" aria-controls="tabs-basic-2"
/> aria-selected="false"
<span class="hidden sm:block"> class="tab active-tab:tab-active w-full"
{{ t('tab.keyValue') }} data-tab="#tabs-basic-2"
</span> role="tab"
</button> type="button"
<button >
:id="id.history" <Icon
aria-controls="tabs-basic-3" name="fluent:group-list-20-filled"
aria-selected="false" class="me-2"
class="tab active-tab:tab-active w-full" />
data-tab="#tabs-basic-3" <span class="hidden sm:block">
role="tab" {{ t('tab.keyValue') }}
type="button" </span>
> </button>
<Icon <button
name="material-symbols:history" :id="id.history"
class="me-2" aria-controls="tabs-basic-3"
/> aria-selected="false"
<span class="hidden sm:block"> class="tab active-tab:tab-active w-full"
{{ t('tab.history') }} data-tab="#tabs-basic-3"
</span> role="tab"
</button> type="button"
</nav> >
<Icon
name="material-symbols:history"
class="me-2"
/>
<span class="hidden sm:block">
{{ t('tab.history') }}
</span>
</button>
</nav>
<div class="h-full pb-8"> <div class="h-full pb-8">
<div <div
id="vaultDetailsId" id="vaultDetailsId"
role="tabpanel" role="tabpanel"
class="h-full" class="h-full"
:aria-labelledby="id.details" :aria-labelledby="id.details"
> >
<HaexPassItemDetails <HaexPassItemDetails
v-if="details" v-if="details"
v-model="details" v-model="details"
with-copy-button with-copy-button
:read_only :read_only
:defaultIcon :defaultIcon
v-model:prevent-close="preventClose" v-model:prevent-close="preventClose"
/> />
</div> </div>
<div <div
id="tabs-basic-2" id="tabs-basic-2"
class="hidden" class="hidden"
role="tabpanel" role="tabpanel"
:aria-labelledby="id.keyValue" :aria-labelledby="id.keyValue"
> >
<HaexPassItemKeyValue <HaexPassItemKeyValue
v-if="keyValues" v-if="keyValues"
v-model="keyValues" v-model="keyValues"
v-model:items-to-add="keyValuesAdd" v-model:items-to-add="keyValuesAdd"
v-model:items-to-delete="keyValuesDelete" v-model:items-to-delete="keyValuesDelete"
:read_only :read_only
:item-id="details!.id" :item-id="details!.id"
/> />
</div> </div>
<div <div
id="tabs-basic-3" id="tabs-basic-3"
class="hidden h-full" class="hidden h-full"
role="tabpanel" role="tabpanel"
:aria-labelledby="id.history" :aria-labelledby="id.history"
> >
<!-- <HaexPassItemHistory v-model="itemHistory" /> --> <!-- <HaexPassItemHistory v-model="itemHistory" /> -->
</div>
</div> </div>
</div> </div>
</div> </UiCard>
</UiCard> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

View File

@ -1,7 +1,7 @@
<template> <template>
<div v-if="menuItems?.length"> <div v-if="menuItems?.length">
<ul <ul
class="flex flex-col w-full h-full gap-y-2 *:first:rounded-t-md *:last:rounded-b-md" class="flex flex-col w-full h-full gap-y-2 first:rounded-t-md last:rounded-b-md p-1"
ref="listRef" ref="listRef"
> >
<li <li

View File

@ -1,13 +1,10 @@
<template> <template>
<div> <div class="h-full text-base-content flex bg-base-200">
aaaa <HaexExtensionCard
<div class="h-full text-base-content flex bg-base-200"> v-for="extension in extensionStore.availableExtensions"
<HaexExtensionCard v-bind="extension"
v-for="extension in extensionStore.availableExtensions" :key="extension.id"
v-bind="extension" />
:key="extension.id"
/>
</div>
</div> </div>
</template> </template>

View File

@ -1,6 +1,5 @@
<template> <template>
<div> <div>
{{ group }}
<HaexPassGroup <HaexPassGroup
v-model="group" v-model="group"
mode="edit" mode="edit"

View File

@ -1,33 +1,32 @@
<template> <template>
<div class="relative h-full"> <div class="relative h-full">
<div class="h-full"> <div class="h-full">
<div class="h-full overflow-auto p-1 flex flex-col"> <div class="h-full overflow-auto flex flex-col">
<HaexPassGroupBreadcrumbs <HaexPassGroupBreadcrumbs
:items="breadCrumbs" :items="breadCrumbs"
class="px-2"
v-show="breadCrumbs.length" v-show="breadCrumbs.length"
/> />
<HaexPassMobileMenu <HaexPassMobileMenu
ref="listRef"
:menu-items="groupItems" :menu-items="groupItems"
ref="listRef"
v-model:selected-items="selectedItems" v-model:selected-items="selectedItems"
sel
/> />
</div> </div>
<div <div
class="fixed bottom-4 flex justify-between transition-all pointer-events-none right-0 sm:items-center items-end" class="fixed bottom-4 flex justify-between transition-all pointer-events-none right-0 sm:items-center items-end px-8"
:class="[isVisible ? 'left-15 ' : 'left-0']" :class="[isVisible ? 'left-15 ' : 'left-0']"
> >
<div class="w-full pl-8"></div> <div class="w-full"></div>
<UiButtonAction <UiButtonAction
:menu
v-if="!inTrashGroup" v-if="!inTrashGroup"
:menu
/> />
<div <div
class="flex flex-col sm:flex-row gap-4 w-full justify-end items-end pr-8" class="flex flex-col sm:flex-row gap-4 w-full justify-end items-end"
> >
<UiButton <UiButton
v-show="selectedItems.size === 1" v-show="selectedItems.size === 1"