diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue
index e4d332289..a1496e7d6 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue
@@ -33,8 +33,8 @@ export default {
},
mounted() {
- console.log('AddAddress: data context', this.context);
- console.log('AddAddress: data options', this.options);
+ //console.log('AddAddress: data context', this.context);
+ //console.log('AddAddress: data options', this.options);
},
methods: {
displayErrors() {
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ActionButtons.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ActionButtons.vue
new file mode 100644
index 000000000..afe059da6
--- /dev/null
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ActionButtons.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue
index 2a210e992..259266c92 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue
@@ -1,18 +1,21 @@
-
-
+
+
+
-
-
+
+ @close="resetPane">
{{ $t(getTextTitle) }}
@@ -24,14 +27,14 @@
-
-
+ ref="suggestAddress">
+
@@ -39,17 +42,17 @@
class="btn btn-update">
{{ $t('action.edit')}}
-
-
-
-
+ ref="suggestAddress">
+
-
+
+ @close="resetPane">
{{ $t(getTextTitle) }}
@@ -77,7 +80,7 @@
-
-
+
@@ -101,8 +104,7 @@
-
-
-
+
+
+
+
+
+
+
+
+ {{ $t(getTextTitle) }}
+
+
+ {{ $t('loading') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -121,22 +174,28 @@
import Modal from 'ChillMainAssets/vuejs/_components/Modal';
import { getAddress, fetchCountries, fetchCities, fetchReferenceAddresses, patchAddress, postAddress, postPostalCode } from '../api';
import { postAddressToPerson, postAddressToHousehold } from "ChillPersonAssets/vuejs/_api/AddAddress.js";
-import ShowAddressPane from './ShowAddressPane.vue';
-import EditAddressPane from './EditAddressPane.vue';
+import ShowPane from './ShowPane.vue';
+import SuggestPane from './SuggestPane.vue';
+import EditPane from './EditPane.vue';
+import DatePane from './DatePane.vue';
export default {
name: "AddAddress",
props: ['context', 'options', 'addressChangedCallback'],
components: {
Modal,
- ShowAddressPane,
- EditAddressPane,
+ ShowPane,
+ SuggestPane,
+ EditPane,
+ DatePane
},
data() {
return {
flag: {
- showPane: false,
+ showPane: true, // begin with showPane
+ suggestPane: false,
editPane: false,
+ datePane: false,
loading: false,
success: false
},
@@ -147,10 +206,8 @@ export default {
displayText: true
},
title: { create: 'add_an_address_title', edit: 'edit_address' },
- bindModal: {
- step1: true,
- step2: true,
- },
+ openPanesInModal: true,
+ stickyActions: false,
useDate: {
validFrom: false,
validTo: false
@@ -192,19 +249,23 @@ export default {
}
},
computed: {
- step1WithModal() {
- return (typeof this.options.bindModal !== 'undefined' && typeof this.options.bindModal.step1 !== 'undefined') ?
- this.options.bindModal.step1 : this.default.bindModal.step1;
+ inModal() {
+ return (typeof this.options.openPanesInModal !== 'undefined') ?
+ this.options.openPanesInModal : this.default.openPanesInModal;
},
- step2WithModal() {
- let step2 = (typeof this.options.bindModal !== 'undefined' && typeof this.options.bindModal.step2 !== 'undefined') ?
- this.options.bindModal.step2 : this.default.bindModal.step2;
-
- if (step2 === false && this.step1WithModal === true) {
- console.log("step2 must open in a Modal");
- return true;
- }
- return step2;
+ useDatePane() {
+ let vFrom = (typeof this.options.useDate !== 'undefined'
+ && typeof this.options.useDate.validFrom !== 'undefined') ?
+ this.options.useDate.validFrom : this.default.useDate.validFrom ;
+ let vTo = (typeof this.options.useDate !== 'undefined'
+ && typeof this.options.useDate.validTo !== 'undefined') ?
+ this.options.useDate.validTo : this.default.useDate.validTo ;
+ return (vFrom || vTo) ? true : false;
+ },
+ hasSuggestions() {
+ // TODO
+ //return addressSuggestions.length > 0
+ return true;
},
getTextTitle() {
if ( typeof this.options.title !== 'undefined'
@@ -215,27 +276,9 @@ export default {
}
return (this.context.edit) ? this.default.title.edit : this.default.title.create;
},
- getTextButton() {
- if ( typeof this.options.button.text !== 'undefined'
- && ( this.options.button.text.edit !== null
- || this.options.button.text.create !== null
- )) {
- return (this.context.edit) ? this.options.button.text.edit : this.options.button.text.create;
- }
- return (this.context.edit) ? this.default.button.text.edit : this.default.button.text.create;
- },
- getClassButton() {
- let type = (this.context.edit) ? this.default.button.type.edit : this.default.button.type.create;
- let size = (typeof this.options.button !== 'undefined' && this.options.button.size !== null) ?
- `${this.options.button.size} ` : '';
- return `${size}${type}`;
- },
- displayTextButton() {
- return (typeof this.options.button !== 'undefined' && typeof this.options.button.displayText !== 'undefined') ?
- this.options.button.displayText : this.default.button.displayText;
- },
- context() {
- return this.context;
+ bypassFirstStep() {
+ // exception: passing step0 if new address and pane are not in modal
+ return !this.context.edit && !this.inModal && this.flag.editPane === false
}
},
mounted() {
@@ -243,13 +286,13 @@ export default {
//console.log('options displayText', this.options.button.displayText);
//console.log('options bindModal.step1', this.options.bindModal.step1);
//console.log('options bindModal.step2', this.options.bindModal.step2);
- console.log('options useDate.validFrom', this.options.useDate.validFrom);
- console.log('options useDate.validTo', this.options.useDate.validTo);
+ //console.log('options useDate.validFrom', this.options.useDate.validFrom);
+ //console.log('options useDate.validTo', this.options.useDate.validTo);
+ console.log('useDatePane', this.useDatePane);
+
+ //console.log('Mounted now !');
+ this.openShowPane();
- if (!this.step1WithModal) {
- //console.log('Mounted now !');
- this.openShowPane();
- }
},
methods: {
@@ -257,35 +300,72 @@ export default {
* Opening and closing Panes when interacting with buttons
*/
openShowPane() {
-
if (this.context.edit) {
+ console.log('getInitialAddress');
this.getInitialAddress(this.context.addressId);
}
- // when create new address, start first with editPane !!
- if ( this.context.edit === false
- && this.flag.editPane === false
- ) {
+ if (this.bypassFirstStep) {
+ this.closeShowPane();
this.openEditPane();
- this.flag.editPane = true;
} else {
this.flag.showPane = true;
- console.log('step1: open the Show Panel');
+ console.log('step0: open the Show Panel');
}
},
-
+ closeShowPane() {
+ // Show pane can be closed only when openPanesInModal is false
+ if (!this.inModal) {
+ this.flag.showPane = false;
+ console.log('step0: close the Show Panel');
+ }
+ },
+ openSuggestPane() {
+ this.flag.suggestPane = true;
+ console.log('step1: open the Suggestion Panel');
+ },
+ closeSuggestPane() {
+ this.flag.suggestPane = false;
+ console.log('step1: close the Suggestion Panel');
+ },
openEditPane() {
- console.log('step2: open the Edit panel');
+ /*
+ if (!this.context.edit && this.hasSuggestions) {
+ this.openSuggestPane();
+ } else {
+ }
+ */
this.initForm();
this.getCountries();
+ this.flag.editPane = true;
+ console.log('step2: open the Edit panel');
},
-
closeEditPane() {
- console.log('step2: close the Edit Panel');
this.applyChanges();
- this.flag.showPane = true;
this.flag.editPane = false;
+ console.log('step2: close the Edit Panel');
+ /*
+ if (!this.context.edit && this.useDatePane) {
+ this.openDatePane();
+ } else {
+ }
+ */
+ this.openShowPane()
+ },
+ openDatePane() {
+ this.flag.datePane = true;
+ console.log('step3: open the Date Panel');
+ },
+ closeDatePane() {
+ this.flag.datePane = false;
+ console.log('step3: close the Date Panel');
+ },
+ resetPane() {
+ this.flag.suggestPane = false;
+ this.flag.editPane = false;
+ this.flag.datePane = false;
+ this.flag.showPane = true;
},
/*
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/SelectHouseholdAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/SelectHouseholdAddress.vue
deleted file mode 100644
index 74ce14c3c..000000000
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/SelectHouseholdAddress.vue
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddressPane.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/DatePane.vue
similarity index 68%
rename from src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddressPane.vue
rename to src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/DatePane.vue
index 7e55f0c1b..ed461ffb5 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddressPane.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/DatePane.vue
@@ -1,6 +1,6 @@
-
+
{{ $t('loading') }}
@@ -39,36 +39,39 @@
-
+
+
+
+
+ {{ $t('action.edit')}}
+
+
+
+
+
+
+
+
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditAddressPane.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditPane.vue
similarity index 81%
rename from src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditAddressPane.vue
rename to src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditPane.vue
index 7bbad3db5..16fc335c8 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditAddressPane.vue
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditPane.vue
@@ -2,7 +2,7 @@
-
@@ -82,16 +80,18 @@ import CountrySelection from './AddAddress/CountrySelection';
import CitySelection from './AddAddress/CitySelection';
import AddressSelection from './AddAddress/AddressSelection';
import AddressMap from './AddAddress/AddressMap';
-import AddressMore from './AddAddress/AddressMore'
+import AddressMore from './AddAddress/AddressMore';
+import ActionButtons from './ActionButtons.vue';
export default {
- name: "EditAddressPane",
+ name: "EditPane",
components: {
CountrySelection,
CitySelection,
AddressSelection,
AddressMap,
- AddressMore
+ AddressMore,
+ ActionButtons
},
props: [
'context',
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowPane.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowPane.vue
new file mode 100644
index 000000000..2738f7775
--- /dev/null
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowPane.vue
@@ -0,0 +1,86 @@
+
+
+
+
+ {{ $t('loading') }}
+
+
+ {{ errorMsg }}
+
+
+ {{ $t(getSuccessText) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/SuggestPane.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/SuggestPane.vue
new file mode 100644
index 000000000..b3abe5128
--- /dev/null
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/SuggestPane.vue
@@ -0,0 +1,63 @@
+
+
+
+
+ {{ $t('loading') }}
+
+
+
+ {{ errorMsg }}
+
+
+
+ {{ $t(getSuccessText) }}
+
+
+ suggestions
+
+
+
+
+
+ {{ $t('action.edit')}}
+
+
+
+
+
+
+
+
+
diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js
index cb628586a..f54aaa407 100644
--- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js
+++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js
@@ -38,12 +38,11 @@ containers.forEach((container) => {
create: container.dataset.modalTitle || null,
edit: container.dataset.modalTitle || null
},
- /// Display each step in page or Modal
- bindModal: {
- step1: container.dataset.bindModalStep1 !== 'false', //boolean, default: true
- step2: container.dataset.bindModalStep2 !== 'false' //boolean, default: true
- },
- // Use Date fields
+ /// Display panes in Modal for step123
+ openPanesInModal: container.dataset.openPanesInModal !== 'false', //boolean, default: true
+ /// Display actions buttons of panes in a sticky-form-button navbar
+ stickyActions: container.dataset.stickyActions === 'true', //boolean, default: false
+ /// Use Date fields
useDate: {
validFrom: container.dataset.useValidFrom === 'true', //boolean, default: false
validTo: container.dataset.useValidTo === 'true' //boolean, default: false
@@ -57,5 +56,5 @@ containers.forEach((container) => {
.component('app', App)
.mount(container);
- console.log('container dataset', container.dataset);
+ //console.log('container dataset', container.dataset);
});
diff --git a/src/Bundle/ChillMainBundle/Resources/views/Address/_insert_vue_address.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Address/_insert_vue_address.html.twig
index 05f557d44..bf996f593 100644
--- a/src/Bundle/ChillMainBundle/Resources/views/Address/_insert_vue_address.html.twig
+++ b/src/Bundle/ChillMainBundle/Resources/views/Address/_insert_vue_address.html.twig
@@ -7,16 +7,17 @@
name: string
id: integer
}
- * mode string ['edit*'|'create']
+ * mode string ['edit*'|'new']
* addressId integer
* backUrl twig route: path('route', {parameters})
* modalTitle twig translated chain
* buttonText twig translated chain
* buttonSize bootstrap class like 'btn-sm'
- * buttonDisplayText bool
- * bindModalStep1 bool
- * bindModalStep2 bool
-
+ * buttonDisplayText bool (default: true)
+ * openPanesInModal bool (default: true)
+ * stickyActions bool (default: false)
+ * useValidFrom bool (default: false)
+ * useValidTo bool (default: false)
#}
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/address_move.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/address_move.html.twig
index 6d65c0a7f..2b7dfa8f0 100644
--- a/src/Bundle/ChillPersonBundle/Resources/views/Household/address_move.html.twig
+++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/address_move.html.twig
@@ -10,8 +10,7 @@
{% include '@ChillMain/Address/_insert_vue_address.html.twig' with {
targetEntity: { name: 'household', id: household.id },
backUrl: path('chill_person_household_addresses', { 'household_id': household.id }),
- bindModalStep1: false,
- bindModalStep2: false,
+ openPanesInModal: false,
} %}
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig
index 7f35b7ae9..041dfbfbe 100644
--- a/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig
+++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig
@@ -18,7 +18,7 @@
{% include '@ChillMain/Address/_insert_vue_address.html.twig' with {
targetEntity: { name: 'household', id: household.id },
backUrl: path('chill_person_household_address_move', { 'household_id': household.id }),
- mode: 'create',
+ mode: 'new',
buttonSize: 'btn-lg',
buttonText: 'Move household',
modalTitle: 'Move household',
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/summary.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/summary.html.twig
index a680f18f2..d8c53dbf5 100644
--- a/src/Bundle/ChillPersonBundle/Resources/views/Household/summary.html.twig
+++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/summary.html.twig
@@ -33,15 +33,14 @@
{% include '@ChillMain/Address/_insert_vue_address.html.twig' with {
targetEntity: { name: 'household', id: household.id },
backUrl: path('chill_person_household_addresses', { 'household_id': household.id }),
- mode: 'create',
+ mode: 'new',
buttonSize: 'btn-sm',
buttonText: 'Move household',
modalTitle: 'Move household',
buttonDisplayText: false,
} %}
{#
- bindModalStep1: false,
- bindModalStep2: true,
+ openPanesInModal: false
#}