diff --git a/ui-library-quickstart-teams-interop-meeting-chat/README.md b/ui-library-quickstart-teams-interop-meeting-chat/README.md
index 84edbb3a..d8921ee4 100644
--- a/ui-library-quickstart-teams-interop-meeting-chat/README.md
+++ b/ui-library-quickstart-teams-interop-meeting-chat/README.md
@@ -50,3 +50,13 @@ then click on the chat button to reveal the chat panel:

Feel free to style the composites to your desired size and layout inside of your application.
+
+## Enable Rich Text Editor
+ By default, this Quickstart is using the plain text editor for the SendBox component and the MessageThread component's edit function.
+ We also provide a Rich Text Editor for rich text formatting, table inserting etc.
+ To try it out:
+ - Go to the `src` folder and find the `App.tsx` file.
+ - Change the value for `richTextEditorEnabled` to true.
+
+Open your browser to `http://localhost:3000`. You should see the following with the Rich Text Editor enabled:
+
\ No newline at end of file
diff --git a/ui-library-quickstart-teams-interop-meeting-chat/package-lock.json b/ui-library-quickstart-teams-interop-meeting-chat/package-lock.json
index a601b9b8..75bb31a6 100644
--- a/ui-library-quickstart-teams-interop-meeting-chat/package-lock.json
+++ b/ui-library-quickstart-teams-interop-meeting-chat/package-lock.json
@@ -8,7 +8,7 @@
"name": "ui-library-quickstart-teams-interop-meeting-chat",
"version": "0.1.0",
"dependencies": {
- "@azure/communication-react": "1.19.0-beta.1",
+ "@azure/communication-react": "1.20.0-beta.1",
"@fluentui/react": "8.101.0",
"@types/node": "^16.11.29",
"@types/react": "^18.0.0",
@@ -20,6 +20,9 @@
"typescript": "^4.6.3",
"uuid": "^8.3.2",
"web-vitals": "^2.1.4"
+ },
+ "devDependencies": {
+ "@playwright/test": "^1.47.1"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -66,10 +69,9 @@
}
},
"node_modules/@azure/communication-calling": {
- "version": "1.28.1-beta.2",
- "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.28.1-beta.2.tgz",
- "integrity": "sha512-DyQqMgBnP3hu24cYJ6m7NjoxdIO2t41oil2CHAXSKmSDAwBhjX4I4zPw7xiWMy43pHZoZORxWN1gWkt7BmWVjQ==",
- "license": "Microsoft Software License Terms for the Azure Communications Services, Azure CPaaS, ACS Software Development Kit SDK, see LICENSE file",
+ "version": "1.30.1-beta.1",
+ "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.30.1-beta.1.tgz",
+ "integrity": "sha512-vGb2qCn6MWv2npLAYGHelhRXcT8knHiA1Gx/zuoBjJ55lkwMicI1TphUeyMfZMNyfEewbhNf/3WLUVz7rhgoGg==",
"peer": true,
"dependencies": {
"@azure/communication-common": "^2.3.0",
@@ -130,10 +132,9 @@
}
},
"node_modules/@azure/communication-react": {
- "version": "1.19.0-beta.1",
- "resolved": "https://registry.npmjs.org/@azure/communication-react/-/communication-react-1.19.0-beta.1.tgz",
- "integrity": "sha512-Wp/rACGXyE9oixfOGTNrUri3eEMgAdt/wP4GO6BVZNxTNZDmUwJG+HhdTGQ1ERCWd3FXs0WUeXM8l+EvWfoy+w==",
- "license": "MIT",
+ "version": "1.20.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@azure/communication-react/-/communication-react-1.20.0-beta.1.tgz",
+ "integrity": "sha512-HRqLahQFPOo8PIuROlh9+xkeeXyEb4tmniG5xsBk1KPAPN3+J+1rpF0HImKDB2GrvDRIF4nA3Sk4hOHaRuW1iA==",
"dependencies": {
"@azure/communication-common": "^2.3.1",
"@azure/core-paging": "^1.5.0",
@@ -146,6 +147,7 @@
"@fluentui/react-icons": "^2.0.252",
"@fluentui/react-window-provider": "^2.2.27",
"@griffel/react": "^1.5.25",
+ "@types/events": "^3.0.3",
"copy-to-clipboard": "^3.3.1",
"dompurify": "^3.1.6",
"events": "^3.3.0",
@@ -156,17 +158,17 @@
"react-linkify": "^1.0.0-alpha",
"react-use-draggable-scroll": "^0.4.7",
"reselect": "^4.0.0",
- "roosterjs-content-model-api": "^9.9.0",
- "roosterjs-content-model-core": "^9.9.0",
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-plugins": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-api": "^9.9.1",
+ "roosterjs-content-model-core": "^9.9.1",
+ "roosterjs-content-model-dom": "^9.9.1",
+ "roosterjs-content-model-plugins": "^9.9.1",
+ "roosterjs-content-model-types": "^9.9.1",
"textarea-caret-ts": "^4.1.1",
"use-debounce": "^10.0.2",
"uuid": "^9.0.0"
},
"peerDependencies": {
- "@azure/communication-calling": "1.28.1-beta.2",
+ "@azure/communication-calling": "1.30.1-beta.1",
"@azure/communication-calling-effects": "1.0.1",
"@azure/communication-chat": "1.6.0-beta.3",
"@types/react": ">=16.8.0 <19.0.0",
@@ -5169,6 +5171,22 @@
"node": ">=8.0.0"
}
},
+ "node_modules/@playwright/test": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.1.tgz",
+ "integrity": "sha512-dbWpcNQZ5nj16m+A5UNScYx7HX5trIy7g4phrcitn+Nk83S32EBX/CLU4hiF4RGKX/yRc93AAqtfaXB7JWBd4Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright": "1.47.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@pmmmwh/react-refresh-webpack-plugin": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz",
@@ -5646,6 +5664,11 @@
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
"integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA=="
},
+ "node_modules/@types/events": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
+ "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g=="
+ },
"node_modules/@types/express": {
"version": "4.17.17",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
@@ -13599,6 +13622,53 @@
"node": ">=4"
}
},
+ "node_modules/playwright": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.1.tgz",
+ "integrity": "sha512-SUEKi6947IqYbKxRiqnbUobVZY4bF1uu+ZnZNJX9DfU1tlf2UhWfvVjLf01pQx9URsOr18bFVUKXmanYWhbfkw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.47.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.1.tgz",
+ "integrity": "sha512-i1iyJdLftqtt51mEk6AhYFaAJCDx0xQ/O5NU8EKaWFgMjItPVma542Nh/Aq8aLCjIJSzjaiEQGW/nyqLkGF1OQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/postcss": {
"version": "8.4.30",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz",
@@ -15684,54 +15754,54 @@
}
},
"node_modules/roosterjs-content-model-api": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-api/-/roosterjs-content-model-api-9.9.0.tgz",
- "integrity": "sha512-W8dzYFUUtVQyLW1KJRTWxN7CpfHP+bV2iYWORBTeTPtT/lhOEKssVa0njK8nfDJKOGEju1wiFSD0ZCwU+Hf6EQ==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-api/-/roosterjs-content-model-api-9.10.0.tgz",
+ "integrity": "sha512-AUul5ZBGxnFeR60ArXCyBI/IPAqEeZb/Jpp3MNy0PHYi9OeXrXmmWFsH2JH8ht+8IveBuM+xzktuBbLXRqi79g==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-dom": "^9.10.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-core": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-core/-/roosterjs-content-model-core-9.9.0.tgz",
- "integrity": "sha512-ZYGCyoKwLgJg3tliz7LgKrKfBhv6X+X1xrrAt+S2WVrCc+0cPjN5Dc7m8R/pwWclo0r67OWQPb2IfNennzWxdw==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-core/-/roosterjs-content-model-core-9.10.0.tgz",
+ "integrity": "sha512-7U8vbuW1nitnxNkn2GchrVmjbxu+TwMvIkvhkO1TIRWOQ6eczkdvH0a5XPscPrmaaNvhMsVzhEuZw+1jmhijbQ==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-dom": "^9.10.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-dom": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-dom/-/roosterjs-content-model-dom-9.9.0.tgz",
- "integrity": "sha512-yn6d7CZREYG2FQD98v+uTlXzJI1o+uaGKnqEcwx7qg8CnKIj33MKVnuwXeibJ4WOjhM8tWqf2/UR5gPZxIatjA==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-dom/-/roosterjs-content-model-dom-9.10.0.tgz",
+ "integrity": "sha512-2dk/ZvEsR96OVOcKDVyGbx8+t5ZyYjXbpgjNc2h9c+rhk61XWWDJ23u2vKRUMtI6Qv6CwpeBrdjzJSIa3Moi9g==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-plugins": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-plugins/-/roosterjs-content-model-plugins-9.9.0.tgz",
- "integrity": "sha512-/fwHdrxPLyodkFBMS15R4E2poHeESGZR2GeJJEWdl53P5s029v5gj+gwj/cHscGxN/GA816CZfEOkl4SQy0EGQ==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-plugins/-/roosterjs-content-model-plugins-9.10.0.tgz",
+ "integrity": "sha512-KXnfYexu+UEsrSR9JNfXxRzK7e6l8evzQv/kcVH2kxVnWyIczwOBsbSa8c02H7+VykNOlLGH+vH3cqMGj1qG4w==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-api": "^9.9.0",
- "roosterjs-content-model-core": "^9.9.0",
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-api": "^9.10.0",
+ "roosterjs-content-model-core": "^9.10.0",
+ "roosterjs-content-model-dom": "^9.10.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-types": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-types/-/roosterjs-content-model-types-9.9.0.tgz",
- "integrity": "sha512-M82Xt7y2cWottI6HZ7lZ8hW2vHBhghVxTTswA2oYbo5pWGOkLG4RKYu0ANzjvlbd0Cg+HW39QL8ETTOORh78Hg==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-types/-/roosterjs-content-model-types-9.10.0.tgz",
+ "integrity": "sha512-SsRgMUEWW9F8btNbQt6ZvR2ukBVVi9ZfQ49fhIK8xgUHkZSdB/NSmVuQOjkrV8VyYvHLAwEMVXeMYbGmVVpnHQ==",
"license": "MIT"
},
"node_modules/rtl-css-js": {
diff --git a/ui-library-quickstart-teams-interop-meeting-chat/package.json b/ui-library-quickstart-teams-interop-meeting-chat/package.json
index 491647e3..f2c23458 100644
--- a/ui-library-quickstart-teams-interop-meeting-chat/package.json
+++ b/ui-library-quickstart-teams-interop-meeting-chat/package.json
@@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@azure/communication-react": "1.19.0-beta.1",
+ "@azure/communication-react": "1.20.0-beta.1",
"@fluentui/react": "8.101.0",
"@types/node": "^16.11.29",
"@types/react": "^18.0.0",
@@ -16,11 +16,15 @@
"uuid": "^8.3.2",
"web-vitals": "^2.1.4"
},
+ "devDependencies": {
+ "@playwright/test": "^1.47.1"
+ },
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
- "eject": "react-scripts eject"
+ "eject": "react-scripts eject",
+ "test:e2e": "playwright test"
},
"eslintConfig": {
"extends": [
diff --git a/ui-library-quickstart-teams-interop-meeting-chat/playwright.config.ts b/ui-library-quickstart-teams-interop-meeting-chat/playwright.config.ts
new file mode 100644
index 00000000..481b2f84
--- /dev/null
+++ b/ui-library-quickstart-teams-interop-meeting-chat/playwright.config.ts
@@ -0,0 +1,66 @@
+import { defineConfig, devices } from "@playwright/test";
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+export default defineConfig({
+ testDir: "./tests",
+ /* Run tests in files in parallel */
+ fullyParallel: true,
+ /* Fail the build on CI if you accidentally left test.only in the source code. */
+ forbidOnly: !!process.env.CI,
+ /* Retry on CI only */
+ retries: process.env.CI ? 2 : 0,
+ /* Opt out of parallel tests on CI. */
+ workers: process.env.CI ? 1 : undefined,
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
+ // reporter: "html",
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
+ use: {
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ // baseURL: 'http://127.0.0.1:3000',
+
+ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
+ trace: "on-first-retry",
+ baseURL: "http://localhost:3000/",
+ headless: false,
+ },
+
+ /* Configure projects for major browsers */
+ projects: [
+ // {
+ // name: "chromium",
+ // use: { ...devices["Desktop Chrome"] },
+ // },
+
+ // {
+ // name: "firefox",
+ // use: { ...devices["Desktop Firefox"] },
+ // },
+
+ // {
+ // name: "webkit",
+ // use: { ...devices["Desktop Safari"] },
+ // },
+
+ /* Test against branded browsers. */
+ {
+ name: "Microsoft Edge",
+ use: {
+ ...devices["Desktop Edge"],
+ channel: "msedge",
+ permissions: ["microphone", "camera"],
+ },
+ },
+ ],
+
+ /* Run your local dev server before starting the tests */
+ webServer: {
+ command: "npm run start",
+ port: 3000,
+ reuseExistingServer: false,
+ timeout: 120 * 1000,
+ // uncomment to see more logs
+ // stdout: "pipe",
+ },
+});
diff --git a/ui-library-quickstart-teams-interop-meeting-chat/src/App.tsx b/ui-library-quickstart-teams-interop-meeting-chat/src/App.tsx
index 2fff42b8..330d7db0 100644
--- a/ui-library-quickstart-teams-interop-meeting-chat/src/App.tsx
+++ b/ui-library-quickstart-teams-interop-meeting-chat/src/App.tsx
@@ -1,15 +1,16 @@
-import React, {
- useMemo,
-} from 'react';
-import { TeamsMeetingLinkLocator } from '@azure/communication-calling';
-import { AzureCommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';
+import React, { useMemo } from "react";
+import { TeamsMeetingLinkLocator } from "@azure/communication-calling";
+import {
+ AzureCommunicationTokenCredential,
+ CommunicationUserIdentifier,
+} from "@azure/communication-common";
import {
CallAndChatLocator,
CallWithChatComposite,
useAzureCommunicationCallWithChatAdapter,
- CallWithChatCompositeOptions
-} from '@azure/communication-react';
-import { Theme, PartialTheme, Spinner } from '@fluentui/react';
+ CallWithChatCompositeOptions,
+} from "@azure/communication-react";
+import { Theme, PartialTheme, Spinner } from "@fluentui/react";
/**
* Authentication information needed for your client application to use
@@ -21,10 +22,10 @@ import { Theme, PartialTheme, Spinner } from '@fluentui/react';
* In a real application, your backend service would provide these to the client
* application after the user goes through your authentication flow.
*/
-const ENDPOINT_URL = '
';
-const USER_ID = '';
-const TOKEN = '';
-const TEAMS_MEETING_LINK = '';
+const ENDPOINT_URL = "";
+const USER_ID = "";
+const TOKEN = "";
+const TEAMS_MEETING_LINK = "";
/**
* Display name for the local participant.
@@ -32,9 +33,14 @@ const TEAMS_MEETING_LINK = '';
* backend services provides to the client application after the user
* goes through your authentication flow.
*/
-const DISPLAY_NAME = '';
-
-
+const DISPLAY_NAME = "";
+/**
+ * By default, the `richTextEditorEnabled` is set to false,
+ * which means the plain text editor will be used for the SendBox component and the MessageThread component's edit function.
+ * Change this value to true to use the Rich Text Editor instead,
+ * which provides rich text formatting, table inserting etc.
+ */
+const richTextEditorEnabled = false;
export type CallWithChatExampleProps = {
// Props needed for the construction of the CallWithChatAdapter
@@ -50,10 +56,15 @@ export type CallWithChatExampleProps = {
callInvitationURL?: string;
};
-export const CallWithChatExperience = (props: CallWithChatExampleProps): JSX.Element => {
+export const CallWithChatExperience = (
+ props: CallWithChatExampleProps
+): JSX.Element => {
// Construct a credential for the user with the token retrieved from your server. This credential
// must be memoized to ensure useAzureCommunicationCallWithChatAdapter is not retriggered on every render pass.
- const credential = useMemo(() => new AzureCommunicationTokenCredential(props.token), [props.token]);
+ const credential = useMemo(
+ () => new AzureCommunicationTokenCredential(props.token),
+ [props.token]
+ );
// Create the adapter using a custom react hook provided in the @azure/communication-react package.
// See https://aka.ms/acsstorybook?path=/docs/composite-adapters--page for more information on adapter construction and alternative constructors.
@@ -62,7 +73,7 @@ export const CallWithChatExperience = (props: CallWithChatExampleProps): JSX.Ele
displayName: props.displayName,
credential,
locator: props.locator,
- endpoint: props.endpointUrl
+ endpoint: props.endpointUrl,
});
// The adapter is created asynchronously by the useAzureCommunicationCallWithChatAdapter hook.
@@ -71,22 +82,29 @@ export const CallWithChatExperience = (props: CallWithChatExampleProps): JSX.Ele
return ;
}
- return ;
+ return (
+
+ );
};
/**
* Entry point of your application.
*/
function App(): JSX.Element {
- return (
-
- );
+ return (
+
+ );
}
export default App;
diff --git a/ui-library-quickstart-teams-interop-meeting-chat/tests/StartApp.spec.ts b/ui-library-quickstart-teams-interop-meeting-chat/tests/StartApp.spec.ts
new file mode 100644
index 00000000..29793e5c
--- /dev/null
+++ b/ui-library-quickstart-teams-interop-meeting-chat/tests/StartApp.spec.ts
@@ -0,0 +1,27 @@
+import { test } from "@playwright/test";
+
+test("Start the app", async ({ page, context, browser }) => {
+ // set timeout to 10 minutes
+ test.setTimeout(10 * 60 * 1000);
+
+ await page.goto("http://localhost:3000/");
+
+ // eslint-disable-next-line testing-library/prefer-screen-queries
+ await page.getByRole("button", { name: "Start call" }).click();
+ await page.getByLabel("Chat").click();
+ // eslint-disable-next-line testing-library/prefer-screen-queries
+ await page.getByRole("status", { name: "joined the chat." }).click();
+ // Create a locator that matches both the textarea and the contentEditable component
+ const input = page.locator('textarea, [contenteditable="true"]').first();
+ await input.click();
+ await input.fill(`${new Date()} - Test`);
+ await page.getByLabel("Send message").click();
+
+ // the test will work until the page is closed
+ await new Promise((resolve) => {
+ page.on("close", resolve);
+ });
+
+ await context.close();
+ await browser.close();
+});
diff --git a/ui-library-quickstart-ui-components/README.md b/ui-library-quickstart-ui-components/README.md
index f7335275..56e6b59a 100644
--- a/ui-library-quickstart-ui-components/README.md
+++ b/ui-library-quickstart-ui-components/README.md
@@ -25,3 +25,13 @@ Open your browser to ` http://localhost:3000`. You should see the following:

Feel free to style the components to your desired size and layout inside of your application. Check out the stateful client quickstart to learn how to connect the components to the communications data plane.
+
+## Enable Rich Text Editor
+ By default, this Quickstart is using the plain text editor for the SendBox component and the MessageThread component's edit function.
+ We also provide a Rich Text Editor for rich text formatting, table inserting etc.
+ To try it out:
+ - Go to the `src` folder and find the `ChatComponents.tsx` file.
+ - Change the value for `richTextEditorEnabled` to true.
+
+Open your browser to `http://localhost:3000`. You should see the following with the Rich Text Editor enabled:
+
diff --git a/ui-library-quickstart-ui-components/package-lock.json b/ui-library-quickstart-ui-components/package-lock.json
index 58b8cc6a..37317586 100644
--- a/ui-library-quickstart-ui-components/package-lock.json
+++ b/ui-library-quickstart-ui-components/package-lock.json
@@ -8,10 +8,10 @@
"name": "ui-library-quickstart",
"version": "0.1.0",
"dependencies": {
- "@azure/communication-calling": "^1.20.1",
- "@azure/communication-chat": "^1.4.0",
- "@azure/communication-react": "^1.18.1",
- "@fluentui/react": "8.119.3",
+ "@azure/communication-calling": "1.28.1-beta.2",
+ "@azure/communication-chat": "1.6.0-beta.3",
+ "@azure/communication-react": "1.19.0-beta.1",
+ "@fluentui/react": "8.120.0",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
@@ -66,9 +66,9 @@
}
},
"node_modules/@azure/communication-calling": {
- "version": "1.27.2",
- "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.27.2.tgz",
- "integrity": "sha512-PWcsHCR1agXz1nUFOXdsV+jJpnJ4YJWewLErjbSDk91ZV48ftdS4yWkiy6pL/y1bATnPdy7P++DDrbf5Uhm6RA==",
+ "version": "1.28.1-beta.2",
+ "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.28.1-beta.2.tgz",
+ "integrity": "sha512-DyQqMgBnP3hu24cYJ6m7NjoxdIO2t41oil2CHAXSKmSDAwBhjX4I4zPw7xiWMy43pHZoZORxWN1gWkt7BmWVjQ==",
"dependencies": {
"@azure/communication-common": "^2.3.0",
"@azure/logger": "^1.0.3"
@@ -85,13 +85,13 @@
}
},
"node_modules/@azure/communication-chat": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/@azure/communication-chat/-/communication-chat-1.5.1.tgz",
- "integrity": "sha512-QPmVrMSNy8FBEqcEEXCwTWgU5Hi7cmUfCu/cWjPRqkYgwVO88yCUZ7iySVzY2Dn/3sO9tpgJepTBHBtTu04P2w==",
+ "version": "1.6.0-beta.3",
+ "resolved": "https://registry.npmjs.org/@azure/communication-chat/-/communication-chat-1.6.0-beta.3.tgz",
+ "integrity": "sha512-iqmPISeeXpy8id8Ja71np57OSszYWb2TM4ha9a+aP8MWknREL5sKcNXyw+jzQJIJFSfUiGrf+FW9RX5ChuvIVw==",
"dependencies": {
"@azure/abort-controller": "^1.0.0",
"@azure/communication-common": "^2.3.1",
- "@azure/communication-signaling": "1.0.0-beta.26",
+ "@azure/communication-signaling": "1.0.0-beta.27",
"@azure/core-auth": "^1.3.0",
"@azure/core-client": "^1.6.0",
"@azure/core-paging": "^1.1.1",
@@ -125,44 +125,71 @@
}
},
"node_modules/@azure/communication-react": {
- "version": "1.18.1",
- "resolved": "https://registry.npmjs.org/@azure/communication-react/-/communication-react-1.18.1.tgz",
- "integrity": "sha512-4VN0UpeMKXm8Hmm+erWTQOs443zlQhJFZu2lgDLR8XdNbJyz9PBXPfyZVmc8rfjHfrpdTrEyj9AC4mPTkTjqQQ==",
+ "version": "1.19.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@azure/communication-react/-/communication-react-1.19.0-beta.1.tgz",
+ "integrity": "sha512-Wp/rACGXyE9oixfOGTNrUri3eEMgAdt/wP4GO6BVZNxTNZDmUwJG+HhdTGQ1ERCWd3FXs0WUeXM8l+EvWfoy+w==",
"dependencies": {
"@azure/communication-common": "^2.3.1",
"@azure/core-paging": "^1.5.0",
"@azure/logger": "^1.0.4",
- "@fluentui-contrib/react-chat": "0.1.9",
- "@fluentui/react": "^8.117.1",
- "@fluentui/react-components": "^9.47.3",
- "@fluentui/react-file-type-icons": "8.11.16",
- "@fluentui/react-hooks": "^8.7.0",
- "@fluentui/react-icons": "^2.0.245",
+ "@fluentui-contrib/react-chat": "0.1.10",
+ "@fluentui/react": "^8.120.0",
+ "@fluentui/react-components": "^9.54.7",
+ "@fluentui/react-file-type-icons": "8.11.18",
+ "@fluentui/react-hooks": "^8.8.10",
+ "@fluentui/react-icons": "^2.0.252",
"@fluentui/react-window-provider": "^2.2.27",
- "@griffel/react": "^1.5.23",
+ "@griffel/react": "^1.5.25",
"copy-to-clipboard": "^3.3.1",
- "dompurify": "^3.1.5",
+ "dompurify": "^3.1.6",
"events": "^3.3.0",
- "html-react-parser": "^5.1.10",
+ "html-react-parser": "^5.1.12",
"immer": "10.1.1",
"memoize-one": "^5.2.1",
"nanoid": "3.3.6",
"react-linkify": "^1.0.0-alpha",
"react-use-draggable-scroll": "^0.4.7",
"reselect": "^4.0.0",
- "roosterjs-content-model-api": "^9.7.0",
- "roosterjs-content-model-core": "^9.7.0",
- "roosterjs-content-model-dom": "^9.7.0",
- "roosterjs-content-model-plugins": "^9.7.0",
- "roosterjs-content-model-types": "^9.7.0",
+ "roosterjs-content-model-api": "^9.9.0",
+ "roosterjs-content-model-core": "^9.9.0",
+ "roosterjs-content-model-dom": "^9.9.0",
+ "roosterjs-content-model-plugins": "^9.9.0",
+ "roosterjs-content-model-types": "^9.9.0",
"textarea-caret-ts": "^4.1.1",
- "use-debounce": "^10.0.1",
+ "use-debounce": "^10.0.2",
"uuid": "^9.0.0"
},
"peerDependencies": {
- "@azure/communication-calling": "^1.26.1",
+ "@azure/communication-calling": "1.28.1-beta.2",
"@azure/communication-calling-effects": "1.0.1",
- "@azure/communication-chat": ">=1.5.1",
+ "@azure/communication-chat": "1.6.0-beta.3",
+ "@types/react": ">=16.8.0 <19.0.0",
+ "@types/react-dom": ">=16.8.0 <19.0.0",
+ "react": ">=16.8.0 <19.0.0",
+ "react-dom": ">=16.8.0 <19.0.0"
+ }
+ },
+ "node_modules/@azure/communication-react/node_modules/@fluentui/react": {
+ "version": "8.120.5",
+ "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.120.5.tgz",
+ "integrity": "sha512-Ca0zFi0/IkTvthMTyEQSvvUoRahDUa2SCyMMn4h1OzXrVvrap3q8GHfSanYbmRNPQIva+5O8mkvToRYN5UOm+w==",
+ "dependencies": {
+ "@fluentui/date-time-utilities": "^8.6.9",
+ "@fluentui/font-icons-mdl2": "^8.5.50",
+ "@fluentui/foundation-legacy": "^8.4.16",
+ "@fluentui/merge-styles": "^8.6.13",
+ "@fluentui/react-focus": "^8.9.13",
+ "@fluentui/react-hooks": "^8.8.12",
+ "@fluentui/react-portal-compat-context": "^9.0.12",
+ "@fluentui/react-window-provider": "^2.2.28",
+ "@fluentui/set-version": "^8.2.23",
+ "@fluentui/style-utilities": "^8.10.21",
+ "@fluentui/theme": "^2.6.59",
+ "@fluentui/utilities": "^8.15.15",
+ "@microsoft/load-themed-styles": "^1.10.26",
+ "tslib": "^2.1.0"
+ },
+ "peerDependencies": {
"@types/react": ">=16.8.0 <19.0.0",
"@types/react-dom": ">=16.8.0 <19.0.0",
"react": ">=16.8.0 <19.0.0",
@@ -182,9 +209,9 @@
}
},
"node_modules/@azure/communication-signaling": {
- "version": "1.0.0-beta.26",
- "resolved": "https://registry.npmjs.org/@azure/communication-signaling/-/communication-signaling-1.0.0-beta.26.tgz",
- "integrity": "sha512-/GYJ0ycUZEhl04TXPnkID1fl6KAAfjSJBtt0x34PeYS47KhPNpU0GegxHb7U6Ia3TD6r9O4ET1xsUJUD8Jva8Q==",
+ "version": "1.0.0-beta.27",
+ "resolved": "https://registry.npmjs.org/@azure/communication-signaling/-/communication-signaling-1.0.0-beta.27.tgz",
+ "integrity": "sha512-xJbW0FUg1bF+JotpIApG3AXCibS4Z2Pgg4Djp3KHtRwP8Gkttx7+v2MIB7uvyq+JuKbAuIUf4B5w76KNQHqfRw==",
"dependencies": {
"@azure/core-http": "^2.0.0",
"@azure/core-tracing": "1.0.0-preview.13",
@@ -2815,11 +2842,11 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.6.5",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz",
- "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz",
+ "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==",
"dependencies": {
- "@floating-ui/utils": "^0.2.5"
+ "@floating-ui/utils": "^0.2.7"
}
},
"node_modules/@floating-ui/devtools": {
@@ -2831,23 +2858,23 @@
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.6.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.8.tgz",
- "integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==",
+ "version": "1.6.10",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz",
+ "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==",
"dependencies": {
"@floating-ui/core": "^1.6.0",
- "@floating-ui/utils": "^0.2.5"
+ "@floating-ui/utils": "^0.2.7"
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.5.tgz",
- "integrity": "sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ=="
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz",
+ "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA=="
},
"node_modules/@fluentui-contrib/react-chat": {
- "version": "0.1.9",
- "resolved": "https://registry.npmjs.org/@fluentui-contrib/react-chat/-/react-chat-0.1.9.tgz",
- "integrity": "sha512-pE23uQZYTiQ+6pX4Qn1qh+v7dwX7iDprIyigj09nkRlUsj/LyVXFoT4nCMIn0RdSDzQlVoitKxiXliGop8g/LQ==",
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/@fluentui-contrib/react-chat/-/react-chat-0.1.10.tgz",
+ "integrity": "sha512-H4kmeMhSX1h6Rt673ZnJ34rW//VXhYLbsoW5dr+N496UkdEQm1nQRvXInEfdV//+czbzAeYOatE3td+WoPwBUw==",
"dependencies": {
"@fluentui/react-jsx-runtime": ">=9.0.29 < 10.0.0",
"@swc/helpers": "~0.5.1"
@@ -2880,25 +2907,25 @@
}
},
"node_modules/@fluentui/font-icons-mdl2": {
- "version": "8.5.47",
- "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.47.tgz",
- "integrity": "sha512-99d/cjEMz0ik9LnVrEDhZB4CnQavwgBvZuNa/EAaeHZMlQ7eheCzU3PNG4goPC7o4yg7XCNyngA7hEx3RUPUDA==",
+ "version": "8.5.50",
+ "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.50.tgz",
+ "integrity": "sha512-04pRRmuBf9r/3cnBlIedF+SFk2UW7GdRQvdfKxoMuL4dDMLPqo4ruPkI/dz8Mp3EDERQU01XDWtBx11w9obmFQ==",
"dependencies": {
"@fluentui/set-version": "^8.2.23",
- "@fluentui/style-utilities": "^8.10.18",
- "@fluentui/utilities": "^8.15.13",
+ "@fluentui/style-utilities": "^8.10.21",
+ "@fluentui/utilities": "^8.15.15",
"tslib": "^2.1.0"
}
},
"node_modules/@fluentui/foundation-legacy": {
- "version": "8.4.13",
- "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.13.tgz",
- "integrity": "sha512-LIrqiDM0Fe45XLIx/XISwRfcaB5TfoMlkjic7K6goZtssi6VSNEAWjj+V2DOZNUaaFE3J3j61EspoZEKbqGazg==",
+ "version": "8.4.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.16.tgz",
+ "integrity": "sha512-01/uQPQ2pEkQ6nUUF+tXaYeOG8UssfoEgAVLPolYXr1DC4tT66hPi7Smgsh6tzUkt/Ljy0nw9TIMRoHDHlfRyg==",
"dependencies": {
- "@fluentui/merge-styles": "^8.6.12",
+ "@fluentui/merge-styles": "^8.6.13",
"@fluentui/set-version": "^8.2.23",
- "@fluentui/style-utilities": "^8.10.18",
- "@fluentui/utilities": "^8.15.13",
+ "@fluentui/style-utilities": "^8.10.21",
+ "@fluentui/utilities": "^8.15.15",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -2923,9 +2950,9 @@
}
},
"node_modules/@fluentui/merge-styles": {
- "version": "8.6.12",
- "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.12.tgz",
- "integrity": "sha512-v8njux9frUkoGGlBnQXKHaKCX2nLZVHPFMDMzibtAIt4vIkkv+oY2lFmJ2h96tSIkg4eVN7h5sSDTFVoAPwpYg==",
+ "version": "8.6.13",
+ "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.13.tgz",
+ "integrity": "sha512-IWgvi2CC+mcQ7/YlCvRjsmHL2+PUz7q+Pa2Rqk3a+QHN0V1uBvgIbKk5y/Y/awwDXy1yJHiqMCcDHjBNmS1d4A==",
"dependencies": {
"@fluentui/set-version": "^8.2.23",
"tslib": "^2.1.0"
@@ -2940,9 +2967,9 @@
}
},
"node_modules/@fluentui/react": {
- "version": "8.119.3",
- "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.119.3.tgz",
- "integrity": "sha512-sJaFQU7sy8/kZR7ma9Ejqi6GnYFVzYcgSA2DVbvxGoH+edoztXQjro9qaIaUILhtWBUMMcG47DtykgubelhQFw==",
+ "version": "8.120.0",
+ "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.120.0.tgz",
+ "integrity": "sha512-MpsmyRT9F0WA/VzTFTXPjCPOGiuQ5eAS79p7+NGXnVbAjZBi39hoKoiMamN2KMdpUU6SOLSdY6ZslO1BwIpKgg==",
"dependencies": {
"@fluentui/date-time-utilities": "^8.6.9",
"@fluentui/font-icons-mdl2": "^8.5.47",
@@ -2967,18 +2994,18 @@
}
},
"node_modules/@fluentui/react-accordion": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.5.0.tgz",
- "integrity": "sha512-GKkY+626XF+k0oWZV2aI8UBhM3E3KE73udzAvJ18mHVVTZ6fSRvz71ieFA6nR8h5USf0CO8RPgF98iXxaz1LKQ==",
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.5.2.tgz",
+ "integrity": "sha512-3Xhi0Qc+WiYRmuHD1Usn0hDbdYwZP+d9pjhJVYeD/P0KUNnrVoOjPe6jLphT/BU+K4ww2IAdDSHsuShd5v54kg==",
"dependencies": {
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-motion": "^9.3.0",
+ "@fluentui/react-motion": "^9.4.0",
"@fluentui/react-motion-components-preview": "^0.1.1",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3014,14 +3041,14 @@
}
},
"node_modules/@fluentui/react-aria": {
- "version": "9.13.2",
- "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.13.2.tgz",
- "integrity": "sha512-lb93r/FiE3bj1/lfixy/Hb+LW8MQ9HCqdDWLRo1gmP4f3QgIj/Gz7oTB+NilwzytiH4OBDXq0apdUHGLwGkotA==",
+ "version": "9.13.4",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.13.4.tgz",
+ "integrity": "sha512-kFavxrWnOOkScy1Ue7YvnofxjjPzdEROziyApEp7QhyWd8syfNvTZh79WnBza0RBEPvWqExphS95J3vmyM8avA==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-utilities": "^9.18.13",
"@swc/helpers": "^0.5.1"
},
@@ -3033,19 +3060,19 @@
}
},
"node_modules/@fluentui/react-avatar": {
- "version": "9.6.34",
- "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.34.tgz",
- "integrity": "sha512-KojRJFErsutRLIOXJbaWhA/AkiKvQzKpQVBzpvYf1vQu+ZEn90Ng0J8cwGQcqjQ1E9NydrCGO7G3akEcBuaqHg==",
+ "version": "9.6.37",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.37.tgz",
+ "integrity": "sha512-6/5AgZ/s353FhCscFWOiec0j4vJCjHXbWO4F9JDItYDUm0t+egN7rb98LZhAezfapo4GUxdx7ZNpqWy0bZ5GDw==",
"dependencies": {
"@fluentui/react-badge": "^9.2.41",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-popover": "^9.9.16",
+ "@fluentui/react-popover": "^9.9.19",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
- "@fluentui/react-tooltip": "^9.4.35",
+ "@fluentui/react-tooltip": "^9.4.37",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1"
@@ -3078,17 +3105,17 @@
}
},
"node_modules/@fluentui/react-breadcrumb": {
- "version": "9.0.34",
- "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.0.34.tgz",
- "integrity": "sha512-uSMlQme/Rrt6giWJRz5el0soY9GjKsnm8v6b/md1cehivc6FX8iys2Lmk5oJM+m3a2gxKQYr3sp8CvKsyKOGlw==",
+ "version": "9.0.36",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.0.36.tgz",
+ "integrity": "sha512-InuZqcokYVyEjLZWQNXUapBi7ryo8i5q0onNxDEf0J+Qolg3baqRN1jY4cKC4UzjlMJgjr+Vz/+gMIRGNLDIKw==",
"dependencies": {
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-button": "^9.3.87",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-button": "^9.3.89",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-link": "^9.2.28",
+ "@fluentui/react-link": "^9.2.30",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3102,16 +3129,16 @@
}
},
"node_modules/@fluentui/react-button": {
- "version": "9.3.87",
- "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.87.tgz",
- "integrity": "sha512-Di8RWjIswa1jriYfed6FH90fqmTwBkaILWxzJzChaBbUAOtxEYn3K57F+9PS9s05z7PhlDuVnfd2RV0dIrYHtg==",
+ "version": "9.3.89",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.89.tgz",
+ "integrity": "sha512-fliozeCpApuDpevvHLC2rTdhyVymXZHaXSR2cFqgYdYtHrXFE7JbMHVMNAszQCo+T+4uovzKU/SL1z7xMr1VhQ==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3125,13 +3152,13 @@
}
},
"node_modules/@fluentui/react-card": {
- "version": "9.0.88",
- "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.88.tgz",
- "integrity": "sha512-wEvgIonwR1r4e7N+fDxcW5DuBxGUjtOjNhrCqRxVFA1H0WjhLXHpGAlbBzROrCtolHBnv+Xv4ndKPm/ftguA5Q==",
+ "version": "9.0.91",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.91.tgz",
+ "integrity": "sha512-5p1d5hpEnkXNnj7BAvl6pLyvX3bOOY0kFB/gGn32rpFpdxs5vCsGe1qNs2Ju9MlMhSFh7c2mBMHOixc/eD9JiA==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-text": "^9.4.23",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
@@ -3146,16 +3173,16 @@
}
},
"node_modules/@fluentui/react-checkbox": {
- "version": "9.2.33",
- "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.33.tgz",
- "integrity": "sha512-5bccf0H4as8vjQXslFrZhEIosNUUOqpuZ20OLkpoI+NVzVfQtwa4sI8BaSr8oATJU3haXVBxItOa/zOOiBzWvA==",
+ "version": "9.2.35",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.35.tgz",
+ "integrity": "sha512-YK6jYbW/Sg9raJ3uoHUhLO7htEA4VZponhG3vfHg1ss6BHjfArSHHMHLRaHhHmzfeQewoA7A6Y/XDSGLeffXVw==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-label": "^9.1.74",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3169,20 +3196,20 @@
}
},
"node_modules/@fluentui/react-combobox": {
- "version": "9.13.3",
- "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.13.3.tgz",
- "integrity": "sha512-q1B/1e/beA8dkPZS8MV+jHF092W8y0bCdxfTrsnWuapKIXIn0BMPSE04f0aNED8R4yxxZN27y8LR/9EGcWeHtA==",
+ "version": "9.13.5",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.13.5.tgz",
+ "integrity": "sha512-nfhERKiTB73jcVsSJYlX1cXu/Tcd1YE9TrldgIm1Rb79vDlX0WT3hpf4yvHMuPwA6qPGISm8RmYGj6mjs4ucLA==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-context-selector": "^9.1.65",
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-positioning": "^9.15.7",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3196,64 +3223,64 @@
}
},
"node_modules/@fluentui/react-components": {
- "version": "9.54.7",
- "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.54.7.tgz",
- "integrity": "sha512-X7B5rLEsx30bRtHMdNHgWnij+xSMleJg6tyRR9L2nwFaDIf89jaQU1iNDkIgEf4zSXGhBRXAlT0UlYcwcEWZjw==",
+ "version": "9.54.12",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.54.12.tgz",
+ "integrity": "sha512-EwcAPJVVaJCp1UaK8AQ2IZVYJm2cHMYqNGxjXBRlwkzvFJ126xfUuBh0O06SUIUdF5CcbZQRyX3m7bmU4oyNqA==",
"dependencies": {
- "@fluentui/react-accordion": "^9.5.0",
+ "@fluentui/react-accordion": "^9.5.2",
"@fluentui/react-alert": "9.0.0-beta.124",
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-avatar": "^9.6.34",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-avatar": "^9.6.37",
"@fluentui/react-badge": "^9.2.41",
- "@fluentui/react-breadcrumb": "^9.0.34",
- "@fluentui/react-button": "^9.3.87",
- "@fluentui/react-card": "^9.0.88",
- "@fluentui/react-checkbox": "^9.2.33",
- "@fluentui/react-combobox": "^9.13.3",
- "@fluentui/react-dialog": "^9.11.7",
+ "@fluentui/react-breadcrumb": "^9.0.36",
+ "@fluentui/react-button": "^9.3.89",
+ "@fluentui/react-card": "^9.0.91",
+ "@fluentui/react-checkbox": "^9.2.35",
+ "@fluentui/react-combobox": "^9.13.5",
+ "@fluentui/react-dialog": "^9.11.11",
"@fluentui/react-divider": "^9.2.73",
- "@fluentui/react-drawer": "^9.5.7",
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-drawer": "^9.5.11",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-image": "^9.1.71",
"@fluentui/react-infobutton": "9.0.0-beta.102",
- "@fluentui/react-infolabel": "^9.0.41",
- "@fluentui/react-input": "^9.4.84",
+ "@fluentui/react-infolabel": "^9.0.44",
+ "@fluentui/react-input": "^9.4.87",
"@fluentui/react-label": "^9.1.74",
- "@fluentui/react-link": "^9.2.28",
- "@fluentui/react-menu": "^9.14.12",
- "@fluentui/react-message-bar": "^9.2.6",
+ "@fluentui/react-link": "^9.2.30",
+ "@fluentui/react-menu": "^9.14.14",
+ "@fluentui/react-message-bar": "^9.2.9",
"@fluentui/react-motion": "^9.4.0",
- "@fluentui/react-overflow": "^9.1.26",
- "@fluentui/react-persona": "^9.2.93",
- "@fluentui/react-popover": "^9.9.16",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-overflow": "^9.1.28",
+ "@fluentui/react-persona": "^9.2.96",
+ "@fluentui/react-popover": "^9.9.19",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-positioning": "^9.15.7",
- "@fluentui/react-progress": "^9.1.83",
- "@fluentui/react-provider": "^9.17.0",
- "@fluentui/react-radio": "^9.2.28",
- "@fluentui/react-rating": "^9.0.15",
- "@fluentui/react-search": "^9.0.13",
- "@fluentui/react-select": "^9.1.83",
+ "@fluentui/react-progress": "^9.1.85",
+ "@fluentui/react-provider": "^9.17.2",
+ "@fluentui/react-radio": "^9.2.30",
+ "@fluentui/react-rating": "^9.0.17",
+ "@fluentui/react-search": "^9.0.16",
+ "@fluentui/react-select": "^9.1.85",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-skeleton": "^9.1.11",
- "@fluentui/react-slider": "^9.1.90",
- "@fluentui/react-spinbutton": "^9.2.84",
+ "@fluentui/react-skeleton": "^9.1.14",
+ "@fluentui/react-slider": "^9.1.92",
+ "@fluentui/react-spinbutton": "^9.2.86",
"@fluentui/react-spinner": "^9.4.12",
- "@fluentui/react-swatch-picker": "^9.1.6",
- "@fluentui/react-switch": "^9.1.90",
- "@fluentui/react-table": "^9.15.12",
- "@fluentui/react-tabs": "^9.4.27",
- "@fluentui/react-tabster": "^9.22.3",
- "@fluentui/react-tag-picker": "^9.2.4",
- "@fluentui/react-tags": "^9.3.13",
- "@fluentui/react-teaching-popover": "^9.1.12",
+ "@fluentui/react-swatch-picker": "^9.1.8",
+ "@fluentui/react-switch": "^9.1.92",
+ "@fluentui/react-table": "^9.15.15",
+ "@fluentui/react-tabs": "^9.4.30",
+ "@fluentui/react-tabster": "^9.22.5",
+ "@fluentui/react-tag-picker": "^9.3.1",
+ "@fluentui/react-tags": "^9.3.16",
+ "@fluentui/react-teaching-popover": "^9.1.15",
"@fluentui/react-text": "^9.4.23",
- "@fluentui/react-textarea": "^9.3.84",
+ "@fluentui/react-textarea": "^9.3.86",
"@fluentui/react-theme": "^9.1.19",
- "@fluentui/react-toast": "^9.3.51",
- "@fluentui/react-toolbar": "^9.1.91",
- "@fluentui/react-tooltip": "^9.4.35",
- "@fluentui/react-tree": "^9.7.6",
+ "@fluentui/react-toast": "^9.3.53",
+ "@fluentui/react-toolbar": "^9.2.3",
+ "@fluentui/react-tooltip": "^9.4.37",
+ "@fluentui/react-tree": "^9.7.10",
"@fluentui/react-utilities": "^9.18.13",
"@fluentui/react-virtualizer": "9.0.0-alpha.82",
"@griffel/react": "^1.5.22",
@@ -3283,19 +3310,19 @@
}
},
"node_modules/@fluentui/react-dialog": {
- "version": "9.11.7",
- "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.11.7.tgz",
- "integrity": "sha512-g0tcW2X7FyDGifwJU+Q2hX8pgLk+AUYBDK7d0xOyXpWhP/HN920r4E+MlgJhmmpf5hRh3959knZqoyrnG0+GGA==",
+ "version": "9.11.11",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.11.11.tgz",
+ "integrity": "sha512-WuM+a5SmGUciOPK8hl0htdK/I6kvUP5EaFu/amXfwQ89RUwx259vZw6bkAau+TVVvL5bpovH9miWGas4mmpbuQ==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-motion": "^9.4.0",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3328,15 +3355,15 @@
}
},
"node_modules/@fluentui/react-drawer": {
- "version": "9.5.7",
- "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.5.7.tgz",
- "integrity": "sha512-9v755/LWQu76vvdsHiSMj/3XKvjfJT8NFQGHF+qwUj/wXmyW6ZfmVwW1HcwJ1dDMP6yOGBUXS9R56SqLIVGFxQ==",
+ "version": "9.5.11",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.5.11.tgz",
+ "integrity": "sha512-f02BcWXfsKFHQgodlKUslwIs7ZcjO9K/+nnNMGv0XziTMer8JqMDdeohaOkapSBuxKp4CvT4llQwXix+b8MOCg==",
"dependencies": {
- "@fluentui/react-dialog": "^9.11.7",
+ "@fluentui/react-dialog": "^9.11.11",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-motion": "^9.4.0",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3350,9 +3377,9 @@
}
},
"node_modules/@fluentui/react-field": {
- "version": "9.1.72",
- "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.72.tgz",
- "integrity": "sha512-39DsB0nIOU7FdWN7+a8x2RKPaZrAMmsGaz85DOYryzbp8y9bn990BjU8WnhquNABkW2xJNI9gEi0goW/R3tmiQ==",
+ "version": "9.1.74",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.74.tgz",
+ "integrity": "sha512-Z4RJXJ4PP2YnAzz+TWYXv0QcaREV9eW1lv0fcWQKWzmHgOdeIqHruUigteoRaatmOfW6t/SjttTheoV09h/8LA==",
"dependencies": {
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
@@ -3371,12 +3398,12 @@
}
},
"node_modules/@fluentui/react-file-type-icons": {
- "version": "8.11.16",
- "resolved": "https://registry.npmjs.org/@fluentui/react-file-type-icons/-/react-file-type-icons-8.11.16.tgz",
- "integrity": "sha512-ZD2XZ+4XP7bDKHR5oLJ3yUZBe8mxaZEpxoDKZMz9dgZhMc/A+vwDfSeaU8HoHUQ63FqjcqlEh7ipbn11oojeig==",
+ "version": "8.11.18",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-file-type-icons/-/react-file-type-icons-8.11.18.tgz",
+ "integrity": "sha512-Pxu35hrVkr0xXyFZPuRiDsLpqZupbR9SoT5jWLqGkJYX1Iwwvqzq63w6plXw7BIGtkzEbXE1xodJMco6eVEUbg==",
"dependencies": {
"@fluentui/set-version": "^8.2.23",
- "@fluentui/style-utilities": "^8.10.16",
+ "@fluentui/style-utilities": "^8.10.18",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -3385,15 +3412,15 @@
}
},
"node_modules/@fluentui/react-focus": {
- "version": "8.9.10",
- "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.10.tgz",
- "integrity": "sha512-9kV15td8uuYhQS4bTLImxVo75dmbeOK0rZ4gQgOAY/0nKRYwiCLfH9SwQuEa+eCmjsBTNuDlXgghjQJyKFh5+A==",
+ "version": "8.9.13",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.13.tgz",
+ "integrity": "sha512-oUtY4F+tp0RmV0Wr30CoYFdTQEqHWKjU3/dYHPbI0xKH4emLrf8+sc0FAHJdeHH2rx4T1XSA807pm7YB4CQqWw==",
"dependencies": {
"@fluentui/keyboard-key": "^0.4.23",
- "@fluentui/merge-styles": "^8.6.12",
+ "@fluentui/merge-styles": "^8.6.13",
"@fluentui/set-version": "^8.2.23",
- "@fluentui/style-utilities": "^8.10.18",
- "@fluentui/utilities": "^8.15.13",
+ "@fluentui/style-utilities": "^8.10.21",
+ "@fluentui/utilities": "^8.15.15",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -3402,13 +3429,13 @@
}
},
"node_modules/@fluentui/react-hooks": {
- "version": "8.8.10",
- "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.10.tgz",
- "integrity": "sha512-Xvnn6uKMsinMg/zo79KBNCDABnl0gpmArQYNQya9FCNRzvmHUCDvuQCqv4IKslvPvuC0Ya8mR2NORm2w0JoZiw==",
+ "version": "8.8.12",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.12.tgz",
+ "integrity": "sha512-lplre6x5dONjd12D0BWs4LKq4lX++o0w07pIk2XhxikOW1e4Xfjn6VM52WSdtx+tU4rbLUoCA8drN2y/wDvhGg==",
"dependencies": {
- "@fluentui/react-window-provider": "^2.2.27",
+ "@fluentui/react-window-provider": "^2.2.28",
"@fluentui/set-version": "^8.2.23",
- "@fluentui/utilities": "^8.15.13",
+ "@fluentui/utilities": "^8.15.15",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -3417,9 +3444,9 @@
}
},
"node_modules/@fluentui/react-icons": {
- "version": "2.0.252",
- "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.252.tgz",
- "integrity": "sha512-MvvgjRL2Hb0ftQkJwQRqwlNNMUTqh246psL1Xb4DRWZjpxR+CcDY9UxAyIu2Fp6i2/BEWtizIMzo8sxH0e1YRw==",
+ "version": "2.0.253",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.253.tgz",
+ "integrity": "sha512-RYwfILx3hbA+QKtBC9jOuvCUzTQwxDak03NoR6LVEKBSNgTYkwswRCHQH9zUyLhiUQ3z75Jb/UG+xkUwPujiJw==",
"dependencies": {
"@griffel/react": "^1.0.0",
"tslib": "^2.1.0"
@@ -3470,15 +3497,15 @@
}
},
"node_modules/@fluentui/react-infolabel": {
- "version": "9.0.41",
- "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.0.41.tgz",
- "integrity": "sha512-Jp544tDHH+Ss2XsHJy18nQlWA8tv4jKWXR9wwNS8NbKk40mW+KIVV4fbq8fUvD29McHI9vpuAMl5Yfzpcu2hkg==",
+ "version": "9.0.44",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.0.44.tgz",
+ "integrity": "sha512-GWw6UlF0s8HujWaCkGLfnbGaukQycfax7GPe38xVn/TkQp7KPNMgFp1Ag7kwaQtMqDbPIKJeDkaz8kdFziIT9w==",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-label": "^9.1.74",
- "@fluentui/react-popover": "^9.9.16",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-popover": "^9.9.19",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3492,11 +3519,11 @@
}
},
"node_modules/@fluentui/react-input": {
- "version": "9.4.84",
- "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.84.tgz",
- "integrity": "sha512-gl/HRKkxsJKlc9mBcblb6HSUWeqPJTpi2yAjyPMIHxVHOg1RftG3+5xQTcmkXwvFeUEfC/4krEMibsFBXtvwWg==",
+ "version": "9.4.87",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.87.tgz",
+ "integrity": "sha512-rIJEL+/xUrTWVi4CJlaCPyauQRMs3nTNvOuy3vBy3+C4IipTOAEM6cyR3RJUCt5IjKLsxJBTLZWRzwhZhAGx8Q==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
"@fluentui/react-theme": "^9.1.19",
@@ -3545,14 +3572,14 @@
}
},
"node_modules/@fluentui/react-link": {
- "version": "9.2.28",
- "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.2.28.tgz",
- "integrity": "sha512-k1/i8ktTCbztK88YogIt2FYCpJJMFxC4IzXAvpKLioTw6N3ITmxo9KuNNMvOYckGgHyvJliWutu/rSozFXTDmg==",
+ "version": "9.2.30",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.2.30.tgz",
+ "integrity": "sha512-Vgd3x6wyDvG20P6t3j0zXqncy5grkCDV05Gpt6Q77qwqDLNUUpu/DoolgCxVidp91Vlvt6/M9NZAJS4XXDBqTA==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3566,19 +3593,19 @@
}
},
"node_modules/@fluentui/react-menu": {
- "version": "9.14.12",
- "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.14.12.tgz",
- "integrity": "sha512-aBFXf5dtDLctNTb5+VTS7zqZgV3VOv6hEOpf4PmRZiWfw1WAjSwMKdWTWXunqIdd5eOZu9mB7y1RWSoyBrN7Jg==",
+ "version": "9.14.14",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.14.14.tgz",
+ "integrity": "sha512-QBwpi6qUWCNNTdxtn+n/xpzbC4L2stdRnzYedodvby2Q1MQ95RmCFkxjjujJvcF4R5lOxwaNQAoVDtRY6rhxzw==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-positioning": "^9.15.7",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3592,11 +3619,11 @@
}
},
"node_modules/@fluentui/react-message-bar": {
- "version": "9.2.6",
- "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.2.6.tgz",
- "integrity": "sha512-A1OwuzCK9Rce4PHYyPnB56qVMj2bg9Qb9h2qpHrChhz6Giol5Ty45lmmVqEpd/w+lyMC73Sgqyfg2Lucy/p3vw==",
+ "version": "9.2.9",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.2.9.tgz",
+ "integrity": "sha512-r8KN/CECCKzMTSDzN4Iztn+Ta5mXz4LW4E8vYRl8l4LV5/Si5msK2VYAgVAVnIL0KTBDO9XIsXS+zxHl2xwFHw==",
"dependencies": {
- "@fluentui/react-button": "^9.3.87",
+ "@fluentui/react-button": "^9.3.89",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
@@ -3646,9 +3673,9 @@
}
},
"node_modules/@fluentui/react-overflow": {
- "version": "9.1.26",
- "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.1.26.tgz",
- "integrity": "sha512-zrJfbLvxrW10GH+JtRhPclCeV/mxUxSYRsHBpD/RwABaE+L2PR//3QKHXCV7xIlFpNJUpmRbFe71dtb7Eyt2Xw==",
+ "version": "9.1.28",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.1.28.tgz",
+ "integrity": "sha512-J6WDAy22IJTCQAZiIRGn+DEqKnCS2xWHrAz+6F4JwTfjWWdbgTYofIQNTus8p4/vBjw5/ORwCERBkfrRsLBEBQ==",
"dependencies": {
"@fluentui/priority-overflow": "^9.1.13",
"@fluentui/react-context-selector": "^9.1.65",
@@ -3665,11 +3692,11 @@
}
},
"node_modules/@fluentui/react-persona": {
- "version": "9.2.93",
- "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.93.tgz",
- "integrity": "sha512-b/D7LzDC75L2yR3V6d3F3KTs72rGvagIuX7tEVtvs3e0Q6iX3vlJAsZFd/ce4T49gMm9+gbI9TYJlDQmgoBJ+w==",
+ "version": "9.2.96",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.96.tgz",
+ "integrity": "sha512-SG2y8EKKMGdHqJjtilT2uDrlbTDPxrrTjQYRLj8Rlr7P2NT4SkiMpx826eexV6/8ZNcmyn/kvaR5EvlG9SWkbg==",
"dependencies": {
- "@fluentui/react-avatar": "^9.6.34",
+ "@fluentui/react-avatar": "^9.6.37",
"@fluentui/react-badge": "^9.2.41",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
@@ -3686,18 +3713,18 @@
}
},
"node_modules/@fluentui/react-popover": {
- "version": "9.9.16",
- "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.9.16.tgz",
- "integrity": "sha512-edgBJBYXJ8N6LgxH0bKgnMCFp430BpqqOzqf2Ap/0360qo9YbK8oUP2rfh0YZZJKcSC0bro3smcMbFQkq8v/3Q==",
+ "version": "9.9.19",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.9.19.tgz",
+ "integrity": "sha512-iT/UvfwBdtPbYgQC2nNyogrocrhVHKftd30yElDnFN/tz8TIFyIS8Wghxtti0Qmg5bo7H5CQGUU7+wkL/bNI7Q==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-positioning": "^9.15.7",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3711,12 +3738,12 @@
}
},
"node_modules/@fluentui/react-portal": {
- "version": "9.4.31",
- "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.31.tgz",
- "integrity": "sha512-c/mrsn29MvBIxkyYrIAdI9E9JCMicF7mCxpWFbQQZMYKdu4/qLCtkmQfvQKEI9WFQzLS8IzTRM+NajNewUi/nA==",
+ "version": "9.4.33",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.33.tgz",
+ "integrity": "sha512-x+RaGu5ICWgsBXTu2onF34bitZVK362j+9EGqXDpq0FoEb/e3/pFvBW2J2dou+rmviaKhNNprwL29dII8aUPZw==",
"dependencies": {
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
"@swc/helpers": "^0.5.1",
@@ -3762,11 +3789,11 @@
}
},
"node_modules/@fluentui/react-progress": {
- "version": "9.1.83",
- "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.83.tgz",
- "integrity": "sha512-hZGlarZwPhi90LwUsNStEymd/oqHt3Dc8mBm402RHD3XJOhJ+T7k71ROLblZOwm98m2hNJ0lSB3o6FztQlrtsw==",
+ "version": "9.1.85",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.85.tgz",
+ "integrity": "sha512-cHFvJnZ5Em5RKiK4tq8c+ZbPF9JlJJcydE2j/y2aXKtufsCrD0SuNDDjEyCP7UUdJ8FWeoO2Azq3oSsP/VaT7A==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
"@fluentui/react-theme": "^9.1.19",
@@ -3782,14 +3809,14 @@
}
},
"node_modules/@fluentui/react-provider": {
- "version": "9.17.0",
- "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.17.0.tgz",
- "integrity": "sha512-z2nKk8MEDmDivxhcySLhD4xuEuSJgXjO14SjMcLnerAimm3Wftgoayga23cvwGgLmoeqAjG7ykEgLEfAzRDk7A==",
+ "version": "9.17.2",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.17.2.tgz",
+ "integrity": "sha512-0JNFaL6fqDxV0IvXov/QBqJbjuCoGJw8SOE5Fn7X0wORtGpGlR6rJgsccNs4s/hEOlmmnS79d0q3xyyDiGSuUg==",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/core": "^1.16.0",
@@ -3804,15 +3831,15 @@
}
},
"node_modules/@fluentui/react-radio": {
- "version": "9.2.28",
- "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.28.tgz",
- "integrity": "sha512-WoH95UndR6sx+BfBH4MdztHWIodi6smpZekKBUN7Y5YjvD2delCxEDaEn5Ct5qyF3pY6rwlkVTSvmZ+GSC/baQ==",
+ "version": "9.2.30",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.30.tgz",
+ "integrity": "sha512-1FklLprqvi4307PcA0aH0H4LtvtyD0hP/xqvrAP5uZdrBwFxMcbP258E4zmsRcUPAi1bQNUbUOrwe4GuQFjSog==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-label": "^9.1.74",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3826,13 +3853,13 @@
}
},
"node_modules/@fluentui/react-rating": {
- "version": "9.0.15",
- "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.0.15.tgz",
- "integrity": "sha512-fa8rDyvxQplqL234IMThWRVfVj3U7y3LiJcjliZ1YrTNkTVRg/w7LK010625Ased2IOBIWS4YLP1UFBFdxIflw==",
+ "version": "9.0.17",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.0.17.tgz",
+ "integrity": "sha512-nNe/YZXnUFYzCTvAiFMo18X/hpmXFgOQIs8itBbLWUUu0H48dbjO/HQFhd/1aOeEPURc/h+XbozztGDj5LbJNA==",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3846,12 +3873,12 @@
}
},
"node_modules/@fluentui/react-search": {
- "version": "9.0.13",
- "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.0.13.tgz",
- "integrity": "sha512-mg2vI15635/h/9/FffxrVBXrD8AiCRetCISbvNHCgzHMl/1M1C/7HsJnaLj+U6wl3sgBVaWYJgLgyLd8jcc1hg==",
+ "version": "9.0.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.0.16.tgz",
+ "integrity": "sha512-daJUhwD659svOlhT6lvTwmvdFTSN53MmE80btdYYCnahJfBn27OT7askdH7iiqiogI/7VP2+sZnbWANEkd2Zvw==",
"dependencies": {
"@fluentui/react-icons": "^2.0.245",
- "@fluentui/react-input": "^9.4.84",
+ "@fluentui/react-input": "^9.4.87",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
@@ -3866,11 +3893,11 @@
}
},
"node_modules/@fluentui/react-select": {
- "version": "9.1.83",
- "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.83.tgz",
- "integrity": "sha512-vdbkFOtkG3ychVsX1b1nMxsewzu2e+ox+p+rIn2X6hBqa989797VJdhXRRQYMfCs1phSlDL1HCPM1p1s7827Lw==",
+ "version": "9.1.85",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.85.tgz",
+ "integrity": "sha512-4mgCTMoQN68vW+1WjptvIkWmnfdiz0WmyY670dp0JEL5KvMp5WVYIUmXjmR/fP1Nbp0df0BspUDPMrKTS6DEyw==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
@@ -3900,11 +3927,11 @@
}
},
"node_modules/@fluentui/react-skeleton": {
- "version": "9.1.11",
- "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.1.11.tgz",
- "integrity": "sha512-e5Pl8EqclZ2NHAdRtwheFmrNwvynVooem0Hh+w19AZwuukjFDvpdWktJ6mpECtPQyaWgcFb67mO1IbfnQNffqA==",
+ "version": "9.1.14",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.1.14.tgz",
+ "integrity": "sha512-4rSQdV2W98uiK9k3o8ivTaUcpxo9GDyBWkECNCtLYNxvjG1RSpGooNCaT5YlMGWvZYjr0QQy/3KVztY9ZFBYQw==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
"@fluentui/react-theme": "^9.1.19",
@@ -3920,14 +3947,14 @@
}
},
"node_modules/@fluentui/react-slider": {
- "version": "9.1.90",
- "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.90.tgz",
- "integrity": "sha512-k+NppSxPKYji9KqtKbpfo6Lva8g6dO289Hpkt8UAwyuV1c7BxnwgOLfPXE9OyQg28J0vcsluxYXFwsLyRqj/Fg==",
+ "version": "9.1.92",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.1.92.tgz",
+ "integrity": "sha512-MwbvKQRxwSvGWa/6mnb81cN23QsCEWaYfkcmYdLkP9ijf0BFKlMscyv9E3UdbEdZ8WtJEm0gaQ62BTR6wTATOA==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -3941,12 +3968,12 @@
}
},
"node_modules/@fluentui/react-spinbutton": {
- "version": "9.2.84",
- "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.84.tgz",
- "integrity": "sha512-3Zsqk5zYXNrCjAR6wIrwvMMbrKthdXJKQH3Z37LhF+gfRfwq34dyj8N5CFhXYi0bClWRqK3namX2cMXZ7FqIsQ==",
+ "version": "9.2.86",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.86.tgz",
+ "integrity": "sha512-LOgLKBSRsli0zEMSlV+Kqvj3tFs6w7y+VP7dQQ7zPlvhGcm/U9/R5ax/tJ1DC6iRDIUQlNHXpyXITHscilodvA==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
@@ -3983,15 +4010,15 @@
}
},
"node_modules/@fluentui/react-swatch-picker": {
- "version": "9.1.6",
- "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.1.6.tgz",
- "integrity": "sha512-vLpmM2ENFPs+4qemjswfO5gEveUFIqSS/Gu1z7FiBbp/tUNS13rXYQBiUPFCS8xEsQG4gNcozBs9Lejdyean4g==",
+ "version": "9.1.8",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.1.8.tgz",
+ "integrity": "sha512-zlAghHbgHBUiK3CCxebQzbyyGkRc68IIpsSEq0wDZ8D/sSjageBdcveavKLSRChXp4qkdGPnMIMWyHyenl6Z5A==",
"dependencies": {
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4005,16 +4032,16 @@
}
},
"node_modules/@fluentui/react-switch": {
- "version": "9.1.90",
- "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.90.tgz",
- "integrity": "sha512-0xd7vn1o+XsGk4jIkA6mAXJm4HxnFcK2WoQI3NFjsJ1wXdghHZEEV+1YX0bgUUh4DouXfETrQzgZKkF0c1uCFA==",
+ "version": "9.1.92",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.92.tgz",
+ "integrity": "sha512-Rd9vz+R8fniGsSv5yfaRRmc4y6vbnr8pnttQA67Mku5jhbwB2aUFEZ8iL0FOIxyS8RSJEi0yyar96Hn1sMhaAA==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-label": "^9.1.74",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4028,20 +4055,20 @@
}
},
"node_modules/@fluentui/react-table": {
- "version": "9.15.12",
- "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.15.12.tgz",
- "integrity": "sha512-J7oF4szGNhXboobgOeNGMy3F342IJYma76sEQhUN1rZEHpIkJIEfldUtdXlJK72N3RRaNruq26WTpeQFLaT9MQ==",
+ "version": "9.15.15",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.15.15.tgz",
+ "integrity": "sha512-UVYVprXZwx108qzSNwiflqPKuZTvf0r8JFOKFsO65hV3gSeYncOM6FcCdQAHJ2RTpPHQJ4ba+iwJvaaHG4JQ5w==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-avatar": "^9.6.34",
- "@fluentui/react-checkbox": "^9.2.33",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-avatar": "^9.6.37",
+ "@fluentui/react-checkbox": "^9.2.35",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-radio": "^9.2.28",
+ "@fluentui/react-radio": "^9.2.30",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4055,14 +4082,14 @@
}
},
"node_modules/@fluentui/react-tabs": {
- "version": "9.4.27",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.4.27.tgz",
- "integrity": "sha512-aJmaTqXz77neyJpgffdKi9gpLtGQjRZcVcvhR/Ft0ZMC+u8XGkTlrtF0ntZZcnPwzeZ7P2qjMMrdvIyDsaSxMg==",
+ "version": "9.4.30",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.4.30.tgz",
+ "integrity": "sha512-pYGL80Wwg2UCU837+R9ehOuGteeBej2tWbqbERb9cvRdwdbLCdKcbI+Cy9V+ny1zSRZ+U/7ltlmxosP5DiaM+w==",
"dependencies": {
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4076,9 +4103,9 @@
}
},
"node_modules/@fluentui/react-tabster": {
- "version": "9.22.3",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.22.3.tgz",
- "integrity": "sha512-z/icX1sMTHVXJxq2tlNKGM9A9J7RYLgu03vVh+0z4N+Q4k5Oe0HvKFNyi447+R5UEHbWebMEpabbTIox3DuLQw==",
+ "version": "9.22.5",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.22.5.tgz",
+ "integrity": "sha512-ddSy6/v1JLNH09SCXLwSf4ERKHTxcqN/dX8yl18jEk34VxveAXFR5x+0XbO5/8nPBxkdl1LEkTgn5EKH4joDCg==",
"dependencies": {
"@fluentui/react-shared-contexts": "^9.20.0",
"@fluentui/react-theme": "^9.1.19",
@@ -4096,22 +4123,22 @@
}
},
"node_modules/@fluentui/react-tag-picker": {
- "version": "9.2.4",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.2.4.tgz",
- "integrity": "sha512-pApWLCBA/Lpi7WRCyNEAr5Vmye6/WtOHdTpjLTWPb4ymWM1ifXZwHGmD1c7dvukhO4jxWbQHFCz0Jt3ElyoY5Q==",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.3.1.tgz",
+ "integrity": "sha512-XIVmCRWxRGV35cXivKdA4OMI8ND4l7nRUK0VzlAb7rDESc4fzAhhao5YuB4JwAUHrfagP8aCmH7V8NRS0a9J4g==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-combobox": "^9.13.3",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-combobox": "^9.13.5",
"@fluentui/react-context-selector": "^9.1.65",
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-positioning": "^9.15.7",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
- "@fluentui/react-tags": "^9.3.13",
+ "@fluentui/react-tabster": "^9.22.5",
+ "@fluentui/react-tags": "^9.3.16",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4125,17 +4152,17 @@
}
},
"node_modules/@fluentui/react-tags": {
- "version": "9.3.13",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.3.13.tgz",
- "integrity": "sha512-Q+vY6q8HecNIPH0VQ8nIIcInBFScfGvG+5VZkCV+LOQ/QLY7AhXt/dJPsx0nFJXhoxSrTXyPYm908RdBsfnv8A==",
+ "version": "9.3.16",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.3.16.tgz",
+ "integrity": "sha512-NESGP9hUOmN3fqfKtAe2/fWc/Buvyt6cbp3eNgLUsZq9J1lwn4cnHBvEfvAJVv4fd8qwb8W2UTJ57/jrtISy4w==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-avatar": "^9.6.34",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-avatar": "^9.6.37",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4149,18 +4176,18 @@
}
},
"node_modules/@fluentui/react-teaching-popover": {
- "version": "9.1.12",
- "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.1.12.tgz",
- "integrity": "sha512-bzZQWZRgOWGNbohu0MKIbjQkQiosgBBetBvUrJZiQsV3Dw8rKuU1TyRBNbLuSyA0AOGPR0NHQBkbCkfnMgnKBQ==",
+ "version": "9.1.15",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.1.15.tgz",
+ "integrity": "sha512-pDTTL/xHr/pb+D/5UeYirTaxlTRqBwquc1GjvtibaxXrTgIfDfs/20HkgB5EPtPa7o6z2gd0OoByfseD0EgMwg==",
"dependencies": {
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-button": "^9.3.87",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-button": "^9.3.89",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-popover": "^9.9.16",
+ "@fluentui/react-popover": "^9.9.19",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4194,11 +4221,11 @@
}
},
"node_modules/@fluentui/react-textarea": {
- "version": "9.3.84",
- "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.84.tgz",
- "integrity": "sha512-ORBGHRX4rJMo3CMVt459KJucPSIo5liedQjs5Uzlp5eJsWuWQdWj0j9bKf34wNc3kD+ciyDrjGI4xSgaRd30OQ==",
+ "version": "9.3.86",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.86.tgz",
+ "integrity": "sha512-ZUDXTiaFxIico7n14yVStNa3emLrm3one3HWTwpifr2vBuZtDHczShn+5E4rfHIZZfB0p0i0o2sX/gUBldVi6w==",
"dependencies": {
- "@fluentui/react-field": "^9.1.72",
+ "@fluentui/react-field": "^9.1.74",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-shared-contexts": "^9.20.0",
"@fluentui/react-theme": "^9.1.19",
@@ -4223,18 +4250,18 @@
}
},
"node_modules/@fluentui/react-toast": {
- "version": "9.3.51",
- "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.51.tgz",
- "integrity": "sha512-msbIdN1x4XlifDDxaoV54aQ+dCjIVH7l9J37mG98ySrjP1F+QpDcaZ87xPb0Cpfg/oUkdvsK6FCeCl6HrWIGWA==",
+ "version": "9.3.53",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.53.tgz",
+ "integrity": "sha512-iF3FEXL8zf0eNANgejfAsXAbfY4UdpvyopU06ZShY2qIdyFHps2qmzdxAXcM/2NTWjDebsBj9MUF2XKgQ20Ifg==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
+ "@fluentui/react-aria": "^9.13.4",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
"@fluentui/react-motion": "^9.4.0",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4248,17 +4275,17 @@
}
},
"node_modules/@fluentui/react-toolbar": {
- "version": "9.1.91",
- "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.1.91.tgz",
- "integrity": "sha512-mkrtSd95uT2udBgHZXseAtSSziqm6BB0nRi4NEoXvRj9fbJTTP54Xb/HM6LZYEp+cxzcbNLPvKQzNw+Sh3VHow==",
+ "version": "9.2.3",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.2.3.tgz",
+ "integrity": "sha512-6cXvalIkqTG0Rc8KojLGv16ah4lhyYOCPzdmZr6L55yGr2AZujkc31DIOv/nWMQmubZP0yXKN9jX+uC79xyi9w==",
"dependencies": {
- "@fluentui/react-button": "^9.3.87",
+ "@fluentui/react-button": "^9.3.89",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-divider": "^9.2.73",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-radio": "^9.2.28",
+ "@fluentui/react-radio": "^9.2.30",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4272,16 +4299,16 @@
}
},
"node_modules/@fluentui/react-tooltip": {
- "version": "9.4.35",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.4.35.tgz",
- "integrity": "sha512-UgFRwNaOYCgMv88ds5kBZY6NPsj5eH5RYSw09WsXPpeow84eDSovH4iAW3iduDYThoFIYdJc4cUuhn49f131zQ==",
+ "version": "9.4.37",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.4.37.tgz",
+ "integrity": "sha512-Tk8a3W+8UBu0y1vAfLNU/OPWXuoDgX3Kts6ml8bZAKmKbq5M9OlnoXA7rOEU2IV7LWHTw25mkqUpPebjW4zpRw==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-portal": "^9.4.31",
+ "@fluentui/react-portal": "^9.4.33",
"@fluentui/react-positioning": "^9.15.7",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4295,21 +4322,23 @@
}
},
"node_modules/@fluentui/react-tree": {
- "version": "9.7.6",
- "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.7.6.tgz",
- "integrity": "sha512-AaOziw3wZ5yTGXs7cGIblR2noqVP2O785/0ZUFdMj0DredAfU7m2coIFrj64xa2W7FvVOueiUcGU8LBRzXarpQ==",
+ "version": "9.7.10",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.7.10.tgz",
+ "integrity": "sha512-F6NYPwTe+NQZHqVJFRyqi+UeXCuUbE9RdtrDl06G8jD0HorbAbmnIBfg22nT5HX8+27l3BtEvfZUIEa7cWn8+w==",
"dependencies": {
"@fluentui/keyboard-keys": "^9.0.7",
- "@fluentui/react-aria": "^9.13.2",
- "@fluentui/react-avatar": "^9.6.34",
- "@fluentui/react-button": "^9.3.87",
- "@fluentui/react-checkbox": "^9.2.33",
+ "@fluentui/react-aria": "^9.13.4",
+ "@fluentui/react-avatar": "^9.6.37",
+ "@fluentui/react-button": "^9.3.89",
+ "@fluentui/react-checkbox": "^9.2.35",
"@fluentui/react-context-selector": "^9.1.65",
"@fluentui/react-icons": "^2.0.245",
"@fluentui/react-jsx-runtime": "^9.0.42",
- "@fluentui/react-radio": "^9.2.28",
+ "@fluentui/react-motion": "^9.4.0",
+ "@fluentui/react-motion-components-preview": "^0.1.1",
+ "@fluentui/react-radio": "^9.2.30",
"@fluentui/react-shared-contexts": "^9.20.0",
- "@fluentui/react-tabster": "^9.22.3",
+ "@fluentui/react-tabster": "^9.22.5",
"@fluentui/react-theme": "^9.1.19",
"@fluentui/react-utilities": "^9.18.13",
"@griffel/react": "^1.5.22",
@@ -4355,9 +4384,9 @@
}
},
"node_modules/@fluentui/react-window-provider": {
- "version": "2.2.27",
- "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.27.tgz",
- "integrity": "sha512-Dg0G9bizjryV0Q/r0CPtCVTPa2II/EsT9E6JT3jPSALjQADDLlW4/+ZXbcEC7geZ/40+KpZDmhplvk/AJSFBKg==",
+ "version": "2.2.28",
+ "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.28.tgz",
+ "integrity": "sha512-YdZ74HTaoDwlvLDzoBST80/17ExIl93tLJpTxnqK5jlJOAUVQ+mxLPF2HQEJq+SZr5IMXHsQ56w/KaZVRn72YA==",
"dependencies": {
"@fluentui/set-version": "^8.2.23",
"tslib": "^2.1.0"
@@ -4376,26 +4405,26 @@
}
},
"node_modules/@fluentui/style-utilities": {
- "version": "8.10.18",
- "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.10.18.tgz",
- "integrity": "sha512-nsXc6LI/UaPrJUh71WIqR19+mmfPl0b4qhaBUOzBGznGKU8jKlHT94pJbAIhWIjytdS8Zk8qtgStI+oYMxz9xg==",
+ "version": "8.10.21",
+ "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.10.21.tgz",
+ "integrity": "sha512-tqdSQI1MAnNUPtNKKV9LeNqmEhBZL+lpV+m6Ngl6SDuR0aQkMkuo1jA9rPxNRLUf5+pbI8LrNQ4WiCWqYkV/QQ==",
"dependencies": {
- "@fluentui/merge-styles": "^8.6.12",
+ "@fluentui/merge-styles": "^8.6.13",
"@fluentui/set-version": "^8.2.23",
- "@fluentui/theme": "^2.6.56",
- "@fluentui/utilities": "^8.15.13",
+ "@fluentui/theme": "^2.6.59",
+ "@fluentui/utilities": "^8.15.15",
"@microsoft/load-themed-styles": "^1.10.26",
"tslib": "^2.1.0"
}
},
"node_modules/@fluentui/theme": {
- "version": "2.6.56",
- "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.56.tgz",
- "integrity": "sha512-uUDfZpye7e+oXpmP0DOboBYKlyAxbLamnVdWs1a7l6fWEqTNfwDPIPZpMkdDmIBTjE6Q9eHP1u1PmQpMSlz0wA==",
+ "version": "2.6.59",
+ "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.59.tgz",
+ "integrity": "sha512-o/6UgKgPW6QI/+2OfCXeJfcOCbtzLIwM/3W/DzI2Pjt56ubT98IEcb32NCHoIKB2xkEnJoTjGgN1m+vHAvcQxA==",
"dependencies": {
- "@fluentui/merge-styles": "^8.6.12",
+ "@fluentui/merge-styles": "^8.6.13",
"@fluentui/set-version": "^8.2.23",
- "@fluentui/utilities": "^8.15.13",
+ "@fluentui/utilities": "^8.15.15",
"tslib": "^2.1.0"
},
"peerDependencies": {
@@ -4412,13 +4441,13 @@
}
},
"node_modules/@fluentui/utilities": {
- "version": "8.15.13",
- "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.13.tgz",
- "integrity": "sha512-DrPv5baKHYtwB+OFqtGiOucdHFbqbnW7TSyxigADYkZQzJj1lnw5DoEGsVyMMVacD4vR21L3JfkMmfrhWm6hyw==",
+ "version": "8.15.15",
+ "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.15.tgz",
+ "integrity": "sha512-7GpET/AuWR8aBEQSQj9iO2j+9riAaoK1qBduCB4Ht6353d25vwwsKXreHZGqS8efv+NNIxQTlLWz0Rq73iQFWw==",
"dependencies": {
"@fluentui/dom-utilities": "^2.3.7",
- "@fluentui/merge-styles": "^8.6.12",
- "@fluentui/react-window-provider": "^2.2.27",
+ "@fluentui/merge-styles": "^8.6.13",
+ "@fluentui/react-window-provider": "^2.2.28",
"@fluentui/set-version": "^8.2.23",
"tslib": "^2.1.0"
},
diff --git a/ui-library-quickstart-ui-components/package.json b/ui-library-quickstart-ui-components/package.json
index 94325f14..bb399b9d 100644
--- a/ui-library-quickstart-ui-components/package.json
+++ b/ui-library-quickstart-ui-components/package.json
@@ -3,10 +3,10 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@azure/communication-calling": "^1.20.1",
- "@azure/communication-chat": "^1.4.0",
- "@azure/communication-react": "^1.18.1",
- "@fluentui/react": "8.119.3",
+ "@azure/communication-calling": "1.28.1-beta.2",
+ "@azure/communication-chat": "1.6.0-beta.3",
+ "@azure/communication-react": "1.19.0-beta.1",
+ "@fluentui/react": "8.120.0",
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
diff --git a/ui-library-quickstart-ui-components/src/CallingComponents.tsx b/ui-library-quickstart-ui-components/src/CallingComponents.tsx
index 8fe4598a..52147290 100644
--- a/ui-library-quickstart-ui-components/src/CallingComponents.tsx
+++ b/ui-library-quickstart-ui-components/src/CallingComponents.tsx
@@ -11,11 +11,11 @@ import {
VideoTile
} from '@azure/communication-react';
-import { IContextualMenuProps, mergeStyles, Stack } from '@fluentui/react';
+import { mergeStyles, Stack } from '@fluentui/react';
import React, { useState } from 'react';
export const CallingComponents = (): JSX.Element => {
- const exampleOptionsMenuProps: IContextualMenuProps = {
+ const exampleOptionsMenuProps = {
items: [
{
key: '1',
diff --git a/ui-library-quickstart-ui-components/src/ChatComponents.tsx b/ui-library-quickstart-ui-components/src/ChatComponents.tsx
index 484f7339..7960c1bf 100644
--- a/ui-library-quickstart-ui-components/src/ChatComponents.tsx
+++ b/ui-library-quickstart-ui-components/src/ChatComponents.tsx
@@ -4,13 +4,22 @@ import {
SendBox,
MessageStatus,
MessageContentType,
- DEFAULT_COMPONENT_ICONS
+ DEFAULT_COMPONENT_ICONS,
+ RichTextSendBox
} from '@azure/communication-react';
import React, { useEffect } from 'react';
import { registerIcons } from '@fluentui/react';
export const ChatComponents = (): JSX.Element => {
+ /**
+ * By default, the `richTextEditorEnabled` is set to false,
+ * which means the plain text editor will be used for the SendBox component and the MessageThread component's edit function.
+ * Change this value to true to use the Rich Text Editor instead,
+ * which provides rich text formatting, table inserting etc.
+ */
+ const richTextEditorEnabled = false
+
useEffect(() => {
registerIcons({ icons: DEFAULT_COMPONENT_ICONS });
}, [])
@@ -55,20 +64,47 @@ export const ChatComponents = (): JSX.Element => {
];
};
- return (
-
- {/* Chat thread component with message status indicator feature enabled */}
-
+ const getSendBoxComponent = () => {
+ if (richTextEditorEnabled) {
+ return (
+
{
+ return;
+ }}
+ onInsertInlineImage={() => {
+ return
+ }}
+ />
+ )
+ }
+ return (
{
- return;
- }}
- onTyping={async () => {
- return;
- }}
+ disabled={false}
+ onSendMessage={async () => {
+ return;
+ }}
+ onTyping={async () => {
+ return;
+ }}
+ />
+ )
+ }
+
+ return (
+
+ {/* Chat thread component with message status indicator feature enabled */}
+ {
+ return
+ }
+ } : undefined}
/>
+ {getSendBoxComponent()}
);
-};
\ No newline at end of file
+};
diff --git a/ui-library-starting-with-chat-stateful/README.md b/ui-library-starting-with-chat-stateful/README.md
index d75c228a..8327ed28 100644
--- a/ui-library-starting-with-chat-stateful/README.md
+++ b/ui-library-starting-with-chat-stateful/README.md
@@ -28,3 +28,15 @@ Open your browser to ` http://localhost:3000`. You should see the following:

Feel free to style the composites to your desired size and layout inside of your application.
+
+## Enable Rich Text Editor
+ By default, this Quickstart is using the plain text editor for the SendBox component and the MessageThread component's edit function.
+ We also provide a Rich Text Editor for rich text formatting, table inserting etc.
+ To try it out:
+ - Go to the `src` folder and find the `ChatComponentsStateful.tsx` file.
+ - Change the value for `richTextEditorEnabled` to true.
+ Note that inserting inline images is not enabled for this Quickstart.
+ Please use the [ui-library-quickstart-teams-interop-meeting-chat](https://github.com/Azure-Samples/communication-services-javascript-quickstarts/tree/main/ui-library-quickstart-teams-interop-meeting-chat) Quickstart to try out the inline image inserting function.
+
+Open your browser to `http://localhost:3000`. You should see the following with the Rich Text Editor enabled:
+
diff --git a/ui-library-starting-with-chat-stateful/package-lock.json b/ui-library-starting-with-chat-stateful/package-lock.json
index 0fa4b0ac..8358041d 100644
--- a/ui-library-starting-with-chat-stateful/package-lock.json
+++ b/ui-library-starting-with-chat-stateful/package-lock.json
@@ -8,9 +8,9 @@
"name": "ui-library-starting-with-chat-stateful",
"version": "0.1.0",
"dependencies": {
- "@azure/communication-calling": "1.28.1-beta.2",
+ "@azure/communication-calling": "1.30.1-beta.1",
"@azure/communication-chat": "1.6.0-beta.3",
- "@azure/communication-react": "1.19.0-beta.1",
+ "@azure/communication-react": "1.20.0-beta.1",
"@fluentui/react": "8.101.0",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^11.2.7",
@@ -24,6 +24,9 @@
"react-scripts": "5.0.1",
"typescript": "^4.6.3",
"web-vitals": "^2.1.4"
+ },
+ "devDependencies": {
+ "@playwright/test": "^1.47.1"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -74,10 +77,9 @@
}
},
"node_modules/@azure/communication-calling": {
- "version": "1.28.1-beta.2",
- "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.28.1-beta.2.tgz",
- "integrity": "sha512-DyQqMgBnP3hu24cYJ6m7NjoxdIO2t41oil2CHAXSKmSDAwBhjX4I4zPw7xiWMy43pHZoZORxWN1gWkt7BmWVjQ==",
- "license": "Microsoft Software License Terms for the Azure Communications Services, Azure CPaaS, ACS Software Development Kit SDK, see LICENSE file",
+ "version": "1.30.1-beta.1",
+ "resolved": "https://registry.npmjs.org/@azure/communication-calling/-/communication-calling-1.30.1-beta.1.tgz",
+ "integrity": "sha512-vGb2qCn6MWv2npLAYGHelhRXcT8knHiA1Gx/zuoBjJ55lkwMicI1TphUeyMfZMNyfEewbhNf/3WLUVz7rhgoGg==",
"dependencies": {
"@azure/communication-common": "^2.3.0",
"@azure/logger": "^1.0.3"
@@ -135,10 +137,9 @@
}
},
"node_modules/@azure/communication-react": {
- "version": "1.19.0-beta.1",
- "resolved": "https://registry.npmjs.org/@azure/communication-react/-/communication-react-1.19.0-beta.1.tgz",
- "integrity": "sha512-Wp/rACGXyE9oixfOGTNrUri3eEMgAdt/wP4GO6BVZNxTNZDmUwJG+HhdTGQ1ERCWd3FXs0WUeXM8l+EvWfoy+w==",
- "license": "MIT",
+ "version": "1.20.0-beta.1",
+ "resolved": "https://registry.npmjs.org/@azure/communication-react/-/communication-react-1.20.0-beta.1.tgz",
+ "integrity": "sha512-HRqLahQFPOo8PIuROlh9+xkeeXyEb4tmniG5xsBk1KPAPN3+J+1rpF0HImKDB2GrvDRIF4nA3Sk4hOHaRuW1iA==",
"dependencies": {
"@azure/communication-common": "^2.3.1",
"@azure/core-paging": "^1.5.0",
@@ -151,6 +152,7 @@
"@fluentui/react-icons": "^2.0.252",
"@fluentui/react-window-provider": "^2.2.27",
"@griffel/react": "^1.5.25",
+ "@types/events": "^3.0.3",
"copy-to-clipboard": "^3.3.1",
"dompurify": "^3.1.6",
"events": "^3.3.0",
@@ -161,17 +163,17 @@
"react-linkify": "^1.0.0-alpha",
"react-use-draggable-scroll": "^0.4.7",
"reselect": "^4.0.0",
- "roosterjs-content-model-api": "^9.9.0",
- "roosterjs-content-model-core": "^9.9.0",
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-plugins": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-api": "^9.9.1",
+ "roosterjs-content-model-core": "^9.9.1",
+ "roosterjs-content-model-dom": "^9.9.1",
+ "roosterjs-content-model-plugins": "^9.9.1",
+ "roosterjs-content-model-types": "^9.9.1",
"textarea-caret-ts": "^4.1.1",
"use-debounce": "^10.0.2",
"uuid": "^9.0.0"
},
"peerDependencies": {
- "@azure/communication-calling": "1.28.1-beta.2",
+ "@azure/communication-calling": "1.30.1-beta.1",
"@azure/communication-calling-effects": "1.0.1",
"@azure/communication-chat": "1.6.0-beta.3",
"@types/react": ">=16.8.0 <19.0.0",
@@ -5251,6 +5253,22 @@
"node": ">=14"
}
},
+ "node_modules/@playwright/test": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.1.tgz",
+ "integrity": "sha512-dbWpcNQZ5nj16m+A5UNScYx7HX5trIy7g4phrcitn+Nk83S32EBX/CLU4hiF4RGKX/yRc93AAqtfaXB7JWBd4Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright": "1.47.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@pmmmwh/react-refresh-webpack-plugin": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz",
@@ -5897,6 +5915,11 @@
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
+ "node_modules/@types/events": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.3.tgz",
+ "integrity": "sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g=="
+ },
"node_modules/@types/express": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
@@ -14130,6 +14153,53 @@
"node": ">=4"
}
},
+ "node_modules/playwright": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.1.tgz",
+ "integrity": "sha512-SUEKi6947IqYbKxRiqnbUobVZY4bF1uu+ZnZNJX9DfU1tlf2UhWfvVjLf01pQx9URsOr18bFVUKXmanYWhbfkw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.47.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.1.tgz",
+ "integrity": "sha512-i1iyJdLftqtt51mEk6AhYFaAJCDx0xQ/O5NU8EKaWFgMjItPVma542Nh/Aq8aLCjIJSzjaiEQGW/nyqLkGF1OQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/possible-typed-array-names": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
@@ -16277,54 +16347,54 @@
}
},
"node_modules/roosterjs-content-model-api": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-api/-/roosterjs-content-model-api-9.9.0.tgz",
- "integrity": "sha512-W8dzYFUUtVQyLW1KJRTWxN7CpfHP+bV2iYWORBTeTPtT/lhOEKssVa0njK8nfDJKOGEju1wiFSD0ZCwU+Hf6EQ==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-api/-/roosterjs-content-model-api-9.10.0.tgz",
+ "integrity": "sha512-AUul5ZBGxnFeR60ArXCyBI/IPAqEeZb/Jpp3MNy0PHYi9OeXrXmmWFsH2JH8ht+8IveBuM+xzktuBbLXRqi79g==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-dom": "^9.10.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-core": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-core/-/roosterjs-content-model-core-9.9.0.tgz",
- "integrity": "sha512-ZYGCyoKwLgJg3tliz7LgKrKfBhv6X+X1xrrAt+S2WVrCc+0cPjN5Dc7m8R/pwWclo0r67OWQPb2IfNennzWxdw==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-core/-/roosterjs-content-model-core-9.10.0.tgz",
+ "integrity": "sha512-7U8vbuW1nitnxNkn2GchrVmjbxu+TwMvIkvhkO1TIRWOQ6eczkdvH0a5XPscPrmaaNvhMsVzhEuZw+1jmhijbQ==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-dom": "^9.10.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-dom": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-dom/-/roosterjs-content-model-dom-9.9.0.tgz",
- "integrity": "sha512-yn6d7CZREYG2FQD98v+uTlXzJI1o+uaGKnqEcwx7qg8CnKIj33MKVnuwXeibJ4WOjhM8tWqf2/UR5gPZxIatjA==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-dom/-/roosterjs-content-model-dom-9.10.0.tgz",
+ "integrity": "sha512-2dk/ZvEsR96OVOcKDVyGbx8+t5ZyYjXbpgjNc2h9c+rhk61XWWDJ23u2vKRUMtI6Qv6CwpeBrdjzJSIa3Moi9g==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-plugins": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-plugins/-/roosterjs-content-model-plugins-9.9.0.tgz",
- "integrity": "sha512-/fwHdrxPLyodkFBMS15R4E2poHeESGZR2GeJJEWdl53P5s029v5gj+gwj/cHscGxN/GA816CZfEOkl4SQy0EGQ==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-plugins/-/roosterjs-content-model-plugins-9.10.0.tgz",
+ "integrity": "sha512-KXnfYexu+UEsrSR9JNfXxRzK7e6l8evzQv/kcVH2kxVnWyIczwOBsbSa8c02H7+VykNOlLGH+vH3cqMGj1qG4w==",
"license": "MIT",
"dependencies": {
- "roosterjs-content-model-api": "^9.9.0",
- "roosterjs-content-model-core": "^9.9.0",
- "roosterjs-content-model-dom": "^9.9.0",
- "roosterjs-content-model-types": "^9.9.0",
+ "roosterjs-content-model-api": "^9.10.0",
+ "roosterjs-content-model-core": "^9.10.0",
+ "roosterjs-content-model-dom": "^9.10.0",
+ "roosterjs-content-model-types": "^9.10.0",
"tslib": "^2.3.1"
}
},
"node_modules/roosterjs-content-model-types": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/roosterjs-content-model-types/-/roosterjs-content-model-types-9.9.0.tgz",
- "integrity": "sha512-M82Xt7y2cWottI6HZ7lZ8hW2vHBhghVxTTswA2oYbo5pWGOkLG4RKYu0ANzjvlbd0Cg+HW39QL8ETTOORh78Hg==",
+ "version": "9.10.0",
+ "resolved": "https://registry.npmjs.org/roosterjs-content-model-types/-/roosterjs-content-model-types-9.10.0.tgz",
+ "integrity": "sha512-SsRgMUEWW9F8btNbQt6ZvR2ukBVVi9ZfQ49fhIK8xgUHkZSdB/NSmVuQOjkrV8VyYvHLAwEMVXeMYbGmVVpnHQ==",
"license": "MIT"
},
"node_modules/rtl-css-js": {
diff --git a/ui-library-starting-with-chat-stateful/package.json b/ui-library-starting-with-chat-stateful/package.json
index b82a456d..e80feaee 100644
--- a/ui-library-starting-with-chat-stateful/package.json
+++ b/ui-library-starting-with-chat-stateful/package.json
@@ -3,9 +3,9 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@azure/communication-calling": "1.28.1-beta.2",
+ "@azure/communication-calling": "1.30.1-beta.1",
"@azure/communication-chat": "1.6.0-beta.3",
- "@azure/communication-react": "1.19.0-beta.1",
+ "@azure/communication-react": "1.20.0-beta.1",
"@fluentui/react": "8.101.0",
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^11.2.7",
@@ -20,11 +20,15 @@
"typescript": "^4.6.3",
"web-vitals": "^2.1.4"
},
+ "devDependencies": {
+ "@playwright/test": "^1.47.1"
+ },
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
- "eject": "react-scripts eject"
+ "eject": "react-scripts eject",
+ "test:e2e": "playwright test"
},
"eslintConfig": {
"extends": [
diff --git a/ui-library-starting-with-chat-stateful/playwright.config.ts b/ui-library-starting-with-chat-stateful/playwright.config.ts
new file mode 100644
index 00000000..cd19f799
--- /dev/null
+++ b/ui-library-starting-with-chat-stateful/playwright.config.ts
@@ -0,0 +1,62 @@
+import { defineConfig, devices } from "@playwright/test";
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+export default defineConfig({
+ testDir: "./tests",
+ /* Run tests in files in parallel */
+ fullyParallel: true,
+ /* Fail the build on CI if you accidentally left test.only in the source code. */
+ forbidOnly: !!process.env.CI,
+ /* Retry on CI only */
+ retries: process.env.CI ? 2 : 0,
+ /* Opt out of parallel tests on CI. */
+ workers: process.env.CI ? 1 : undefined,
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
+ // reporter: "html",
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
+ use: {
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ // baseURL: 'http://127.0.0.1:3000',
+
+ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
+ trace: "on-first-retry",
+ baseURL: "http://localhost:3000/",
+ headless: false,
+ },
+
+ /* Configure projects for major browsers */
+ projects: [
+ // {
+ // name: "chromium",
+ // use: { ...devices["Desktop Chrome"] },
+ // },
+
+ // {
+ // name: "firefox",
+ // use: { ...devices["Desktop Firefox"] },
+ // },
+
+ // {
+ // name: "webkit",
+ // use: { ...devices["Desktop Safari"] },
+ // },
+
+ /* Test against branded browsers. */
+ {
+ name: "Microsoft Edge",
+ use: { ...devices["Desktop Edge"], channel: "msedge" },
+ },
+ ],
+
+ /* Run your local dev server before starting the tests */
+ webServer: {
+ command: "npm run start",
+ port: 3000,
+ reuseExistingServer: false,
+ timeout: 120 * 1000,
+ // uncomment to see more logs
+ // stdout: "pipe",
+ },
+});
diff --git a/ui-library-starting-with-chat-stateful/src/App.tsx b/ui-library-starting-with-chat-stateful/src/App.tsx
index c1e97c1c..1d74ae8a 100644
--- a/ui-library-starting-with-chat-stateful/src/App.tsx
+++ b/ui-library-starting-with-chat-stateful/src/App.tsx
@@ -1,41 +1,39 @@
-import { AzureCommunicationTokenCredential } from '@azure/communication-common';
+import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import {
createStatefulChatClient,
FluentThemeProvider,
ChatClientProvider,
ChatThreadClientProvider,
- DEFAULT_COMPONENT_ICONS
-} from '@azure/communication-react';
-import React from 'react';
-import ChatComponents from './ChatComponentsStateful';
-import { initializeIcons, registerIcons } from '@fluentui/react';
+ DEFAULT_COMPONENT_ICONS,
+} from "@azure/communication-react";
+import React from "react";
+import ChatComponents from "./ChatComponentsStateful";
+import { initializeIcons, registerIcons } from "@fluentui/react";
initializeIcons();
registerIcons({ icons: DEFAULT_COMPONENT_ICONS });
function App(): JSX.Element {
- const endpointUrl = '';
- const token = '';
- const userId = '';
- const threadId = '';
- const displayName = '';
+ const ENDPOINT_URL = "";
+ const TOKEN = "";
+ const USER_ID = "";
+ const THREAD_ID = "";
+ const DISPLAY_NAME = "";
-
- const tokenCredential = new AzureCommunicationTokenCredential(token);
+ const tokenCredential = new AzureCommunicationTokenCredential(TOKEN);
//Instantiate the statefulChatClient
const statefulChatClient = createStatefulChatClient({
- userId: { communicationUserId: userId },
- displayName: displayName,
- endpoint: endpointUrl,
- credential: tokenCredential
+ userId: { communicationUserId: USER_ID },
+ displayName: DISPLAY_NAME,
+ endpoint: ENDPOINT_URL,
+ credential: tokenCredential,
});
- const chatThreadClient = statefulChatClient.getChatThreadClient(threadId);
+ const chatThreadClient = statefulChatClient.getChatThreadClient(THREAD_ID);
//Listen to notifications
statefulChatClient.startRealtimeNotifications();
-
return (
@@ -47,4 +45,4 @@ function App(): JSX.Element {
);
}
-export default App;
\ No newline at end of file
+export default App;
diff --git a/ui-library-starting-with-chat-stateful/src/ChatComponentsStateful.tsx b/ui-library-starting-with-chat-stateful/src/ChatComponentsStateful.tsx
index fbf5039a..b43aa734 100644
--- a/ui-library-starting-with-chat-stateful/src/ChatComponentsStateful.tsx
+++ b/ui-library-starting-with-chat-stateful/src/ChatComponentsStateful.tsx
@@ -1,18 +1,39 @@
-import { usePropsFor, MessageThread, SendBox } from '@azure/communication-react';
-import React from 'react';
+import { usePropsFor, MessageThread, SendBox, RichTextSendBox } from '@azure/communication-react';
function ChatComponents(): JSX.Element {
const messageThreadProps = usePropsFor(MessageThread);
const sendBoxProps = usePropsFor(SendBox);
+/**
+ * By default, the `richTextEditorEnabled` is set to false,
+ * which means the plain text editor will be used for the SendBox component and the MessageThread component's edit function.
+ * Change this value to true to use the Rich Text Editor instead,
+ * which provides rich text formatting, table inserting etc.
+ * Note that inserting inline images is not enabled for this Quickstart.
+ * Please use the `ui-library-quickstart-teams-interop-meeting-chat` Quickstart to try out the inline image inserting function.
+ * https://github.com/Azure-Samples/communication-services-javascript-quickstarts/tree/main/ui-library-quickstart-teams-interop-meeting-chat
+ */
+ const richTextEditorEnabled = false
+
+ const getSendBoxComponent = () => {
+ if (richTextEditorEnabled) {
+ return sendBoxProps &&
+
+ } else {
+ return sendBoxProps &&
+ }
+ }
+
return (
-
-
+
+
{/*Props are updated asynchronously, so only render the component once props are populated.*/}
- {messageThreadProps && }
+ { messageThreadProps && }
-
- {sendBoxProps &&
}
+
+ {getSendBoxComponent()}
);
diff --git a/ui-library-starting-with-chat-stateful/tests/StartApp.spec.ts b/ui-library-starting-with-chat-stateful/tests/StartApp.spec.ts
new file mode 100644
index 00000000..3fd34613
--- /dev/null
+++ b/ui-library-starting-with-chat-stateful/tests/StartApp.spec.ts
@@ -0,0 +1,21 @@
+import { test } from "@playwright/test";
+
+test("Start the app", async ({ page, context, browser }) => {
+ // set timeout to 10 minutes
+ test.setTimeout(10 * 60 * 1000);
+
+ await page.goto("http://localhost:3000/");
+ // Create a locator that matches both the textarea and the contentEditable component
+ const input = page.locator('textarea, [contenteditable="true"]').first();
+ await input.click();
+ await input.fill(`${new Date()} - Test`);
+ await page.getByLabel("Send message").click();
+
+ // the test will work until the page is closed
+ await new Promise((resolve) => {
+ page.on("close", resolve);
+ });
+
+ await context.close();
+ await browser.close();
+});