Merge pull request #2511 from brkcvn/form-elements

Some static HTML classname return to tailwind class
This commit is contained in:
Cüneyt Şentürk 2022-07-05 10:21:28 +03:00 committed by GitHub
commit 7b9ab6b544
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 290 additions and 241 deletions

93
public/css/app.css vendored
View File

@ -1276,7 +1276,11 @@ input[type=file]::file-selector-button:hover{
/* form */ /* form */
.form-element{ .has-error input, .has-error select, .has-error textarea {
border: 1px solid #cc0000 !important;
}
.input-money{
margin-top: 0.25rem; margin-top: 0.25rem;
width: 100%; width: 100%;
border-radius: 0.5rem; border-radius: 0.5rem;
@ -1295,32 +1299,32 @@ input[type=file]::file-selector-button:hover{
color: rgb(66 66 66 / var(--tw-text-opacity)); color: rgb(66 66 66 / var(--tw-text-opacity));
} }
.form-element::-webkit-input-placeholder{ .input-money::-webkit-input-placeholder{
--tw-placeholder-opacity: 1; --tw-placeholder-opacity: 1;
color: rgb(199 201 217 / var(--tw-placeholder-opacity)); color: rgb(199 201 217 / var(--tw-placeholder-opacity));
} }
.form-element::-moz-placeholder{ .input-money::-moz-placeholder{
--tw-placeholder-opacity: 1; --tw-placeholder-opacity: 1;
color: rgb(199 201 217 / var(--tw-placeholder-opacity)); color: rgb(199 201 217 / var(--tw-placeholder-opacity));
} }
.form-element:-ms-input-placeholder{ .input-money:-ms-input-placeholder{
--tw-placeholder-opacity: 1; --tw-placeholder-opacity: 1;
color: rgb(199 201 217 / var(--tw-placeholder-opacity)); color: rgb(199 201 217 / var(--tw-placeholder-opacity));
} }
.form-element::-ms-input-placeholder{ .input-money::-ms-input-placeholder{
--tw-placeholder-opacity: 1; --tw-placeholder-opacity: 1;
color: rgb(199 201 217 / var(--tw-placeholder-opacity)); color: rgb(199 201 217 / var(--tw-placeholder-opacity));
} }
.form-element::placeholder{ .input-money::placeholder{
--tw-placeholder-opacity: 1; --tw-placeholder-opacity: 1;
color: rgb(199 201 217 / var(--tw-placeholder-opacity)); color: rgb(199 201 217 / var(--tw-placeholder-opacity));
} }
.form-element:focus{ .input-money:focus{
--tw-border-opacity: 1; --tw-border-opacity: 1;
border-color: rgb(85 88 139 / var(--tw-border-opacity)); border-color: rgb(85 88 139 / var(--tw-border-opacity));
outline: 2px solid transparent; outline: 2px solid transparent;
@ -1328,7 +1332,7 @@ input[type=file]::file-selector-button:hover{
--tw-ring-color: transparent; --tw-ring-color: transparent;
} }
.form-element:disabled{ .input-money:disabled{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity)); background-color: rgb(229 231 235 / var(--tw-bg-opacity));
} }
@ -1338,31 +1342,6 @@ input[type=file]::file-selector-button:hover{
border: none; border: none;
} }
.has-error .form-element{
--tw-border-opacity: 1;
border-color: rgb(204 0 0 / var(--tw-border-opacity));
}
.prepend-input-icon .form-element{
padding-left: 2.5rem;
padding-right: 2.5rem;
}
.form-control-label{
font-size: 0.875rem;
line-height: 1.25rem;
font-weight: 500;
--tw-text-opacity: 1;
color: rgb(66 66 66 / var(--tw-text-opacity));
}
div.required > .form-control-label::after {
content: '*';
margin-left: 0.25rem;
--tw-text-opacity: 1;
color: rgb(204 0 0 / var(--tw-text-opacity));
}
[type="radio"]{ [type="radio"]{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(85 88 139 / var(--tw-text-opacity)); color: rgb(85 88 139 / var(--tw-text-opacity));
@ -46751,6 +46730,7 @@ input[type="date"]::-webkit-inner-spin-button,
.el-select .el-input .el-input__inner{ .el-select .el-input .el-input__inner{
margin-top: 0.25rem; margin-top: 0.25rem;
height: auto;
width: 100%; width: 100%;
border-radius: 0.5rem; border-radius: 0.5rem;
border-width: 1px; border-width: 1px;
@ -46806,18 +46786,7 @@ input[type="date"]::-webkit-inner-spin-button,
background-color: rgb(229 231 235 / var(--tw-bg-opacity)); background-color: rgb(229 231 235 / var(--tw-bg-opacity));
} }
.has-error .el-select .el-input .el-input__inner{
--tw-border-opacity: 1;
border-color: rgb(204 0 0 / var(--tw-border-opacity));
}
.prepend-input-icon .el-select .el-input .el-input__inner{
padding-left: 2.5rem;
padding-right: 2.5rem;
}
.el-select .el-input .el-input__inner { .el-select .el-input .el-input__inner {
height: auto;
color:#595959 !important; color:#595959 !important;
} }
@ -47030,16 +46999,6 @@ input[type="date"]::-webkit-inner-spin-button,
background-color: rgb(229 231 235 / var(--tw-bg-opacity)); background-color: rgb(229 231 235 / var(--tw-bg-opacity));
} }
.has-error .el-date-editor input{
--tw-border-opacity: 1;
border-color: rgb(204 0 0 / var(--tw-border-opacity));
}
.prepend-input-icon .el-date-editor input{
padding-left: 2.5rem;
padding-right: 2.5rem;
}
.el-date-editor input { .el-date-editor input {
color: #595959 !important; color: #595959 !important;
} }
@ -47693,16 +47652,16 @@ body{
background-color: rgb(238 238 243 / var(--tw-bg-opacity)); background-color: rgb(238 238 243 / var(--tw-bg-opacity));
} }
.disabled\:bg-gray-50:disabled{
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
}
.disabled\:bg-gray-200:disabled{ .disabled\:bg-gray-200:disabled{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(229 231 235 / var(--tw-bg-opacity)); background-color: rgb(229 231 235 / var(--tw-bg-opacity));
} }
.disabled\:bg-gray-50:disabled{
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity));
}
.disabled\:bg-green-300:disabled{ .disabled\:bg-green-300:disabled{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(197 217 186 / var(--tw-bg-opacity)); background-color: rgb(197 217 186 / var(--tw-bg-opacity));
@ -47842,14 +47801,14 @@ body{
margin-right: 0.75rem; margin-right: 0.75rem;
} }
[dir="ltr"] .ltr\:mr-1{
margin-right: 0.25rem;
}
[dir="ltr"] .ltr\:ml-1{ [dir="ltr"] .ltr\:ml-1{
margin-left: 0.25rem; margin-left: 0.25rem;
} }
[dir="ltr"] .ltr\:mr-1{
margin-right: 0.25rem;
}
[dir="ltr"] .ltr\:ml-4{ [dir="ltr"] .ltr\:ml-4{
margin-left: 1rem; margin-left: 1rem;
} }
@ -48016,14 +47975,14 @@ body{
margin-right: 1rem; margin-right: 1rem;
} }
[dir="rtl"] .rtl\:ml-1{
margin-left: 0.25rem;
}
[dir="rtl"] .rtl\:mr-1{ [dir="rtl"] .rtl\:mr-1{
margin-right: 0.25rem; margin-right: 0.25rem;
} }
[dir="rtl"] .rtl\:ml-1{
margin-left: 0.25rem;
}
[dir="rtl"] .rtl\:-mr-7{ [dir="rtl"] .rtl\:-mr-7{
margin-right: -1.75rem; margin-right: -1.75rem;
} }

View File

@ -2,6 +2,7 @@
<base-input :label="title" :name="name" <base-input :label="title" :name="name"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:not-required="notRequired"
:class="[ :class="[
{'readonly': readonly}, {'readonly': readonly},
{'disabled': disabled}, {'disabled': disabled},
@ -9,7 +10,7 @@
]" ]"
:error="formError"> :error="formError">
<div class="flex justify-between relative mt-1"> <div class="flex justify-between relative mt-1">
<input type="text" @change="change" :name="name" :id="name" v-model="color" @keyup="addColor" class="form-element"> <input type="text" @change="change" :name="name" :id="name" v-model="color" @keyup="addColor" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple">
<div class="absolute w-7 h-7 flex rounded-full my-auto bottom-2 right-2 cursor-pointer" <div class="absolute w-7 h-7 flex rounded-full my-auto bottom-2 right-2 cursor-pointer"
ref="dropdownMenu" ref="dropdownMenu"
@ -105,6 +106,11 @@ export default {
description: "Selectbox disabled status" description: "Selectbox disabled status"
}, },
notRequired: {
type: Boolean,
default: false
},
small: { small: {
type: [Boolean, String], type: [Boolean, String],
default: false, default: false,

View File

@ -22,7 +22,7 @@
<input <input
type="text" type="text"
data-input="true" data-input="true"
class="form-element px-10 border-t-0 border-l-0 border-r-0 border-gray-200 rounded-none" class="w-full text-sm py-2.5 mt-1 border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple px-10 border-t-0 border-l-0 border-r-0 border-gray-200 rounded-none"
autocapitalize="default" autocorrect="ON" autocapitalize="default" autocorrect="ON"
:placeholder="placeholder" :placeholder="placeholder"
:ref="'input-contact-field-' + _uid" :ref="'input-contact-field-' + _uid"
@ -32,7 +32,7 @@
/> />
</div> </div>
<ul class="form-element p-0 border-0 mt-0 cursor-pointer"> <ul class="w-full text-sm rounded-lg border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple p-0 border-0 mt-0 cursor-pointer">
<div class="hover:bg-gray-100 px-4 py-2" v-for="(contact, index) in sortContacts" :key="index" @click="onContactSeleted(index, contact.id)"> <div class="hover:bg-gray-100 px-4 py-2" v-for="(contact, index) in sortContacts" :key="index" @click="onContactSeleted(index, contact.id)">
<span>{{ contact.name }}</span> <span>{{ contact.name }}</span>
</div> </div>

View File

@ -10,7 +10,7 @@
masked: true masked: true
}" :value="price" disabled size="5" masked class="disabled-money text-right mr-1 js-conversion-input text-xs px-1"></money> }" :value="price" disabled size="5" masked class="disabled-money text-right mr-1 js-conversion-input text-xs px-1"></money>
<span class="mr-2">{{ texts[1] }}</span> <span class="mr-2">{{ texts[1] }}</span>
<input name="currency_rate" v-model="rate" @input="onChange" class="form-element w-16 h-10 text-right js-conversion-input" /> <input name="currency_rate" v-model="rate" @input="onChange" class="text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple w-16 h-10 text-right js-conversion-input" />
</div> </div>
</template> </template>

View File

@ -12,6 +12,7 @@
:appendIcon="icon" :appendIcon="icon"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:not-required="notRequired"
@focus="focus" @focus="focus"
> >
<flat-picker slot-scope="{focus, blur}" <flat-picker slot-scope="{focus, blur}"
@ -19,7 +20,7 @@
@on-open="focus" @on-open="focus"
@on-close="blur" @on-close="blur"
:config="dateConfig" :config="dateConfig"
class="form-element datepicker" class="datepicker w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
v-model="real_model" v-model="real_model"
@input="change" @input="change"
:readonly="readonly" :readonly="readonly"
@ -64,6 +65,11 @@ export default {
description: "Input readonly status" description: "Input readonly status"
}, },
notRequired: {
type: Boolean,
default: false
},
period: { period: {
type: [Number, String], type: [Number, String],
default: "0", default: "0",

View File

@ -14,7 +14,7 @@
<input <input
type="text" type="text"
data-input="true" data-input="true"
class="form-element px-10 border-t-0 border-l-0 border-r-0 border-gray-200 rounded-none" class="w-full text-sm px-10 py-2.5 mt-1rounded-none border border-gray-200 border-t-0 border-l-0 border-r-0 text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
autocapitalize="default" autocapitalize="default"
autocorrect="ON" autocorrect="ON"
:placeholder="placeholder" :placeholder="placeholder"
@ -24,7 +24,7 @@
/> />
</div> </div>
<ul class="form-element p-0 mt-0 border-0 cursor-pointer"> <ul class="w-full text-sm p-0 mt-0 rounded-lg border-0 border-light-gray text-black placeholder-light-gray bg-white cursor-pointer disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple">
<div <div
class="hover:bg-gray-100 px-4" class="hover:bg-gray-100 px-4"
v-for="(item, index) in sortedItems" v-for="(item, index) in sortedItems"

View File

@ -12,7 +12,7 @@
<input <input
type="text" type="text"
data-input="true" data-input="true"
class="form-element px-10 border-t-0 border-l-0 border-r-0 border-gray-200 rounded-none" class="w-full text-sm py-2.5 mt-1 border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple px-10 border-t-0 border-l-0 border-r-0 border-gray-200 rounded-none"
autocapitalize="default" autocapitalize="default"
autocorrect="ON" autocorrect="ON"
:placeholder="placeholder" :placeholder="placeholder"
@ -23,7 +23,7 @@
/> />
</div> </div>
<ul class="form-element p-0 mt-0 border-0 cursor-pointer"> <ul class="w-full text-sm rounded-lg border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple p-0 mt-0 border-0 cursor-pointer">
<div <div
class="hover:bg-gray-100 px-4" class="hover:bg-gray-100 px-4"
v-for="(item, index) in sortedItems" v-for="(item, index) in sortedItems"

View File

@ -1,7 +1,11 @@
<template> <template>
<div v-if="! rowInput" <div v-if="! rowInput"
:class="[{'has-error': error}, {'required': required}, {'readonly': readonly}, {'disabled': disabled}, col]"> :class="[{'has-error': error}, {'required': required}, {'readonly': readonly}, {'disabled': disabled}, col]">
<label v-if="title" :for="name" class="form-control-label">{{ title }}</label>
<label v-if="title" :for="name" class="text-black text-sm font-medium">
{{ title }}
<span v-if="!notRequired" class="text-red ltr:ml-1 rtl:mr-1">*</span>
</label>
<div class="relative" :class="group_class"> <div class="relative" :class="group_class">
<!-- <div class="input-group-prepend absolute left-2 bottom-3 text-light-gray"> <!-- <div class="input-group-prepend absolute left-2 bottom-3 text-light-gray">
@ -10,7 +14,7 @@
</span> </span>
</div> --> </div> -->
<money :name="name" @input="input" :placeholder="placeholder" v-bind="money" :value="model" :disabled="disabled" :masked="masked" class="form-element" :class="moneyClass"></money> <money :name="name" @input="input" :placeholder="placeholder" v-bind="money" :value="model" :disabled="disabled" :masked="masked" class="input-money" :class="moneyClass"></money>
</div> </div>
<div class="text-red text-sm mt-1 block" v-if="error" v-html="error"></div> <div class="text-red text-sm mt-1 block" v-if="error" v-html="error"></div>
@ -18,7 +22,10 @@
<div v-else <div v-else
:class="[{'has-error': error}, {'required': required}, {'readonly': readonly}, {'disabled': disabled}, col]"> :class="[{'has-error': error}, {'required': required}, {'readonly': readonly}, {'disabled': disabled}, col]">
<label v-if="title" :for="name" class="form-control-label">{{ title }}</label>
<label v-if="title" :for="name" class="text-black text-sm font-medium">
{{ title }}
</label>
<div v-if="icon" :class="group_class"> <div v-if="icon" :class="group_class">
<div v-if="icon" class="input-group-prepend"> <div v-if="icon" class="input-group-prepend">
@ -27,10 +34,10 @@
</span> </span>
</div> </div>
<money :name="name" @input="input" :placeholder="placeholder" v-bind="money" :value="model" :disabled="disabled" :masked="masked" class="form-element" :class="moneyClass"></money> <money :name="name" @input="input" :placeholder="placeholder" v-bind="money" :value="model" :disabled="disabled" :masked="masked" class="input-money" :class="moneyClass"></money>
</div> </div>
<money v-else :name="name" @input="input" :placeholder="placeholder" v-bind="money" :value="model" :disabled="disabled" :masked="masked" class="form-element" :class="moneyClass"></money> <money v-else :name="name" @input="input" :placeholder="placeholder" v-bind="money" :value="model" :disabled="disabled" :masked="masked" class="input-money" :class="moneyClass"></money>
<div class="text-red text-sm mt-1 block" v-if="error" v-html="error"></div> <div class="text-red text-sm mt-1 block" v-if="error" v-html="error"></div>
</div> </div>
@ -138,6 +145,10 @@ export default {
default: false, default: false,
description: "Money result value" description: "Money result value"
}, },
notRequired: {
type: Boolean,
default: false
}
}, },
data() { data() {

View File

@ -1,6 +1,6 @@
<template> <template>
<div:class="col"> <div:class="col">
<label :for="name" class="form-control-label">{{ text }}</label> <label :for="name" class="text-black text-sm font-medium">{{ text }}</label>
<div class="tab-pane tab-example-result fade show active" role="tabpanel" aria-labelledby="-component-tab"> <div class="tab-pane tab-example-result fade show active" role="tabpanel" aria-labelledby="-component-tab">
<div class="btn-group btn-group-toggle radio-yes-no" data-toggle="buttons" v-on:click="onClick"> <div class="btn-group btn-group-toggle radio-yes-no" data-toggle="buttons" v-on:click="onClick">

View File

@ -18,7 +18,7 @@
{{ frequencyEveryText }} {{ frequencyEveryText }}
</div> </div>
<input type="text" class="w-20 form-element" v-model="interval" @input="change" v-if="frequency == 'custom'"> <input type="text" class="w-20 text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" v-model="interval" @input="change" v-if="frequency == 'custom'">
<el-select class="w-36 ml-2" v-model="customFrequency" @input="change" v-if="frequency == 'custom'"> <el-select class="w-36 ml-2" v-model="customFrequency" @input="change" v-if="frequency == 'custom'">
<el-option <el-option
@ -89,7 +89,7 @@
</el-option> </el-option>
</el-select> </el-select>
<input type="text" class="w-20 form-element ml-2" v-model="limitCount" v-if="limit == 'after'" @input="change"> <input type="text" class="w-20 text-sm px-3 py-2.5 mt-1 ml-2 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" v-model="limitCount" v-if="limit == 'after'" @input="change">
<div class="pl-2 text-sm" v-if="limit == 'after'"> <div class="pl-2 text-sm" v-if="limit == 'after'">
{{ endText }} {{ endText }}

View File

@ -2,6 +2,7 @@
<base-input :label="title" :name="name" <base-input :label="title" :name="name"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:not-required="notRequired"
:class="[ :class="[
{'readonly': readonly}, {'readonly': readonly},
{'disabled': disabled}, {'disabled': disabled},
@ -254,6 +255,11 @@ export default {
description: "Selectbox clearable status" description: "Selectbox clearable status"
}, },
notRequired: {
type: Boolean,
default: false
},
disabled: { disabled: {
type: Boolean, type: Boolean,
default: false, default: false,

View File

@ -2,6 +2,7 @@
<base-input v-if="title" :label="title" :name="name" <base-input v-if="title" :label="title" :name="name"
:readonly="readonly" :readonly="readonly"
:disabled="disabled" :disabled="disabled"
:not-required="notRequired"
:class="[ :class="[
{'readonly': readonly}, {'readonly': readonly},
{'disabled': disabled}, {'disabled': disabled},
@ -359,6 +360,11 @@ export default {
description: "Selectbox clearable status" description: "Selectbox clearable status"
}, },
notRequired: {
type: Boolean,
default: false
},
disabled: { disabled: {
type: Boolean, type: Boolean,
default: false, default: false,

View File

@ -9,8 +9,6 @@
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5">
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input <base-input
required
class="required"
v-model="form.name" v-model="form.name"
:label="text.name" :label="text.name"
:placeholder="placeholder.name" :placeholder="placeholder.name"
@ -22,8 +20,6 @@
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input <base-input
required
class="required"
:error="form.errors.class[0]" :error="form.errors.class[0]"
:label="text.type"> :label="text.type">
@ -41,7 +37,7 @@
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input :label="text.width"> <base-input :label="text.width" not-required>
<el-select <el-select
v-model="form.width" filterable v-model="form.width" filterable
:placeholder="placeholder.width"> :placeholder="placeholder.width">
@ -56,6 +52,7 @@
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input <base-input
not-required
v-model="form.sort" v-model="form.sort"
:label="text.sort" :label="text.sort"
:placeholder="placeholder.sort" :placeholder="placeholder.sort"

View File

@ -63,7 +63,7 @@
<div class="grid sm:grid-cols-8 gap-x-4 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-8 gap-x-4 gap-y-6 my-3.5">
<div class="sm:col-span-8"> <div class="sm:col-span-8">
<label for="cardName" class="form-control-label text-black text-sm font-medium"> <label for="cardName" class="text-black text-sm font-medium">
{{ textCardName }} {{ textCardName }}
</label> </label>
@ -83,7 +83,7 @@
</div> </div>
<div class="sm:col-span-8"> <div class="sm:col-span-8">
<label for="cardNumber" class="form-control-label text-black text-sm font-medium"> <label for="cardNumber" class="text-black text-sm font-medium">
{{ textCardNumber }} {{ textCardNumber }}
</label> </label>
@ -105,7 +105,7 @@
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<label for="cardMonth" class="form-control-label text-black text-sm font-medium"> <label for="cardMonth" class="text-black text-sm font-medium">
{{ textExpirationDate }} {{ textExpirationDate }}
</label> </label>
@ -144,7 +144,7 @@
</div> </div>
<div class="sm:col-span-2"> <div class="sm:col-span-2">
<label for="cardCvv" class="form-control-label text-black text-sm font-medium"> <label for="cardCvv" class="text-black text-sm font-medium">
{{ textCvv }} {{ textCvv }}
</label> </label>
@ -168,7 +168,7 @@
<div class="flex items-center" v-if="storeCard"> <div class="flex items-center" v-if="storeCard">
<input @input="changeStoreCard" :id="'store_card' + _uid" name="store_card" type="checkbox" value="true" class="rounded-sm text-purple border-gray-300 cursor-pointer disabled:bg-gray-200 focus:outline-none focus:ring-transparent"> <input @input="changeStoreCard" :id="'store_card' + _uid" name="store_card" type="checkbox" value="true" class="rounded-sm text-purple border-gray-300 cursor-pointer disabled:bg-gray-200 focus:outline-none focus:ring-transparent">
<label :for="'store_card' + _uid" class="form-control-label ltr:ml-2 rtl:ml-2"> <label :for="'store_card' + _uid" class="text-black text-sm font-medium ltr:ml-2 rtl:ml-2">
<strong>{{ textStoreCard }}</strong> <strong>{{ textStoreCard }}</strong>
</label> </label>
</div> </div>
@ -200,7 +200,7 @@
<div class="grid sm:grid-cols-8 gap-x-4 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-8 gap-x-4 gap-y-6 my-3.5">
<div class="sm:col-span-8"> <div class="sm:col-span-8">
<label for="cardName" class="form-control-label text-black text-sm font-medium"> <label for="cardName" class="text-black text-sm font-medium">
{{ textCardName }} {{ textCardName }}
</label> </label>
@ -220,7 +220,7 @@
</div> </div>
<div class="sm:col-span-8"> <div class="sm:col-span-8">
<label for="cardNumber" class="form-control-label text-black text-sm font-medium"> <label for="cardNumber" class="text-black text-sm font-medium">
{{ textCardNumber }} {{ textCardNumber }}
</label> </label>
@ -242,7 +242,7 @@
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<label for="cardMonth" class="form-control-label text-black text-sm font-medium"> <label for="cardMonth" class="text-black text-sm font-medium">
{{ textExpirationDate }} {{ textExpirationDate }}
</label> </label>
@ -283,7 +283,7 @@
</div> </div>
<div class="sm:col-span-2"> <div class="sm:col-span-2">
<label for="cardCvv" class="form-control-label text-black text-sm font-medium"> <label for="cardCvv" class="text-black text-sm font-medium">
{{ textCvv }} {{ textCvv }}
</label> </label>
@ -307,7 +307,7 @@
<div class="flex items-center" v-if="storeCard"> <div class="flex items-center" v-if="storeCard">
<input @input="changeStoreCard" :id="'store_card' + _uid" name="store_card" type="checkbox" value="true" class="rounded-sm text-purple border-gray-300 cursor-pointer disabled:bg-gray-200 focus:outline-none focus:ring-transparent"> <input @input="changeStoreCard" :id="'store_card' + _uid" name="store_card" type="checkbox" value="true" class="rounded-sm text-purple border-gray-300 cursor-pointer disabled:bg-gray-200 focus:outline-none focus:ring-transparent">
<label :for="'store_card' + _uid" class="form-control-label ltr:ml-2 rtl:ml-2"> <label :for="'store_card' + _uid" class="text-black text-sm font-medium ltr:ml-2 rtl:ml-2">
<strong>{{ textStoreCard }}</strong> <strong>{{ textStoreCard }}</strong>
</label> </label>
</div> </div>

View File

@ -6,6 +6,7 @@
<slot name="label"> <slot name="label">
<label v-if="label" :class="labelClasses"> <label v-if="label" :class="labelClasses">
{{label}} {{label}}
<span v-if="!notRequired" class="text-red ltr:ml-1 rtl:mr-1">*</span>
</label> </label>
</slot> </slot>
<div class="relative" :class="[ <div class="relative" :class="[
@ -31,7 +32,7 @@
v-bind="$attrs" v-bind="$attrs"
:valid="!error" :valid="!error"
:required="required" :required="required"
class="form-element" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
:class="[{'is-valid': valid === true}, {'is-invalid': error}, inputClasses]"> :class="[{'is-valid': valid === true}, {'is-invalid': error}, inputClasses]">
</slot> </slot>
<div v-if="appendIcon || $slots.append" class="input-group-append absolute ltr:right-2 rtl:left-2 bottom-2 text-light-gray"> <div v-if="appendIcon || $slots.append" class="input-group-append absolute ltr:right-2 rtl:left-2 bottom-2 text-light-gray">
@ -106,7 +107,7 @@
labelClasses: { labelClasses: {
type: String, type: String,
description: "Input label css classes", description: "Input label css classes",
default: "form-control-label" default: "text-black text-sm font-medium"
}, },
inputClasses: { inputClasses: {
type: String, type: String,
@ -132,6 +133,10 @@
prependIcon: { prependIcon: {
type: String, type: String,
description: "Prepend icon (left)" description: "Prepend icon (left)"
},
notRequired: {
type: Boolean,
default: false
} }
}, },
data() { data() {

View File

@ -2,39 +2,68 @@
<div> <div>
<InstallSteps :active_state="active"></InstallSteps> <InstallSteps :active_state="active"></InstallSteps>
<div> <div class="card-body">
<div class="w-full bg-red-100 text-red-600 p-3 rounded-sm font-semibold text-xs" :class="(form.response.error) ? 'block' : 'hidden'" v-if="form.response.error" v-html="form.response.message"></div> <div class="w-full bg-red-100 text-red-600 p-3 rounded-sm font-semibold text-xs" :class="(form.response.error) ? 'block' : 'hidden'" v-if="form.response.error" v-html="form.response.message"></div>
<form> <form>
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5 mt-0">
<div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('hostname')}]"> <div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('hostname')}]">
<label for="hostname" class="form-control-label">Hostname</label> <label for="hostname" class="text-black text-sm font-medium">Hostname</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="hostname" data-value="localhost" @keydown="form.errors.clear('hostname')" v-model="form.hostname" required="required" name="hostname" type="text" value="localhost" id="hostname" /> <div class="input-group input-group-merge">
<input
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
:class="[{'border-red': form.errors.get('hostname')}, {'border-light-gray': !form.errors.get('hostname')}]"
data-name="hostname"
data-value="localhost"
@keydown="form.errors.clear('hostname')"
v-model="form.hostname"
required="required"
name="hostname"
type="text"
value="localhost"
id="hostname"
/>
</div>
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('hostname')" v-html="form.errors.get('hostname')"></div> <div class="text-red text-sm mt-1 block" v-if="form.errors.has('hostname')" v-html="form.errors.get('hostname')"></div>
</div> </div>
<div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('username')}]"> <div class="sm:col-span-6 required">
<label for="username" class="form-control-label">Username</label> <label for="username" class="text-black text-sm font-medium">Username</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="username" @keydown="form.errors.clear('username')" v-model="form.username" required="required" name="username" type="text" id="username" /> <div class="input-group input-group-merge">
<input
:class="[{'border-red': form.errors.get('username')}, {'border-light-gray': !form.errors.get('username')}]"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="username" @keydown="form.errors.clear('username')" v-model="form.username" required="required" name="username" type="text" id="username" />
</div>
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('username')" v-html="form.errors.get('username')"></div> <div class="text-red text-sm mt-1 block" v-if="form.errors.has('username')" v-html="form.errors.get('username')"></div>
</div> </div>
<div class="sm:col-span-6" :class="[{'has-error': form.errors.get('password')}]"> <div class="sm:col-span-6">
<label for="password" class="form-control-label">Password</label> <label for="password" class="text-black text-sm font-medium">Password</label>
<input class="form-element" data-name="password" v-model="form.password" name="password" type="password" value="" id="password" /> <div class="input-group input-group-merge">
<input
:class="[{'border-red': form.errors.get('password')}, {'border-light-gray': !form.errors.get('password')}]"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="password" v-model="form.password" name="password" type="password" value="" id="password" />
</div>
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('password')" v-html="form.errors.get('password')"></div> <div class="text-red text-sm mt-1 block" v-if="form.errors.has('password')" v-html="form.errors.get('password')"></div>
</div> </div>
<div class="sm:col-span-6 mb--2 required" :class="[{'has-error': form.errors.get('database')}]"> <div class="sm:col-span-6 required">
<label for="database" class="form-control-label">Database</label> <label for="database" class="text-black text-sm font-medium">Database</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="database" @keydown="form.errors.clear('database')" v-model="form.database" required="required" name="database" type="text" id="database" /> <div class="input-group input-group-merge">
<input
:class="[{'border-red': form.errors.get('database')}, {'border-light-gray': !form.errors.get('database')}]"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="database" @keydown="form.errors.clear('database')" v-model="form.database" required="required" name="database" type="text" id="database" />
</div>
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('database')" v-html="form.errors.get('database')"></div> <div class="text-red text-sm mt-1 block" v-if="form.errors.has('database')" v-html="form.errors.get('database')"></div>
</div> </div>

View File

@ -4,7 +4,7 @@
<div class="mb-0"> <div class="mb-0">
<form> <form>
<select v-model="form.lang" name="lang" id="lang" size="13" class="w-full form-control-label"> <select v-model="form.lang" name="lang" id="lang" size="13" class="w-full text-black text-sm font-medium">
<option v-for="(name, code) in languages" :value="code"> <option v-for="(name, code) in languages" :value="code">
{{ name }} {{ name }}
</option> </option>

View File

@ -4,36 +4,39 @@
<form> <form>
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5 mt-0"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5 mt-0">
<div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('company_name')}]"> <div class="sm:col-span-6 required">
<label for="company_name" class="form-control-label">Company Name</label> <label for="company_name" class="text-black text-sm font-medium">Company Name</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="company_name" @keydown="form.errors.clear('company_name')" v-model="form.company_name" required="required" name="company_name" type="text" id="company_name" /> <div class="input-group input-group-merge">
<input :class="[{'border-red': form.errors.get('company_name')}, {'border-light-gray': !form.errors.get('company_name')}]" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="company_name" @keydown="form.errors.clear('company_name')" v-model="form.company_name" required="required" name="company_name" type="text" id="company_name" />
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('company_name')" v-html="form.errors.get('company_name')"></div> </div>
</div> </div>
<div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('company_email')}]"> <div class="sm:col-span-6 required">
<label for="company_email" class="form-control-label">Company Email</label> <label for="company_email" class="text-black text-sm font-medium">Company Email</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="company_email" @keydown="form.errors.clear('company_email')" v-model="form.company_email" required="required" name="company_email" type="text" id="company_email" /> <div class="input-group input-group-merge">
<input :class="[{'border-red': form.errors.get('company_email')}, {'border-light-gray': !form.errors.get('company_email')}]" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="company_email" @keydown="form.errors.clear('company_email')" v-model="form.company_email" required="required" name="company_email" type="text" id="company_email" />
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('company_email')" v-html="form.errors.get('company_email')"></div> </div>
</div> </div>
<div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('user_email')}]"> <div class="sm:col-span-6 required">
<label for="user_email" class="form-control-label">Admin Email</label> <label for="user_email" class="text-black text-sm font-medium">Admin Email</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="user_email" @keydown="form.errors.clear('user_email')" v-model="form.user_email" required="required" name="user_email" type="text" id="user_email" /> <div class="input-group input-group-merge">
<input :class="[{'border-red': form.errors.get('user_email')}, {'border-light-gray': !form.errors.get('user_email')}]" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="user_email" @keydown="form.errors.clear('user_email')" v-model="form.user_email" required="required" name="user_email" type="text" id="user_email" />
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('user_email')" v-html="form.errors.get('user_email')"></div> </div>
</div> </div>
<div class="sm:col-span-6 required" :class="[{'has-error': form.errors.get('user_password')}]"> <div class="sm:col-span-6 required">
<label for="user_password" class="form-control-label">Admin Password</label> <label for="user_password" class="text-black text-sm font-medium">Admin Password</label>
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
<input class="form-element" data-name="user_password" @keydown="form.errors.clear('user_password')" v-model="form.user_password" required="required" name="user_password" type="password" value="" id="user_password" /> <div class="input-group input-group-merge">
<input :class="[{'border-red': form.errors.get('user_password')}, {'border-light-gray': !form.errors.get('user_password')}]" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg borde text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" data-name="user_password" @keydown="form.errors.clear('user_password')" v-model="form.user_password" required="required" name="user_password" type="password" value="" id="user_password" />
<div class="text-red text-sm mt-1 block" v-if="form.errors.has('user_password')" v-html="form.errors.get('user_password')"></div>
</div> </div>
</div> </div>
@ -45,6 +48,7 @@
</span> </span>
</button> </button>
</div> </div>
</div>
</form> </form>
</div> </div>
</template> </template>

View File

@ -12,7 +12,7 @@
<div class="flex flex-col justify-between"> <div class="flex flex-col justify-between">
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5 menu-scroll gap-10"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 my-3.5 menu-scroll gap-10">
<div class="sm:col-span-6"> <div class="sm:col-span-6">
<base-input :label="translations.company.api_key" name="api_key" data-name="api_key" :placeholder="translations.company.api_key" v-model="company.api_key"/> <base-input not-required :label="translations.company.api_key" name="api_key" data-name="api_key" :placeholder="translations.company.api_key" v-model="company.api_key"/>
<div class="mt-2"> <div class="mt-2">
<small> <small>
@ -23,11 +23,11 @@
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input type="text" :label="translations.company.tax_number" name="tax_number" data-name="tax_number" :placeholder="translations.company.tax_number" v-model="company.tax_number"/> <base-input not-required type="text" :label="translations.company.tax_number" name="tax_number" data-name="tax_number" :placeholder="translations.company.tax_number" v-model="company.tax_number"/>
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<akaunting-date :title="translations.company.financial_start" data-name="financial_start" :placeholder="translations.company.financial_start" icon="calendar_today" <akaunting-date not-required :title="translations.company.financial_start" data-name="financial_start" :placeholder="translations.company.financial_start" icon="calendar_today"
:date-config="{ :date-config="{
dateFormat: 'd-m', dateFormat: 'd-m',
allowInput: false, allowInput: false,
@ -40,13 +40,13 @@
<div class="sm:col-span-3 grid gap-10"> <div class="sm:col-span-3 grid gap-10">
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input :label="translations.company.address"> <base-input not-required :label="translations.company.address">
<textarea class="form-element" name="address" data-name="address" rows="3" :placeholder="translations.company.address" v-model="company.address"></textarea> <textarea class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" name="address" data-name="address" rows="3" :placeholder="translations.company.address" v-model="company.address"></textarea>
</base-input> </base-input>
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<base-input :label="translations.company.country"> <base-input not-required :label="translations.company.country">
<el-select v-model="company.country" filterable> <el-select v-model="company.country" filterable>
<el-option <el-option
v-for="(country, index) in sortedCountries" v-for="(country, index) in sortedCountries"
@ -63,7 +63,7 @@
</div> </div>
<div class="sm:col-span-3"> <div class="sm:col-span-3">
<label class="form-control-label">{{ translations.company.logo }}</label> <label class="text-black text-sm font-medium">{{ translations.company.logo }}</label>
<akaunting-dropzone-file-upload ref="dropzoneWizard" class="form-file dropzone-column w-2/5" style="height:12.2rem" preview-classes="single" :attachments="logo" :v-model="logo"> <akaunting-dropzone-file-upload ref="dropzoneWizard" class="form-file dropzone-column w-2/5" style="height:12.2rem" preview-classes="single" :attachments="logo" :v-model="logo">
</akaunting-dropzone-file-upload> </akaunting-dropzone-file-upload>
</div> </div>

View File

@ -62,12 +62,11 @@
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 py-3"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 py-3">
<base-input name="name" data-name="name" <base-input name="name" data-name="name"
form-classes="sm:col-span-2" form-classes="sm:col-span-2"
class="required"
v-model="model.name" v-model="model.name"
:error="onFailErrorGet('name')" :error="onFailErrorGet('name')"
/> />
<base-input class="sm:col-span-2 required" :error="onFailErrorGet('code')"> <base-input class="sm:col-span-2" :error="onFailErrorGet('code')">
<el-select name="code" v-model="model.select" @change="onChangeCodeItem(model.select)" filterable> <el-select name="code" v-model="model.select" @change="onChangeCodeItem(model.select)" filterable>
<el-option <el-option
v-for="option in currency_codes" v-for="option in currency_codes"
@ -81,7 +80,6 @@
<base-input name="rate" data-name="rate" :placeholder="translations.currencies.rate" <base-input name="rate" data-name="rate" :placeholder="translations.currencies.rate"
form-classes="sm:col-span-2" form-classes="sm:col-span-2"
class="required"
v-model="model.rate" v-model="model.rate"
:error="onFailErrorGet('rate')" :error="onFailErrorGet('rate')"
/> />
@ -132,13 +130,13 @@
<div v-if="new_datas" class="grid sm:grid-cols-7 gap-x-8 gap-y-6 my-3.5 w-full"> <div v-if="new_datas" class="grid sm:grid-cols-7 gap-x-8 gap-y-6 my-3.5 w-full">
<base-input :label="translations.currencies.name" name="name" data-name="name" :placeholder="translations.currencies.name" <base-input :label="translations.currencies.name" name="name" data-name="name" :placeholder="translations.currencies.name"
class="sm:col-span-3 required" class="sm:col-span-3"
v-model="model.name" v-model="model.name"
:error="onFailErrorGet('name')" :error="onFailErrorGet('name')"
/> />
<base-input :label="translations.currencies.code" class="sm:col-span-2 required" :error="onFailErrorGet('code')"> <base-input :label="translations.currencies.code" class="sm:col-span-2" :error="onFailErrorGet('code')">
<el-select name="code" v-model="model.select" required="required" @change="onChangeCodeItem(model.select)"filterable> <el-select name="code" v-model="model.select" @change="onChangeCodeItem(model.select)"filterable>
<el-option <el-option
v-for="option in currency_codes" v-for="option in currency_codes"
:key="option" :key="option"
@ -150,7 +148,7 @@
</base-input> </base-input>
<base-input :label="translations.currencies.rate" name="rate" data-name="rate" :placeholder="translations.currencies.rate" <base-input :label="translations.currencies.rate" name="rate" data-name="rate" :placeholder="translations.currencies.rate"
class="sm:col-span-2 required" class="sm:col-span-2"
v-model="model.rate" v-model="model.rate"
:error="onFailErrorGet('rate')" :error="onFailErrorGet('rate')"
/> />

View File

@ -54,7 +54,6 @@
<div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 py-3"> <div class="grid sm:grid-cols-6 gap-x-8 gap-y-6 py-3">
<base-input name="name" data-name="name" :placeholder="translations.taxes.name" <base-input name="name" data-name="name" :placeholder="translations.taxes.name"
form-classes="sm:col-span-2" form-classes="sm:col-span-2"
class="required"
v-model="model.name" v-model="model.name"
:error="onFailErrorGet('name')" :error="onFailErrorGet('name')"
/> />
@ -63,7 +62,6 @@
<base-input name="rate" data-name="rate" :placeholder="translations.taxes.rate" <base-input name="rate" data-name="rate" :placeholder="translations.taxes.rate"
form-classes="sm:col-span-2" form-classes="sm:col-span-2"
class="required"
v-model="model.rate" v-model="model.rate"
:error="onFailErrorGet('rate')" :error="onFailErrorGet('rate')"
/> />
@ -115,14 +113,14 @@
<div v-if="new_datas" class="grid sm:grid-cols-4 gap-x-8 gap-y-6 my-3.5 w-full"> <div v-if="new_datas" class="grid sm:grid-cols-4 gap-x-8 gap-y-6 my-3.5 w-full">
<base-input :label="translations.taxes.name" name="name" data-name="name" :placeholder="translations.taxes.name" <base-input :label="translations.taxes.name" name="name" data-name="name" :placeholder="translations.taxes.name"
class="sm:col-span-2 required" class="sm:col-span-2"
v-model="model.name" v-model="model.name"
:error="onFailErrorGet('name')" :error="onFailErrorGet('name')"
/> />
<base-input :label="translations.taxes.rate" name="rate" data-name="rate" <base-input :label="translations.taxes.rate" name="rate" data-name="rate"
:placeholder="translations.taxes.rate" :placeholder="translations.taxes.rate"
class="sm:col-span-2 required" class="sm:col-span-2"
v-model="model.rate" v-model="model.rate"
:error="onFailErrorGet('rate')" :error="onFailErrorGet('rate')"
/> />

View File

@ -8,7 +8,11 @@
@layer base { @layer base {
/* form */ /* form */
.form-element { .has-error input, .has-error select, .has-error textarea {
border: 1px solid #cc0000 !important;
}
.input-money {
@apply w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple; @apply w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple;
} }
@ -17,23 +21,6 @@
border: none; border: none;
} }
.has-error .form-element {
@apply border-red;
}
.prepend-input-icon .form-element {
@apply px-10;
}
.form-control-label {
@apply text-black text-sm font-medium;
}
div.required > .form-control-label::after {
content: '*';
@apply text-red ml-1;
}
[type="radio"] { [type="radio"] {
@apply text-purple focus:outline-none focus:ring-purple focus:border-purple; @apply text-purple focus:outline-none focus:ring-purple focus:border-purple;
} }
@ -248,7 +235,7 @@
} }
.el-select .el-input .el-input__inner { .el-select .el-input .el-input__inner {
@apply form-element h-auto; @apply w-full h-auto text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple;
color:#595959 !important; color:#595959 !important;
} }
@ -368,7 +355,7 @@
} }
.el-date-editor input { .el-date-editor input {
@apply form-element; @apply w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple;
color: #595959 !important; color: #595959 !important;
} }

View File

@ -20,13 +20,13 @@
<x-slot name="body"> <x-slot name="body">
<div class="relative sm:col-span-3"> <div class="relative sm:col-span-3">
<label class="form-control-label"> <x-form.label>
{{ trans('general.date') }} {{ trans('general.date') }}
</label> </x-form.label>
<x-tooltip id="tooltip-paid" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_date', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}"> <x-tooltip id="tooltip-paid" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_date', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}">
<div class="relative focused has-label"> <div class="relative focused has-label">
<x-form.input.text name="disabled_transaction_paid" value="{{ trans('documents.recurring.auto_generated') }}" class="form-element" disabled /> <x-form.input.text name="disabled_transaction_paid" value="{{ trans('documents.recurring.auto_generated') }}" disabled />
</div> </div>
</x-tooltip> </x-tooltip>
@ -75,13 +75,13 @@
<x-slot name="body"> <x-slot name="body">
<div class="relative sm:col-span-3"> <div class="relative sm:col-span-3">
<label class="form-control-label"> <x-form.label>
{{ trans_choice('general.numbers', 1) }} {{ trans_choice('general.numbers', 1) }}
</label> </x-form.label>
<x-tooltip id="tooltip-number" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_number', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}"> <x-tooltip id="tooltip-number" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_number', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}">
<div class="relative focused has-label"> <div class="relative focused has-label">
<x-form.input.text name="disabled_transaction_number" value="{{ trans('documents.recurring.auto_generated') }}" class="form-element" disabled /> <x-form.input.text name="disabled_transaction_number" value="{{ trans('documents.recurring.auto_generated') }}" disabled />
</div> </div>
</x-tooltip> </x-tooltip>

View File

@ -13,13 +13,13 @@
<x-slot name="body"> <x-slot name="body">
<div class="relative sm:col-span-3"> <div class="relative sm:col-span-3">
<label class="form-control-label"> <x-form.label>
{{ trans('general.date') }} {{ trans('general.date') }}
</label> </x-form.label>
<x-tooltip id="tooltip-paid" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_date', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}"> <x-tooltip id="tooltip-paid" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_date', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}">
<div class="relative focused has-label"> <div class="relative focused has-label">
<x-form.input.text name="disabled_transaction_paid" value="{{ trans('documents.recurring.auto_generated') }}" class="form-element" disabled /> <x-form.input.text name="disabled_transaction_paid" value="{{ trans('documents.recurring.auto_generated') }}" disabled />
</div> </div>
</x-tooltip> </x-tooltip>
@ -76,13 +76,13 @@
<x-slot name="body"> <x-slot name="body">
<div class="relative sm:col-span-3"> <div class="relative sm:col-span-3">
<label class="form-control-label"> <x-form.label>
{{ trans_choice('general.numbers', 1) }} {{ trans_choice('general.numbers', 1) }}
</label> </x-form.label>
<x-tooltip id="tooltip-number" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_number', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}"> <x-tooltip id="tooltip-number" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_number', ['type' => Str::lower(trans_choice('general.transactions', 1))]) }}">
<div class="relative focused has-label"> <div class="relative focused has-label">
<x-form.input.text name="disabled_transaction_number" value="{{ trans('documents.recurring.auto_generated') }}" class="form-element" disabled /> <x-form.input.text name="disabled_transaction_number" value="{{ trans('documents.recurring.auto_generated') }}" disabled />
</div> </div>
</x-tooltip> </x-tooltip>

View File

@ -11,7 +11,7 @@
@if (! $hideFooter) @if (! $hideFooter)
<div class="{{ $classFooter }}"> <div class="{{ $classFooter }}">
<x-form.group.textarea name="footer" label="{{ trans('general.footer') }}" :value="$footer" not-required rows="7" /> <x-form.group.textarea name="footer" label="{{ trans('general.footer') }}" class="h-full" :value="$footer" not-required rows="7" />
</div> </div>
@endif @endif

View File

@ -38,7 +38,7 @@
<input <input
type="text" type="text"
:ref="'items-' + index + '-name'" :ref="'items-' + index + '-name'"
class="form-element mt-0" class="w-full text-sm px-3 py-2.5 mt-0 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple mt-0"
:name="'items.' + index + '.name'" :name="'items.' + index + '.name'"
autocomplete="off" autocomplete="off"
required="required" required="required"
@ -65,7 +65,7 @@
<td class="px-3 py-3 border-b-0 description"> <td class="px-3 py-3 border-b-0 description">
@if (! $hideItemDescription) @if (! $hideItemDescription)
<textarea <textarea
class="form-element mt-1.5" class="w-full text-sm px-3 py-2.5 mt-1.5 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
style="height:42px;" style="height:42px;"
:ref="'items-' + index + '-description'" :ref="'items-' + index + '-description'"
placeholder="{{ trans('items.enter_item_description') }}" placeholder="{{ trans('items.enter_item_description') }}"
@ -94,7 +94,7 @@
type="number" type="number"
min="0" min="0"
:ref="'items-' + index + '-quantity'" :ref="'items-' + index + '-quantity'"
class="form-element mt-0 text-right input-number-disabled" class="w-full text-sm px-3 py-2.5 mt-0 text-right rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple input-number-disabled"
:name="'items.' + index + '.quantity'" :name="'items.' + index + '.quantity'"
autocomplete="off" autocomplete="off"
required="required" required="required"
@ -233,7 +233,7 @@
<input type="number" <input type="number"
min="0" min="0"
placeholder="Discount" placeholder="Discount"
class="form-element text-center mt-0" class="w-full text-sm px-3 py-2.5 mt-0 text-center rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
:name="'items.' + index + '.discount'" :name="'items.' + index + '.discount'"
autocomplete="off" autocomplete="off"
required="required" required="required"

View File

@ -1,8 +1,8 @@
<div class="grid sm:grid-cols-7 sm:col-span-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-7 sm:col-span-6 gap-x-8 gap-y-6 my-3.5">
<div class="sm:col-span-2 required"> <div class="sm:col-span-2">
<label for="contact" class="form-control-label"> <x-form.label for="contact" required>
{{ trans_choice($textContact, 1) }} {{ trans_choice($textContact, 1) }}
</label> </x-form.label>
<x-documents.form.contact <x-documents.form.contact
type="{{ $typeContact }}" type="{{ $typeContact }}"

View File

@ -4,7 +4,7 @@
label="{{ trans_choice('general.notes', 2) }}" label="{{ trans_choice('general.notes', 2) }}"
:value="$notes" :value="$notes"
not-required not-required
class="form-element border-0 bg-transparent px-0 rounded-none resize-none" override="w-full text-sm px-0 py-2.5 mt-1 border-light-gray text-black placeholder-light-gray disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple border-0 bg-transparent rounded-none resize-none"
form-label-class="lg:text-lg" form-label-class="lg:text-lg"
form-group-class="border-b pb-2 mb-3.5" form-group-class="border-b pb-2 mb-3.5"
rows="1" rows="1"

View File

@ -1,8 +1,8 @@
<div class="grid sm:grid-cols-7 sm:col-span-6 gap-x-8 gap-y-6 my-3.5"> <div class="grid sm:grid-cols-7 sm:col-span-6 gap-x-8 gap-y-6 my-3.5">
<div class="sm:col-span-2 required"> <div class="sm:col-span-2">
<label for="contact" class="form-control-label"> <x-form.label for="contact" required>
{{ trans_choice($textContact, 1) }} {{ trans_choice($textContact, 1) }}
</label> </x-form.label>
<x-documents.form.contact <x-documents.form.contact
type="{{ $typeContact }}" type="{{ $typeContact }}"
@ -26,13 +26,13 @@
@if (! $hideIssuedAt) @if (! $hideIssuedAt)
<div class="relative sm:col-span-3"> <div class="relative sm:col-span-3">
<label class="form-control-label"> <x-form.label>
{{ trans($textIssuedAt) }} {{ trans($textIssuedAt) }}
</label> </x-form.label>
<x-tooltip id="tooltip-issued" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_date', ['type' => config('type.document.' . $type . '.setting.prefix', 'invoice')]) }}"> <x-tooltip id="tooltip-issued" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_date', ['type' => config('type.document.' . $type . '.setting.prefix', 'invoice')]) }}">
<div class="relative focused has-label"> <div class="relative focused has-label">
<x-form.input.text name="disabled_document_date" value="{{ trans('documents.recurring.auto_generated') }}" class="form-element" disabled /> <x-form.input.text name="disabled_document_date" value="{{ trans('documents.recurring.auto_generated') }}" disabled />
</div> </div>
</x-tooltip> </x-tooltip>
@ -62,13 +62,13 @@
@if (! $hideDocumentNumber) @if (! $hideDocumentNumber)
<div class="relative sm:col-span-3"> <div class="relative sm:col-span-3">
<label class="form-control-label"> <x-form.label>
{{ trans($textDocumentNumber) }} {{ trans($textDocumentNumber) }}
</label> </x-form.label>
<x-tooltip id="tooltip-number" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_number', ['type' => config('type.document.' . $type . '.setting.prefix', 'invoice')]) }}"> <x-tooltip id="tooltip-number" placement="bottom" message="{{ trans('documents.recurring.tooltip.document_number', ['type' => config('type.document.' . $type . '.setting.prefix', 'invoice')]) }}">
<div class="relative focused has-label"> <div class="relative focused has-label">
<x-form.input.text name="disabled_document_number" value="{{ trans('documents.recurring.auto_generated') }}" class="form-element" disabled /> <x-form.input.text name="disabled_document_number" value="{{ trans('documents.recurring.auto_generated') }}" disabled />
</div> </div>
</x-tooltip> </x-tooltip>

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([

View File

@ -46,6 +46,10 @@
small="{{ $attributes['small'] }}" small="{{ $attributes['small'] }}"
@endif @endif
@if (!$required)
:not-required={{ $required ? 'false' : 'true' }}
@endif
@if (! empty($attributes['v-model'])) @if (! empty($attributes['v-model']))
@interface="form.errors.clear('{{ $attributes['v-model'] }}'); {{ $attributes['v-model'] . ' = $event' }}" @interface="form.errors.clear('{{ $attributes['v-model'] }}'); {{ $attributes['v-model'] . ' = $event' }}"
@elseif (! empty($attributes['data-field'])) @elseif (! empty($attributes['data-field']))

View File

@ -15,6 +15,8 @@
@if ($required) @if ($required)
:required="{{ $required ? 'true' : 'false' }}" :required="{{ $required ? 'true' : 'false' }}"
@else
:not-required={{ $required ? 'false' : 'true' }}
@endif @endif
@if ($readonly) @if ($readonly)

View File

@ -21,6 +21,10 @@
:disabled="{{ $disabled }}" :disabled="{{ $disabled }}"
@endif @endif
@if (!$required)
:not-required={{ $required ? 'false' : 'true' }}
@endif
@if (!empty($attributes['v-error'])) @if (!empty($attributes['v-error']))
:form-classes="[{'has-error': {{ $attributes['v-error'] }} }]" :form-classes="[{'has-error': {{ $attributes['v-error'] }} }]"
@else @else

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<x-form.input.editor <x-form.input.editor

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([
@ -42,7 +42,6 @@
<x-form.input.email <x-form.input.email
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="form-element"
value="{{ $value }}" value="{{ $value }}"
placeholder="{{ $placeholder }}" placeholder="{{ $placeholder }}"
v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.' . $name : 'form.' . $name) }}" v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.' . $name : 'form.' . $name) }}"

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([

View File

@ -141,6 +141,10 @@
:disabled="{{ $attributes['v-disabled'] }}" :disabled="{{ $attributes['v-disabled'] }}"
@endif @endif
@if (!$required)
:not-required={{ $required ? 'false' : 'true' }}
@endif
@if (isset($attributes['v-error-message'])) @if (isset($attributes['v-error-message']))
:form-error="{{ $attributes['v-error-message'] }}" :form-error="{{ $attributes['v-error-message'] }}"
@else @else

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([
@ -42,7 +42,6 @@
<x-form.input.number <x-form.input.number
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="form-element"
value="{{ $value }}" value="{{ $value }}"
placeholder="{{ $placeholder }}" placeholder="{{ $placeholder }}"
v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.' . $name : 'form.' . $name) }}" v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.' . $name : 'form.' . $name) }}"

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([
@ -42,7 +42,6 @@
<x-form.input.password <x-form.input.password
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="form-element"
value="{{ $value }}" value="{{ $value }}"
placeholder="{{ $placeholder }}" placeholder="{{ $placeholder }}"
v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.' . $name : 'form.' . $name) }}" v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : (!empty($attributes['data-field']) ? 'form.' . $attributes['data-field'] . '.' . $name : 'form.' . $name) }}"

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([

View File

@ -125,6 +125,10 @@
:no-arrow="{{ $attributes['no-arrow'] }}" :no-arrow="{{ $attributes['no-arrow'] }}"
@endif @endif
@if (!$required)
:not-required={{ $required ? 'false' : 'true' }}
@endif
@if (isset($attributes['v-disabled'])) @if (isset($attributes['v-disabled']))
:disabled="{{ $attributes['v-disabled'] }}" :disabled="{{ $attributes['v-disabled'] }}"
@endif @endif

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
<div @class([ <div @class([
@ -42,7 +42,6 @@
<x-form.input.text <x-form.input.text
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="form-element"
value="{{ $value }}" value="{{ $value }}"
placeholder="{!! $placeholder !!}" placeholder="{!! $placeholder !!}"
disabled="{{ $disabled }}" disabled="{{ $disabled }}"

View File

@ -26,7 +26,7 @@
@if (! $attributes->has('label') && ! empty($label->contents)) @if (! $attributes->has('label') && ! empty($label->contents))
{!! $label ?? '' !!} {!! $label ?? '' !!}
@elseif (! empty($label)) @elseif (! empty($label))
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
@endif @endif
@php @php
@ -45,7 +45,6 @@
<x-form.input.textarea <x-form.input.textarea
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="form-element"
value="{!! $value !!}" value="{!! $value !!}"
placeholder="{{ $placeholder }}" placeholder="{{ $placeholder }}"
rows="{{ $rows }}" rows="{{ $rows }}"

View File

@ -15,6 +15,8 @@
@if ($required) @if ($required)
:required="{{ $required ? 'true' : 'false' }}" :required="{{ $required ? 'true' : 'false' }}"
@else
:not-required={{ $required ? 'false' : 'true' }}
@endif @endif
@if ($readonly) @if ($readonly)

View File

@ -7,7 +7,7 @@
v-if="{{ $attributes['show'] }}" v-if="{{ $attributes['show'] }}"
@endif @endif
> >
<x-form.label for="{{ $name }}" class="form-control-label">{!! $label !!}</x-form.label> <x-form.label for="{{ $name }}" {{ $attributes->merge($custom_attributes) }}>{!! $label !!}</x-form.label>
<div class="flex items-center mt-1"> <div class="flex items-center mt-1">
@if (empty($attributes['disabled'])) @if (empty($attributes['disabled']))

View File

@ -20,6 +20,6 @@
{{ $attributes->except(['placeholder', 'disabled', 'required', 'readonly', 'v-error', 'v-error-message', 'option', 'optionKey', 'optionValue']) }} {{ $attributes->except(['placeholder', 'disabled', 'required', 'readonly', 'v-error', 'v-error-message', 'option', 'optionKey', 'optionValue']) }}
/> />
<label class="form-control-label ml-2" for="{{ ! empty($attributes[':id']) ? $attributes[':id'] : $id }}"> <label class="ml-2" for="{{ ! empty($attributes[':id']) ? $attributes[':id'] : $id }}">
{{ !empty($option) ? $option->$optionValue : $label }} {{ !empty($option) ? $option->$optionValue : $label }}
</label> </label>

View File

@ -1,6 +1,7 @@
<input type="email" <input type="email"
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
@if ($value) @if ($value)
value="{!! $value !!}" value="{!! $value !!}"
@endif @endif

View File

@ -1,6 +1,7 @@
<input type="number" <input type="number"
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
@if ($value) @if ($value)
value="{{ $value }}" value="{{ $value }}"
@endif @endif

View File

@ -1,6 +1,7 @@
<input type="password" <input type="password"
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
@if ($value) @if ($value)
value="{!! $value !!}" value="{!! $value !!}"
@endif @endif

View File

@ -125,6 +125,10 @@
:no-arrow="{{ $attributes['no-arrow'] }}" :no-arrow="{{ $attributes['no-arrow'] }}"
@endif @endif
@if (!$required)
:not-required={{ $required ? 'false' : 'true' }}
@endif
@if (isset($attributes['v-disabled'])) @if (isset($attributes['v-disabled']))
:disabled="{{ $attributes['v-disabled'] }}" :disabled="{{ $attributes['v-disabled'] }}"
@endif @endif

View File

@ -1,6 +1,7 @@
<input type="text" <input type="text"
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple"
value="{!! $value !!}" value="{!! $value !!}"
placeholder="{!! $placeholder !!}" placeholder="{!! $placeholder !!}"
@if ($disabled) @if ($disabled)

View File

@ -1,6 +1,16 @@
@php
$class= 'w-full h-24 text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple';
if ($attributes->has('override')) {
$class = $attributes->get('override');
} elseif ($attributes->get('class')) {
$class .= ' ' . $attributes->get('class');
}
@endphp
<textarea <textarea
name="{{ $name }}" name="{{ $name }}"
id="{{ $id }}" id="{{ $id }}"
class="{{ $class }}"
rows="{{ $rows }}" rows="{{ $rows }}"
placeholder="{{ $placeholder }}" placeholder="{{ $placeholder }}"
@if ($disabled) @if ($disabled)

View File

@ -1,3 +1,7 @@
<label {{ $attributes }}> <label class="text-black text-sm font-medium" {{ $attributes }}>
{!! $slot !!} {!! $slot !!}
@if ($attributes->has('required'))
<span class="text-red ltr:ml-1 rtl:mr-1">*</span>
@endif
</label> </label>

View File

@ -7,7 +7,7 @@
v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : 'bulk_action.select_all' }}" v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : 'bulk_action.select_all' }}"
@click="onSelectAllBulkAction" @click="onSelectAllBulkAction"
/> />
<label class="custom-control-label" for="table-check-all"></label> <label for="table-check-all"></label>
</div> </div>
@stack('bulk_action_all_input_end') @stack('bulk_action_all_input_end')

View File

@ -15,7 +15,7 @@
v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : 'bulk_action.selected' }}" v-model="{{ !empty($attributes['v-model']) ? $attributes['v-model'] : 'bulk_action.selected' }}"
@change="onSelectBulkAction" @change="onSelectBulkAction"
> >
<label class="custom-control-label" for="bulk-action-{{ $id }}"></label> <label for="bulk-action-{{ $id }}"></label>
</div> </div>
@stack($name . '_input_end') @stack($name . '_input_end')

View File

@ -5,7 +5,7 @@
<x-slot name="content"> <x-slot name="content">
<div class="mb-0"> <div class="mb-0">
<select name="lang" id="lang" size="14" class="w-full form-control-label"> <select name="lang" id="lang" size="14" class="w-full text-black text-sm font-medium">
@foreach (language()->allowed() as $code => $name) @foreach (language()->allowed() as $code => $name)
<option value="{{ $code }}" @if ($code=='en-GB' ) {{ 'selected="selected"' }} @endif>{{ $name }}</option> <option value="{{ $code }}" @if ($code=='en-GB' ) {{ 'selected="selected"' }} @endif>{{ $name }}</option>
@endforeach @endforeach

View File

@ -7,7 +7,7 @@
</span> </span>
</div> </div>
<input type="text" name="search" wire:model.debounce.500ms="keyword" class="form-element" autocomplete="off" placeholder="{{ trans('general.search') }}"> <input type="text" name="search" wire:model.debounce.500ms="keyword" class="text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" autocomplete="off" placeholder="{{ trans('general.search') }}">
@if ($results) @if ($results)
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-center show" ref="menu"> <div class="dropdown-menu dropdown-menu-xl dropdown-menu-center show" ref="menu">

View File

@ -45,7 +45,7 @@
<x-form.group.text name="subject" label="{{ trans('settings.email.templates.subject') }}" form-group-class="sm:col-span-6" /> <x-form.group.text name="subject" label="{{ trans('settings.email.templates.subject') }}" form-group-class="sm:col-span-6" />
<div class="sm:col-span-6 required" v-if='form.body != null'> <div class="sm:col-span-6 required" v-if='form.body != null'>
<x-form.label for="body" class="form-control-label"> <x-form.label for="body">
{{ trans('settings.email.templates.body') }} {{ trans('settings.email.templates.body') }}
</x-form.label> </x-form.label>

View File

@ -35,10 +35,10 @@
<x-slot name="body"> <x-slot name="body">
<div class="sm:col-span-6"> <div class="sm:col-span-6">
<label for="cron_command" class="form-control-label"> <x-form.label for="cron_command">
{{ trans('settings.scheduling.command') }} {{ trans('settings.scheduling.command') }}
</label> </x-form.label>
<input type="text" class="form-element form-element-muted" disabled value="php {{ base_path('artisan') }} schedule:run >> /dev/null 2>&1"> <input type="text" class="w-full text-sm px-3 py-2.5 mt-1 rounded-lg border border-light-gray text-black placeholder-light-gray bg-white disabled:bg-gray-200 focus:outline-none focus:ring-transparent focus:border-purple" disabled value="php {{ base_path('artisan') }} schedule:run >> /dev/null 2>&1">
</div> </div>
<x-form.group.text name="time" label="{{ trans('settings.scheduling.schedule_time') }}" value="{{ setting('schedule.time') }}" not-required /> <x-form.group.text name="time" label="{{ trans('settings.scheduling.schedule_time') }}" value="{{ setting('schedule.time') }}" not-required />