Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1865 commits
Select commit Hold shift + click to select a range
6a80368
fix: export display name and sort order for templates outside of Comp…
pavolum Apr 15, 2021
64884d0
fix: Route to appsettings correctly (#6992)
srinaath Apr 15, 2021
611629b
fix: adjust mechanism used to determine if/when luis and qna teaching…
benbrown Apr 15, 2021
d1f258b
fix: the format of hover info in LG editor (#6858)
Apr 15, 2021
1db57c1
feature: new design for Connections setting pane (#6724)
beyackle Apr 15, 2021
d3c6366
Update query to grab qna template readme (#7021)
pavolum Apr 15, 2021
75db5ac
fix: misc bug fixes in creation (#6950)
pavolum Apr 16, 2021
d3ae3e2
feat: show topics in left nav (#6987)
a-b-r-o-w-n Apr 16, 2021
ef8eb11
Runtime log for skills (#7030)
srinaath Apr 16, 2021
65eb47c
fix abs (#7041)
VanyLaw Apr 16, 2021
f60a25b
chore: update l10n files (#6920)
beyackle Apr 16, 2021
b7f3fe8
feat: include pva topics by default (#7058)
a-b-r-o-w-n Apr 16, 2021
ab63ce7
ci: use github-actions eslint formatter (#7015)
a-b-r-o-w-n Apr 16, 2021
3735dd3
7011 (#7018)
hatpick Apr 16, 2021
33f63db
fix: homepage header layout (#6926)
zhixzhan Apr 19, 2021
20ef5de
fix: Broken SVG image for QnA maker in provisioning (#7094)
GeoffCoxMSFT Apr 19, 2021
c0ffaf0
fix: pva deep link in new creation (#7100)
pavolum Apr 19, 2021
ef2f27b
feat: new skill manifest creation experience (#6661)
luhan2017 Apr 19, 2021
b9e46c2
feat: update the experience of adding a remote skill scenario (#6640)
VanyLaw Apr 19, 2021
acec4f3
fix: provisioning resource groups typing partial existing name (#7103)
GeoffCoxMSFT Apr 19, 2021
e2585f9
fix: multiple minor bugs in provision and creation (#7064)
pavolum Apr 19, 2021
8142368
fix: Update OnChooseIntent template to support Orchestrator (#7004)
taicchoumsft Apr 19, 2021
f01cb52
fix: remodel ProjectTree using ul/li tags (#7063)
beyackle Apr 19, 2021
58d827b
feat: diable /hide items when in PVA bot context (#7119)
srinaath Apr 20, 2021
3d002da
feat: migrate E2E test with bot creation v2 (#7040)
zhixzhan Apr 20, 2021
8095853
fix: publish targets was overwrited during opening abs (#7137)
VanyLaw Apr 20, 2021
3411c85
fix: Remove tag entity menu from LU Toolbar (#7171)
tdurnford Apr 20, 2021
1ec39e2
fix: Refactor LUIS, QNA and Speech to use a single base component (#6…
benbrown Apr 20, 2021
ac2eb2e
fix: UI bugs in provisioning (#7130)
pavolum Apr 21, 2021
8f68a15
fix: catch dotnet errors during creation and offer download link (#7062)
benbrown Apr 21, 2021
97571e0
feat: add filter to begin dialog selection (#7193)
a-b-r-o-w-n Apr 21, 2021
d1378c6
fix publish targets state update (#7207)
VanyLaw Apr 21, 2021
1a3ce88
fix: Recent bots sort and update styles (#7140)
zhixzhan Apr 21, 2021
af2c42a
fix: LG goto definition lost some cross files definitions (#7203)
Apr 21, 2021
e21dd39
fix: sort multi-skill bots in list by first opening of root (without …
beyackle Apr 21, 2021
d3d8e76
fix: reset dialog filter upon dismissing menu (#7222)
a-b-r-o-w-n Apr 21, 2021
bdc1a28
Fix conditional rendering of runtime dropdown (#7228)
pavolum Apr 21, 2021
4aeebe2
fix: minor UI bugs in provisioning and node modal (#7233)
pavolum Apr 21, 2021
214c99e
fix: add telemetry events for new qna, luis and speech flows (#7227)
benbrown Apr 21, 2021
d4095d1
fix ux issues (#7242)
hatpick Apr 21, 2021
b6ea776
fix: update UI in bot settings page to final R13 design spec (#7065)
pavolum Apr 22, 2021
03aa8da
fix: Sorted options on Azure & Luis region dropdowns (#7244)
VamsiModem Apr 22, 2021
24b6657
fix: widen column in feed modal (#7239)
beyackle Apr 22, 2021
84f3a11
fix: introduce ability to pick a free or paid tier of QnA (#7184)
benbrown Apr 22, 2021
4080b6e
Do not specify the luis endpoint key as a parameter to the runtime if…
benbrown Apr 22, 2021
8635df9
disable telemetry calls in the provision dialog while we investigate …
benbrown Apr 22, 2021
5106247
prefer the botName field instead of the name field when managing conn…
benbrown Apr 22, 2021
f24852f
fix: Empty Webchat inspector text and Disabling items in PVA context …
srinaath Apr 22, 2021
aa9305e
show floating notifications over eveything (#7269)
hatpick Apr 22, 2021
8437fab
Region for Microsoft Bot Channels Registration is now global (#7270)
VamsiModem Apr 22, 2021
e878aab
fix: adjust package manager feeds (#7243)
benbrown Apr 22, 2021
73f5d4b
fix: remodel About page (#7191)
beyackle Apr 22, 2021
7ce5374
fix: Remove placeholder before saving import config (#7265)
GeoffCoxMSFT Apr 22, 2021
70c9ec1
fix: error dialog should allow scrolling of error text (#7251)
natalgar Apr 22, 2021
13a82cf
fix: replace PVA with Power Virtual Agents (#7279)
a-b-r-o-w-n Apr 23, 2021
58b442f
fix: Empty setting for recognizer configuration when switch bot (#7302)
lei9444 Apr 23, 2021
c152d0b
fix: delete wrong trigger when delete skill and its trigger (#7305)
VanyLaw Apr 23, 2021
b32e27e
fix: expose provisionComposer script in easily downloadable way (#7180)
benbrown Apr 23, 2021
2146937
fix: use correct worker script in electron development (#7274)
hatpick Apr 23, 2021
24f65b1
fix: use router-based links to project manager (#7271)
beyackle Apr 23, 2021
03e4162
Fix for settings being overriden (#7294)
taicchoumsft Apr 23, 2021
bb55a53
fix: Change carousal to carousel in LG Editor (#7318)
tdurnford Apr 23, 2021
b2b74cb
Moved Web Chat log item keys outside of component (#7319)
tonyanziano Apr 23, 2021
1d4b434
fix: Data loss when cutting / copying & pasting response (#7296)
lei9444 Apr 23, 2021
669db58
fix: export bot include v2 project structure files (#7248)
zhixzhan Apr 23, 2021
6e872ca
fix: refactor way we get COMPOSER_VERSION (#7326)
a-b-r-o-w-n Apr 23, 2021
81c7c3f
fixes 6799 (#7320)
hatpick Apr 23, 2021
1f22458
fix: Update provisioning model based on feedback (#7328)
GeoffCoxMSFT Apr 23, 2021
99a74b9
Updated link location to SDK release, adds link to documenation on th…
cwhitten Apr 23, 2021
1de395f
Bumps to 2.0.0 (#7350)
cwhitten Apr 25, 2021
cbf6416
fix: fix LuEditor block entity in skill dialog (#7201)
VanyLaw Apr 26, 2021
9d8d59b
fix: allower callers displayed like available to edit (#7361)
alanlong9278 Apr 26, 2021
34e6f4d
fix: Orchestrator report entity error (#7362)
zhixzhan Apr 26, 2021
364dfdb
fix: re-enable telemetry events in azure provision dialog (#7332)
a-b-r-o-w-n Apr 26, 2021
565f151
fix: allow scroll on editor parent (#7357)
zhixzhan Apr 26, 2021
2533150
fix: adjust get started tasks (#7344)
benbrown Apr 26, 2021
46cb636
fix: better display and logic around handling remote skills (#7330)
beyackle Apr 26, 2021
3ecd062
fix: Resolve PVA check logic missing (#7369)
srinaath Apr 26, 2021
1676a51
fix: dummy skill (#7306)
luhan2017 Apr 26, 2021
18fe11c
fix: share name field between two create kb modal (#7304)
liweitian Apr 26, 2021
7320de2
fix: Add hostname default to import publishing profile (#7370)
GeoffCoxMSFT Apr 26, 2021
462807e
feat: Add RecognizerChanged telemetry event (#7374)
tdurnford Apr 26, 2021
c73cf75
Updating templates.json to remove old display name mappings and match…
peterinnesmsft Apr 26, 2021
43a3753
clean recent projects (#7379)
hatpick Apr 26, 2021
d95eef8
feat: Move Webchat Panel inside the Page section to prevent overlap o…
srinaath Apr 26, 2021
fd7a2cf
correct logic for validating connection modal (#7384)
beyackle Apr 26, 2021
e14beb4
Remove LUIS from trigger dialog (#7386)
taicchoumsft Apr 26, 2021
3e019b1
fix: Update copy of provision step title (#7377)
GeoffCoxMSFT Apr 26, 2021
e3e1b3e
fix plugin page router (#7400)
zhixzhan Apr 27, 2021
c064006
fix: various template bugs (#7378)
pavolum Apr 27, 2021
cd72a4d
Catch common QNA maker error about limits (#7368)
benbrown Apr 27, 2021
be743d6
fix #7403: include packages based on specific tags, rather than the m…
benbrown Apr 27, 2021
8796e9b
Fixed luis provisioning to return location (#7431)
GeoffCoxMSFT Apr 27, 2021
94a1f36
fix: Add a warning about the luis authoring key 1000/month limit (#7…
benbrown Apr 27, 2021
0a2cce9
fix: add skills flow refactored to desired R13 spec (#7432)
pavolum Apr 27, 2021
d02fa74
fix: UI fixes in getting started rocket panel (#7418)
pavolum Apr 28, 2021
bf4a7c8
fix: bump bf-dialog to 4.13.1 (#7419)
benbrown Apr 28, 2021
a449b51
fix: address minor UX issues for PVA bots (#7437)
a-b-r-o-w-n Apr 28, 2021
4a6ec2c
fix: when add remote skill show manifest json parse error (#7396)
zhixzhan Apr 28, 2021
c8283fa
fix: Improve LG response editor parsing for text/speech variations (#…
hatpick Apr 28, 2021
780f271
Add azure functions existing when hostname there (#7455)
GeoffCoxMSFT Apr 28, 2021
88fe092
Removed ARM & graph tokens on signout (#7457)
VamsiModem Apr 28, 2021
56a08d7
fix: address missing links in provisioning, updated tags in package m…
benbrown Apr 28, 2021
5e2eb8f
Fixed the buttons position on the provisioning modal. (#7459)
VamsiModem Apr 28, 2021
35b6561
fix: detect bots vs skills in Most Recently Used list (#7463)
beyackle Apr 28, 2021
919a971
fix: Added copy from profile button and dialog (#7465)
GeoffCoxMSFT Apr 29, 2021
db66154
fix: hide recognizers if they don't exist in the app schema (#7469)
a-b-r-o-w-n Apr 29, 2021
6c3da6d
chore: Temporarily removes save as button for R13 (#7482)
tdurnford Apr 29, 2021
e6ddd81
Updates Diagnostic message when a Skill is referenced that is not in …
cwhitten Apr 29, 2021
338cc8a
fixes notification container blocking interaction (#7429)
hatpick Apr 29, 2021
310e3d5
fix: Add Publish your bot to get started list (#7484)
benbrown Apr 29, 2021
322a901
fix: enable users to select any non multi bot template during add new…
pavolum Apr 29, 2021
d9d8247
fix: update gitignore, detect missing func runtime (#7488)
benbrown Apr 29, 2021
a3f796f
fix: Handle expiration on token used for tenants (#7504)
GeoffCoxMSFT Apr 30, 2021
4d1b3d0
feat: auto publish after creating new provision. (#7249)
alanlong9278 Apr 30, 2021
08611b6
fix: allow dashes for pva bot names (#7500)
a-b-r-o-w-n Apr 30, 2021
e9fea5f
fix: Check for webchat panel visibility (#7514)
srinaath Apr 30, 2021
86924b8
Fix #7525: correct luis link (#7527)
benbrown Apr 30, 2021
ad07a71
feat: add telemetry around new bot creation (#7508)
pavolum Apr 30, 2021
f577409
fix: Added sign out confirmation and notify user on sign out (#7537)
VamsiModem May 1, 2021
0204a82
fix: Display Orchestrator Selection Dialog for Local Skills (#7518)
taicchoumsft May 2, 2021
f54b2e8
fix: Updates AllowedCallers component to use unique keys for array it…
tdurnford May 3, 2021
71483cd
fix: correct the MS AppID text in the settings view (#7552)
pavolum May 3, 2021
8126634
fix: Add a QNA trigger to the dialog if it doesnt exist (#7534)
benbrown May 3, 2021
f6521f1
fix: split "Add new" button into its own section on Publish Targets p…
beyackle May 3, 2021
4fd58c8
fix: Using Get LUIS or Get QnA Key option does not work in Composer …
VamsiModem May 3, 2021
939972e
fix: Reopening of dialog due to hash (#7559)
GeoffCoxMSFT May 3, 2021
686a144
fix: Updated the cypress test for the integration test to succeed (#7…
VamsiModem May 4, 2021
ee715eb
fix: Update attachment template format to support PVA (#7564)
tdurnford May 4, 2021
21b05df
Revert "fix: Update attachment template format to support PVA (#7564)…
cwhitten May 4, 2021
5c4e472
fix: Update attachment template format to support PVA (#7593)
tdurnford May 4, 2021
6999baa
fix: address a regression in the start bot button that caused final '…
benbrown May 4, 2021
aa0b246
fix: get tenant specific arm tokens for connections (#7554)
benbrown May 4, 2021
b7b92ca
fix: change copy on home page (#7604)
beyackle May 4, 2021
e9c2014
Update provisionScript.zip with small syntax changes (#7563)
benbrown May 4, 2021
8acc50e
fix: Adjust build command used for dotnet functions (#7557)
benbrown May 4, 2021
7b94964
fix: fixes auth flow on web & electron version (#7623)
VamsiModem May 4, 2021
122da50
fix: ui copy updates (#7599)
benbrown May 4, 2021
4b0d732
fix: LG Editor Fit & Finish (#7636)
tdurnford May 5, 2021
c32060b
fix: rephrase Open from ABS dialog (#7637)
beyackle May 5, 2021
c3b8105
fix: fit and finish across the app (#7598)
pavolum May 5, 2021
b45b4c8
special case the fallback recognizer (#7634)
taicchoumsft May 5, 2021
5054312
chore: bump wait-on to v5.3.0 (#7648)
a-b-r-o-w-n May 5, 2021
c66c44d
fix: update left nav and top bar strings (#7609)
beyackle May 5, 2021
45439b5
fix: rephrase Enable Orchestrator dialog (#7639)
beyackle May 5, 2021
1d7d1c9
fix: Update provision & publishing copy (#7583) (#7642)
natalgar May 5, 2021
a326776
fix: Added cleanup logic to app on quit (#7645)
tonyanziano May 5, 2021
0c914b2
feat: show tunneling information notification when starting bot with …
a-b-r-o-w-n May 5, 2021
1eefb2e
feat: detect "old" bots and migrate them to new runtime (#6526)
benbrown May 6, 2021
8264ac4
fix: data race writing on setting file (#7475)
zhixzhan May 6, 2021
6728c56
remove appsettings file from default gitignore (#7679)
benbrown May 6, 2021
46477e7
fix: restore line beneath page header (#7676)
beyackle May 7, 2021
06d578f
chore: Rebase main with 1.4.1 release (#7678)
srinaath May 7, 2021
26653a9
exclude items from the package manager list that do not have names or…
benbrown May 7, 2021
3c6cb16
Add components field to migrated settings. Guard against missing fiel…
benbrown May 7, 2021
3a0e0af
fix: (Un) Installing a package now stops the currently running bot be…
tonyanziano May 7, 2021
00069ea
Feed string, not int, to Switch per schema (#7707)
taicchoumsft May 7, 2021
543d0b4
fix: generate manifest file when creating new publish target (#7666)
alanlong9278 May 9, 2021
8fbbe83
fix: converting bot with custom actions (ui update) (#7672)
lei9444 May 10, 2021
667b93f
Hides the PVA publish profile from the profle creation dropdown (#7725)
tonyanziano May 10, 2021
2eb998d
fix: set func-related settings during build step (#7723)
benbrown May 11, 2021
8406071
feat: Add preparatory work before connecting remote skill (#7519)
alanlong9278 May 11, 2021
48d2167
fix: Revert changes to adaptive card templates to support PVA (#7808)
tdurnford May 13, 2021
62e891c
fetch publish types for each project
benbrown May 14, 2021
54ad513
fix: Throttle restart conversation (#7824)
srinaath May 14, 2021
6d40dae
chore: automated localization updates (#7759)
GeoffCoxMSFT May 14, 2021
09c50fc
Deploy exception returns real error (#7837)
GeoffCoxMSFT May 14, 2021
30d28dc
fix: Fix missing data collection settings on server (#7814)
tdurnford May 14, 2021
dc07be4
fix: add inner scrollbar to selection area (#7782)
alanlong9278 May 15, 2021
008fa93
Migration: adjust target blob transcript field names (#7848)
carlosscastro May 17, 2021
ce59ac3
fix: Always use intermediate lg template for text and speak modalitie…
tdurnford May 21, 2021
1854d56
allow click outside blocking modals (#7727)
hatpick May 21, 2021
830efb8
fix: Remove depth and transparentBorders from FieldProps, remove Obje…
tdurnford May 21, 2021
87bbeda
fix: Teaching bubble missing content (#7764)
tdurnford May 22, 2021
1b9d669
fix: Reset allowed callers cache when switching between project setti…
tdurnford May 22, 2021
340809f
fix: breadcrumb & show code button collision (#7720)
zhixzhan May 24, 2021
2ec0472
Update home feed for Build 2021 (#7912)
garypretty May 25, 2021
eca732c
fix (#7440)
hatpick May 26, 2021
095fccc
fix: Custom function declaration (#7775)
srinaath May 26, 2021
d607e81
add new caller when caller still have empty list, just focus on the e…
VanyLaw May 27, 2021
438a7fc
Resolve dns-packet to 1.3.4 to fix CVE-2021-23386 (#7942)
hatpick May 27, 2021
8eaf984
fix: invalid profile case (#7784)
alanlong9278 May 28, 2021
7b53342
update recognizer
VanyLaw Jun 1, 2021
4628a9a
update recognizer
VanyLaw Jun 1, 2021
2ebb0e0
polish recognizer UI
VanyLaw Jun 1, 2021
5b194a2
polish recognizer UI
VanyLaw Jun 1, 2021
61b76b3
polish
VanyLaw Jun 1, 2021
7443734
polish
VanyLaw Jun 1, 2021
c872ccb
fix test
VanyLaw Jun 1, 2021
24e840d
fix test
VanyLaw Jun 1, 2021
87bb591
fix e2e test
VanyLaw Jun 1, 2021
c6b03c5
fix e2e test
VanyLaw Jun 1, 2021
d51ed85
fix: Need to wait for zip deployment to be done processing (#7858)
GeoffCoxMSFT Jun 1, 2021
5680168
Update readme screenshot (#7918)
hatpick Jun 1, 2021
16ae70e
Merge remote-tracking branch 'origin/main' into wenyluo/newUI
VanyLaw Jun 2, 2021
c041b85
Merge remote-tracking branch 'origin/main' into wenyluo/newUI
VanyLaw Jun 2, 2021
32c57be
fix comments
VanyLaw Jun 2, 2021
8654323
fix comments
VanyLaw Jun 2, 2021
5a9a49f
fix lint and ut
VanyLaw Jun 2, 2021
50183ca
fix lint and ut
VanyLaw Jun 2, 2021
2cdbbe9
upgrade json-ptr (#7988)
beyackle Jun 2, 2021
bf6b731
fix (#7979)
hatpick Jun 2, 2021
11a45cf
feat: Add expand to larger editor to LU Editor (#7976)
hatpick Jun 2, 2021
b1dce2b
fix: LUIS build fails with reason "undefined" with more than 10 phras…
Jun 3, 2021
8843a1b
chore(deps): bump ws from 7.4.4 to 7.4.6 in /extensions/localPublish …
dependabot[bot] Jun 3, 2021
868a0ad
fix: Support vertical bar character ("|") in MicrosoftPassword (#7938)
Danieladu Jun 3, 2021
1b4727d
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 3, 2021
9b1298d
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 3, 2021
50ef5d8
ci: increase unit test timeout to 45 minutes (#7836)
beyackle Jun 3, 2021
4967e33
fix: rewrite l10n:check to catch more errors and fix some l10n issues…
beyackle Jun 3, 2021
1a6839d
when add language luFile, update luIntent fileId (#8009)
zhixzhan Jun 4, 2021
afee28c
chore: Upgrade bf-lu to latest dev version (#7999)
Jun 4, 2021
1f1e2af
chore: upgrade package [email protected] (#8010)
zhixzhan Jun 4, 2021
ada6de6
fix: trigger creation LUIS entity labelling (#8011)
zhixzhan Jun 4, 2021
f0abc31
Add Orchestrator Logging (#7038)
taicchoumsft Jun 4, 2021
d79893b
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 7, 2021
ba043b9
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 7, 2021
8251e29
chore: bump ws from 7.4.4 to 7.4.6 and browserslist from 4.16.3 to 4.…
Jun 7, 2021
87d1d33
fix: add keys to tags and split license notice by lines (#7389)
beyackle Jun 7, 2021
c859da0
feat: Added UX to link log items and WC activities (#8006)
tonyanziano Jun 7, 2021
399e165
fix comments
VanyLaw Jun 8, 2021
ff436af
fix comments
VanyLaw Jun 8, 2021
9ab5f76
Merge branch 'wenyluo/newUI' of https://github.com/microsoft/BotFrame…
VanyLaw Jun 8, 2021
36fa65c
Merge branch 'wenyluo/newUI' of https://github.com/microsoft/BotFrame…
VanyLaw Jun 8, 2021
eddf8e0
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 8, 2021
aca8deb
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 8, 2021
e8e4ada
fix: remove old creation code (#8004)
pavolum Jun 8, 2021
6b3fab5
Rename article to be less confusing (#8030)
JonathanFingold Jun 8, 2021
91be8ed
upgrade css-what and css-select (#8041)
beyackle Jun 9, 2021
034a2b2
feat: Add dynamic schema for build forms in form dialogs (#8046)
hatpick Jun 10, 2021
7a45a55
fix: Monaco editor loader CDN js path (#7968)
zhixzhan Jun 10, 2021
bdfadbb
fix: incorrect expression validation for dialog (#7722)
lei9444 Jun 10, 2021
a3cef8f
feat: Add T&C accept for teams (#7381)
benbrown Jun 10, 2021
7ab4347
fix: resolving getting started teaching callout not rendering (#8005)
pavolum Jun 10, 2021
3ebe3e7
Merge remote-tracking branch 'origin/main' into wenyluo/newUI
VanyLaw Jun 11, 2021
0b55193
Merge remote-tracking branch 'origin/main' into wenyluo/newUI
VanyLaw Jun 11, 2021
73177dc
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 11, 2021
a4cb3e9
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 11, 2021
ea938de
polish design
VanyLaw Jun 11, 2021
ae7b0c0
polish design
VanyLaw Jun 11, 2021
d0c189d
Merge branch 'wenyluo/newUI' of https://github.com/microsoft/BotFrame…
VanyLaw Jun 11, 2021
fbfa261
Merge branch 'wenyluo/newUI' of https://github.com/microsoft/BotFrame…
VanyLaw Jun 11, 2021
d335584
Merge branch 'wenyluo/newUI' of https://github.com/microsoft/BotFrame…
VanyLaw Jun 15, 2021
2d5b7d0
Merge remote-tracking branch 'origin/main' into wenyluo/newUI
VanyLaw Jun 15, 2021
ff1bca9
update url
VanyLaw Jun 15, 2021
733bce8
default selected
VanyLaw Jun 16, 2021
78af09b
Merge branch 'main' into wenyluo/newUI
luhan2017 Jun 17, 2021
35135c4
Merge remote-tracking branch 'origin/main' into wenyluo/newUI
VanyLaw Jun 21, 2021
f0bb3e7
fix comment
VanyLaw Jun 21, 2021
bca78fe
fix e2e test
VanyLaw Jun 21, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,59 +1,160 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
/** @jsx jsx */
import { jsx } from '@emotion/core';
import React, { useMemo } from 'react';
import { jsx, css } from '@emotion/core';
import React, { useCallback, useMemo, useState, useEffect } from 'react';
import { FieldProps, useShellApi, useRecognizerConfig } from '@bfc/extension-client';
import { MicrosoftIRecognizer } from '@bfc/shared';
import { Dropdown, ResponsiveMode, IDropdownOption } from 'office-ui-fabric-react/lib/Dropdown';
import formatMessage from 'format-message';
import { Dialog, DialogFooter, DialogType } from 'office-ui-fabric-react/lib/Dialog';
import { ScrollablePane, ScrollbarVisibility } from 'office-ui-fabric-react/lib/ScrollablePane';
import { Link } from 'office-ui-fabric-react/lib/Link';
import { CheckboxVisibility, DetailsList, SelectionMode, Selection } from 'office-ui-fabric-react/lib/DetailsList';
import { PrimaryButton, DefaultButton } from 'office-ui-fabric-react/lib/Button';

import { FieldLabel } from '../../FieldLabel';

import { useMigrationEffect } from './useMigrationEffect';
import { mapDropdownOptionToRecognizerSchema } from './mappers';
import { getDropdownOptions } from './getDropdownOptions';
import { mapListItemsToRecognizerSchema } from './mappers';
import { getDetailsListItems } from './getDetailsListItems';

const recognizerStyle = css`
display: flex;
justify-content: space-between;
margin: 5px 0px 10px 0px;
`;
const AzureBlue = '#0078D4';
const recognizerContainer = css`
position: relative;
height: 500px;
border-top: 1px solid #f3f2f1;
border-bottom: 1px solid #f3f2f1;
`;
const learnRecognizerUrl = 'https://docs.microsoft.com/en-us/composer/concept-dialog?tabs=v2x#recognizer';

export type RecognizerListItem = {
key: string;
text: string;
description: string;
};
export const RecognizerField: React.FC<FieldProps<MicrosoftIRecognizer>> = (props) => {
const { value, id, label, description, uiOptions, required, onChange } = props;
const { shellApi, ...shellData } = useShellApi();
const { telemetryClient } = shellApi;
const [showDialog, setShowDialog] = useState(false);
const [selectedRecognizer, setSelectedRecognizer] = useState<RecognizerListItem>();

useMigrationEffect(value, onChange);
const { recognizers: recognizerConfigs, currentRecognizer } = useRecognizerConfig();
const dropdownOptions = useMemo(() => getDropdownOptions(recognizerConfigs, shellData, shellApi), [
const detailsListItems = useMemo(() => getDetailsListItems(recognizerConfigs, shellData, shellApi), [
recognizerConfigs,
]);

const RecognizerEditor = currentRecognizer?.recognizerEditor;
const widget = RecognizerEditor ? <RecognizerEditor {...props} /> : null;

const submit = (_, option?: IDropdownOption): void => {
if (!option) return;
const selection = useMemo(() => {
return new Selection({
onSelectionChanged: () => {
const selectedItems = selection.getSelection() as RecognizerListItem[];
if (selectedItems?.length > 0) {
setSelectedRecognizer(selectedItems[0]);
}
},
});
}, [setSelectedRecognizer]);

const recognizerDefinition = mapDropdownOptionToRecognizerSchema(option, recognizerConfigs);
const submit = useCallback((): void => {
if (!selectedRecognizer) return;

const recognizerDefinition = mapListItemsToRecognizerSchema(selectedRecognizer, recognizerConfigs);

const seedNewRecognizer = recognizerDefinition?.seedNewRecognizer;
const recognizerInstance =
typeof seedNewRecognizer === 'function'
? seedNewRecognizer(shellData, shellApi)
: { $kind: option.key as string, intents: [] }; // fallback to default Recognizer instance;
: { $kind: selectedRecognizer.key as string, intents: [] }; // fallback to default Recognizer instance;
onChange(recognizerInstance);
telemetryClient?.track('RecognizerChanged', { recognizer: option.key as string });
};
telemetryClient?.track('RecognizerChanged', { recognizer: selectedRecognizer.key as string });
}, [selectedRecognizer, recognizerConfigs, shellData, shellApi]);

useEffect(() => {
if (selection && currentRecognizer) {
selection.setItems(detailsListItems, false);
selection.setKeySelected(currentRecognizer.id, true, false);
}
}, [detailsListItems]);

return (
<React.Fragment>
<FieldLabel description={description} helpLink={uiOptions?.helpLink} id={id} label={label} required={required} />
<Dropdown
ariaLabel={formatMessage('Recognizer Type')}
data-testid="recognizerTypeDropdown"
label={formatMessage('Recognizer Type')}
options={dropdownOptions}
responsiveMode={ResponsiveMode.large}
selectedKey={currentRecognizer?.id}
onChange={submit}
/>
<div style={{ fontWeight: 600 }}>{formatMessage('Recognizer/Dispatch type')}</div>
<div css={recognizerStyle} data-testid="recognizerTypeList">
<span>
{typeof currentRecognizer?.displayName === 'function'
? currentRecognizer?.displayName({})
: currentRecognizer?.displayName}
</span>
<span data-testid="openRecognizerDialog" style={{ color: AzureBlue }} onClick={() => setShowDialog(true)}>
{formatMessage('Change')}
</span>
</div>
<Dialog
dialogContentProps={{
type: DialogType.normal,
title: formatMessage('Choose a recognizer type'),
}}
hidden={!showDialog}
minWidth={450}
modalProps={{
isBlocking: true,
isClickableOutsideFocusTrap: true,
}}
onDismiss={() => setShowDialog(false)}
>
<div css={recognizerContainer}>
<ScrollablePane
scrollbarVisibility={ScrollbarVisibility.auto}
styles={{ root: { width: '100%', height: 'inherit', position: 'relative' } }}
>
<DetailsList
checkboxVisibility={CheckboxVisibility.always}
columns={[
{
key: 'recognizer',
name: 'Recognizer type',
minWidth: 70,
onRender: (item) => {
return (
<div>
<div style={{ fontWeight: 'bold' }}>{item.text}</div>
<div style={{ whiteSpace: 'normal' }}>{item.description}</div>
</div>
);
},
},
]}
isHeaderVisible={false}
items={detailsListItems}
selection={selection}
selectionMode={SelectionMode.single}
/>
</ScrollablePane>
</div>
<DialogFooter>
<Link href={learnRecognizerUrl} styles={{ root: { fontSize: '12px', float: 'left' } }} target="_blank">
{formatMessage('Learn more about recognizers')}
</Link>
<DefaultButton text={formatMessage('Cancel')} onClick={() => setShowDialog(false)} />
<PrimaryButton
text={formatMessage('Done')}
onClick={() => {
setShowDialog(false);
submit();
}}
/>
</DialogFooter>
</Dialog>
{widget}
</React.Fragment>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { RecognizerSchema, FallbackRecognizerKey, ShellApi, ShellData } from '@b
import { checkForPVASchema } from '@bfc/shared';

import { recognizerOrderMap } from './defaultRecognizerOrder';
import { mapRecognizerSchemaToDropdownOption } from './mappers';
import { mapRecognizerSchemaToListItems } from './mappers';

const getRankScore = (r: RecognizerSchema, shellData: ShellData, shellApi: ShellApi) => {
// Always put disabled recognizer behind. Handle 'disabled' before 'default'.
Expand All @@ -17,7 +17,7 @@ const getRankScore = (r: RecognizerSchema, shellData: ShellData, shellApi: Shell
return recognizerOrderMap[r.id] ?? Number.MAX_VALUE - 1;
};

export const getDropdownOptions = (configs: RecognizerSchema[], shellData: ShellData, shellApi: ShellApi) => {
export const getDetailsListItems = (configs: RecognizerSchema[], shellData: ShellData, shellApi: ShellApi) => {
const isPVASchema = checkForPVASchema(shellData.schemas?.sdk);
let recognizerConfigs: RecognizerSchema[] = configs;
if (isPVASchema) {
Expand All @@ -31,5 +31,5 @@ export const getDropdownOptions = (configs: RecognizerSchema[], shellData: Shell
.sort((r1, r2) => {
return getRankScore(r1, shellData, shellApi) - getRankScore(r2, shellData, shellApi);
})
.map(mapRecognizerSchemaToDropdownOption);
.map(mapRecognizerSchemaToListItems);
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@
// Licensed under the MIT License.

import { RecognizerSchema } from '@bfc/extension-client';
import { IDropdownOption } from 'office-ui-fabric-react/lib/Dropdown';

export const mapDropdownOptionToRecognizerSchema = (option: IDropdownOption, recognizerConfigs: RecognizerSchema[]) => {
return recognizerConfigs.find((r) => r.id === option.key);
import { RecognizerListItem } from './RecognizerField';

export const mapListItemsToRecognizerSchema = (item: RecognizerListItem, recognizerConfigs: RecognizerSchema[]) => {
return recognizerConfigs.find((r) => r.id === item.key);
};

export const mapRecognizerSchemaToDropdownOption = (recognizerSchema: RecognizerSchema): IDropdownOption => {
const { id, displayName } = recognizerSchema;
export const mapRecognizerSchemaToListItems = (recognizerSchema: RecognizerSchema) => {
const { id, displayName, description } = recognizerSchema;
const recognizerName = typeof displayName === 'function' ? displayName({}) : displayName;
return { key: id, text: recognizerName || id };
const recognizerDescription = typeof description === 'function' ? description({}) : description;
return { key: id, text: recognizerName || id, description: recognizerDescription };
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Licensed under the MIT License.

import React from 'react';
import { render, fireEvent, screen } from '@botframework-composer/test-utils';
import { render, fireEvent, screen, getAllByText } from '@botframework-composer/test-utils';
import { useRecognizerConfig, useShellApi } from '@bfc/extension-client';
import assign from 'lodash/assign';

Expand Down Expand Up @@ -37,12 +37,14 @@ describe('<RecognizerField />', () => {
{
id: 'one',
displayName: 'One Recognizer',
description: 'test1',
isSelected: () => false,
seedNewRecognizer: handleChange,
},
{
id: 'two',
displayName: 'Two Recognizer',
description: 'test2',
isSelected: () => true,
seedNewRecognizer: jest.fn(),
},
Expand All @@ -51,12 +53,17 @@ describe('<RecognizerField />', () => {
recognizers,
currentRecognizer: recognizers[1],
});
const { getByTestId } = renderSubject({ value: { $kind: 'two' } });
const dropdown = getByTestId('recognizerTypeDropdown');
expect(dropdown).toHaveTextContent('Two Recognizer');
fireEvent.click(dropdown);
const { getByText, getAllByText } = renderSubject({ value: { $kind: 'two' } });
// two recognizer already choosed
expect(getByText('Two Recognizer')).not.toBeNull();

// click change recognizer, pop up dialog
fireEvent.click(getByText('Change'));
expect(getByText('One Recognizer')).not.toBeNull();
expect(getAllByText('Two Recognizer').length).toBe(2);

fireEvent.click(screen.getByText('One Recognizer'));
fireEvent.click(screen.getByText('Done'));
expect(handleChange).toHaveBeenCalled();
});
});
8 changes: 4 additions & 4 deletions Composer/packages/client/__tests__/plugins.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,25 +53,25 @@ describe('mergePluginConfigs', () => {
const config1 = {
uiSchema: {
[SDKKinds.RegexRecognizer]: {
recognizer: { displayName: 'recognizer1' },
recognizer: { displayName: 'recognizer1', description: 'recognizer1' },
},
},
};

const config2 = {
uiSchema: {
[SDKKinds.LuisRecognizer]: {
recognizer: { displayName: 'recognizer2' },
recognizer: { displayName: 'recognizer2', description: 'recognizer2' },
},
},
};

expect(mergePluginConfigs(config1, config2).uiSchema).toEqual({
[SDKKinds.RegexRecognizer]: {
recognizer: { displayName: 'recognizer1' },
recognizer: { displayName: 'recognizer1', description: 'recognizer1' },
},
[SDKKinds.LuisRecognizer]: {
recognizer: { displayName: 'recognizer2' },
recognizer: { displayName: 'recognizer2', description: 'recognizer2' },
},
});
});
Expand Down
2 changes: 2 additions & 0 deletions Composer/packages/extension-client/src/types/formSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ export type RecognizerSchema = {
disabled?: boolean | ((shellData: ShellData, shellApi: ShellApi) => boolean);
/** Display name used in the UI. Recommended to use function over static string to enable multi-locale feature. */
displayName: UIOptionValue<string>;
/** Description used in the UI. describe the usage of this recognizer */
description: UIOptionValue<string>;
/** An inline editor to edit an intent. If none provided, users will not be able to edit. */
intentEditor?: FieldWidget | string;
/** A function invoked with the form data to determine if this is the currently selected recognizer */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,10 @@ context('breadcrumb', () => {
it('can create different kinds of triggers ', () => {
cy.visitPage('Create');
cy.findByTestId('DialogHeader-TestBot_TestSample').click();
cy.findByTestId('recognizerTypeDropdown').click();
cy.findByText('Regular expression recognizer').click();
// cy.findByText('Change').click();
cy.findByTestId('openRecognizerDialog').click();
cy.findByText('Regular expression').click();
cy.findByText('Done').click();

//onintent trigger
cy.findByTestId('DialogHeader-TestBot_TestSample').within(() => {
Expand Down
Loading