From 550d2b1df3e01d976c57e8e0974196848de16b18 Mon Sep 17 00:00:00 2001 From: Louis Eugene Date: Thu, 29 Oct 2020 14:45:34 -0700 Subject: [PATCH 1/3] fix --- .../packages/intellisense/src/components/Intellisense.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Composer/packages/intellisense/src/components/Intellisense.tsx b/Composer/packages/intellisense/src/components/Intellisense.tsx index ed83e2052e..321a5ba026 100644 --- a/Composer/packages/intellisense/src/components/Intellisense.tsx +++ b/Composer/packages/intellisense/src/components/Intellisense.tsx @@ -97,19 +97,19 @@ export const Intellisense = React.memo( } }; - const keyupHandler = (event: KeyboardEvent) => { - if (event.key === 'Escape' && focused) { + const keydownHandler = (event: KeyboardEvent) => { + if ((event.key === 'Escape' || event.key === 'Tab') && focused) { setShowCompletionList(false); onBlur && onBlur(id); } }; document.body.addEventListener('click', outsideClickHandler); - document.body.addEventListener('keyup', keyupHandler); + document.body.addEventListener('keydown', keydownHandler); return () => { document.body.removeEventListener('click', outsideClickHandler); - document.body.removeEventListener('keyup', keyupHandler); + document.body.removeEventListener('keydown', keydownHandler); }; }, [focused, onBlur]); From ceed10a3e85f22a0d9776d8b1077868ced34211a Mon Sep 17 00:00:00 2001 From: Louis Eugene Date: Fri, 30 Oct 2020 11:57:08 -0700 Subject: [PATCH 2/3] fix --- .../src/components/fields/OneOfField/utils.ts | 7 +++++-- .../packages/adaptive-form/src/utils/resolveFieldWidget.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Composer/packages/adaptive-form/src/components/fields/OneOfField/utils.ts b/Composer/packages/adaptive-form/src/components/fields/OneOfField/utils.ts index db9844a488..d93e944464 100644 --- a/Composer/packages/adaptive-form/src/components/fields/OneOfField/utils.ts +++ b/Composer/packages/adaptive-form/src/components/fields/OneOfField/utils.ts @@ -67,7 +67,11 @@ export function getOptions( const expression = (resolvedOneOf as JSONSchema7[]).find(({ $role }) => $role === 'expression'); const merged = merge({}, omit(schema, 'oneOf'), expression); - if (expression && (resolvedOneOf as JSONSchema7[]).some(({ properties, items }) => properties || items)) { + isNested = + isNested || + !!(expression && (resolvedOneOf as JSONSchema7[]).some(({ properties, items }) => properties || items)); + + if (expression && isNested) { options.push({ key: 'expression', text: formatMessage('Write an expression'), @@ -76,7 +80,6 @@ export function getOptions( schema: merged, }, }); - isNested = true; } return { options, isNested }; diff --git a/Composer/packages/adaptive-form/src/utils/resolveFieldWidget.ts b/Composer/packages/adaptive-form/src/utils/resolveFieldWidget.ts index 8262c02af5..4b510dd410 100644 --- a/Composer/packages/adaptive-form/src/utils/resolveFieldWidget.ts +++ b/Composer/packages/adaptive-form/src/utils/resolveFieldWidget.ts @@ -135,7 +135,7 @@ export function resolveFieldWidget(params: { return { field: DefaultFields.ArrayField }; } case 'object': - if (schema.additionalProperties) { + if (typeof schema.additionalProperties === 'object') { return { field: DefaultFields.OpenObjectField }; } else if (!schema.properties) { if (showIntellisense && isOneOf) { From 6d0e5c6cc9e259d7af174078613d98d0c333fefd Mon Sep 17 00:00:00 2001 From: Louis Eugene Date: Mon, 2 Nov 2020 11:20:40 -0800 Subject: [PATCH 3/3] updating test --- .../src/utils/__tests__/resolveFieldWidget.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Composer/packages/adaptive-form/src/utils/__tests__/resolveFieldWidget.test.ts b/Composer/packages/adaptive-form/src/utils/__tests__/resolveFieldWidget.test.ts index 2c97235bf6..7dd5647f0a 100644 --- a/Composer/packages/adaptive-form/src/utils/__tests__/resolveFieldWidget.test.ts +++ b/Composer/packages/adaptive-form/src/utils/__tests__/resolveFieldWidget.test.ts @@ -215,7 +215,11 @@ describe('resolveFieldWidget', () => { it('returns OpenObjectField when additional properties are allowed', () => { const schema = { type: 'object' as const, - additionalProperties: true, + additionalProperties: { + type: 'string', + title: '', + description: '', + }, }; const { field: ReturnedField } = resolveFieldWidget({ schema });