mirror of
https://github.com/abhinavxd/libredesk.git
synced 2025-11-02 21:13:47 +00:00
Compare commits
6 Commits
cc36ef5a3a
...
v0.8.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3acc37405 | ||
|
|
562babf222 | ||
|
|
93e94432f5 | ||
|
|
ec63604163 | ||
|
|
f06da2a861 | ||
|
|
98f16854c8 |
@@ -10,8 +10,6 @@ Modern, open source, self-hosted customer support desk. Single binary app.
|
||||
|
||||
Visit [libredesk.io](https://libredesk.io) for more info. Check out the [**Live demo**](https://demo.libredesk.io/).
|
||||
|
||||
> **CAUTION:** This project is currently in **alpha**. Features and APIs may change and are not yet fully tested.
|
||||
|
||||
## Features
|
||||
|
||||
- **Multi Shared Inbox**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "libredesk",
|
||||
"version": "0.6.0-alpha",
|
||||
"version": "0.8.0-beta",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@@ -57,9 +57,8 @@
|
||||
<Input type="number" placeholder="0" v-bind="componentField" />
|
||||
</FormControl>
|
||||
<FormDescription>
|
||||
Maximum number of conversations that can be auto-assigned to an agent,
|
||||
conversations in "Resolved" or "Closed" states do not count toward this limit. Set to 0
|
||||
for unlimited.
|
||||
Maximum number of conversations that can be auto-assigned to an agent, conversations in
|
||||
"Resolved" or "Closed" states do not count toward this limit. Set to 0 for unlimited.
|
||||
</FormDescription>
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
@@ -97,6 +96,7 @@
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectGroup>
|
||||
<SelectItem :value = 0>None</SelectItem>
|
||||
<SelectItem v-for="bh in businessHours" :key="bh.id" :value="bh.id">
|
||||
{{ bh.name }}
|
||||
</SelectItem>
|
||||
@@ -121,6 +121,7 @@
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectGroup>
|
||||
<SelectItem :value= 0>None</SelectItem>
|
||||
<SelectItem
|
||||
v-for="sla in slaStore.options"
|
||||
:key="sla.value"
|
||||
@@ -226,7 +227,11 @@ const fetchBusinessHours = async () => {
|
||||
}
|
||||
|
||||
const onSubmit = form.handleSubmit((values) => {
|
||||
props.submitForm(values)
|
||||
props.submitForm({
|
||||
...values,
|
||||
business_hours_id: values.business_hours_id > 0 ? values.business_hours_id : null,
|
||||
sla_policy_id: values.sla_policy_id > 0 ? values.sla_policy_id: null
|
||||
})
|
||||
})
|
||||
|
||||
watch(
|
||||
|
||||
@@ -59,18 +59,28 @@
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
<Label for="password" class="text-sm font-medium text-foreground">{{
|
||||
t('globals.terms.password')
|
||||
}}</Label>
|
||||
<Input
|
||||
id="password"
|
||||
type="password"
|
||||
autocomplete="current-password"
|
||||
:placeholder="t('auth.enterPassword')"
|
||||
v-model="loginForm.password"
|
||||
:class="{ 'border-destructive': passwordHasError }"
|
||||
class="w-full bg-card border-border text-foreground placeholder:text-muted-foreground rounded py-2 px-3 focus:ring-2 focus:ring-ring focus:border-ring transition-all duration-200 ease-in-out"
|
||||
/>
|
||||
<Label for="password" class="text-sm font-medium text-foreground">
|
||||
{{ t('globals.terms.password') }}
|
||||
</Label>
|
||||
<div class="relative">
|
||||
<Input
|
||||
id="password"
|
||||
:type="showPassword ? 'text' : 'password'"
|
||||
autocomplete="current-password"
|
||||
:placeholder="t('auth.enterPassword')"
|
||||
v-model="loginForm.password"
|
||||
:class="{ 'border-destructive': passwordHasError }"
|
||||
class="w-full bg-card border-border text-foreground placeholder:text-muted-foreground rounded py-2 px-3 pr-10 focus:ring-2 focus:ring-ring focus:border-ring transition-all duration-200 ease-in-out"
|
||||
/>
|
||||
<button
|
||||
type="button"
|
||||
class="absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground"
|
||||
@click="showPassword = !showPassword"
|
||||
>
|
||||
<Eye v-if="!showPassword" class="w-5 h-5" />
|
||||
<EyeOff v-else class="w-5 h-5" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center justify-between">
|
||||
@@ -126,6 +136,7 @@ import { useI18n } from 'vue-i18n'
|
||||
import { EMITTER_EVENTS } from '@/constants/emitterEvents.js'
|
||||
import { useAppSettingsStore } from '@/stores/appSettings'
|
||||
import AuthLayout from '@/layouts/auth/AuthLayout.vue'
|
||||
import { Eye, EyeOff } from 'lucide-vue-next'
|
||||
|
||||
const emitter = useEmitter()
|
||||
const { t } = useI18n()
|
||||
@@ -134,6 +145,7 @@ const isLoading = ref(false)
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
const shakeCard = ref(false)
|
||||
const showPassword = ref(false)
|
||||
const loginForm = ref({
|
||||
email: '',
|
||||
password: ''
|
||||
|
||||
Reference in New Issue
Block a user