Merge pull request #4245 from devansh-webkul/default_depend

Required Field Depend On Status
This commit is contained in:
Jitendra Singh 2020-11-09 22:02:07 +05:30 committed by GitHub
commit 679594076b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 139 additions and 37 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
{
"/js/admin.js": "/js/admin.js?id=b022291aa1cad7dfcc84",
"/js/admin.js": "/js/admin.js?id=c849d3c02afc5071f801",
"/css/admin.css": "/css/admin.css?id=f2b20e4283a639808ef6"
}

View File

@ -17,6 +17,8 @@ Vue.use(VeeValidate, {
});
Vue.prototype.$http = axios
Vue.component('required-if', require('./components/validators/required-if').default);
window.eventBus = new Vue();
$(document).ready(function () {

View File

@ -0,0 +1,78 @@
<template>
<div class="control-group" :class="[errors.has(name) ? 'has-error' : '']">
<label :for="name" :class="checkValidations">
{{ label }}
<span class="locale"> [{{ channel_locale }}] </span>
</label>
<select v-if="this.options.length" v-validate="checkValidations" class="control" :id = "name" :name = "name" v-model="savedValue"
:data-vv-as="label">
<option v-for='(option, index) in this.options' :value="option.value"> {{ option.title }} </option>
</select>
<input v-else type="text" class="control" v-validate="checkValidations" :id = "name" :name = "name" v-model="savedValue"
:data-vv-as="label">
<span class="control-error" v-if="errors.has(name)">
{{ errors.first(name) }}
</span>
</div>
</template>
<script>
export default {
props: [
'name',
'label',
'options',
'result',
'validations',
'depend',
'dependResult',
'channel_locale',
],
inject: ['$validator'],
data: function() {
return {
isRequire: false,
checkValidations: [],
savedValue: this.result,
dependSavedValue: parseInt(this.dependResult)
}
},
mounted: function () {
this.isRequire = this.dependSavedValue ? true : false;
this.updateValidations();
$(document.getElementById(this.depend)).on('change', (e) => {
this.dependSavedValue = !this.dependSavedValue;
this.dependSavedValue = this.dependSavedValue ? 1 : 0;
this.isRequire = this.dependSavedValue ? true : false;
this.updateValidations();
});
},
methods: {
updateValidations: function () {
this.checkValidations = this.validations.split('|').filter(validation => !this.validations.includes('required_if'));
if (this.isRequire) {
this.checkValidations.push('required');
} else {
this.checkValidations = this.checkValidations.filter((value) => {
return value !== 'required';
});
}
this.checkValidations = this.checkValidations.join('|');
}
}
}
</script>

View File

@ -65,18 +65,33 @@
}
$selectedOption = core()->getConfigData($name) ?? '';
$dependSelectedOption = core()->getConfigData(implode('.', [$firstField, $secondField, $thirdField, $dependField])) ?? '';
?>
<depends
:options = '@json($field['options'])'
:name = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $field['name'] }}]'"
:validations = "'{{ $validations }}'"
:depend = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $dependField }}]'"
:value = "'{{ $dependValue }}'"
:field_name = "'{{ trans($field['title']) }}'"
:channel_locale = "'{{ $channel_locale }}'"
:result = "'{{ $selectedOption }}'"
></depends>
@if (strpos($field['validation'], 'required_if') !== false)
<required-if
:name = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $field['name'] }}]'"
:label = "'{{ trans($field['title']) }}'"
:options = '@json($field['options'])'
:result = "'{{ $selectedOption }}'"
:validations = "'{{ $validations }}'"
:depend = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $dependField }}]'"
:depend-result= "'{{ $dependSelectedOption }}'"
:channel_locale = "'{{ $channel_locale }}'"
></required-if>
@else
<depends
:options = '@json($field['options'])'
:name = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $field['name'] }}]'"
:validations = "'{{ $validations }}'"
:depend = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $dependField }}]'"
:value = "'{{ $dependValue }}'"
:field_name = "'{{ trans($field['title']) }}'"
:channel_locale = "'{{ $channel_locale }}'"
:result = "'{{ $selectedOption }}'"
:depend-saved-value= "'{{ $dependSelectedOption }}'"
></depends>
@endif
@else

View File

@ -17,8 +17,9 @@ return [
[
'name' => 'title',
'title' => 'admin::app.admin.system.title',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => false,
'locale_based' => true,
], [
@ -69,8 +70,9 @@ return [
[
'name' => 'title',
'title' => 'admin::app.admin.system.title',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => false,
'locale_based' => true,
], [

View File

@ -9,8 +9,9 @@ return [
[
'name' => 'title',
'title' => 'admin::app.admin.system.title',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => false,
'locale_based' => true,
], [
@ -20,11 +21,11 @@ return [
'channel_based' => false,
'locale_based' => true,
], [
'name' => 'business_account',
'title' => 'admin::app.admin.system.business-account',
'type' => 'select',
'type' => 'text',
'validation' => 'required',
'name' => 'business_account',
'title' => 'admin::app.admin.system.business-account',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
], [
'name' => 'active',
'title' => 'admin::app.admin.system.status',
@ -36,7 +37,6 @@ return [
'name' => 'sandbox',
'title' => 'admin::app.admin.system.sandbox',
'type' => 'boolean',
'validation' => 'required',
'channel_based' => false,
'locale_based' => true,
], [
@ -68,8 +68,9 @@ return [
[
'name' => 'title',
'title' => 'admin::app.admin.system.title',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => false,
'locale_based' => true,
], [
@ -82,9 +83,9 @@ return [
'name' => 'client_id',
'title' => 'admin::app.admin.system.client-id',
'info' => 'admin::app.admin.system.client-id-info',
'type' => 'select',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
], [
'name' => 'active',
'title' => 'admin::app.admin.system.status',

View File

@ -17,8 +17,9 @@ return [
[
'name' => 'title',
'title' => 'admin::app.admin.system.title',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => false,
'locale_based' => true,
], [
@ -44,8 +45,9 @@ return [
[
'name' => 'title',
'title' => 'admin::app.admin.system.title',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => true,
'locale_based' => true,
], [
@ -57,14 +59,16 @@ return [
], [
'name' => 'default_rate',
'title' => 'admin::app.admin.system.rate',
'type' => 'text',
'validation' => 'required',
'type' => 'depends',
'depend' => 'active:1',
'validation' => 'required_if:active,1',
'channel_based' => true,
'locale_based' => false,
], [
'name' => 'type',
'title' => 'admin::app.admin.system.type',
'type' => 'select',
'type' => 'depends',
'depend' => 'active:1',
'options' => [
[
'title' => 'Per Unit',
@ -74,7 +78,7 @@ return [
'value' => 'per_order',
]
],
'validation' => 'required'
'validation' => 'required_if:active,1'
], [
'name' => 'active',
'title' => 'admin::app.admin.system.status',