Skip to content

Commit

Permalink
Merge pull request #389 from ghiscoding/bugfix/autoadd-formatter-only…
Browse files Browse the repository at this point in the history
…-once

fix(formatters): shouldn't auto-add editor formatter multiple times
  • Loading branch information
ghiscoding committed Jun 17, 2021
2 parents 2f3767b + 6cff562 commit 6f2dc05
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,18 @@ describe('Slick-Vanilla-Grid-Bundle / Utilies', () => {
{ id: 'zip', field: 'address.zip', type: 'number', formatter: Formatters.complexObject },
]);
});

it('should have custom editor formatter with correct structure even if we call it twice', () => {
autoAddEditorFormatterToColumnsWithEditor(columnDefinitions, customEditableInputFormatter);
autoAddEditorFormatterToColumnsWithEditor(columnDefinitions, customEditableInputFormatter);

expect(columnDefinitions).toEqual([
{ id: 'firstName', field: 'firstName', editor: { model: Editors.text }, formatter: customEditableInputFormatter },
{ id: 'lastName', field: 'lastName', editor: { model: Editors.text }, formatter: Formatters.multiple, params: { formatters: [Formatters.italic, Formatters.bold, customEditableInputFormatter] } },
{ id: 'age', field: 'age', type: 'number', formatter: Formatters.multiple },
{ id: 'address', field: 'address.street', editor: { model: Editors.longText }, formatter: Formatters.multiple, params: { formatters: [Formatters.complexObject, customEditableInputFormatter] } },
{ id: 'zip', field: 'address.zip', type: 'number', formatter: Formatters.complexObject },
]);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@ export function autoAddEditorFormatterToColumnsWithEditor(columnDefinitions: Col
if (Array.isArray(columnDefinitions)) {
for (const columnDef of columnDefinitions) {
if (columnDef.editor) {
if (columnDef.formatter && columnDef.formatter !== Formatters.multiple) {
if (columnDef.formatter && columnDef.formatter !== Formatters.multiple && columnDef.formatter !== customEditableFormatter) {
const prevFormatter = columnDef.formatter;
columnDef.formatter = Formatters.multiple;
columnDef.params = { ...columnDef.params, formatters: [prevFormatter, customEditableFormatter] };
} else if (columnDef.formatter && columnDef.formatter === Formatters.multiple && columnDef.params) {
columnDef.params.formatters = [...columnDef.params.formatters, customEditableFormatter];
// before adding the formatter, make sure it's not yet in the params.formatters list, we wouldn't want to add it multiple times
if (columnDef.params.formatters.findIndex((formatter: Formatter) => formatter === customEditableFormatter) === -1) {
columnDef.params.formatters = [...columnDef.params.formatters, customEditableFormatter];
}
} else {
columnDef.formatter = customEditableFormatter;
}
Expand Down

0 comments on commit 6f2dc05

Please sign in to comment.