Skip to content

Commit 7e6f99b

Browse files
Merge pull request #2401 from ReliefApplications/2.8.x
refactor: tagbox using tag mode can now be disabled / enabled
2 parents df89166 + 6445608 commit 7e6f99b

File tree

2 files changed

+57
-27
lines changed

2 files changed

+57
-27
lines changed

libs/shared/src/lib/components/dashboard-filter/filter-builder-modal/filter-builder-modal.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ const CORE_QUESTION_ALLOWED_PROPERTIES = [
113113
'readOnly',
114114
'isRequired',
115115
'placeHolder',
116+
'useSummaryTagMode',
116117
'enableIf',
117118
'visibleIf',
118119
'tooltip',

libs/shared/src/lib/survey/widgets/tagbox-widget.ts

Lines changed: 56 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -43,30 +43,44 @@ export const init = (
4343
return question.getType() === componentName;
4444
},
4545
init: () => {
46-
if (Serializer.findClass(componentName)) return;
47-
Serializer.addClass(
48-
componentName,
49-
[
50-
{ name: 'hasOther:boolean', visible: false },
51-
{ name: 'hasSelectAll:boolean', visible: false },
52-
{ name: 'hasNone:boolean', visible: false },
53-
{ name: 'otherText', visible: false },
54-
{ name: 'selectAllText', visible: false },
55-
{ name: 'noneText', visible: false },
56-
],
57-
() => null,
58-
'checkbox'
59-
);
60-
Serializer.addProperty(componentName, {
61-
name: 'placeholder',
62-
category: 'general',
63-
default: '',
64-
});
65-
Serializer.addProperty(componentName, {
66-
name: 'allowAddNewTag:boolean',
67-
category: 'general',
68-
default: false,
69-
});
46+
if (Serializer.findClass(componentName)) {
47+
Serializer.addProperty(componentName, {
48+
name: 'useSummaryTagMode',
49+
type: 'boolean',
50+
category: 'general',
51+
default: false,
52+
});
53+
} else {
54+
Serializer.addClass(
55+
componentName,
56+
[
57+
{ name: 'hasOther:boolean', visible: false },
58+
{ name: 'hasSelectAll:boolean', visible: false },
59+
{ name: 'hasNone:boolean', visible: false },
60+
{ name: 'otherText', visible: false },
61+
{ name: 'selectAllText', visible: false },
62+
{ name: 'noneText', visible: false },
63+
],
64+
() => null,
65+
'checkbox'
66+
);
67+
Serializer.addProperty(componentName, {
68+
name: 'placeholder',
69+
category: 'general',
70+
default: '',
71+
});
72+
Serializer.addProperty(componentName, {
73+
name: 'useSummaryTagMode',
74+
type: 'boolean',
75+
category: 'general',
76+
default: false,
77+
});
78+
Serializer.addProperty(componentName, {
79+
name: 'allowAddNewTag:boolean',
80+
category: 'general',
81+
default: false,
82+
});
83+
}
7084
},
7185
isDefaultRender: false,
7286
afterRender: (question: any, el: HTMLElement): void => {
@@ -142,6 +156,18 @@ export const init = (
142156
tagboxInstance.disabled = value;
143157
}
144158
);
159+
question.registerFunctionOnPropertyValueChanged(
160+
'useSummaryTagMode',
161+
(value: boolean) => {
162+
if (value) {
163+
tagboxInstance.tagMapper = (tags: any[]) => {
164+
return tags.length < 2 ? tags : [tags];
165+
};
166+
} else {
167+
tagboxInstance.tagMapper = () => null;
168+
}
169+
}
170+
);
145171
if (question.visibleChoices.length) {
146172
updateChoices(tagboxInstance, question, currentSearchValue);
147173
}
@@ -186,9 +212,12 @@ export const init = (
186212
tagboxInstance.valueField = 'value';
187213
tagboxInstance.popupSettings = { appendTo: 'component' };
188214
tagboxInstance.fillMode = 'none';
189-
tagboxInstance.tagMapper = (tags: any[]) => {
190-
return tags.length < 2 ? tags : [tags];
191-
};
215+
if (question.useSummaryTagMode) {
216+
tagboxInstance.tagMapper = (tags: any[]) => {
217+
return tags.length < 2 ? tags : [tags];
218+
};
219+
}
220+
192221
return tagboxInstance;
193222
};
194223
// ⚠ danger ⚠

0 commit comments

Comments
 (0)