diff --git a/src/components/ADempiere/Field/FieldMixin.js b/src/components/ADempiere/Field/FieldMixin.js index 97e76dc7..a4182902 100644 --- a/src/components/ADempiere/Field/FieldMixin.js +++ b/src/components/ADempiere/Field/FieldMixin.js @@ -86,6 +86,16 @@ export const fieldMixin = { }) } }, + actionKeyPerformed(value) { + if (this.metadata.handleActionKeyPerformed) { + this.$store.dispatch('notifyActionKeyPerformed', { + containerUuid: this.metadata.containerUuid, + columnName: this.metadata.columnName, + value: value.target.value, + keyCode: value.keyCode + }) + } + }, keyReleased(value) { if (this.metadata.handleKeyReleased) { this.$store.dispatch('notifyKeyReleased', { diff --git a/src/components/ADempiere/Field/FieldText.vue b/src/components/ADempiere/Field/FieldText.vue index 333c174f..adeceec7 100644 --- a/src/components/ADempiere/Field/FieldText.vue +++ b/src/components/ADempiere/Field/FieldText.vue @@ -17,6 +17,7 @@ @focus="focusGained" @keydown.native="keyPressed" @keyup.native="keyReleased" + @keyup.native.enter="actionKeyPerformed" /> diff --git a/src/components/ADempiere/Form/PriceChecking/fieldsList.js b/src/components/ADempiere/Form/PriceChecking/fieldsList.js index 5fb8e1b7..2f5ab289 100644 --- a/src/components/ADempiere/Form/PriceChecking/fieldsList.js +++ b/src/components/ADempiere/Form/PriceChecking/fieldsList.js @@ -9,7 +9,7 @@ export default [ size: 24, sequence: 10, cssClassName: 'price-inquiry', - handleActionPerformed: true + handleActionKeyPerformed: true } }, // Product Name diff --git a/src/components/ADempiere/Form/PriceChecking/index.vue b/src/components/ADempiere/Form/PriceChecking/index.vue index 6d6c9ad8..9e26626c 100644 --- a/src/components/ADempiere/Form/PriceChecking/index.vue +++ b/src/components/ADempiere/Form/PriceChecking/index.vue @@ -49,11 +49,11 @@ export default { methods: { subscribeChanges() { return this.$store.subscribe((mutation, state) => { - if (mutation.type === 'addActionPerformed' && mutation.payload.columnName === 'ProductValue') { + if (mutation.type === 'addActionKeyPerformed' && mutation.payload.columnName === 'ProductValue') { // cleans all values except column name 'ProductValue' this.setValues({ withOutColumnNames: ['ProductValue'] }) getProductPrice({ - searchValue: mutation.payload.newValue + searchValue: mutation.payload.value }) .then(productPrice => { const { product, taxRate } = productPrice diff --git a/src/store/modules/ADempiere/event.js b/src/store/modules/ADempiere/event.js index 548c1c2b..77025d6f 100644 --- a/src/store/modules/ADempiere/event.js +++ b/src/store/modules/ADempiere/event.js @@ -50,6 +50,9 @@ const event = { eventType: KEY_RELEASED }) }, + addActionKeyPerformed(state, change) { + state.fieldEvents.push(change) + }, addFocusGained(state, change) { state.fieldEvents.push({ ...change, @@ -96,6 +99,14 @@ const event = { keyCode: event.keyCode }) }, + notifyActionKeyPerformed({ commit }, event) { + commit('addActionKeyPerformed', { + containerUuid: event.containerUuid, + columnName: event.columnName, + value: event.value, + keyCode: event.keyCode + }) + }, notifyFocusGained({ commit }, event) { commit('addFocusGained', { containerUuid: event.containerUuid, diff --git a/src/utils/ADempiere/lookupFactory.js b/src/utils/ADempiere/lookupFactory.js index b60951e8..6ef162b4 100644 --- a/src/utils/ADempiere/lookupFactory.js +++ b/src/utils/ADempiere/lookupFactory.js @@ -313,7 +313,8 @@ export function getFieldTemplate(overwriteDefinition) { handleFocusLost: false, handleKeyPressed: false, handleKeyReleased: false, - handleActionPerformed: true, + handleActionKeyPerformed: false, + handleActionPerformed: false, dependentFieldsList: [], reference: { tableName: '', @@ -328,7 +329,6 @@ export function getFieldTemplate(overwriteDefinition) { isFixedTableColumn: false, ...overwriteDefinition } - // get parsed parent fields list fieldTemplateMetadata.parentFieldsList = getParentFields(fieldTemplateMetadata) diff --git a/src/views/ADempiere/TestView/fieldsList.js b/src/views/ADempiere/TestView/fieldsList.js index 85afcc0a..09910b68 100644 --- a/src/views/ADempiere/TestView/fieldsList.js +++ b/src/views/ADempiere/TestView/fieldsList.js @@ -52,7 +52,8 @@ export default [ definition: { name: 'Only Name', displayType: TEXT.id, - displayLogic: '@URL@!""' + displayLogic: '@URL@!""', + handleActionKeyPerformed: true } }, // Amount @@ -61,7 +62,8 @@ export default [ definition: { name: 'Amount for it', displayType: NUMBER.id, - readOnlyLogic: '@C_Currency_ID@<>""' + readOnlyLogic: '@C_Currency_ID@<>""', + handleActionKeyPerformed: true } }, // Integer diff --git a/src/views/ADempiere/TestView/index.vue b/src/views/ADempiere/TestView/index.vue index 0ac4db37..a476ba69 100644 --- a/src/views/ADempiere/TestView/index.vue +++ b/src/views/ADempiere/TestView/index.vue @@ -103,6 +103,21 @@ export default { formTitle() { return this.metadata.name || this.$route.meta.title } + }, + created() { + this.unsubscribe = this.subscribeChanges() + }, + beforeDestroy() { + this.unsubscribe() + }, + methods: { + subscribeChanges() { + return this.$store.subscribe((mutation, state) => { + if (mutation.type === 'addActionKeyPerformed') { + console.log(mutation) + } + }) + } } }