@if (hostsAndLabels$ | async; as data) {
@if (!serviceForm.controls.unmanaged.value && serviceForm.controls.placement.value === 'label') {
<div class="form-item">
- <cds-combo-box type="multi"
+ <cds-combo-box type="single"
selectionFeedback="top-after-reopen"
label="Label"
cdRequiredField="Label"
[appendInline]="true"
[items]="data.labels"
[invalid]="serviceForm.controls.label.invalid && serviceForm.controls.label.dirty"
- [invalidText]="requiredFieldLabel"
- (selected)="multiSelector($event, 'label')"
- i18n>
+ [invalidText]="requiredFieldLabel">
<cds-dropdown-list></cds-dropdown-list>
</cds-combo-box>
<ng-template #requiredFieldLabel>
id="hosts"
[appendInline]="true"
[items]="data.hosts"
- (selected)="multiSelector($event, 'hosts')"
+ (selected)="multiSelector($event)"
i18n>
<cds-dropdown-list></cds-dropdown-list>
</cds-combo-box>
});
});
- it('should test placement (label)', () => {
+ it('should test placement (label) with single select value', () => {
+ // placement labels take only single value
formHelper.setValue('service_type', 'mgr');
formHelper.setValue('placement', 'label');
- formHelper.setValue('label', [{ content: 'foo', selected: true }]);
+ formHelper.setValue('label', 'foo');
+
component.onSubmit();
+
expect(cephServiceService.create).toHaveBeenCalledWith({
service_type: 'mgr',
placement: {
- label: ['foo']
+ label: 'foo'
},
unmanaged: false
});
resource: string;
serviceTypes: string[] = [];
serviceIds: string[] = [];
- selectedLabels: string[] = [];
selectedHosts: string[] = [];
labels: string[];
labelClick = new Subject<string>();
}
break;
case 'label':
- serviceSpec['placement']['label'] = values['label']
- .filter((label: { content: string; selected: boolean }) => label.selected)
- .map((label: { content: string }) => label.content);
+ if (!_.isEmpty(values['label'])) {
+ serviceSpec['placement']['label'] = values['label']?.content;
+ }
break;
}
if (_.isNumber(values['count']) && values['count'] > 0) {
});
}
- multiSelector(event: any, field: 'label' | 'hosts') {
- if (field === 'hosts') this.selectedHosts = event.map((host: any) => host.content);
- else this.selectedLabels = event.map((label: any) => label.content);
+ multiSelector(event: any) {
+ this.selectedHosts = event.map((host: any) => host.content);
}
get isPrefixedNamedService(): boolean {