Skip to content

Commit

Permalink
fix select resource data not showing on submission (formio#4696)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikekotikov authored May 4, 2022
1 parent 46bb0e3 commit 5d0c449
Showing 1 changed file with 7 additions and 11 deletions.
18 changes: 7 additions & 11 deletions src/components/select/Select.js
Original file line number Diff line number Diff line change
Expand Up @@ -225,15 +225,15 @@ export default class SelectComponent extends Field {
}

selectValueAndLabel(data) {
const value = this.itemValue(data);
const value = this.getOptionValue(this.itemValue(data));
return {
value,
label: this.itemTemplate(data, value)
};
}

itemTemplate(data, value) {
if (_.isEmpty(data)) {
if (!_.isNumber(data) && _.isEmpty(data)) {
return '';
}

Expand All @@ -247,10 +247,10 @@ export default class SelectComponent extends Field {
const value = (typeof itemLabel === 'string') ? this.t(itemLabel, { _userInput: true }) : itemLabel;
return this.sanitize(value, this.shouldSanitizeValue);
}
if (typeof data === 'string') {
if (typeof data === 'string' || typeof data === 'number') {
const selectData = this.selectData;
if (selectData && selectData[value]) {
data = selectData[value];
if (selectData) {
data = selectData;
}
else {
return this.sanitize(this.t(data, { _userInput: true }), this.shouldSanitizeValue);
Expand Down Expand Up @@ -313,7 +313,7 @@ export default class SelectComponent extends Field {
// Add element to option so we can reference it later.
const div = document.createElement('div');
div.innerHTML = this.sanitize(this.renderTemplate('selectOption', {
selected: _.isEqual(this.dataValue, option.value),
selected: _.isEqual(this.getOptionValue(this.dataValue), option.value),
option,
attrs,
id,
Expand Down Expand Up @@ -1418,11 +1418,7 @@ export default class SelectComponent extends Field {
if (!submission.metadata.selectData) {
submission.metadata.selectData = {};
}
const selectedTemplateData = _.pickBy(this.templateData, (value, key) => {
const dataValues = _.isArray(this.dataValue) ? this.dataValue : [this.dataValue];
return _.includes(dataValues, key);
});
_.set(submission.metadata.selectData, this.path, _.cloneDeep(selectedTemplateData));
_.set(submission.metadata.selectData, this.path, this.templateData[value]);
}

const displayEntireObject = this.isEntireObjectDisplay();
Expand Down

0 comments on commit 5d0c449

Please sign in to comment.