From 7ceee95f522a254bbb3cf18c409d12ad5842c533 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Tue, 1 Sep 2020 12:06:38 -0700 Subject: [PATCH] radio card change (#12049) * radio card change * Clone the object * freeze change description * Change to deepClone --- .../resource-deployment/src/ui/resourceTypePickerDialog.ts | 2 +- src/sql/azdata.proposed.d.ts | 5 ++++- .../browser/modelComponents/radioCardGroup.component.ts | 6 +++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/extensions/resource-deployment/src/ui/resourceTypePickerDialog.ts b/extensions/resource-deployment/src/ui/resourceTypePickerDialog.ts index c84ea2efae..2a82ff1592 100644 --- a/extensions/resource-deployment/src/ui/resourceTypePickerDialog.ts +++ b/extensions/resource-deployment/src/ui/resourceTypePickerDialog.ts @@ -83,7 +83,7 @@ export class ResourceTypePickerDialog extends DialogBase { ariaLabel: localize('deploymentDialog.deploymentOptions', "Deployment options"), width: '1100px' }).component(); - this._toDispose.push(this._cardGroup.onSelectionChanged((cardId: string) => { + this._toDispose.push(this._cardGroup.onSelectionChanged(({ cardId }) => { const resourceType = resourceTypes.find(rt => { return rt.name === cardId; }); if (resourceType) { this.selectResourceType(resourceType); diff --git a/src/sql/azdata.proposed.d.ts b/src/sql/azdata.proposed.d.ts index 1cd6db4093..523914da52 100644 --- a/src/sql/azdata.proposed.d.ts +++ b/src/sql/azdata.proposed.d.ts @@ -174,7 +174,10 @@ declare module 'azdata' { } export interface RadioCardGroupComponent extends Component, RadioCardGroupComponentProperties { - onSelectionChanged: vscode.Event; + /** + * The card object returned from this function is a clone of the internal representation - changes will not impact the original object + */ + onSelectionChanged: vscode.Event<{ cardId: string; card?: RadioCard }>; } export interface SeparatorComponent extends Component { diff --git a/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts b/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts index 22a78c17f6..13ac254c6b 100644 --- a/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts +++ b/src/sql/workbench/browser/modelComponents/radioCardGroup.component.ts @@ -11,6 +11,7 @@ import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; import 'vs/css!./media/card'; import { IComponent, IComponentDescriptor, IModelStore, ComponentEventType } from 'sql/platform/dashboard/browser/interfaces'; +import { deepClone } from 'vs/base/common/objects'; @Component({ templateUrl: decodeURI(require.toUrl('./radioCardGroup.component.html')) @@ -141,7 +142,10 @@ export default class RadioCardGroup extends ComponentBase implements IComponent, this._changeRef.detectChanges(); this.fireEvent({ eventType: ComponentEventType.onDidChange, - args: cardId + args: { + cardId, + card: deepClone(this.getCardById(cardId)) + } }); }