mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-07 19:46:53 +00:00
Compare commits
3 Commits
users/sind
...
copilot_re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06973bd3d5 | ||
|
|
44667beba9 | ||
|
|
0566f19e87 |
@@ -53,9 +53,4 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
settings: {
|
|
||||||
react: {
|
|
||||||
version: "detect",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|||||||
80
.github/workflows/ci.yml
vendored
80
.github/workflows/ci.yml
vendored
@@ -14,11 +14,11 @@ jobs:
|
|||||||
name: "Log Code Metrics"
|
name: "Log Code Metrics"
|
||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/master'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: node utils/codeMetrics.js
|
- run: node utils/codeMetrics.js
|
||||||
env:
|
env:
|
||||||
@@ -27,11 +27,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: "Compile TypeScript"
|
name: "Compile TypeScript"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run compile
|
- run: npm run compile
|
||||||
- run: npm run compile:strict
|
- run: npm run compile:strict
|
||||||
@@ -39,44 +39,44 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: "Check Format"
|
name: "Check Format"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run format:check
|
- run: npm run format:check
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: "Lint"
|
name: "Lint"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run lint
|
- run: npm run lint
|
||||||
unittest:
|
unittest:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: "Unit Tests"
|
name: "Unit Tests"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run test
|
- run: npm run test
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: "Build"
|
name: "Build"
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm run build:contracts
|
- run: npm run build:contracts
|
||||||
- name: Restore Build Cache
|
- name: Restore Build Cache
|
||||||
@@ -86,10 +86,10 @@ jobs:
|
|||||||
key: ${{ runner.os }}-build-cache
|
key: ${{ runner.os }}-build-cache
|
||||||
- run: npm run pack:prod
|
- run: npm run pack:prod
|
||||||
env:
|
env:
|
||||||
NODE_OPTIONS: "--max-old-space-size=4096"
|
NODE_OPTIONS: '--max-old-space-size=4096'
|
||||||
- run: cp -r ./Contracts ./dist/contracts
|
- run: cp -r ./Contracts ./dist/contracts
|
||||||
- run: cp -r ./configs ./dist/configs
|
- run: cp -r ./configs ./dist/configs
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
path: dist/
|
path: dist/
|
||||||
@@ -107,11 +107,11 @@ jobs:
|
|||||||
if: false
|
if: false
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- uses: southpolesteve/cosmos-emulator-github-action@v1
|
- uses: southpolesteve/cosmos-emulator-github-action@v1
|
||||||
- name: End to End Tests
|
- name: End to End Tests
|
||||||
run: |
|
run: |
|
||||||
@@ -124,7 +124,7 @@ jobs:
|
|||||||
DATA_EXPLORER_ENDPOINT: "https://localhost:1234/explorer.html?platform=Emulator"
|
DATA_EXPLORER_ENDPOINT: "https://localhost:1234/explorer.html?platform=Emulator"
|
||||||
PLATFORM: "Emulator"
|
PLATFORM: "Emulator"
|
||||||
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v2
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
name: screenshots
|
name: screenshots
|
||||||
@@ -149,11 +149,11 @@ jobs:
|
|||||||
- ./test/sql/resourceToken.spec.ts
|
- ./test/sql/resourceToken.spec.ts
|
||||||
- ./test/tables/container.spec.ts
|
- ./test/tables/container.spec.ts
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm start &
|
- run: npm start &
|
||||||
- run: npm run wait-for-server
|
- run: npm run wait-for-server
|
||||||
@@ -162,7 +162,7 @@ jobs:
|
|||||||
# Run tests up to three times
|
# Run tests up to three times
|
||||||
for i in $(seq 1 3); do npx jest -c ./jest.config.playwright.js ${{ matrix['test-file'] }} && s=0 && break || s=$? && sleep 1; done; (exit $s)
|
for i in $(seq 1 3); do npx jest -c ./jest.config.playwright.js ${{ matrix['test-file'] }} && s=0 && break || s=$? && sleep 1; done; (exit $s)
|
||||||
shell: bash
|
shell: bash
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v2
|
||||||
if: failure()
|
if: failure()
|
||||||
with:
|
with:
|
||||||
name: screenshots
|
name: screenshots
|
||||||
@@ -180,14 +180,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
nuget-api-key: ${{ secrets.NUGET_API_KEY }}
|
nuget-api-key: ${{ secrets.NUGET_API_KEY }}
|
||||||
- name: Download Dist Folder
|
- name: Download Dist Folder
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
- run: cp ./configs/prod.json config.json
|
- run: cp ./configs/prod.json config.json
|
||||||
- run: nuget sources add -Name "ADO" -Source "$NUGET_SOURCE" -UserName "jawelton@microsoft.com" -Password "$AZURE_DEVOPS_PAT"
|
- run: nuget sources add -Name "ADO" -Source "$NUGET_SOURCE" -UserName "jawelton@microsoft.com" -Password "$AZURE_DEVOPS_PAT"
|
||||||
- run: nuget pack -Version "2.0.0-github-${GITHUB_SHA}"
|
- run: nuget pack -Version "2.0.0-github-${GITHUB_SHA}"
|
||||||
- run: nuget push -SkipDuplicate -Source "$NUGET_SOURCE" -ApiKey Az *.nupkg
|
- run: nuget push -SkipDuplicate -Source "$NUGET_SOURCE" -ApiKey Az *.nupkg
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v2
|
||||||
name: packages
|
name: packages
|
||||||
with:
|
with:
|
||||||
path: "*.nupkg"
|
path: "*.nupkg"
|
||||||
@@ -204,7 +204,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
nuget-api-key: ${{ secrets.NUGET_API_KEY }}
|
nuget-api-key: ${{ secrets.NUGET_API_KEY }}
|
||||||
- name: Download Dist Folder
|
- name: Download Dist Folder
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: dist
|
name: dist
|
||||||
- run: cp ./configs/mpac.json config.json
|
- run: cp ./configs/mpac.json config.json
|
||||||
@@ -212,7 +212,7 @@ jobs:
|
|||||||
- run: nuget sources add -Name "ADO" -Source "$NUGET_SOURCE" -UserName "jawelton@microsoft.com" -Password "$AZURE_DEVOPS_PAT"
|
- run: nuget sources add -Name "ADO" -Source "$NUGET_SOURCE" -UserName "jawelton@microsoft.com" -Password "$AZURE_DEVOPS_PAT"
|
||||||
- run: nuget pack -Version "2.0.0-github-${GITHUB_SHA}"
|
- run: nuget pack -Version "2.0.0-github-${GITHUB_SHA}"
|
||||||
- run: nuget push -SkipDuplicate -Source "$NUGET_SOURCE" -ApiKey Az *.nupkg
|
- run: nuget push -SkipDuplicate -Source "$NUGET_SOURCE" -ApiKey Az *.nupkg
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v2
|
||||||
name: packages
|
name: packages
|
||||||
with:
|
with:
|
||||||
path: "*.nupkg"
|
path: "*.nupkg"
|
||||||
|
|||||||
4
.github/workflows/cleanup.yml
vendored
4
.github/workflows/cleanup.yml
vendored
@@ -20,9 +20,9 @@ jobs:
|
|||||||
NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET: ${{ secrets.NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET }}
|
NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET: ${{ secrets.NOTEBOOKS_TEST_RUNNER_CLIENT_SECRET }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Use Node.js 18.x
|
- name: Use Node.js 14.x
|
||||||
uses: actions/setup-node@v1
|
uses: actions/setup-node@v1
|
||||||
with:
|
with:
|
||||||
node-version: 18.x
|
node-version: 14.x
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: node utils/cleanupDBs.js
|
- run: node utils/cleanupDBs.js
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 160 B |
Binary file not shown.
|
Before Width: | Height: | Size: 148 B |
Binary file not shown.
|
Before Width: | Height: | Size: 201 B |
Binary file not shown.
|
Before Width: | Height: | Size: 158 B |
Binary file not shown.
|
Before Width: | Height: | Size: 146 B |
@@ -147,7 +147,6 @@
|
|||||||
|
|
||||||
// CommandBar
|
// CommandBar
|
||||||
@CommandBarButtonHeight: 40px;
|
@CommandBarButtonHeight: 40px;
|
||||||
@FabricCommandBarButtonHeight: 34px;
|
|
||||||
|
|
||||||
/**********************************************************************************
|
/**********************************************************************************
|
||||||
Portal Consts
|
Portal Consts
|
||||||
@@ -165,7 +164,7 @@
|
|||||||
@FabricFont: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
|
@FabricFont: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
|
||||||
|
|
||||||
@FabricBoxBorderRadius: 8px;
|
@FabricBoxBorderRadius: 8px;
|
||||||
@FabricBoxBorderShadow: rgba(0, 0, 0, 0.133) 0px 1.6px 3.6px 0px, rgba(0, 0, 0, 0.11) 0px 0.3px 0.9px 0px;
|
@FabricBoxBorderShadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.14);
|
||||||
@FabricBoxMargin: 4px 3px 4px 3px;
|
@FabricBoxMargin: 4px 3px 4px 3px;
|
||||||
|
|
||||||
@FabricAccentMediumHigh: #0c695a;
|
@FabricAccentMediumHigh: #0c695a;
|
||||||
|
|||||||
@@ -1179,16 +1179,16 @@ menuQuickStart {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#tbodycontent tr.gridRowSelected {
|
.gridRowSelected {
|
||||||
.active();
|
.active();
|
||||||
}
|
}
|
||||||
|
|
||||||
#tbodycontent tr.gridRowSelected:hover {
|
.gridRowSelected:hover {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
.hover();
|
.hover();
|
||||||
}
|
}
|
||||||
|
|
||||||
#tbodycontent tr.gridRowHighlighted {
|
.gridRowHighlighted {
|
||||||
border-style: dotted;
|
border-style: dotted;
|
||||||
border-width: 2px;
|
border-width: 2px;
|
||||||
}
|
}
|
||||||
@@ -2576,10 +2576,9 @@ a:link {
|
|||||||
.querydropdown.placeholderVisible {
|
.querydropdown.placeholderVisible {
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
.querydropdown.placeholderVisible::placeholder {
|
.querydropdown.placeholderVisible::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
|
||||||
/* Chrome, Firefox, Opera, Safari 10.1+ */
|
|
||||||
color: #767474;
|
color: #767474;
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.querydropdown:hover {
|
.querydropdown:hover {
|
||||||
@@ -2649,7 +2648,7 @@ a:link {
|
|||||||
|
|
||||||
.nav-tabs > li.active > .tabNavContentContainer > .tab_Content > .tabNavText {
|
.nav-tabs > li.active > .tabNavContentContainer > .tab_Content > .tabNavText {
|
||||||
font-weight: bolder;
|
font-weight: bolder;
|
||||||
border-bottom: 2px solid rgba(0, 120, 212, 1);
|
border-bottom: 2px solid rgba(0,120,212,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-tabs > li.active:focus > .tabNavContentContainer {
|
.nav-tabs > li.active:focus > .tabNavContentContainer {
|
||||||
@@ -2897,21 +2896,9 @@ a:link {
|
|||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.settingsSectionInlineCheckbox {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row-reverse;
|
|
||||||
justify-content: flex-end;
|
|
||||||
align-items: center;
|
|
||||||
gap: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.settingsSectionLabel {
|
.settingsSectionLabel {
|
||||||
margin-bottom: @DefaultSpace;
|
margin-bottom: @DefaultSpace;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
|
|
||||||
.panelInfoIcon {
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.pageOptionsPart {
|
.pageOptionsPart {
|
||||||
@@ -3109,3 +3096,4 @@ a:link {
|
|||||||
background: white;
|
background: white;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,15 +47,11 @@ a:focus {
|
|||||||
border-radius: @FabricBoxBorderRadius;
|
border-radius: @FabricBoxBorderRadius;
|
||||||
box-shadow: @FabricBoxBorderShadow;
|
box-shadow: @FabricBoxBorderShadow;
|
||||||
margin: @FabricBoxMargin;
|
margin: @FabricBoxMargin;
|
||||||
margin-top: 0px;
|
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
padding: 0px;
|
|
||||||
height: 40px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.dividerContainer {
|
.dividerContainer {
|
||||||
padding: @SmallSpace 0px @SmallSpace 0px;
|
padding: @SmallSpace 0px @SmallSpace 0px;
|
||||||
height: @FabricCommandBarButtonHeight;
|
|
||||||
.flex-display();
|
.flex-display();
|
||||||
|
|
||||||
span {
|
span {
|
||||||
|
|||||||
52181
package-lock.json
generated
52181
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
84
package.json
84
package.json
@@ -5,19 +5,19 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/arm-cosmosdb": "9.1.0",
|
"@azure/arm-cosmosdb": "9.1.0",
|
||||||
"@azure/cosmos": "4.0.0",
|
"@azure/cosmos": "3.16.2",
|
||||||
"@azure/cosmos-language-service": "0.0.5",
|
"@azure/cosmos-language-service": "0.0.5",
|
||||||
"@azure/identity": "1.2.1",
|
"@azure/identity": "1.2.1",
|
||||||
"@azure/ms-rest-nodeauth": "3.0.7",
|
"@azure/ms-rest-nodeauth": "3.0.7",
|
||||||
"@azure/msal-browser": "2.14.2",
|
"@azure/msal-browser": "2.14.2",
|
||||||
"@babel/plugin-proposal-class-properties": "7.12.1",
|
"@babel/plugin-proposal-class-properties": "7.12.1",
|
||||||
"@babel/plugin-proposal-decorators": "7.12.12",
|
"@babel/plugin-proposal-decorators": "7.12.12",
|
||||||
"@fluentui/react": "8.112.1",
|
"@fluentui/react": "8.14.3",
|
||||||
"@fluentui/react-components": "9.34.0",
|
"@fluentui/react-components": "9.32.1",
|
||||||
"@jupyterlab/services": "6.0.2",
|
"@jupyterlab/services": "6.0.2",
|
||||||
"@jupyterlab/terminal": "3.0.3",
|
"@jupyterlab/terminal": "3.0.3",
|
||||||
"@microsoft/applicationinsights-web": "2.6.1",
|
"@microsoft/applicationinsights-web": "2.6.1",
|
||||||
"@nteract/commutable": "7.5.1",
|
"@nteract/commutable": "7.4.2",
|
||||||
"@nteract/connected-components": "6.8.2",
|
"@nteract/connected-components": "6.8.2",
|
||||||
"@nteract/core": "15.1.0",
|
"@nteract/core": "15.1.0",
|
||||||
"@nteract/data-explorer": "8.0.3",
|
"@nteract/data-explorer": "8.0.3",
|
||||||
@@ -49,20 +49,20 @@
|
|||||||
"applicationinsights": "1.8.0",
|
"applicationinsights": "1.8.0",
|
||||||
"bootstrap": "3.4.1",
|
"bootstrap": "3.4.1",
|
||||||
"canvas": "file:./canvas",
|
"canvas": "file:./canvas",
|
||||||
"clean-webpack-plugin": "4.0.0",
|
"clean-webpack-plugin": "3.0.0",
|
||||||
"clipboard-copy": "4.0.1",
|
"clipboard-copy": "4.0.1",
|
||||||
"copy-webpack-plugin": "11.0.0",
|
"copy-webpack-plugin": "9.0.1",
|
||||||
"crossroads": "0.12.2",
|
"crossroads": "0.12.2",
|
||||||
"css-element-queries": "1.1.1",
|
"css-element-queries": "1.1.1",
|
||||||
"d3": "6.1.1",
|
"d3": "6.1.1",
|
||||||
"datatables.net-colreorder-dt": "1.7.0",
|
"datatables.net-colreorder-dt": "1.5.1",
|
||||||
"datatables.net-dt": "1.13.8",
|
"datatables.net-dt": "1.10.19",
|
||||||
"date-fns": "1.29.0",
|
"date-fns": "1.29.0",
|
||||||
"dayjs": "1.8.19",
|
"dayjs": "1.8.19",
|
||||||
"dom-to-image": "2.6.0",
|
"dom-to-image": "2.6.0",
|
||||||
"dotenv": "8.2.0",
|
"dotenv": "8.2.0",
|
||||||
"eslint-plugin-jest": "27.4.2",
|
"eslint-plugin-jest": "23.13.2",
|
||||||
"eslint-plugin-react": "7.33.2",
|
"eslint-plugin-react": "7.20.0",
|
||||||
"hasher": "1.2.0",
|
"hasher": "1.2.0",
|
||||||
"html2canvas": "1.0.0-rc.5",
|
"html2canvas": "1.0.0-rc.5",
|
||||||
"i18next": "19.8.4",
|
"i18next": "19.8.4",
|
||||||
@@ -71,15 +71,14 @@
|
|||||||
"iframe-resizer-react": "1.1.0",
|
"iframe-resizer-react": "1.1.0",
|
||||||
"immutable": "4.0.0-rc.12",
|
"immutable": "4.0.0-rc.12",
|
||||||
"is-ci": "2.0.0",
|
"is-ci": "2.0.0",
|
||||||
"jquery": "3.7.1",
|
"jquery": "3.5.1",
|
||||||
"jquery-typeahead": "2.11.1",
|
"jquery-typeahead": "2.10.6",
|
||||||
"jquery-ui-dist": "1.13.2",
|
"jquery-ui-dist": "1.12.1",
|
||||||
"knockout": "3.5.1",
|
"knockout": "3.5.1",
|
||||||
"mkdirp": "1.0.4",
|
"mkdirp": "1.0.4",
|
||||||
"monaco-editor": "0.44.0",
|
"monaco-editor": "0.18.1",
|
||||||
"ms": "2.1.3",
|
"ms": "2.1.3",
|
||||||
"patch-package": "8.0.0",
|
"p-retry": "4.2.0",
|
||||||
"p-retry": "4.6.2",
|
|
||||||
"plotly.js-cartesian-dist-min": "1.52.3",
|
"plotly.js-cartesian-dist-min": "1.52.3",
|
||||||
"post-robot": "10.0.42",
|
"post-robot": "10.0.42",
|
||||||
"q": "1.5.1",
|
"q": "1.5.1",
|
||||||
@@ -87,20 +86,21 @@
|
|||||||
"react-animate-height": "2.0.8",
|
"react-animate-height": "2.0.8",
|
||||||
"react-dnd": "14.0.2",
|
"react-dnd": "14.0.2",
|
||||||
"react-dnd-html5-backend": "14.0.0",
|
"react-dnd-html5-backend": "14.0.0",
|
||||||
"react-dom": "16.14.0",
|
"react-dom": "16.13.1",
|
||||||
"react-hotkeys": "2.0.0",
|
"react-hotkeys": "2.0.0",
|
||||||
"react-i18next": "11.8.5",
|
"react-i18next": "11.8.5",
|
||||||
"react-notification-system": "0.2.17",
|
"react-notification-system": "0.2.17",
|
||||||
"react-redux": "7.1.3",
|
"react-redux": "7.1.3",
|
||||||
"react-splitter-layout": "4.0.0",
|
"react-splitter-layout": "4.0.0",
|
||||||
"react-string-format": "1.0.1",
|
|
||||||
"react-youtube": "9.0.1",
|
"react-youtube": "9.0.1",
|
||||||
|
"redux": "4.0.4",
|
||||||
"reflect-metadata": "0.1.13",
|
"reflect-metadata": "0.1.13",
|
||||||
"rx-jupyter": "5.5.12",
|
"rx-jupyter": "5.5.12",
|
||||||
|
"rxjs": "6.6.3",
|
||||||
"sanitize-html": "2.3.3",
|
"sanitize-html": "2.3.3",
|
||||||
"styled-components": "5.0.1",
|
"styled-components": "4.3.2",
|
||||||
"swr": "0.4.0",
|
"swr": "0.4.0",
|
||||||
"terser-webpack-plugin": "5.3.9",
|
"terser-webpack-plugin": "5.1.4",
|
||||||
"underscore": "1.9.1",
|
"underscore": "1.9.1",
|
||||||
"utility-types": "3.10.0",
|
"utility-types": "3.10.0",
|
||||||
"zustand": "3.5.0"
|
"zustand": "3.5.0"
|
||||||
@@ -115,14 +115,11 @@
|
|||||||
"@types/codemirror": "0.0.56",
|
"@types/codemirror": "0.0.56",
|
||||||
"@types/crossroads": "0.0.30",
|
"@types/crossroads": "0.0.30",
|
||||||
"@types/d3": "5.9.2",
|
"@types/d3": "5.9.2",
|
||||||
"@types/datatables.net": "1.10.28",
|
|
||||||
"@types/datatables.net-colreorder": "1.4.5",
|
|
||||||
"@types/dom-to-image": "2.6.2",
|
"@types/dom-to-image": "2.6.2",
|
||||||
"@types/enzyme": "3.10.7",
|
"@types/enzyme": "3.10.7",
|
||||||
"@types/enzyme-adapter-react-16": "1.0.6",
|
"@types/enzyme-adapter-react-16": "1.0.6",
|
||||||
"@types/hasher": "0.0.31",
|
"@types/hasher": "0.0.31",
|
||||||
"@types/jest": "26.0.20",
|
"@types/jest": "26.0.20",
|
||||||
"@types/jquery": "3.5.29",
|
|
||||||
"@types/node": "12.11.1",
|
"@types/node": "12.11.1",
|
||||||
"@types/post-robot": "10.0.1",
|
"@types/post-robot": "10.0.1",
|
||||||
"@types/q": "1.5.1",
|
"@types/q": "1.5.1",
|
||||||
@@ -136,62 +133,61 @@
|
|||||||
"@types/styled-components": "5.1.1",
|
"@types/styled-components": "5.1.1",
|
||||||
"@types/underscore": "1.7.36",
|
"@types/underscore": "1.7.36",
|
||||||
"@types/youtube-player": "5.5.6",
|
"@types/youtube-player": "5.5.6",
|
||||||
"@typescript-eslint/eslint-plugin": "6.7.4",
|
"@typescript-eslint/eslint-plugin": "4.22.0",
|
||||||
"@typescript-eslint/parser": "6.7.4",
|
"@typescript-eslint/parser": "4.22.0",
|
||||||
"@webpack-cli/serve": "2.0.5",
|
"@webpack-cli/serve": "1.5.2",
|
||||||
"babel-jest": "24.9.0",
|
"babel-jest": "24.9.0",
|
||||||
"babel-loader": "8.1.0",
|
"babel-loader": "8.1.0",
|
||||||
"buffer": "5.1.0",
|
"buffer": "5.1.0",
|
||||||
"case-sensitive-paths-webpack-plugin": "2.4.0",
|
"case-sensitive-paths-webpack-plugin": "2.3.0",
|
||||||
"create-file-webpack": "1.0.2",
|
"create-file-webpack": "1.0.2",
|
||||||
"css-loader": "6.8.1",
|
"css-loader": "1.0.0",
|
||||||
"enzyme": "3.11.0",
|
"enzyme": "3.11.0",
|
||||||
"enzyme-adapter-react-16": "1.15.5",
|
"enzyme-adapter-react-16": "1.15.5",
|
||||||
"enzyme-to-json": "3.6.1",
|
"enzyme-to-json": "3.6.1",
|
||||||
"eslint": "8.50.0",
|
"eslint": "7.8.1",
|
||||||
"eslint-cli": "1.1.1",
|
"eslint-cli": "1.1.1",
|
||||||
"eslint-plugin-no-null": "1.0.2",
|
"eslint-plugin-no-null": "1.0.2",
|
||||||
"eslint-plugin-prefer-arrow": "1.2.3",
|
"eslint-plugin-prefer-arrow": "1.2.2",
|
||||||
"eslint-plugin-react-hooks": "4.6.0",
|
"eslint-plugin-react-hooks": "4.2.0",
|
||||||
"expect-playwright": "0.3.3",
|
"expect-playwright": "0.3.3",
|
||||||
"fast-glob": "3.2.5",
|
"fast-glob": "3.2.5",
|
||||||
|
"file-loader": "2.0.0",
|
||||||
"fs-extra": "7.0.0",
|
"fs-extra": "7.0.0",
|
||||||
"html-inline-css-webpack-plugin": "1.11.2",
|
"html-inline-css-webpack-plugin": "1.11.0",
|
||||||
"html-loader": "0.5.5",
|
"html-loader": "0.5.5",
|
||||||
"html-loader-jest": "0.2.1",
|
"html-loader-jest": "0.2.1",
|
||||||
"html-webpack-plugin": "5.5.3",
|
"html-webpack-plugin": "5.3.2",
|
||||||
"jest": "26.6.3",
|
"jest": "26.6.3",
|
||||||
"jest-canvas-mock": "2.3.1",
|
"jest-canvas-mock": "2.3.1",
|
||||||
"jest-playwright-preset": "1.5.1",
|
"jest-playwright-preset": "1.5.1",
|
||||||
"jest-react-hooks-shallow": "1.5.1",
|
"jest-react-hooks-shallow": "1.5.1",
|
||||||
"jest-trx-results-processor": "0.0.7",
|
"jest-trx-results-processor": "0.0.7",
|
||||||
"less": "3.8.1",
|
"less": "3.8.1",
|
||||||
"less-loader": "11.1.3",
|
"less-loader": "4.1.0",
|
||||||
"less-vars-loader": "1.1.0",
|
"less-vars-loader": "1.1.0",
|
||||||
"mini-css-extract-plugin": "2.1.0",
|
"mini-css-extract-plugin": "2.1.0",
|
||||||
"monaco-editor-webpack-plugin": "7.1.0",
|
"monaco-editor-webpack-plugin": "1.7.0",
|
||||||
"node-fetch": "2.6.1",
|
"node-fetch": "2.6.1",
|
||||||
"playwright": "1.13.0",
|
"playwright": "1.13.0",
|
||||||
"prettier": "3.0.3",
|
"prettier": "3.0.3",
|
||||||
"process": "0.11.10",
|
"process": "0.11.10",
|
||||||
"querystring-es3": "0.2.1",
|
|
||||||
"raw-loader": "0.5.1",
|
"raw-loader": "0.5.1",
|
||||||
"react-dev-utils": "11.0.4",
|
"react-dev-utils": "11.0.4",
|
||||||
"rimraf": "3.0.0",
|
"rimraf": "3.0.0",
|
||||||
"sinon": "3.2.1",
|
"sinon": "3.2.1",
|
||||||
"style-loader": "0.23.0",
|
"style-loader": "0.23.0",
|
||||||
"ts-loader": "9.2.4",
|
"ts-loader": "9.2.4",
|
||||||
"typedoc": "0.21.5",
|
"typedoc": "0.20.36",
|
||||||
"typescript": "4.3.5",
|
"typescript": "4.3.4",
|
||||||
"url-loader": "4.1.1",
|
"url-loader": "1.1.1",
|
||||||
"wait-on": "4.0.2",
|
"wait-on": "4.0.2",
|
||||||
"webpack": "5.88.2",
|
"webpack": "5.47.0",
|
||||||
"webpack-bundle-analyzer": "4.9.1",
|
"webpack-bundle-analyzer": "4.4.2",
|
||||||
"webpack-cli": "5.1.4",
|
"webpack-cli": "4.7.2",
|
||||||
"webpack-dev-server": "4.15.1"
|
"webpack-dev-server": "3.11.2"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "patch-package",
|
|
||||||
"start": "webpack serve --mode development",
|
"start": "webpack serve --mode development",
|
||||||
"dev": "echo \"WARNING: npm run dev has been deprecated\" && npm run build",
|
"dev": "echo \"WARNING: npm run dev has been deprecated\" && npm run build",
|
||||||
"build:dataExplorer:ci": "npm run build:ci",
|
"build:dataExplorer:ci": "npm run build:ci",
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
diff --git a/node_modules/datatables.net-colreorder/types/types.d.ts b/node_modules/datatables.net-colreorder/types/types.d.ts
|
|
||||||
index e5dc283..1930c2b 100644
|
|
||||||
--- a/node_modules/datatables.net-colreorder/types/types.d.ts
|
|
||||||
+++ b/node_modules/datatables.net-colreorder/types/types.d.ts
|
|
||||||
@@ -7,7 +7,7 @@
|
|
||||||
|
|
||||||
/// <reference types="jquery" />
|
|
||||||
|
|
||||||
-import DataTables, {Api} from 'datatables.net';
|
|
||||||
+import DataTables, { Api } from 'datatables.net';
|
|
||||||
|
|
||||||
export default DataTables;
|
|
||||||
|
|
||||||
@@ -40,6 +40,8 @@ declare module 'datatables.net' {
|
|
||||||
/**
|
|
||||||
* Create a new ColReorder instance for the target DataTable
|
|
||||||
*/
|
|
||||||
+ // Ignore this error: error TS7013: Construct signature, which lacks return-type annotation, implicitly has an 'any' return type.
|
|
||||||
+ // @ts-ignore
|
|
||||||
new (dt: Api<any>, settings: boolean | ConfigColReorder);
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -145,9 +145,6 @@ export class Queries {
|
|||||||
public static QueryEditorMinHeightRatio: number = 0.1;
|
public static QueryEditorMinHeightRatio: number = 0.1;
|
||||||
public static QueryEditorMaxHeightRatio: number = 0.4;
|
public static QueryEditorMaxHeightRatio: number = 0.4;
|
||||||
public static readonly DefaultMaxDegreeOfParallelism = 6;
|
public static readonly DefaultMaxDegreeOfParallelism = 6;
|
||||||
public static readonly DefaultRetryAttempts = 9;
|
|
||||||
public static readonly DefaultRetryIntervalInMs = 0;
|
|
||||||
public static readonly DefaultMaxWaitTimeInSeconds = 30;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class SavedQueries {
|
export class SavedQueries {
|
||||||
@@ -174,7 +171,6 @@ export class Areas {
|
|||||||
public static Tab: string = "Tab";
|
public static Tab: string = "Tab";
|
||||||
public static ShareDialog: string = "Share Access Dialog";
|
public static ShareDialog: string = "Share Access Dialog";
|
||||||
public static Notebook: string = "Notebook";
|
public static Notebook: string = "Notebook";
|
||||||
public static Copilot: string = "Copilot";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class HttpHeaders {
|
export class HttpHeaders {
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ describe("requestPlugin", () => {
|
|||||||
const headers = {};
|
const headers = {};
|
||||||
const endpoint = "https://docs.azure.com";
|
const endpoint = "https://docs.azure.com";
|
||||||
const path = "/dbs/foo";
|
const path = "/dbs/foo";
|
||||||
requestPlugin({ endpoint, headers, path } as any, undefined, next as any);
|
requestPlugin({ endpoint, headers, path } as any, next as any);
|
||||||
expect(next.mock.calls[0][0]).toMatchSnapshot();
|
expect(next.mock.calls[0][0]).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -137,7 +137,7 @@ describe("requestPlugin", () => {
|
|||||||
const headers = {};
|
const headers = {};
|
||||||
const endpoint = "";
|
const endpoint = "";
|
||||||
const path = "/dbs/foo";
|
const path = "/dbs/foo";
|
||||||
requestPlugin({ endpoint, headers, path } as any, undefined, next as any);
|
requestPlugin({ endpoint, headers, path } as any, next as any);
|
||||||
expect(next.mock.calls[0][0]).toMatchSnapshot();
|
expect(next.mock.calls[0][0]).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,17 +1,13 @@
|
|||||||
import * as Cosmos from "@azure/cosmos";
|
import * as Cosmos from "@azure/cosmos";
|
||||||
import { sendCachedDataMessage } from "Common/MessageHandler";
|
import { configContext, Platform } from "../ConfigContext";
|
||||||
import { getAuthorizationTokenUsingResourceTokens } from "Common/getAuthorizationTokenUsingResourceTokens";
|
|
||||||
import { AuthorizationToken, MessageTypes } from "Contracts/MessageTypes";
|
|
||||||
import { checkDatabaseResourceTokensValidity } from "Platform/Fabric/FabricUtil";
|
|
||||||
import { LocalStorageUtility, StorageKey } from "Shared/StorageUtility";
|
|
||||||
import { AuthType } from "../AuthType";
|
|
||||||
import { PriorityLevel } from "../Common/Constants";
|
|
||||||
import { Platform, configContext } from "../ConfigContext";
|
|
||||||
import { userContext } from "../UserContext";
|
import { userContext } from "../UserContext";
|
||||||
import { logConsoleError } from "../Utils/NotificationConsoleUtils";
|
import { logConsoleError } from "../Utils/NotificationConsoleUtils";
|
||||||
import * as PriorityBasedExecutionUtils from "../Utils/PriorityBasedExecutionUtils";
|
|
||||||
import { EmulatorMasterKey, HttpHeaders } from "./Constants";
|
import { EmulatorMasterKey, HttpHeaders } from "./Constants";
|
||||||
import { getErrorMessage } from "./ErrorHandlingUtils";
|
import { getErrorMessage } from "./ErrorHandlingUtils";
|
||||||
|
import { LocalStorageUtility, StorageKey } from "Shared/StorageUtility";
|
||||||
|
import { PriorityLevel } from "../Common/Constants";
|
||||||
|
import * as PriorityBasedExecutionUtils from "../Utils/PriorityBasedExecutionUtils";
|
||||||
|
import { AuthType } from "../AuthType";
|
||||||
|
|
||||||
const _global = typeof self === "undefined" ? window : self;
|
const _global = typeof self === "undefined" ? window : self;
|
||||||
|
|
||||||
@@ -30,39 +26,6 @@ export const tokenProvider = async (requestInfo: Cosmos.RequestInfo) => {
|
|||||||
return decodeURIComponent(headers.authorization);
|
return decodeURIComponent(headers.authorization);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configContext.platform === Platform.Fabric) {
|
|
||||||
switch (requestInfo.resourceType) {
|
|
||||||
case Cosmos.ResourceType.conflicts:
|
|
||||||
case Cosmos.ResourceType.container:
|
|
||||||
case Cosmos.ResourceType.sproc:
|
|
||||||
case Cosmos.ResourceType.udf:
|
|
||||||
case Cosmos.ResourceType.trigger:
|
|
||||||
case Cosmos.ResourceType.item:
|
|
||||||
case Cosmos.ResourceType.pkranges:
|
|
||||||
// User resource tokens
|
|
||||||
// TODO userContext.fabricContext.databaseConnectionInfo can be undefined
|
|
||||||
headers[HttpHeaders.msDate] = new Date().toUTCString();
|
|
||||||
const resourceTokens = userContext.fabricContext.databaseConnectionInfo.resourceTokens;
|
|
||||||
checkDatabaseResourceTokensValidity(userContext.fabricContext.databaseConnectionInfo.resourceTokensTimestamp);
|
|
||||||
return getAuthorizationTokenUsingResourceTokens(resourceTokens, requestInfo.path, requestInfo.resourceId);
|
|
||||||
|
|
||||||
case Cosmos.ResourceType.none:
|
|
||||||
case Cosmos.ResourceType.database:
|
|
||||||
case Cosmos.ResourceType.offer:
|
|
||||||
case Cosmos.ResourceType.user:
|
|
||||||
case Cosmos.ResourceType.permission:
|
|
||||||
// User master tokens
|
|
||||||
const authorizationToken = await sendCachedDataMessage<AuthorizationToken>(
|
|
||||||
MessageTypes.GetAuthorizationToken,
|
|
||||||
[requestInfo],
|
|
||||||
userContext.fabricContext.connectionId,
|
|
||||||
);
|
|
||||||
console.log("Response from Fabric: ", authorizationToken);
|
|
||||||
headers[HttpHeaders.msDate] = authorizationToken.XDate;
|
|
||||||
return decodeURIComponent(authorizationToken.PrimaryReadWriteToken);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userContext.masterKey) {
|
if (userContext.masterKey) {
|
||||||
// TODO This SDK method mutates the headers object. Find a better one or fix the SDK.
|
// TODO This SDK method mutates the headers object. Find a better one or fix the SDK.
|
||||||
await Cosmos.setAuthorizationTokenHeaderUsingMasterKey(verb, resourceId, resourceType, headers, EmulatorMasterKey);
|
await Cosmos.setAuthorizationTokenHeaderUsingMasterKey(verb, resourceId, resourceType, headers, EmulatorMasterKey);
|
||||||
@@ -78,7 +41,7 @@ export const tokenProvider = async (requestInfo: Cosmos.RequestInfo) => {
|
|||||||
return decodeURIComponent(result.PrimaryReadWriteToken);
|
return decodeURIComponent(result.PrimaryReadWriteToken);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const requestPlugin: Cosmos.Plugin<any> = async (requestContext, diagnosticNode, next) => {
|
export const requestPlugin: Cosmos.Plugin<any> = async (requestContext, next) => {
|
||||||
requestContext.endpoint = new URL(configContext.PROXY_PATH, window.location.href).href;
|
requestContext.endpoint = new URL(configContext.PROXY_PATH, window.location.href).href;
|
||||||
requestContext.headers["x-ms-proxy-target"] = endpoint();
|
requestContext.headers["x-ms-proxy-target"] = endpoint();
|
||||||
return next(requestContext);
|
return next(requestContext);
|
||||||
@@ -93,11 +56,7 @@ export const endpoint = () => {
|
|||||||
return userContext.endpoint || userContext?.databaseAccount?.properties?.documentEndpoint;
|
return userContext.endpoint || userContext?.databaseAccount?.properties?.documentEndpoint;
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function getTokenFromAuthService(
|
export async function getTokenFromAuthService(verb: string, resourceType: string, resourceId?: string): Promise<any> {
|
||||||
verb: string,
|
|
||||||
resourceType: string,
|
|
||||||
resourceId?: string,
|
|
||||||
): Promise<AuthorizationToken> {
|
|
||||||
try {
|
try {
|
||||||
const host = configContext.BACKEND_ENDPOINT;
|
const host = configContext.BACKEND_ENDPOINT;
|
||||||
const response = await _global.fetch(host + "/api/guest/runtimeproxy/authorizationTokens", {
|
const response = await _global.fetch(host + "/api/guest/runtimeproxy/authorizationTokens", {
|
||||||
@@ -152,15 +111,11 @@ export function client(): Cosmos.CosmosClient {
|
|||||||
endpoint: endpoint() || "https://cosmos.azure.com", // CosmosClient gets upset if we pass a bad URL. This should never actually get called
|
endpoint: endpoint() || "https://cosmos.azure.com", // CosmosClient gets upset if we pass a bad URL. This should never actually get called
|
||||||
key: userContext.masterKey,
|
key: userContext.masterKey,
|
||||||
tokenProvider,
|
tokenProvider,
|
||||||
|
connectionPolicy: {
|
||||||
|
enableEndpointDiscovery: false,
|
||||||
|
},
|
||||||
userAgentSuffix: "Azure Portal",
|
userAgentSuffix: "Azure Portal",
|
||||||
defaultHeaders: _defaultHeaders,
|
defaultHeaders: _defaultHeaders,
|
||||||
connectionPolicy: {
|
|
||||||
retryOptions: {
|
|
||||||
maxRetryAttemptCount: LocalStorageUtility.getEntryNumber(StorageKey.RetryAttempts),
|
|
||||||
fixedRetryIntervalInMilliseconds: LocalStorageUtility.getEntryNumber(StorageKey.RetryInterval),
|
|
||||||
maxWaitTimeInSeconds: LocalStorageUtility.getEntryNumber(StorageKey.MaxWaitTimeInSeconds),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (configContext.PROXY_PATH !== undefined) {
|
if (configContext.PROXY_PATH !== undefined) {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
jest.mock("./MessageHandler");
|
jest.mock("./MessageHandler");
|
||||||
|
import { LogEntryLevel } from "../Contracts/Diagnostics";
|
||||||
import * as Logger from "./Logger";
|
import * as Logger from "./Logger";
|
||||||
|
import { MessageTypes } from "../Contracts/ExplorerContracts";
|
||||||
import { sendMessage } from "./MessageHandler";
|
import { sendMessage } from "./MessageHandler";
|
||||||
|
|
||||||
describe("Logger", () => {
|
describe("Logger", () => {
|
||||||
@@ -9,16 +11,16 @@ describe("Logger", () => {
|
|||||||
|
|
||||||
it("should log info messages", () => {
|
it("should log info messages", () => {
|
||||||
Logger.logInfo("Test info", "DocDB");
|
Logger.logInfo("Test info", "DocDB");
|
||||||
expect(sendMessage).toHaveBeenCalled();
|
expect(sendMessage).toBeCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should log error messages", () => {
|
it("should log error messages", () => {
|
||||||
Logger.logError("Test error", "DocDB");
|
Logger.logError("Test error", "DocDB");
|
||||||
expect(sendMessage).toHaveBeenCalled();
|
expect(sendMessage).toBeCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should log warnings", () => {
|
it("should log warnings", () => {
|
||||||
Logger.logWarning("Test warning", "DocDB");
|
Logger.logWarning("Test warning", "DocDB");
|
||||||
expect(sendMessage).toHaveBeenCalled();
|
expect(sendMessage).toBeCalled();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,29 +22,20 @@ export function handleCachedDataMessage(message: any): void {
|
|||||||
if (messageContent.error != null) {
|
if (messageContent.error != null) {
|
||||||
cachedDataPromise.deferred.reject(messageContent.error);
|
cachedDataPromise.deferred.reject(messageContent.error);
|
||||||
} else {
|
} else {
|
||||||
cachedDataPromise.deferred.resolve(messageContent.data);
|
cachedDataPromise.deferred.resolve(JSON.parse(messageContent.data));
|
||||||
}
|
}
|
||||||
runGarbageCollector();
|
runGarbageCollector();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param messageType
|
|
||||||
* @param params
|
|
||||||
* @param scope Use this string to identify request Useful to distinguish response from different senders
|
|
||||||
* @param timeoutInMs
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export function sendCachedDataMessage<TResponseDataModel>(
|
export function sendCachedDataMessage<TResponseDataModel>(
|
||||||
messageType: MessageTypes,
|
messageType: MessageTypes,
|
||||||
params: Object[],
|
params: Object[],
|
||||||
scope?: string,
|
|
||||||
timeoutInMs?: number,
|
timeoutInMs?: number,
|
||||||
): Q.Promise<TResponseDataModel> {
|
): Q.Promise<TResponseDataModel> {
|
||||||
let cachedDataPromise: CachedDataPromise<TResponseDataModel> = {
|
let cachedDataPromise: CachedDataPromise<TResponseDataModel> = {
|
||||||
deferred: Q.defer<TResponseDataModel>(),
|
deferred: Q.defer<TResponseDataModel>(),
|
||||||
startTime: new Date(),
|
startTime: new Date(),
|
||||||
id: _.uniqueId(scope),
|
id: _.uniqueId(),
|
||||||
};
|
};
|
||||||
RequestMap[cachedDataPromise.id] = cachedDataPromise;
|
RequestMap[cachedDataPromise.id] = cachedDataPromise;
|
||||||
sendMessage({ type: messageType, params: params, id: cachedDataPromise.id });
|
sendMessage({ type: messageType, params: params, id: cachedDataPromise.id });
|
||||||
@@ -56,10 +47,6 @@ export function sendCachedDataMessage<TResponseDataModel>(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param data Overwrite the data property of the message
|
|
||||||
*/
|
|
||||||
export function sendMessage(data: any): void {
|
export function sendMessage(data: any): void {
|
||||||
_sendMessage({
|
_sendMessage({
|
||||||
signature: "pcIframe",
|
signature: "pcIframe",
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { isServerlessAccount } from "Utils/CapabilityUtils";
|
|
||||||
import * as _ from "underscore";
|
import * as _ from "underscore";
|
||||||
import * as DataModels from "../Contracts/DataModels";
|
import * as DataModels from "../Contracts/DataModels";
|
||||||
import * as ViewModels from "../Contracts/ViewModels";
|
import * as ViewModels from "../Contracts/ViewModels";
|
||||||
@@ -9,11 +8,12 @@ import { useDatabases } from "../Explorer/useDatabases";
|
|||||||
import { userContext } from "../UserContext";
|
import { userContext } from "../UserContext";
|
||||||
import * as NotificationConsoleUtils from "../Utils/NotificationConsoleUtils";
|
import * as NotificationConsoleUtils from "../Utils/NotificationConsoleUtils";
|
||||||
import { BackendDefaults, HttpStatusCodes, SavedQueries } from "./Constants";
|
import { BackendDefaults, HttpStatusCodes, SavedQueries } from "./Constants";
|
||||||
import { handleError } from "./ErrorHandlingUtils";
|
|
||||||
import { createCollection } from "./dataAccess/createCollection";
|
import { createCollection } from "./dataAccess/createCollection";
|
||||||
import { createDocument } from "./dataAccess/createDocument";
|
import { createDocument } from "./dataAccess/createDocument";
|
||||||
import { deleteDocument } from "./dataAccess/deleteDocument";
|
import { deleteDocument } from "./dataAccess/deleteDocument";
|
||||||
import { queryDocuments } from "./dataAccess/queryDocuments";
|
import { queryDocuments } from "./dataAccess/queryDocuments";
|
||||||
|
import { handleError } from "./ErrorHandlingUtils";
|
||||||
|
import { isServerlessAccount } from "Utils/CapabilityUtils";
|
||||||
|
|
||||||
export class QueriesClient {
|
export class QueriesClient {
|
||||||
private static readonly PartitionKey: DataModels.PartitionKey = {
|
private static readonly PartitionKey: DataModels.PartitionKey = {
|
||||||
|
|||||||
@@ -146,7 +146,6 @@ export const TableEntity: FunctionComponent<TableEntityProps> = ({
|
|||||||
onClick={onEditEntity}
|
onClick={onEditEntity}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
onKeyPress={handleKeyPress}
|
onKeyPress={handleKeyPress}
|
||||||
role="button"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</TooltipHost>
|
</TooltipHost>
|
||||||
@@ -161,7 +160,6 @@ export const TableEntity: FunctionComponent<TableEntityProps> = ({
|
|||||||
onClick={onDeleteEntity}
|
onClick={onDeleteEntity}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
onKeyPress={handleKeyPressdelete}
|
onKeyPress={handleKeyPressdelete}
|
||||||
role="button"
|
|
||||||
/>
|
/>
|
||||||
</TooltipHost>
|
</TooltipHost>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { LocalStorageUtility, StorageKey } from "../../Shared/StorageUtility";
|
|
||||||
import { getCommonQueryOptions } from "./queryDocuments";
|
import { getCommonQueryOptions } from "./queryDocuments";
|
||||||
|
import { LocalStorageUtility, StorageKey } from "../../Shared/StorageUtility";
|
||||||
|
|
||||||
describe("getCommonQueryOptions", () => {
|
describe("getCommonQueryOptions", () => {
|
||||||
it("builds the correct default options objects", () => {
|
it("builds the correct default options objects", () => {
|
||||||
|
|||||||
@@ -26,5 +26,6 @@ export const getCommonQueryOptions = (options: FeedOptions): FeedOptions => {
|
|||||||
(storedItemPerPageSetting !== undefined && storedItemPerPageSetting) ||
|
(storedItemPerPageSetting !== undefined && storedItemPerPageSetting) ||
|
||||||
Queries.itemsPerPage;
|
Queries.itemsPerPage;
|
||||||
options.maxDegreeOfParallelism = LocalStorageUtility.getEntryNumber(StorageKey.MaxDegreeOfParellism);
|
options.maxDegreeOfParallelism = LocalStorageUtility.getEntryNumber(StorageKey.MaxDegreeOfParellism);
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,57 +1,18 @@
|
|||||||
import { ContainerResponse } from "@azure/cosmos";
|
|
||||||
import { Queries } from "Common/Constants";
|
import { Queries } from "Common/Constants";
|
||||||
import { Platform, configContext } from "ConfigContext";
|
|
||||||
import { AuthType } from "../../AuthType";
|
import { AuthType } from "../../AuthType";
|
||||||
import * as DataModels from "../../Contracts/DataModels";
|
import * as DataModels from "../../Contracts/DataModels";
|
||||||
import { userContext } from "../../UserContext";
|
import { userContext } from "../../UserContext";
|
||||||
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
|
|
||||||
import { listCassandraTables } from "../../Utils/arm/generatedClients/cosmos/cassandraResources";
|
import { listCassandraTables } from "../../Utils/arm/generatedClients/cosmos/cassandraResources";
|
||||||
import { listGremlinGraphs } from "../../Utils/arm/generatedClients/cosmos/gremlinResources";
|
import { listGremlinGraphs } from "../../Utils/arm/generatedClients/cosmos/gremlinResources";
|
||||||
import { listMongoDBCollections } from "../../Utils/arm/generatedClients/cosmos/mongoDBResources";
|
import { listMongoDBCollections } from "../../Utils/arm/generatedClients/cosmos/mongoDBResources";
|
||||||
import { listSqlContainers } from "../../Utils/arm/generatedClients/cosmos/sqlResources";
|
import { listSqlContainers } from "../../Utils/arm/generatedClients/cosmos/sqlResources";
|
||||||
import { listTables } from "../../Utils/arm/generatedClients/cosmos/tableResources";
|
import { listTables } from "../../Utils/arm/generatedClients/cosmos/tableResources";
|
||||||
|
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
|
||||||
import { client } from "../CosmosClient";
|
import { client } from "../CosmosClient";
|
||||||
import { handleError } from "../ErrorHandlingUtils";
|
import { handleError } from "../ErrorHandlingUtils";
|
||||||
|
|
||||||
export async function readCollections(databaseId: string): Promise<DataModels.Collection[]> {
|
export async function readCollections(databaseId: string): Promise<DataModels.Collection[]> {
|
||||||
const clearMessage = logConsoleProgress(`Querying containers for database ${databaseId}`);
|
const clearMessage = logConsoleProgress(`Querying containers for database ${databaseId}`);
|
||||||
|
|
||||||
if (
|
|
||||||
configContext.platform === Platform.Fabric &&
|
|
||||||
userContext.fabricContext &&
|
|
||||||
userContext.fabricContext.databaseConnectionInfo.databaseId === databaseId
|
|
||||||
) {
|
|
||||||
const collections: DataModels.Collection[] = [];
|
|
||||||
const promises: Promise<ContainerResponse>[] = [];
|
|
||||||
|
|
||||||
for (const collectionResourceId in userContext.fabricContext.databaseConnectionInfo.resourceTokens) {
|
|
||||||
// Dictionary key looks like this: dbs/SampleDB/colls/Container
|
|
||||||
const resourceIdObj = collectionResourceId.split("/");
|
|
||||||
const tokenDatabaseId = resourceIdObj[1];
|
|
||||||
const tokenCollectionId = resourceIdObj[3];
|
|
||||||
|
|
||||||
if (tokenDatabaseId === databaseId) {
|
|
||||||
promises.push(client().database(databaseId).container(tokenCollectionId).read());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const responses = await Promise.all(promises);
|
|
||||||
responses.forEach((response) => {
|
|
||||||
collections.push(response.resource as DataModels.Collection);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Sort collections by id before returning
|
|
||||||
collections.sort((a, b) => a.id.localeCompare(b.id));
|
|
||||||
return collections;
|
|
||||||
} catch (error) {
|
|
||||||
handleError(error, "ReadCollections", `Error while querying containers for database ${databaseId}`);
|
|
||||||
throw error;
|
|
||||||
} finally {
|
|
||||||
clearMessage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (
|
if (
|
||||||
userContext.authType === AuthType.AAD &&
|
userContext.authType === AuthType.AAD &&
|
||||||
|
|||||||
@@ -1,22 +1,15 @@
|
|||||||
import { Platform, configContext } from "ConfigContext";
|
|
||||||
import { AuthType } from "../../AuthType";
|
import { AuthType } from "../../AuthType";
|
||||||
import { Offer, ReadDatabaseOfferParams } from "../../Contracts/DataModels";
|
import { Offer, ReadDatabaseOfferParams } from "../../Contracts/DataModels";
|
||||||
import { userContext } from "../../UserContext";
|
import { userContext } from "../../UserContext";
|
||||||
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
|
|
||||||
import { getCassandraKeyspaceThroughput } from "../../Utils/arm/generatedClients/cosmos/cassandraResources";
|
import { getCassandraKeyspaceThroughput } from "../../Utils/arm/generatedClients/cosmos/cassandraResources";
|
||||||
import { getGremlinDatabaseThroughput } from "../../Utils/arm/generatedClients/cosmos/gremlinResources";
|
import { getGremlinDatabaseThroughput } from "../../Utils/arm/generatedClients/cosmos/gremlinResources";
|
||||||
import { getMongoDBDatabaseThroughput } from "../../Utils/arm/generatedClients/cosmos/mongoDBResources";
|
import { getMongoDBDatabaseThroughput } from "../../Utils/arm/generatedClients/cosmos/mongoDBResources";
|
||||||
import { getSqlDatabaseThroughput } from "../../Utils/arm/generatedClients/cosmos/sqlResources";
|
import { getSqlDatabaseThroughput } from "../../Utils/arm/generatedClients/cosmos/sqlResources";
|
||||||
|
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
|
||||||
import { handleError } from "../ErrorHandlingUtils";
|
import { handleError } from "../ErrorHandlingUtils";
|
||||||
import { readOfferWithSDK } from "./readOfferWithSDK";
|
import { readOfferWithSDK } from "./readOfferWithSDK";
|
||||||
|
|
||||||
export const readDatabaseOffer = async (params: ReadDatabaseOfferParams): Promise<Offer> => {
|
export const readDatabaseOffer = async (params: ReadDatabaseOfferParams): Promise<Offer> => {
|
||||||
if (configContext.platform === Platform.Fabric) {
|
|
||||||
// TODO This works, but is very slow, because it requests the token, so we skip for now
|
|
||||||
console.error("Skiping readDatabaseOffer for Fabric");
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
const clearMessage = logConsoleProgress(`Querying offer for database ${params.databaseId}`);
|
const clearMessage = logConsoleProgress(`Querying offer for database ${params.databaseId}`);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,53 +1,17 @@
|
|||||||
import { Platform, configContext } from "ConfigContext";
|
|
||||||
import { AuthType } from "../../AuthType";
|
import { AuthType } from "../../AuthType";
|
||||||
import * as DataModels from "../../Contracts/DataModels";
|
import * as DataModels from "../../Contracts/DataModels";
|
||||||
import { userContext } from "../../UserContext";
|
import { userContext } from "../../UserContext";
|
||||||
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
|
|
||||||
import { listCassandraKeyspaces } from "../../Utils/arm/generatedClients/cosmos/cassandraResources";
|
import { listCassandraKeyspaces } from "../../Utils/arm/generatedClients/cosmos/cassandraResources";
|
||||||
import { listGremlinDatabases } from "../../Utils/arm/generatedClients/cosmos/gremlinResources";
|
import { listGremlinDatabases } from "../../Utils/arm/generatedClients/cosmos/gremlinResources";
|
||||||
import { listMongoDBDatabases } from "../../Utils/arm/generatedClients/cosmos/mongoDBResources";
|
import { listMongoDBDatabases } from "../../Utils/arm/generatedClients/cosmos/mongoDBResources";
|
||||||
import { listSqlDatabases } from "../../Utils/arm/generatedClients/cosmos/sqlResources";
|
import { listSqlDatabases } from "../../Utils/arm/generatedClients/cosmos/sqlResources";
|
||||||
|
import { logConsoleProgress } from "../../Utils/NotificationConsoleUtils";
|
||||||
import { client } from "../CosmosClient";
|
import { client } from "../CosmosClient";
|
||||||
import { handleError } from "../ErrorHandlingUtils";
|
import { handleError } from "../ErrorHandlingUtils";
|
||||||
|
|
||||||
export async function readDatabases(): Promise<DataModels.Database[]> {
|
export async function readDatabases(): Promise<DataModels.Database[]> {
|
||||||
let databases: DataModels.Database[];
|
let databases: DataModels.Database[];
|
||||||
const clearMessage = logConsoleProgress(`Querying databases`);
|
const clearMessage = logConsoleProgress(`Querying databases`);
|
||||||
|
|
||||||
if (configContext.platform === Platform.Fabric && userContext.fabricContext?.databaseConnectionInfo.resourceTokens) {
|
|
||||||
const tokensData = userContext.fabricContext.databaseConnectionInfo;
|
|
||||||
|
|
||||||
const databaseIdsSet = new Set<string>(); // databaseId
|
|
||||||
|
|
||||||
for (const collectionResourceId in tokensData.resourceTokens) {
|
|
||||||
// Dictionary key looks like this: dbs/SampleDB/colls/Container
|
|
||||||
const resourceIdObj = collectionResourceId.split("/");
|
|
||||||
|
|
||||||
if (resourceIdObj.length !== 4) {
|
|
||||||
handleError(`Resource key not recognized: ${resourceIdObj}`, "ReadDatabases", `Error while querying databases`);
|
|
||||||
clearMessage();
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
const databaseId = resourceIdObj[1];
|
|
||||||
|
|
||||||
databaseIdsSet.add(databaseId);
|
|
||||||
}
|
|
||||||
|
|
||||||
const databases: DataModels.Database[] = Array.from(databaseIdsSet.values())
|
|
||||||
.sort((a, b) => a.localeCompare(b))
|
|
||||||
.map((databaseId) => ({
|
|
||||||
_rid: "",
|
|
||||||
_self: "",
|
|
||||||
_etag: "",
|
|
||||||
_ts: 0,
|
|
||||||
id: databaseId,
|
|
||||||
collections: [],
|
|
||||||
}));
|
|
||||||
clearMessage();
|
|
||||||
return databases;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (
|
if (
|
||||||
userContext.authType === AuthType.AAD &&
|
userContext.authType === AuthType.AAD &&
|
||||||
|
|||||||
@@ -1,66 +0,0 @@
|
|||||||
export function getAuthorizationTokenUsingResourceTokens(
|
|
||||||
resourceTokens: { [resourceId: string]: string },
|
|
||||||
path: string,
|
|
||||||
resourceId: string,
|
|
||||||
): string {
|
|
||||||
// console.log(`getting token for path: "${path}" and resourceId: "${resourceId}"`);
|
|
||||||
|
|
||||||
if (resourceTokens && Object.keys(resourceTokens).length > 0) {
|
|
||||||
// For database account access(through getDatabaseAccount API), path and resourceId are "",
|
|
||||||
// so in this case we return the first token to be used for creating the auth header as the
|
|
||||||
// service will accept any token in this case
|
|
||||||
if (!path && !resourceId) {
|
|
||||||
return resourceTokens[Object.keys(resourceTokens)[0]];
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we have exact resource token for the path use it
|
|
||||||
if (resourceId && resourceTokens[resourceId]) {
|
|
||||||
return resourceTokens[resourceId];
|
|
||||||
}
|
|
||||||
|
|
||||||
// minimum valid path /dbs
|
|
||||||
if (!path || path.length < 4) {
|
|
||||||
console.error(
|
|
||||||
`Unable to get authotization token for Path:"${path}" and resourcerId:"${resourceId}". Invalid path.`,
|
|
||||||
);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
path = trimSlashFromLeftAndRight(path);
|
|
||||||
const pathSegments = (path && path.split("/")) || [];
|
|
||||||
|
|
||||||
// Item path
|
|
||||||
if (pathSegments.length === 6) {
|
|
||||||
// Look for a container token matching the item path
|
|
||||||
const containerPath = pathSegments.slice(0, 4).map(decodeURIComponent).join("/");
|
|
||||||
if (resourceTokens[containerPath]) {
|
|
||||||
return resourceTokens[containerPath];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is legacy behavior that lets someone use a resource token pointing ONLY at an ID
|
|
||||||
// It was used when _rid was exposed by the SDK, but now that we are using user provided ids it is not needed
|
|
||||||
// However removing it now would be a breaking change
|
|
||||||
// if it's an incomplete path like /dbs/db1/colls/, start from the parent resource
|
|
||||||
let index = pathSegments.length % 2 === 0 ? pathSegments.length - 1 : pathSegments.length - 2;
|
|
||||||
for (; index > 0; index -= 2) {
|
|
||||||
const id = decodeURI(pathSegments[index]);
|
|
||||||
if (resourceTokens[id]) {
|
|
||||||
return resourceTokens[id];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
console.error(`Unable to get authotization token for Path:"${path}" and resourcerId:"${resourceId}"`);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const trimLeftSlashes = new RegExp("^[/]+");
|
|
||||||
const trimRightSlashes = new RegExp("[/]+$");
|
|
||||||
function trimSlashFromLeftAndRight(inputString: string): string {
|
|
||||||
if (typeof inputString !== "string") {
|
|
||||||
throw new Error("invalid input: input is not string");
|
|
||||||
}
|
|
||||||
|
|
||||||
return inputString.replace(trimLeftSlashes, "").replace(trimRightSlashes, "");
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
import { JunoEndpoints } from "Common/Constants";
|
|
||||||
import {
|
import {
|
||||||
allowedAadEndpoints,
|
allowedAadEndpoints,
|
||||||
allowedArcadiaEndpoints,
|
allowedArcadiaEndpoints,
|
||||||
@@ -65,8 +64,6 @@ let configContext: Readonly<ConfigContext> = {
|
|||||||
`^https:\\/\\/.*\\.fabric\\.microsoft\\.com$`,
|
`^https:\\/\\/.*\\.fabric\\.microsoft\\.com$`,
|
||||||
`^https:\\/\\/.*\\.powerbi\\.com$`,
|
`^https:\\/\\/.*\\.powerbi\\.com$`,
|
||||||
`^https:\\/\\/.*\\.analysis-df\\.net$`,
|
`^https:\\/\\/.*\\.analysis-df\\.net$`,
|
||||||
`^https:\\/\\/.*\\.analysis-df\\.windows\\.net$`,
|
|
||||||
`^https:\\/\\/.*\\.azure-test\\.net$`,
|
|
||||||
], // Webpack injects this at build time
|
], // Webpack injects this at build time
|
||||||
gitSha: process.env.GIT_SHA,
|
gitSha: process.env.GIT_SHA,
|
||||||
hostedExplorerURL: "https://cosmos.azure.com/",
|
hostedExplorerURL: "https://cosmos.azure.com/",
|
||||||
@@ -80,7 +77,7 @@ let configContext: Readonly<ConfigContext> = {
|
|||||||
ARCADIA_LIVY_ENDPOINT_DNS_ZONE: "dev.azuresynapse.net",
|
ARCADIA_LIVY_ENDPOINT_DNS_ZONE: "dev.azuresynapse.net",
|
||||||
GITHUB_CLIENT_ID: "6cb2f63cf6f7b5cbdeca", // Registered OAuth app: https://github.com/organizations/AzureCosmosDBNotebooks/settings/applications/1189306
|
GITHUB_CLIENT_ID: "6cb2f63cf6f7b5cbdeca", // Registered OAuth app: https://github.com/organizations/AzureCosmosDBNotebooks/settings/applications/1189306
|
||||||
GITHUB_TEST_ENV_CLIENT_ID: "b63fc8cbf87fd3c6e2eb", // Registered OAuth app: https://github.com/organizations/AzureCosmosDBNotebooks/settings/applications/1777772
|
GITHUB_TEST_ENV_CLIENT_ID: "b63fc8cbf87fd3c6e2eb", // Registered OAuth app: https://github.com/organizations/AzureCosmosDBNotebooks/settings/applications/1777772
|
||||||
JUNO_ENDPOINT: JunoEndpoints.Prod,
|
JUNO_ENDPOINT: "https://tools.cosmos.azure.com",
|
||||||
BACKEND_ENDPOINT: "https://main.documentdb.ext.azure.com",
|
BACKEND_ENDPOINT: "https://main.documentdb.ext.azure.com",
|
||||||
isTerminalEnabled: false,
|
isTerminalEnabled: false,
|
||||||
isPhoenixEnabled: false,
|
isPhoenixEnabled: false,
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
export interface QueryRequestOptions {
|
|
||||||
$skipToken?: string;
|
|
||||||
$top?: number;
|
|
||||||
subscriptions: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface QueryResponse {
|
|
||||||
$skipToken: string;
|
|
||||||
count: number;
|
|
||||||
data: any;
|
|
||||||
resultTruncated: boolean;
|
|
||||||
totalRecords: number;
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
import { MessageTypes } from "./MessageTypes";
|
|
||||||
|
|
||||||
// This is the current version of these messages
|
|
||||||
export const DATA_EXPLORER_RPC_VERSION = "2";
|
|
||||||
|
|
||||||
// Data Explorer to Fabric
|
|
||||||
|
|
||||||
// TODO Remove when upgrading to Fabric v2
|
|
||||||
export type DataExploreMessageV1 =
|
|
||||||
| "ready"
|
|
||||||
| {
|
|
||||||
type: MessageTypes.GetAuthorizationToken;
|
|
||||||
id: string;
|
|
||||||
params: GetCosmosTokenMessageOptions[];
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: MessageTypes.GetAllResourceTokens;
|
|
||||||
id: string;
|
|
||||||
};
|
|
||||||
// -----------------------------
|
|
||||||
|
|
||||||
export type DataExploreMessageV2 =
|
|
||||||
| {
|
|
||||||
type: MessageTypes.Ready;
|
|
||||||
id: string;
|
|
||||||
params: [string]; // version
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: MessageTypes.GetAuthorizationToken;
|
|
||||||
id: string;
|
|
||||||
params: GetCosmosTokenMessageOptions[];
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: MessageTypes.GetAllResourceTokens;
|
|
||||||
id: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type GetCosmosTokenMessageOptions = {
|
|
||||||
verb: "connect" | "delete" | "get" | "head" | "options" | "patch" | "post" | "put" | "trace";
|
|
||||||
resourceType: "" | "dbs" | "colls" | "docs" | "sprocs" | "pkranges";
|
|
||||||
resourceId: string;
|
|
||||||
};
|
|
||||||
@@ -88,13 +88,13 @@ export interface GenerateTokenResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface Subscription {
|
export interface Subscription {
|
||||||
uniqueDisplayName?: string;
|
uniqueDisplayName: string;
|
||||||
displayName: string;
|
displayName: string;
|
||||||
subscriptionId: string;
|
subscriptionId: string;
|
||||||
tenantId?: string;
|
tenantId: string;
|
||||||
state: string;
|
state: string;
|
||||||
subscriptionPolicies?: SubscriptionPolicies;
|
subscriptionPolicies: SubscriptionPolicies;
|
||||||
authorizationSource?: string;
|
authorizationSource: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SubscriptionPolicies {
|
export interface SubscriptionPolicies {
|
||||||
@@ -457,11 +457,8 @@ export interface ContainerInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IProvisionData {
|
export interface IProvisionData {
|
||||||
cosmosEndpoint?: string;
|
cosmosEndpoint: string;
|
||||||
poolId: string;
|
poolId: string;
|
||||||
databaseId?: string;
|
|
||||||
containerId?: string;
|
|
||||||
mode?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IContainerData {
|
export interface IContainerData {
|
||||||
@@ -604,14 +601,3 @@ export enum PhoenixErrorType {
|
|||||||
PhoenixFlightFallback = "PhoenixFlightFallback",
|
PhoenixFlightFallback = "PhoenixFlightFallback",
|
||||||
UserMissingPermissionsError = "UserMissingPermissionsError",
|
UserMissingPermissionsError = "UserMissingPermissionsError",
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CopilotEnabledConfiguration {
|
|
||||||
isEnabled: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FeatureRegistration {
|
|
||||||
name: string;
|
|
||||||
properties: {
|
|
||||||
state: string;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,6 +1,46 @@
|
|||||||
import { MessageTypes } from "Contracts/MessageTypes";
|
|
||||||
import * as ActionContracts from "./ActionContracts";
|
import * as ActionContracts from "./ActionContracts";
|
||||||
import * as Diagnostics from "./Diagnostics";
|
import * as Diagnostics from "./Diagnostics";
|
||||||
import * as Versions from "./Versions";
|
import * as Versions from "./Versions";
|
||||||
|
|
||||||
export { ActionContracts, Diagnostics, MessageTypes, Versions };
|
/**
|
||||||
|
* Messaging types used with Data Explorer <-> Portal communication
|
||||||
|
* and Hosted <-> Explorer communication
|
||||||
|
*/
|
||||||
|
export enum MessageTypes {
|
||||||
|
TelemetryInfo,
|
||||||
|
LogInfo,
|
||||||
|
RefreshResources,
|
||||||
|
AllDatabases,
|
||||||
|
CollectionsForDatabase,
|
||||||
|
RefreshOffers,
|
||||||
|
AllOffers,
|
||||||
|
UpdateLocationHash,
|
||||||
|
SingleOffer,
|
||||||
|
RefreshOffer,
|
||||||
|
UpdateAccountName,
|
||||||
|
ForbiddenError,
|
||||||
|
AadSignIn,
|
||||||
|
GetAccessAadRequest,
|
||||||
|
GetAccessAadResponse,
|
||||||
|
UpdateAccountSwitch,
|
||||||
|
UpdateDirectoryControl,
|
||||||
|
SwitchAccount,
|
||||||
|
SendNotification,
|
||||||
|
ClearNotification,
|
||||||
|
ExplorerClickEvent,
|
||||||
|
LoadingStatus,
|
||||||
|
GetArcadiaToken,
|
||||||
|
CreateWorkspace,
|
||||||
|
CreateSparkPool,
|
||||||
|
RefreshDatabaseAccount,
|
||||||
|
CloseTab,
|
||||||
|
OpenQuickstartBlade,
|
||||||
|
OpenPostgreSQLPasswordReset,
|
||||||
|
OpenPostgresNetworkingBlade,
|
||||||
|
OpenCosmosDBNetworkingBlade,
|
||||||
|
DisplayNPSSurvey,
|
||||||
|
OpenVCoreMongoNetworkingBlade,
|
||||||
|
OpenVCoreMongoConnectionStringsBlade,
|
||||||
|
}
|
||||||
|
|
||||||
|
export { ActionContracts, Diagnostics, Versions };
|
||||||
|
|||||||
25
src/Contracts/FabricContract.ts
Normal file
25
src/Contracts/FabricContract.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
export type FabricMessage =
|
||||||
|
| {
|
||||||
|
type: "newContainer";
|
||||||
|
databaseName: string;
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
type: "initialize";
|
||||||
|
connectionString: string | undefined;
|
||||||
|
}
|
||||||
|
| {
|
||||||
|
type: "openTab";
|
||||||
|
databaseName: string;
|
||||||
|
collectionName: string | undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type DataExploreMessage =
|
||||||
|
| "ready"
|
||||||
|
| {
|
||||||
|
type: number;
|
||||||
|
data: {
|
||||||
|
action: "LoadDatabases";
|
||||||
|
actionModifier: "success" | "start";
|
||||||
|
defaultExperience: "SQL";
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
import { AuthorizationToken } from "./MessageTypes";
|
|
||||||
|
|
||||||
// This is the version of these messages
|
|
||||||
export const FABRIC_RPC_VERSION = "2";
|
|
||||||
|
|
||||||
// Fabric to Data Explorer
|
|
||||||
|
|
||||||
// TODO Deprecated. Remove this section once DE is updated
|
|
||||||
export type FabricMessageV1 =
|
|
||||||
| {
|
|
||||||
type: "newContainer";
|
|
||||||
databaseName: string;
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "initialize";
|
|
||||||
message: {
|
|
||||||
endpoint: string | undefined;
|
|
||||||
databaseId: string | undefined;
|
|
||||||
resourceTokens: unknown | undefined;
|
|
||||||
resourceTokensTimestamp: number | undefined;
|
|
||||||
error: string | undefined;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "authorizationToken";
|
|
||||||
message: {
|
|
||||||
id: string;
|
|
||||||
error: string | undefined;
|
|
||||||
data: AuthorizationToken | undefined;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "allResourceTokens";
|
|
||||||
message: {
|
|
||||||
id: string;
|
|
||||||
error: string | undefined;
|
|
||||||
endpoint: string | undefined;
|
|
||||||
databaseId: string | undefined;
|
|
||||||
resourceTokens: unknown | undefined;
|
|
||||||
resourceTokensTimestamp: number | undefined;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
// -----------------------------
|
|
||||||
|
|
||||||
export type FabricMessageV2 =
|
|
||||||
| {
|
|
||||||
type: "newContainer";
|
|
||||||
databaseName: string;
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "initialize";
|
|
||||||
version: string;
|
|
||||||
id: string;
|
|
||||||
message: {
|
|
||||||
connectionId: string;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "authorizationToken";
|
|
||||||
message: {
|
|
||||||
id: string;
|
|
||||||
error: string | undefined;
|
|
||||||
data: AuthorizationToken | undefined;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "allResourceTokens_v2";
|
|
||||||
message: {
|
|
||||||
id: string;
|
|
||||||
error: string | undefined;
|
|
||||||
data: FabricDatabaseConnectionInfo | undefined;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
type: "setToolbarStatus";
|
|
||||||
message: {
|
|
||||||
visible: boolean;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export type CosmosDBTokenResponse = {
|
|
||||||
token: string;
|
|
||||||
date: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type CosmosDBConnectionInfoResponse = {
|
|
||||||
endpoint: string;
|
|
||||||
databaseId: string;
|
|
||||||
resourceTokens: { [resourceId: string]: string };
|
|
||||||
};
|
|
||||||
|
|
||||||
export interface FabricDatabaseConnectionInfo extends CosmosDBConnectionInfoResponse {
|
|
||||||
resourceTokensTimestamp: number;
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
/**
|
|
||||||
* Messaging types used with Data Explorer <-> Portal communication,
|
|
||||||
* Hosted <-> Explorer communication and Data Explorer -> Fabric communication.
|
|
||||||
*
|
|
||||||
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
* WARNING: !!!!!!! YOU CAN ONLY ADD NEW TYPES TO THE END OF THIS ENUM !!!!!!!
|
|
||||||
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
*
|
|
||||||
* Enum are integers, so inserting or deleting a type will break the communication.
|
|
||||||
*/
|
|
||||||
export enum MessageTypes {
|
|
||||||
TelemetryInfo,
|
|
||||||
LogInfo,
|
|
||||||
RefreshResources,
|
|
||||||
AllDatabases,
|
|
||||||
CollectionsForDatabase,
|
|
||||||
RefreshOffers,
|
|
||||||
AllOffers,
|
|
||||||
UpdateLocationHash,
|
|
||||||
SingleOffer,
|
|
||||||
RefreshOffer,
|
|
||||||
UpdateAccountName,
|
|
||||||
ForbiddenError,
|
|
||||||
AadSignIn,
|
|
||||||
GetAccessAadRequest,
|
|
||||||
GetAccessAadResponse,
|
|
||||||
UpdateAccountSwitch,
|
|
||||||
UpdateDirectoryControl,
|
|
||||||
SwitchAccount,
|
|
||||||
SendNotification,
|
|
||||||
ClearNotification,
|
|
||||||
ExplorerClickEvent,
|
|
||||||
LoadingStatus,
|
|
||||||
GetArcadiaToken,
|
|
||||||
CreateWorkspace,
|
|
||||||
CreateSparkPool,
|
|
||||||
RefreshDatabaseAccount,
|
|
||||||
CloseTab,
|
|
||||||
OpenQuickstartBlade,
|
|
||||||
OpenPostgreSQLPasswordReset,
|
|
||||||
OpenPostgresNetworkingBlade,
|
|
||||||
OpenCosmosDBNetworkingBlade,
|
|
||||||
DisplayNPSSurvey,
|
|
||||||
OpenVCoreMongoNetworkingBlade,
|
|
||||||
OpenVCoreMongoConnectionStringsBlade,
|
|
||||||
GetAuthorizationToken, // Data Explorer -> Fabric
|
|
||||||
GetAllResourceTokens, // Data Explorer -> Fabric
|
|
||||||
Ready, // Data Explorer -> Fabric
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AuthorizationToken {
|
|
||||||
XDate: string;
|
|
||||||
PrimaryReadWriteToken: string;
|
|
||||||
}
|
|
||||||
@@ -109,7 +109,6 @@ describe("iframe rendering when there is no data", () => {
|
|||||||
theme: 4,
|
theme: 4,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
origin: "http://localhost",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const divElement = `<div id="${Heatmap.elementId}"></div>`;
|
const divElement = `<div id="${Heatmap.elementId}"></div>`;
|
||||||
@@ -130,7 +129,6 @@ describe("iframe rendering when there is no data", () => {
|
|||||||
theme: 2,
|
theme: 2,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
origin: "http://localhost",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const divElement = `<div id="${Heatmap.elementId}"></div>`;
|
const divElement = `<div id="${Heatmap.elementId}"></div>`;
|
||||||
|
|||||||
1954
src/Definitions/datatables.d.ts
vendored
Normal file
1954
src/Definitions/datatables.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
src/Definitions/jquery-typescript.d.ts
vendored
2
src/Definitions/jquery-typescript.d.ts
vendored
@@ -5,7 +5,7 @@
|
|||||||
* https://github.com/running-coder/jquery-typeahead/issues/156
|
* https://github.com/running-coder/jquery-typeahead/issues/156
|
||||||
* TODO: Replace this minimum definition by the official one when it comes out.
|
* TODO: Replace this minimum definition by the official one when it comes out.
|
||||||
*/
|
*/
|
||||||
/// <reference types="jquery" />
|
/// <reference path="jquery.d.ts" />
|
||||||
|
|
||||||
interface JQueryTypeaheadParam {
|
interface JQueryTypeaheadParam {
|
||||||
input: string;
|
input: string;
|
||||||
|
|||||||
2
src/Definitions/jquery-ui.d.ts
vendored
2
src/Definitions/jquery-ui.d.ts
vendored
@@ -3,7 +3,7 @@
|
|||||||
// Definitions by: Boris Yankov <https://github.com/borisyankov/>, John Reilly <https://github.com/johnnyreilly>
|
// Definitions by: Boris Yankov <https://github.com/borisyankov/>, John Reilly <https://github.com/johnnyreilly>
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||||
|
|
||||||
/// <reference types="jquery"/>
|
/// <reference path="jquery.d.ts"/>
|
||||||
|
|
||||||
declare namespace JQueryUI {
|
declare namespace JQueryUI {
|
||||||
// Accordion //////////////////////////////////////////////////
|
// Accordion //////////////////////////////////////////////////
|
||||||
|
|||||||
1890
src/Definitions/jquery.d.ts
vendored
Normal file
1890
src/Definitions/jquery.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4
src/Definitions/less.d.ts
vendored
4
src/Definitions/less.d.ts
vendored
@@ -1,4 +0,0 @@
|
|||||||
declare module "*.less" {
|
|
||||||
const value: string;
|
|
||||||
export default value;
|
|
||||||
}
|
|
||||||
@@ -129,22 +129,20 @@ export const createCollectionContextMenuButton = (
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configContext.platform !== Platform.Fabric) {
|
items.push({
|
||||||
items.push({
|
iconSrc: DeleteCollectionIcon,
|
||||||
iconSrc: DeleteCollectionIcon,
|
onClick: () => {
|
||||||
onClick: () => {
|
useSelectedNode.getState().setSelectedNode(selectedCollection);
|
||||||
useSelectedNode.getState().setSelectedNode(selectedCollection);
|
useSidePanel
|
||||||
useSidePanel
|
.getState()
|
||||||
.getState()
|
.openSidePanel(
|
||||||
.openSidePanel(
|
"Delete " + getCollectionName(),
|
||||||
"Delete " + getCollectionName(),
|
<DeleteCollectionConfirmationPane refreshDatabases={() => container.refreshAllDatabases()} />,
|
||||||
<DeleteCollectionConfirmationPane refreshDatabases={() => container.refreshAllDatabases()} />,
|
);
|
||||||
);
|
},
|
||||||
},
|
label: `Delete ${getCollectionName()}`,
|
||||||
label: `Delete ${getCollectionName()}`,
|
styleClass: "deleteCollectionMenuItem",
|
||||||
styleClass: "deleteCollectionMenuItem",
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return items;
|
return items;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ export interface AccordionItemComponentProps {
|
|||||||
isExpanded?: boolean;
|
isExpanded?: boolean;
|
||||||
containerStyles?: React.CSSProperties;
|
containerStyles?: React.CSSProperties;
|
||||||
styles?: React.CSSProperties;
|
styles?: React.CSSProperties;
|
||||||
children: JSX.Element;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface AccordionItemComponentState {
|
interface AccordionItemComponentState {
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ export interface CollapsiblePanelProps {
|
|||||||
isCollapsed: boolean;
|
isCollapsed: boolean;
|
||||||
onCollapsedChanged: (newValue: boolean) => void;
|
onCollapsedChanged: (newValue: boolean) => void;
|
||||||
collapseToLeft?: boolean;
|
collapseToLeft?: boolean;
|
||||||
children: JSX.Element | JSX.Element[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CollapsiblePanel extends React.Component<CollapsiblePanelProps> {
|
export class CollapsiblePanel extends React.Component<CollapsiblePanelProps> {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ describe("CollapsibleSectionComponent", () => {
|
|||||||
const props: CollapsibleSectionProps = {
|
const props: CollapsibleSectionProps = {
|
||||||
title: "Sample title",
|
title: "Sample title",
|
||||||
isExpandedByDefault: true,
|
isExpandedByDefault: true,
|
||||||
children: <></>,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const wrapper = shallow(<CollapsibleSectionComponent {...props} />);
|
const wrapper = shallow(<CollapsibleSectionComponent {...props} />);
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ export interface CollapsibleSectionProps {
|
|||||||
title: string;
|
title: string;
|
||||||
isExpandedByDefault: boolean;
|
isExpandedByDefault: boolean;
|
||||||
onExpand?: () => void;
|
onExpand?: () => void;
|
||||||
children: JSX.Element;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CollapsibleSectionState {
|
export interface CollapsibleSectionState {
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export class DiffEditorViewModel {
|
|||||||
) {
|
) {
|
||||||
this.editorContainer = document.getElementById(this.getEditorId());
|
this.editorContainer = document.getElementById(this.getEditorId());
|
||||||
this.editorContainer.innerHTML = "";
|
this.editorContainer.innerHTML = "";
|
||||||
const options: monaco.editor.IStandaloneDiffEditorConstructionOptions = {
|
const options: monaco.editor.IDiffEditorConstructionOptions = {
|
||||||
lineNumbers: this.params.lineNumbers || "off",
|
lineNumbers: this.params.lineNumbers || "off",
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
ariaLabel: this.params.ariaLabel,
|
ariaLabel: this.params.ariaLabel,
|
||||||
|
|||||||
@@ -52,11 +52,7 @@ class EditorViewModel extends JsonEditorViewModel {
|
|||||||
if (EditorViewModel.providerRegistered.indexOf("sql") < 0) {
|
if (EditorViewModel.providerRegistered.indexOf("sql") < 0) {
|
||||||
const { SqlCompletionItemProvider } = await import("@azure/cosmos-language-service");
|
const { SqlCompletionItemProvider } = await import("@azure/cosmos-language-service");
|
||||||
const monaco = await loadMonaco();
|
const monaco = await loadMonaco();
|
||||||
monaco.languages.registerCompletionItemProvider(
|
monaco.languages.registerCompletionItemProvider("sql", new SqlCompletionItemProvider());
|
||||||
"sql",
|
|
||||||
// TODO cosmos-language-service could be outdated
|
|
||||||
new SqlCompletionItemProvider() as unknown as monaco.languages.CompletionItemProvider,
|
|
||||||
);
|
|
||||||
EditorViewModel.providerRegistered.push("sql");
|
EditorViewModel.providerRegistered.push("sql");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export class EditorReact extends React.Component<EditorReactProps, EditorReactSt
|
|||||||
|
|
||||||
public componentDidUpdate(previous: EditorReactProps) {
|
public componentDidUpdate(previous: EditorReactProps) {
|
||||||
if (this.props.content !== previous.content) {
|
if (this.props.content !== previous.content) {
|
||||||
this.editor?.setValue(this.props.content);
|
this.editor.setValue(this.props.content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ export class EditorReact extends React.Component<EditorReactProps, EditorReactSt
|
|||||||
* Create the monaco editor and attach to DOM
|
* Create the monaco editor and attach to DOM
|
||||||
*/
|
*/
|
||||||
private async createEditor(createCallback: (e: monaco.editor.IStandaloneCodeEditor) => void) {
|
private async createEditor(createCallback: (e: monaco.editor.IStandaloneCodeEditor) => void) {
|
||||||
const options: monaco.editor.IStandaloneEditorConstructionOptions = {
|
const options: monaco.editor.IEditorConstructionOptions = {
|
||||||
language: this.props.language,
|
language: this.props.language,
|
||||||
value: this.props.content,
|
value: this.props.content,
|
||||||
readOnly: this.props.isReadOnly,
|
readOnly: this.props.isReadOnly,
|
||||||
@@ -111,7 +111,7 @@ export class EditorReact extends React.Component<EditorReactProps, EditorReactSt
|
|||||||
|
|
||||||
this.rootNode.innerHTML = "";
|
this.rootNode.innerHTML = "";
|
||||||
const monaco = await loadMonaco();
|
const monaco = await loadMonaco();
|
||||||
createCallback(monaco?.editor?.create(this.rootNode, options));
|
createCallback(monaco.editor.create(this.rootNode, options));
|
||||||
|
|
||||||
if (this.rootNode.innerHTML) {
|
if (this.rootNode.innerHTML) {
|
||||||
this.setState({
|
this.setState({
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ export class JsonEditorViewModel extends WaitsForTemplateViewModel {
|
|||||||
protected async createEditor(content: string, createCallback: (e: monaco.editor.IStandaloneCodeEditor) => void) {
|
protected async createEditor(content: string, createCallback: (e: monaco.editor.IStandaloneCodeEditor) => void) {
|
||||||
this.registerCompletionItemProvider();
|
this.registerCompletionItemProvider();
|
||||||
this.editorContainer = document.getElementById(this.getEditorId());
|
this.editorContainer = document.getElementById(this.getEditorId());
|
||||||
const options: monaco.editor.IStandaloneEditorConstructionOptions = {
|
const options: monaco.editor.IEditorConstructionOptions = {
|
||||||
value: content,
|
value: content,
|
||||||
language: this.getEditorLanguage(),
|
language: this.getEditorLanguage(),
|
||||||
readOnly: this.params.isReadOnly,
|
readOnly: this.params.isReadOnly,
|
||||||
|
|||||||
@@ -29,6 +29,6 @@ describe("CodeOfConduct", () => {
|
|||||||
const wrapper = shallow(<CodeOfConduct {...codeOfConductProps} />);
|
const wrapper = shallow(<CodeOfConduct {...codeOfConductProps} />);
|
||||||
wrapper.find(".genericPaneSubmitBtn").first().simulate("click");
|
wrapper.find(".genericPaneSubmitBtn").first().simulate("click");
|
||||||
await Promise.resolve();
|
await Promise.resolve();
|
||||||
expect(codeOfConductProps.onAcceptCodeOfConduct).toHaveBeenCalled();
|
expect(codeOfConductProps.onAcceptCodeOfConduct).toBeCalled();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { updateUserContext } from "../../../UserContext";
|
|||||||
import Explorer from "../../Explorer";
|
import Explorer from "../../Explorer";
|
||||||
import { CollectionSettingsTabV2 } from "../../Tabs/SettingsTabV2";
|
import { CollectionSettingsTabV2 } from "../../Tabs/SettingsTabV2";
|
||||||
import { SettingsComponent, SettingsComponentProps, SettingsComponentState } from "./SettingsComponent";
|
import { SettingsComponent, SettingsComponentProps, SettingsComponentState } from "./SettingsComponent";
|
||||||
import { TtlType, isDirty } from "./SettingsUtils";
|
import { isDirty, TtlType } from "./SettingsUtils";
|
||||||
import { collection } from "./TestUtils";
|
import { collection } from "./TestUtils";
|
||||||
jest.mock("../../../Common/dataAccess/getIndexTransformationProgress", () => ({
|
jest.mock("../../../Common/dataAccess/getIndexTransformationProgress", () => ({
|
||||||
getIndexTransformationProgress: jest.fn().mockReturnValue(undefined),
|
getIndexTransformationProgress: jest.fn().mockReturnValue(undefined),
|
||||||
@@ -190,8 +190,8 @@ describe("SettingsComponent", () => {
|
|||||||
id: "id",
|
id: "id",
|
||||||
};
|
};
|
||||||
await settingsComponentInstance.onSaveClick();
|
await settingsComponentInstance.onSaveClick();
|
||||||
expect(updateCollection).toHaveBeenCalled();
|
expect(updateCollection).toBeCalled();
|
||||||
expect(updateOffer).toHaveBeenCalled();
|
expect(updateOffer).toBeCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("revert resets state values", async () => {
|
it("revert resets state values", async () => {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { shallow } from "enzyme";
|
import { shallow } from "enzyme";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { renderToString } from "react-dom/server";
|
|
||||||
import { MongoIndexTypes, MongoNotificationMessage, MongoNotificationType } from "../../SettingsUtils";
|
import { MongoIndexTypes, MongoNotificationMessage, MongoNotificationType } from "../../SettingsUtils";
|
||||||
import { MongoIndexingPolicyComponent, MongoIndexingPolicyComponentProps } from "./MongoIndexingPolicyComponent";
|
import { MongoIndexingPolicyComponent, MongoIndexingPolicyComponentProps } from "./MongoIndexingPolicyComponent";
|
||||||
|
import { renderToString } from "react-dom/server";
|
||||||
|
|
||||||
describe("MongoIndexingPolicyComponent", () => {
|
describe("MongoIndexingPolicyComponent", () => {
|
||||||
const baseProps: MongoIndexingPolicyComponentProps = {
|
const baseProps: MongoIndexingPolicyComponentProps = {
|
||||||
@@ -84,7 +84,7 @@ describe("MongoIndexingPolicyComponent", () => {
|
|||||||
];
|
];
|
||||||
|
|
||||||
test.each(cases)(
|
test.each(cases)(
|
||||||
"mongo indexing policy saveable and discardable",
|
"",
|
||||||
(
|
(
|
||||||
notification: MongoNotificationMessage,
|
notification: MongoNotificationMessage,
|
||||||
indexToDropIsPresent: boolean,
|
indexToDropIsPresent: boolean,
|
||||||
@@ -111,10 +111,8 @@ describe("MongoIndexingPolicyComponent", () => {
|
|||||||
);
|
);
|
||||||
if (mongoWarningNotificationMessage) {
|
if (mongoWarningNotificationMessage) {
|
||||||
const elementAsString = renderToString(mongoIndexingPolicyComponent.getMongoWarningNotificationMessage());
|
const elementAsString = renderToString(mongoIndexingPolicyComponent.getMongoWarningNotificationMessage());
|
||||||
// eslint-disable-next-line jest/no-conditional-expect
|
|
||||||
expect(elementAsString).toContain(mongoWarningNotificationMessage);
|
expect(elementAsString).toContain(mongoWarningNotificationMessage);
|
||||||
} else {
|
} else {
|
||||||
// eslint-disable-next-line jest/no-conditional-expect
|
|
||||||
expect(mongoIndexingPolicyComponent.getMongoWarningNotificationMessage()).toBeUndefined();
|
expect(mongoIndexingPolicyComponent.getMongoWarningNotificationMessage()).toBeUndefined();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ describe("ThroughputInput Pane", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should switch mode properly", () => {
|
it("should switch mode properly", () => {
|
||||||
wrapper.find('[id="Manual-input"]').simulate("change");
|
wrapper.find('[aria-label="Manual database throughput"]').simulate("change");
|
||||||
expect(wrapper.find('[aria-label="Throughput header"]').at(0).text()).toBe(
|
expect(wrapper.find('[aria-label="Throughput header"]').at(0).text()).toBe(
|
||||||
"Container throughput (400 - unlimited RU/s)",
|
"Container throughput (400 - unlimited RU/s)",
|
||||||
);
|
);
|
||||||
|
|
||||||
wrapper.find('[id="Autoscale-input"]').simulate("change");
|
wrapper.find('[aria-label="Autoscale database throughput"]').simulate("change");
|
||||||
expect(wrapper.find('[aria-label="Throughput header"]').at(0).text()).toBe("Container throughput (autoscale)");
|
expect(wrapper.find('[aria-label="Throughput header"]').at(0).text()).toBe("Container throughput (autoscale)");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ export const ThroughputInput: FunctionComponent<ThroughputInputProps> = ({
|
|||||||
<input
|
<input
|
||||||
id="Autoscale-input"
|
id="Autoscale-input"
|
||||||
className="throughputInputRadioBtn"
|
className="throughputInputRadioBtn"
|
||||||
aria-label={`${getThroughputLabelText()} Autoscale`}
|
aria-label="Autoscale database throughput"
|
||||||
aria-required={true}
|
aria-required={true}
|
||||||
checked={isAutoscaleSelected}
|
checked={isAutoscaleSelected}
|
||||||
type="radio"
|
type="radio"
|
||||||
@@ -204,7 +204,7 @@ export const ThroughputInput: FunctionComponent<ThroughputInputProps> = ({
|
|||||||
<input
|
<input
|
||||||
id="Manual-input"
|
id="Manual-input"
|
||||||
className="throughputInputRadioBtn"
|
className="throughputInputRadioBtn"
|
||||||
aria-label={`${getThroughputLabelText()} Manual`}
|
aria-label="Manual database throughput"
|
||||||
checked={!isAutoscaleSelected}
|
checked={!isAutoscaleSelected}
|
||||||
type="radio"
|
type="radio"
|
||||||
aria-required={true}
|
aria-required={true}
|
||||||
@@ -271,17 +271,11 @@ export const ThroughputInput: FunctionComponent<ThroughputInputProps> = ({
|
|||||||
<Stack className="throughputInputSpacing">
|
<Stack className="throughputInputSpacing">
|
||||||
<Text variant="small" aria-label="ruDescription">
|
<Text variant="small" aria-label="ruDescription">
|
||||||
Estimate your required RU/s with
|
Estimate your required RU/s with
|
||||||
<Link target="_blank" href="https://cosmos.azure.com/capacitycalculator/" aria-label="Capacity calculator">
|
<Link target="_blank" href="https://cosmos.azure.com/capacitycalculator/" aria-label="capacityLink">
|
||||||
capacity calculator
|
capacity calculator
|
||||||
</Link>
|
</Link>
|
||||||
.
|
.
|
||||||
</Text>
|
</Text>
|
||||||
<Stack horizontal>
|
|
||||||
<Text variant="small" style={{ lineHeight: "20px", fontWeight: 600 }} aria-label="maxRUDescription">
|
|
||||||
{isDatabase ? "Database" : getCollectionName()} Required RU/s
|
|
||||||
</Text>
|
|
||||||
<InfoTooltip>{getAutoScaleTooltip()}</InfoTooltip>
|
|
||||||
</Stack>
|
|
||||||
|
|
||||||
<TooltipHost
|
<TooltipHost
|
||||||
directionalHint={DirectionalHint.topLeftEdge}
|
directionalHint={DirectionalHint.topLeftEdge}
|
||||||
@@ -302,7 +296,7 @@ export const ThroughputInput: FunctionComponent<ThroughputInputProps> = ({
|
|||||||
min={SharedConstants.CollectionCreation.DefaultCollectionRUs400}
|
min={SharedConstants.CollectionCreation.DefaultCollectionRUs400}
|
||||||
max={userContext.isTryCosmosDBSubscription ? Constants.TryCosmosExperience.maxRU : Infinity}
|
max={userContext.isTryCosmosDBSubscription ? Constants.TryCosmosExperience.maxRU : Infinity}
|
||||||
value={throughput.toString()}
|
value={throughput.toString()}
|
||||||
ariaLabel={`${isDatabase ? "Database" : getCollectionName()} Required RU/s`}
|
aria-label="Max request units per second"
|
||||||
required={true}
|
required={true}
|
||||||
errorMessage={throughputError}
|
errorMessage={throughputError}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -18,17 +18,17 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
horizontal={true}
|
horizontal={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack css-109"
|
className="ms-Stack css-53"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="mandatoryStar"
|
className="mandatoryStar"
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
>
|
>
|
||||||
*
|
*
|
||||||
</span>
|
</span>
|
||||||
<Text
|
<Text
|
||||||
aria-label="Throughput header"
|
aria-label="Throughput header"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"fontWeight": 600,
|
"fontWeight": 600,
|
||||||
@@ -39,7 +39,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
aria-label="Throughput header"
|
aria-label="Throughput header"
|
||||||
className="css-110"
|
className="css-54"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"fontWeight": 600,
|
"fontWeight": 600,
|
||||||
@@ -51,7 +51,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
</span>
|
</span>
|
||||||
</Text>
|
</Text>
|
||||||
<InfoTooltip
|
<InfoTooltip
|
||||||
key=".0:$.$.2"
|
key=".0:$.2"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
<StyledTooltipHostBase
|
<StyledTooltipHostBase
|
||||||
@@ -336,13 +336,12 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TooltipHost root-111"
|
className="ms-TooltipHost root-55"
|
||||||
onBlurCapture={[Function]}
|
onBlurCapture={[Function]}
|
||||||
onFocusCapture={[Function]}
|
onFocusCapture={[Function]}
|
||||||
onKeyDown={[Function]}
|
onKeyDown={[Function]}
|
||||||
onMouseEnter={[Function]}
|
onMouseEnter={[Function]}
|
||||||
onMouseLeave={[Function]}
|
onMouseLeave={[Function]}
|
||||||
role="none"
|
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
ariaLabel="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
ariaLabel="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
||||||
@@ -632,7 +631,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-label="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
aria-label="Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage."
|
||||||
className="panelInfoIcon root-114"
|
className="panelInfoIcon root-57"
|
||||||
data-icon-name="Info"
|
data-icon-name="Info"
|
||||||
role="img"
|
role="img"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
@@ -641,24 +640,6 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
</i>
|
</i>
|
||||||
</IconBase>
|
</IconBase>
|
||||||
</StyledIconBase>
|
</StyledIconBase>
|
||||||
<div
|
|
||||||
hidden={true}
|
|
||||||
id="tooltip0"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"border": 0,
|
|
||||||
"height": 1,
|
|
||||||
"margin": -1,
|
|
||||||
"overflow": "hidden",
|
|
||||||
"padding": 0,
|
|
||||||
"position": "absolute",
|
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
Set the throughput — Request Units per second (RU/s) — required for the workload. A read of a 1 KB document uses 1 RU. Select manual if you plan to scale RU/s yourself. Select autoscale to allow the system to scale RU/s based on usage.
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</TooltipHostBase>
|
</TooltipHostBase>
|
||||||
</StyledTooltipHostBase>
|
</StyledTooltipHostBase>
|
||||||
@@ -671,14 +652,14 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
verticalAlign="center"
|
verticalAlign="center"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack css-115"
|
className="ms-Stack css-58"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
role="radiogroup"
|
role="radiogroup"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-label="Container throughput (autoscale) Autoscale"
|
aria-label="Autoscale database throughput"
|
||||||
aria-required={true}
|
aria-required={true}
|
||||||
checked={true}
|
checked={true}
|
||||||
className="throughputInputRadioBtn"
|
className="throughputInputRadioBtn"
|
||||||
@@ -695,7 +676,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
Autoscale
|
Autoscale
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
aria-label="Container throughput (autoscale) Manual"
|
aria-label="Manual database throughput"
|
||||||
aria-required={true}
|
aria-required={true}
|
||||||
checked={false}
|
checked={false}
|
||||||
className="throughputInputRadioBtn"
|
className="throughputInputRadioBtn"
|
||||||
@@ -718,16 +699,16 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
className="throughputInputSpacing"
|
className="throughputInputSpacing"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack throughputInputSpacing css-116"
|
className="ms-Stack throughputInputSpacing css-59"
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
aria-label="capacity calculator of azure cosmos db"
|
aria-label="capacity calculator of azure cosmos db"
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
aria-label="capacity calculator of azure cosmos db"
|
aria-label="capacity calculator of azure cosmos db"
|
||||||
className="css-110"
|
className="css-54"
|
||||||
>
|
>
|
||||||
Estimate your required RU/s with
|
Estimate your required RU/s with
|
||||||
|
|
||||||
@@ -1017,7 +998,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<a
|
<a
|
||||||
aria-label="capacity calculator of azure cosmos db"
|
aria-label="capacity calculator of azure cosmos db"
|
||||||
className="ms-Link root-117"
|
className="ms-Link root-60"
|
||||||
href="https://cosmos.azure.com/capacitycalculator/"
|
href="https://cosmos.azure.com/capacitycalculator/"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -1031,14 +1012,14 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
</Text>
|
</Text>
|
||||||
<Stack
|
<Stack
|
||||||
horizontal={true}
|
horizontal={true}
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack css-109"
|
className="ms-Stack css-53"
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
aria-label="maxRUDescription"
|
aria-label="maxRUDescription"
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"fontWeight": 600,
|
"fontWeight": 600,
|
||||||
@@ -1049,7 +1030,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
aria-label="maxRUDescription"
|
aria-label="maxRUDescription"
|
||||||
className="css-110"
|
className="css-54"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"fontWeight": 600,
|
"fontWeight": 600,
|
||||||
@@ -1062,7 +1043,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
</span>
|
</span>
|
||||||
</Text>
|
</Text>
|
||||||
<InfoTooltip
|
<InfoTooltip
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
<StyledTooltipHostBase
|
<StyledTooltipHostBase
|
||||||
@@ -1347,13 +1328,12 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TooltipHost root-111"
|
className="ms-TooltipHost root-55"
|
||||||
onBlurCapture={[Function]}
|
onBlurCapture={[Function]}
|
||||||
onFocusCapture={[Function]}
|
onFocusCapture={[Function]}
|
||||||
onKeyDown={[Function]}
|
onKeyDown={[Function]}
|
||||||
onMouseEnter={[Function]}
|
onMouseEnter={[Function]}
|
||||||
onMouseLeave={[Function]}
|
onMouseLeave={[Function]}
|
||||||
role="none"
|
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
ariaLabel="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
ariaLabel="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
||||||
@@ -1643,7 +1623,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-label="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
aria-label="Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage."
|
||||||
className="panelInfoIcon root-114"
|
className="panelInfoIcon root-57"
|
||||||
data-icon-name="Info"
|
data-icon-name="Info"
|
||||||
role="img"
|
role="img"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
@@ -1652,24 +1632,6 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
</i>
|
</i>
|
||||||
</IconBase>
|
</IconBase>
|
||||||
</StyledIconBase>
|
</StyledIconBase>
|
||||||
<div
|
|
||||||
hidden={true}
|
|
||||||
id="tooltip1"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"border": 0,
|
|
||||||
"height": 1,
|
|
||||||
"margin": -1,
|
|
||||||
"overflow": "hidden",
|
|
||||||
"padding": 0,
|
|
||||||
"position": "absolute",
|
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
Set the max RU/s to the highest RU/s you want your container to scale to. The container will scale between 10% of max RU/s to the max RU/s based on usage.
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</TooltipHostBase>
|
</TooltipHostBase>
|
||||||
</StyledTooltipHostBase>
|
</StyledTooltipHostBase>
|
||||||
@@ -1681,7 +1643,7 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
ariaLabel="Container max RU/s"
|
ariaLabel="Container max RU/s"
|
||||||
errorMessage=""
|
errorMessage=""
|
||||||
id="autoscaleRUValueField"
|
id="autoscaleRUValueField"
|
||||||
key=".0:$.$.2"
|
key=".0:$.2"
|
||||||
max="9007199254740991"
|
max="9007199254740991"
|
||||||
min={1000}
|
min={1000}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
@@ -1991,18 +1953,18 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
value="4000"
|
value="4000"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField is-required root-119"
|
className="ms-TextField is-required root-62"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-120"
|
className="ms-TextField-fieldGroup fieldGroup-63"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-label="Container max RU/s"
|
aria-label="Container max RU/s"
|
||||||
className="ms-TextField-field field-121"
|
className="ms-TextField-field field-64"
|
||||||
id="autoscaleRUValueField"
|
id="autoscaleRUValueField"
|
||||||
max="9007199254740991"
|
max="9007199254740991"
|
||||||
min={1000}
|
min={1000}
|
||||||
@@ -2021,11 +1983,11 @@ exports[`ThroughputInput Pane should render Default properly 1`] = `
|
|||||||
</TextFieldBase>
|
</TextFieldBase>
|
||||||
</StyledTextFieldBase>
|
</StyledTextFieldBase>
|
||||||
<Text
|
<Text
|
||||||
key=".0:$.$.3"
|
key=".0:$.3"
|
||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="css-110"
|
className="css-54"
|
||||||
>
|
>
|
||||||
Your
|
Your
|
||||||
container
|
container
|
||||||
|
|||||||
@@ -59,10 +59,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-test="Gallery"]{
|
|
||||||
outline-offset: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.selected {
|
.selected {
|
||||||
& > .treeNodeHeader {
|
& > .treeNodeHeader {
|
||||||
background-color: @AccentExtra;
|
background-color: @AccentExtra;
|
||||||
|
|||||||
@@ -123,6 +123,19 @@ describe("ContainerSampleGenerator", () => {
|
|||||||
await generator.createSampleContainerAsync();
|
await generator.createSampleContainerAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should not create any sample for Mongo API account", async () => {
|
||||||
|
const experience = "Sample generation not supported for this API Mongo";
|
||||||
|
updateUserContext({
|
||||||
|
databaseAccount: {
|
||||||
|
properties: {
|
||||||
|
capabilities: [{ name: "EnableMongo" }],
|
||||||
|
},
|
||||||
|
} as DatabaseAccount,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(ContainerSampleGenerator.createSampleGeneratorAsync(explorerStub)).rejects.toMatch(experience);
|
||||||
|
});
|
||||||
|
|
||||||
it("should not create any sample for Table API account", async () => {
|
it("should not create any sample for Table API account", async () => {
|
||||||
const experience = "Sample generation not supported for this API Tables";
|
const experience = "Sample generation not supported for this API Tables";
|
||||||
updateUserContext({
|
updateUserContext({
|
||||||
|
|||||||
@@ -3,10 +3,7 @@ import { isPublicInternetAccessAllowed } from "Common/DatabaseAccountUtility";
|
|||||||
import { sendMessage } from "Common/MessageHandler";
|
import { sendMessage } from "Common/MessageHandler";
|
||||||
import { Platform, configContext } from "ConfigContext";
|
import { Platform, configContext } from "ConfigContext";
|
||||||
import { MessageTypes } from "Contracts/ExplorerContracts";
|
import { MessageTypes } from "Contracts/ExplorerContracts";
|
||||||
import { getCopilotEnabled, isCopilotFeatureRegistered } from "Explorer/QueryCopilot/Shared/QueryCopilotClient";
|
|
||||||
import { IGalleryItem } from "Juno/JunoClient";
|
import { IGalleryItem } from "Juno/JunoClient";
|
||||||
import { scheduleRefreshDatabaseResourceToken } from "Platform/Fabric/FabricUtil";
|
|
||||||
import { LocalStorageUtility, StorageKey } from "Shared/StorageUtility";
|
|
||||||
import { allowedNotebookServerUrls, validateEndpoint } from "Utils/EndpointValidation";
|
import { allowedNotebookServerUrls, validateEndpoint } from "Utils/EndpointValidation";
|
||||||
import { useQueryCopilot } from "hooks/useQueryCopilot";
|
import { useQueryCopilot } from "hooks/useQueryCopilot";
|
||||||
import * as ko from "knockout";
|
import * as ko from "knockout";
|
||||||
@@ -94,7 +91,7 @@ export default class Explorer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private static readonly MaxNbDatabasesToAutoExpand = 5;
|
private static readonly MaxNbDatabasesToAutoExpand = 5;
|
||||||
public phoenixClient: PhoenixClient;
|
private phoenixClient: PhoenixClient;
|
||||||
constructor() {
|
constructor() {
|
||||||
const startKey: number = TelemetryProcessor.traceStart(Action.InitializeDataExplorer, {
|
const startKey: number = TelemetryProcessor.traceStart(Action.InitializeDataExplorer, {
|
||||||
dataExplorerArea: Constants.Areas.ResourceTree,
|
dataExplorerArea: Constants.Areas.ResourceTree,
|
||||||
@@ -276,69 +273,51 @@ export default class Explorer {
|
|||||||
|
|
||||||
const NINETY_DAYS_IN_MS = 7776000000;
|
const NINETY_DAYS_IN_MS = 7776000000;
|
||||||
const ONE_DAY_IN_MS = 86400000;
|
const ONE_DAY_IN_MS = 86400000;
|
||||||
const THREE_DAYS_IN_MS = 259200000;
|
const isAccountNewerThanNinetyDays = isAccountNewerThanThresholdInMs(
|
||||||
|
userContext.databaseAccount?.systemData?.createdAt || "",
|
||||||
|
NINETY_DAYS_IN_MS,
|
||||||
|
);
|
||||||
const lastSubmitted: string = localStorage.getItem("lastSubmitted");
|
const lastSubmitted: string = localStorage.getItem("lastSubmitted");
|
||||||
Logger.logInfo(`NPS Survey last shown date: ${lastSubmitted}`, "Explorer/openNPSSurveyDialog");
|
|
||||||
|
|
||||||
if (lastSubmitted !== null) {
|
if (lastSubmitted !== null) {
|
||||||
Logger.logInfo(`NPS Survey last shown is not empty ${lastSubmitted}`, "Explorer/openNPSSurveyDialog");
|
|
||||||
|
|
||||||
let lastSubmittedDate: number = parseInt(lastSubmitted);
|
let lastSubmittedDate: number = parseInt(lastSubmitted);
|
||||||
Logger.logInfo(`NPS Survey last shown is parsed ${lastSubmittedDate.toString()}`, "Explorer/openNPSSurveyDialog");
|
|
||||||
|
|
||||||
if (isNaN(lastSubmittedDate)) {
|
if (isNaN(lastSubmittedDate)) {
|
||||||
Logger.logInfo(
|
|
||||||
`NPS Survey last shown is not a number ${lastSubmittedDate.toString()}`,
|
|
||||||
"Explorer/openNPSSurveyDialog",
|
|
||||||
);
|
|
||||||
lastSubmittedDate = 0;
|
lastSubmittedDate = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const nowMs: number = Date.now();
|
const nowMs: number = Date.now();
|
||||||
Logger.logInfo(`NPS Survey current date ${nowMs.toString()}`, "Explorer/openNPSSurveyDialog");
|
|
||||||
|
|
||||||
const millisecsSinceLastSubmitted = nowMs - lastSubmittedDate;
|
const millisecsSinceLastSubmitted = nowMs - lastSubmittedDate;
|
||||||
if (millisecsSinceLastSubmitted < NINETY_DAYS_IN_MS) {
|
if (millisecsSinceLastSubmitted < NINETY_DAYS_IN_MS) {
|
||||||
Logger.logInfo(
|
|
||||||
`NPS Survey last shown is less than ninety days ${millisecsSinceLastSubmitted.toString()}`,
|
|
||||||
"Explorer/openNPSSurveyDialog",
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try Cosmos DB subscription - survey shown to 100% of users at day 1 in Data Explorer.
|
// Try Cosmos DB subscription - survey shown to random 25% of users at day 1 in Data Explorer.
|
||||||
if (userContext.isTryCosmosDBSubscription) {
|
if (userContext.isTryCosmosDBSubscription) {
|
||||||
if (isAccountNewerThanThresholdInMs(userContext.databaseAccount?.systemData?.createdAt || "", ONE_DAY_IN_MS)) {
|
if (
|
||||||
Logger.logInfo(
|
isAccountNewerThanThresholdInMs(userContext.databaseAccount?.systemData?.createdAt || "", ONE_DAY_IN_MS) &&
|
||||||
`Displaying NPS Survey for Try Cosmos DB ${userContext.apiType}`,
|
this.getRandomInt(100) < 25
|
||||||
"Explorer/openNPSSurveyDialog",
|
) {
|
||||||
);
|
sendMessage({ type: MessageTypes.DisplayNPSSurvey });
|
||||||
this.sendNPSMessage();
|
localStorage.setItem("lastSubmitted", Date.now().toString());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Show survey when an existing account is older than 3 days
|
// An existing account is lesser than 90 days old. For existing account show to random 10 % of users in Data Explorer.
|
||||||
if (
|
if (isAccountNewerThanNinetyDays) {
|
||||||
!isAccountNewerThanThresholdInMs(userContext.databaseAccount?.systemData?.createdAt || "", THREE_DAYS_IN_MS)
|
if (this.getRandomInt(100) < 10) {
|
||||||
) {
|
sendMessage({ type: MessageTypes.DisplayNPSSurvey });
|
||||||
Logger.logInfo(
|
localStorage.setItem("lastSubmitted", Date.now().toString());
|
||||||
`Displaying NPS Survey for users with existing ${userContext.apiType} account older than 3 days`,
|
}
|
||||||
"Explorer/openNPSSurveyDialog",
|
} else {
|
||||||
);
|
// An existing account is greater than 90 days. For existing account show to random 25 % of users in Data Explorer.
|
||||||
this.sendNPSMessage();
|
if (this.getRandomInt(100) < 25) {
|
||||||
|
sendMessage({ type: MessageTypes.DisplayNPSSurvey });
|
||||||
|
localStorage.setItem("lastSubmitted", Date.now().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private sendNPSMessage() {
|
|
||||||
sendMessage({ type: MessageTypes.DisplayNPSSurvey });
|
|
||||||
Logger.logInfo(
|
|
||||||
`NPS Survey logging current date when survey is shown ${Date.now().toString()}`,
|
|
||||||
"Explorer/openNPSSurveyDialog",
|
|
||||||
);
|
|
||||||
localStorage.setItem("lastSubmitted", Date.now().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
public async refreshDatabaseForResourceToken(): Promise<void> {
|
public async refreshDatabaseForResourceToken(): Promise<void> {
|
||||||
const databaseId = userContext.parsedResourceToken?.databaseId;
|
const databaseId = userContext.parsedResourceToken?.databaseId;
|
||||||
const collectionId = userContext.parsedResourceToken?.collectionId;
|
const collectionId = userContext.parsedResourceToken?.collectionId;
|
||||||
@@ -400,11 +379,6 @@ export default class Explorer {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public onRefreshResourcesClick = (): void => {
|
public onRefreshResourcesClick = (): void => {
|
||||||
if (configContext.platform === Platform.Fabric) {
|
|
||||||
scheduleRefreshDatabaseResourceToken(true).then(() => this.refreshAllDatabases());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
userContext.authType === AuthType.ResourceToken
|
userContext.authType === AuthType.ResourceToken
|
||||||
? this.refreshDatabaseForResourceToken()
|
? this.refreshDatabaseForResourceToken()
|
||||||
: this.refreshAllDatabases();
|
: this.refreshAllDatabases();
|
||||||
@@ -429,7 +403,7 @@ export default class Explorer {
|
|||||||
this._isInitializingNotebooks = false;
|
this._isInitializingNotebooks = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async allocateContainer(poolId: PoolIdType, mode?: string): Promise<void> {
|
public async allocateContainer(poolId: PoolIdType): Promise<void> {
|
||||||
const shouldUseNotebookStates = poolId === PoolIdType.DefaultPoolId ? true : false;
|
const shouldUseNotebookStates = poolId === PoolIdType.DefaultPoolId ? true : false;
|
||||||
const notebookServerInfo = shouldUseNotebookStates
|
const notebookServerInfo = shouldUseNotebookStates
|
||||||
? useNotebook.getState().notebookServerInfo
|
? useNotebook.getState().notebookServerInfo
|
||||||
@@ -443,6 +417,10 @@ export default class Explorer {
|
|||||||
(notebookServerInfo === undefined ||
|
(notebookServerInfo === undefined ||
|
||||||
(notebookServerInfo && notebookServerInfo.notebookServerEndpoint === undefined))
|
(notebookServerInfo && notebookServerInfo.notebookServerEndpoint === undefined))
|
||||||
) {
|
) {
|
||||||
|
const provisionData: IProvisionData = {
|
||||||
|
cosmosEndpoint: userContext?.databaseAccount?.properties?.documentEndpoint,
|
||||||
|
poolId: shouldUseNotebookStates ? undefined : poolId,
|
||||||
|
};
|
||||||
const connectionStatus: ContainerConnectionInfo = {
|
const connectionStatus: ContainerConnectionInfo = {
|
||||||
status: ConnectionStatusType.Connecting,
|
status: ConnectionStatusType.Connecting,
|
||||||
};
|
};
|
||||||
@@ -450,26 +428,14 @@ export default class Explorer {
|
|||||||
shouldUseNotebookStates && useNotebook.getState().setConnectionInfo(connectionStatus);
|
shouldUseNotebookStates && useNotebook.getState().setConnectionInfo(connectionStatus);
|
||||||
|
|
||||||
let connectionInfo;
|
let connectionInfo;
|
||||||
let provisionData: IProvisionData;
|
|
||||||
try {
|
try {
|
||||||
TelemetryProcessor.traceStart(Action.PhoenixConnection, {
|
TelemetryProcessor.traceStart(Action.PhoenixConnection, {
|
||||||
dataExplorerArea: Areas.Notebook,
|
dataExplorerArea: Areas.Notebook,
|
||||||
});
|
});
|
||||||
if (shouldUseNotebookStates) {
|
shouldUseNotebookStates
|
||||||
useNotebook.getState().setIsAllocating(true);
|
? useNotebook.getState().setIsAllocating(true)
|
||||||
provisionData = {
|
: useQueryCopilot.getState().setIsAllocatingContainer(true);
|
||||||
cosmosEndpoint: userContext?.databaseAccount?.properties?.documentEndpoint,
|
|
||||||
poolId: undefined,
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
useQueryCopilot.getState().setIsAllocatingContainer(true);
|
|
||||||
provisionData = {
|
|
||||||
poolId: poolId,
|
|
||||||
databaseId: useTabs.getState().activeTab.collection.databaseId,
|
|
||||||
containerId: useTabs.getState().activeTab.collection.id(),
|
|
||||||
mode: mode,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
connectionInfo = await this.phoenixClient.allocateContainer(provisionData);
|
connectionInfo = await this.phoenixClient.allocateContainer(provisionData);
|
||||||
if (!connectionInfo?.data?.phoenixServiceUrl) {
|
if (!connectionInfo?.data?.phoenixServiceUrl) {
|
||||||
throw new Error(`PhoenixServiceUrl is invalid!`);
|
throw new Error(`PhoenixServiceUrl is invalid!`);
|
||||||
@@ -485,21 +451,19 @@ export default class Explorer {
|
|||||||
error: getErrorMessage(error),
|
error: getErrorMessage(error),
|
||||||
errorStack: getErrorStack(error),
|
errorStack: getErrorStack(error),
|
||||||
});
|
});
|
||||||
if (shouldUseNotebookStates) {
|
connectionStatus.status = ConnectionStatusType.Failed;
|
||||||
connectionStatus.status = ConnectionStatusType.Failed;
|
shouldUseNotebookStates
|
||||||
shouldUseNotebookStates
|
? useNotebook.getState().resetContainerConnection(connectionStatus)
|
||||||
? useNotebook.getState().resetContainerConnection(connectionStatus)
|
: useQueryCopilot.getState().resetContainerConnection();
|
||||||
: useQueryCopilot.getState().resetContainerConnection();
|
if (error?.status === HttpStatusCodes.Forbidden && error.message) {
|
||||||
if (error?.status === HttpStatusCodes.Forbidden && error.message) {
|
useDialog.getState().showOkModalDialog("Connection Failed", `${error.message}`);
|
||||||
useDialog.getState().showOkModalDialog("Connection Failed", `${error.message}`);
|
} else {
|
||||||
} else {
|
useDialog
|
||||||
useDialog
|
.getState()
|
||||||
.getState()
|
.showOkModalDialog(
|
||||||
.showOkModalDialog(
|
"Connection Failed",
|
||||||
"Connection Failed",
|
"We are unable to connect to the temporary workspace. Please try again in a few minutes. If the error persists, file a support ticket.",
|
||||||
"We are unable to connect to the temporary workspace. Please try again in a few minutes. If the error persists, file a support ticket.",
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
throw error;
|
throw error;
|
||||||
} finally {
|
} finally {
|
||||||
@@ -513,11 +477,11 @@ export default class Explorer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async setNotebookInfo(
|
private async setNotebookInfo(
|
||||||
shouldUseNotebookStates: boolean,
|
shouldUseNotebookStates: boolean,
|
||||||
connectionInfo: IResponse<IPhoenixServiceInfo>,
|
connectionInfo: IResponse<IPhoenixServiceInfo>,
|
||||||
connectionStatus: DataModels.ContainerConnectionInfo,
|
connectionStatus: DataModels.ContainerConnectionInfo,
|
||||||
): Promise<void> {
|
) {
|
||||||
const containerData = {
|
const containerData = {
|
||||||
forwardingId: connectionInfo.data.forwardingId,
|
forwardingId: connectionInfo.data.forwardingId,
|
||||||
dbAccountName: userContext.databaseAccount.name,
|
dbAccountName: userContext.databaseAccount.name,
|
||||||
@@ -538,7 +502,6 @@ export default class Explorer {
|
|||||||
shouldUseNotebookStates
|
shouldUseNotebookStates
|
||||||
? useNotebook.getState().setNotebookServerInfo(noteBookServerInfo)
|
? useNotebook.getState().setNotebookServerInfo(noteBookServerInfo)
|
||||||
: useQueryCopilot.getState().setNotebookServerInfo(noteBookServerInfo);
|
: useQueryCopilot.getState().setNotebookServerInfo(noteBookServerInfo);
|
||||||
|
|
||||||
shouldUseNotebookStates &&
|
shouldUseNotebookStates &&
|
||||||
this.notebookManager?.notebookClient
|
this.notebookManager?.notebookClient
|
||||||
.getMemoryUsage()
|
.getMemoryUsage()
|
||||||
@@ -1401,24 +1364,6 @@ export default class Explorer {
|
|||||||
await this.refreshSampleData();
|
await this.refreshSampleData();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async configureCopilot(): Promise<void> {
|
|
||||||
if (userContext.apiType !== "SQL" || !userContext.subscriptionId) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const copilotEnabledPromise = getCopilotEnabled();
|
|
||||||
const copilotUserDBEnabledPromise = isCopilotFeatureRegistered(userContext.subscriptionId);
|
|
||||||
const [copilotEnabled, copilotUserDBEnabled] = await Promise.all([
|
|
||||||
copilotEnabledPromise,
|
|
||||||
copilotUserDBEnabledPromise,
|
|
||||||
]);
|
|
||||||
const copilotSampleDBEnabled = LocalStorageUtility.getEntryString(StorageKey.CopilotSampleDBEnabled) === "true";
|
|
||||||
useQueryCopilot.getState().setCopilotEnabled(copilotEnabled && copilotUserDBEnabled);
|
|
||||||
useQueryCopilot.getState().setCopilotUserDBEnabled(copilotUserDBEnabled);
|
|
||||||
useQueryCopilot
|
|
||||||
.getState()
|
|
||||||
.setCopilotSampleDBEnabled(copilotEnabled && copilotUserDBEnabled && copilotSampleDBEnabled);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async refreshSampleData(): Promise<void> {
|
public async refreshSampleData(): Promise<void> {
|
||||||
if (!userContext.sampleDataConnectionInfo) {
|
if (!userContext.sampleDataConnectionInfo) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ describe("GraphExplorer", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should submit g.V() as docdb query with proper parameters", () => {
|
it("should submit g.V() as docdb query with proper parameters", () => {
|
||||||
expect(queryDocuments).toHaveBeenCalledWith("databaseId", "collectionId", DOCDB_G_DOT_V_QUERY, {
|
expect(queryDocuments).toBeCalledWith("databaseId", "collectionId", DOCDB_G_DOT_V_QUERY, {
|
||||||
maxItemCount: GraphExplorer.ROOT_LIST_PAGE_SIZE,
|
maxItemCount: GraphExplorer.ROOT_LIST_PAGE_SIZE,
|
||||||
enableCrossPartitionQuery: true,
|
enableCrossPartitionQuery: true,
|
||||||
});
|
});
|
||||||
@@ -404,7 +404,7 @@ describe("GraphExplorer", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should submit g.V() as docdb query with proper parameters", () => {
|
it("should submit g.V() as docdb query with proper parameters", () => {
|
||||||
expect(queryDocuments).toHaveBeenCalledWith("databaseId", "collectionId", DOCDB_G_DOT_V_QUERY, {
|
expect(queryDocuments).toBeCalledWith("databaseId", "collectionId", DOCDB_G_DOT_V_QUERY, {
|
||||||
maxItemCount: GraphExplorer.ROOT_LIST_PAGE_SIZE,
|
maxItemCount: GraphExplorer.ROOT_LIST_PAGE_SIZE,
|
||||||
enableCrossPartitionQuery: true,
|
enableCrossPartitionQuery: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1163,12 +1163,15 @@ export class GraphExplorer extends React.Component<GraphExplorerProps, GraphExpl
|
|||||||
)}"`,
|
)}"`,
|
||||||
).then(
|
).then(
|
||||||
(documents: DataModels.DocumentId[]) => {
|
(documents: DataModels.DocumentId[]) => {
|
||||||
$.each(documents, (index: number, doc: any) => {
|
$.each(
|
||||||
newIconsMap[doc["_graph_icon_property_value"]] = {
|
documents,
|
||||||
data: doc["icon"],
|
(index: number, doc: { _graph_icon_property_value: string; icon: string; format: string }) => {
|
||||||
format: doc["format"],
|
newIconsMap[doc["_graph_icon_property_value"]] = {
|
||||||
};
|
data: doc["icon"],
|
||||||
});
|
format: doc["format"],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// Update graph configuration
|
// Update graph configuration
|
||||||
this.setState({
|
this.setState({
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ describe("Graph Style Component", () => {
|
|||||||
expect(asFragment).toMatchSnapshot();
|
expect(asFragment).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should render node properties dropdown list", () => {
|
it("should render node properties dropdown list ", () => {
|
||||||
const dropDownList = screen.getByText("Show vertex (node) as");
|
const dropDownList = screen.getByText("Show vertex (node) as");
|
||||||
expect(dropDownList).toBeDefined();
|
expect(dropDownList).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,21 +24,16 @@ interface Props {
|
|||||||
export interface CommandBarStore {
|
export interface CommandBarStore {
|
||||||
contextButtons: CommandButtonComponentProps[];
|
contextButtons: CommandButtonComponentProps[];
|
||||||
setContextButtons: (contextButtons: CommandButtonComponentProps[]) => void;
|
setContextButtons: (contextButtons: CommandButtonComponentProps[]) => void;
|
||||||
isHidden: boolean;
|
|
||||||
setIsHidden: (isHidden: boolean) => void;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useCommandBar: UseStore<CommandBarStore> = create((set) => ({
|
export const useCommandBar: UseStore<CommandBarStore> = create((set) => ({
|
||||||
contextButtons: [],
|
contextButtons: [],
|
||||||
setContextButtons: (contextButtons: CommandButtonComponentProps[]) => set((state) => ({ ...state, contextButtons })),
|
setContextButtons: (contextButtons: CommandButtonComponentProps[]) => set((state) => ({ ...state, contextButtons })),
|
||||||
isHidden: false,
|
|
||||||
setIsHidden: (isHidden: boolean) => set((state) => ({ ...state, isHidden })),
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export const CommandBar: React.FC<Props> = ({ container }: Props) => {
|
export const CommandBar: React.FC<Props> = ({ container }: Props) => {
|
||||||
const selectedNodeState = useSelectedNode();
|
const selectedNodeState = useSelectedNode();
|
||||||
const buttons = useCommandBar((state) => state.contextButtons);
|
const buttons = useCommandBar((state) => state.contextButtons);
|
||||||
const isHidden = useCommandBar((state) => state.isHidden);
|
|
||||||
const backgroundColor = StyleConstants.BaseLight;
|
const backgroundColor = StyleConstants.BaseLight;
|
||||||
|
|
||||||
if (userContext.apiType === "Postgres" || userContext.apiType === "VCoreMongo") {
|
if (userContext.apiType === "Postgres" || userContext.apiType === "VCoreMongo") {
|
||||||
@@ -47,7 +42,7 @@ export const CommandBar: React.FC<Props> = ({ container }: Props) => {
|
|||||||
? CommandBarComponentButtonFactory.createPostgreButtons(container)
|
? CommandBarComponentButtonFactory.createPostgreButtons(container)
|
||||||
: CommandBarComponentButtonFactory.createVCoreMongoButtons(container);
|
: CommandBarComponentButtonFactory.createVCoreMongoButtons(container);
|
||||||
return (
|
return (
|
||||||
<div className="commandBarContainer" style={{ display: isHidden ? "none" : "initial" }}>
|
<div className="commandBarContainer">
|
||||||
<FluentCommandBar
|
<FluentCommandBar
|
||||||
ariaLabel="Use left and right arrow keys to navigate between commands"
|
ariaLabel="Use left and right arrow keys to navigate between commands"
|
||||||
items={CommandBarUtil.convertButton(buttons, backgroundColor)}
|
items={CommandBarUtil.convertButton(buttons, backgroundColor)}
|
||||||
@@ -96,7 +91,7 @@ export const CommandBar: React.FC<Props> = ({ container }: Props) => {
|
|||||||
? {
|
? {
|
||||||
root: {
|
root: {
|
||||||
backgroundColor: "transparent",
|
backgroundColor: "transparent",
|
||||||
padding: "2px 8px 0px 8px",
|
padding: "0px 14px 0px 14px",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
@@ -106,7 +101,7 @@ export const CommandBar: React.FC<Props> = ({ container }: Props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="commandBarContainer" style={{ display: isHidden ? "none" : "initial" }}>
|
<div className="commandBarContainer">
|
||||||
<FluentCommandBar
|
<FluentCommandBar
|
||||||
ariaLabel="Use left and right arrow keys to navigate between commands"
|
ariaLabel="Use left and right arrow keys to navigate between commands"
|
||||||
items={uiFabricStaticButtons.concat(uiFabricTabsButtons)}
|
items={uiFabricStaticButtons.concat(uiFabricTabsButtons)}
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ describe("CommandBarComponentButtonFactory tests", () => {
|
|||||||
|
|
||||||
describe("Open Postgres and vCore Mongo buttons", () => {
|
describe("Open Postgres and vCore Mongo buttons", () => {
|
||||||
const openPostgresShellButtonLabel = "Open PSQL shell";
|
const openPostgresShellButtonLabel = "Open PSQL shell";
|
||||||
const openVCoreMongoShellButtonLabel = "Open MongoDB (vCore) shell";
|
const openVCoreMongoShellButtonLabel = "Open MongoDB (vcore) shell";
|
||||||
|
|
||||||
beforeAll(() => {
|
beforeAll(() => {
|
||||||
mockExplorer = {} as Explorer;
|
mockExplorer = {} as Explorer;
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import { Action } from "Shared/Telemetry/TelemetryConstants";
|
||||||
|
import { traceOpen } from "Shared/Telemetry/TelemetryProcessor";
|
||||||
|
import { ReactTabKind, useTabs } from "hooks/useTabs";
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import AddCollectionIcon from "../../../../images/AddCollection.svg";
|
import AddCollectionIcon from "../../../../images/AddCollection.svg";
|
||||||
import AddDatabaseIcon from "../../../../images/AddDatabase.svg";
|
import AddDatabaseIcon from "../../../../images/AddDatabase.svg";
|
||||||
@@ -47,36 +50,31 @@ export function createStaticCommandBarButtons(
|
|||||||
return createStaticCommandBarButtonsForResourceToken(container, selectedNodeState);
|
return createStaticCommandBarButtonsForResourceToken(container, selectedNodeState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const newCollectionBtn = createNewCollectionGroup(container);
|
||||||
const buttons: CommandButtonComponentProps[] = [];
|
const buttons: CommandButtonComponentProps[] = [];
|
||||||
|
|
||||||
// Avoid starting with a divider
|
buttons.push(newCollectionBtn);
|
||||||
const addDivider = () => {
|
if (
|
||||||
if (buttons.length > 0) {
|
configContext.platform !== Platform.Fabric &&
|
||||||
|
userContext.apiType !== "Tables" &&
|
||||||
|
userContext.apiType !== "Cassandra"
|
||||||
|
) {
|
||||||
|
const addSynapseLink = createOpenSynapseLinkDialogButton(container);
|
||||||
|
|
||||||
|
if (addSynapseLink) {
|
||||||
buttons.push(createDivider());
|
buttons.push(createDivider());
|
||||||
}
|
buttons.push(addSynapseLink);
|
||||||
};
|
|
||||||
|
|
||||||
if (configContext.platform !== Platform.Fabric) {
|
|
||||||
const newCollectionBtn = createNewCollectionGroup(container);
|
|
||||||
buttons.push(newCollectionBtn);
|
|
||||||
if (userContext.apiType !== "Tables" && userContext.apiType !== "Cassandra") {
|
|
||||||
const addSynapseLink = createOpenSynapseLinkDialogButton(container);
|
|
||||||
|
|
||||||
if (addSynapseLink) {
|
|
||||||
addDivider();
|
|
||||||
buttons.push(addSynapseLink);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userContext.apiType !== "Tables") {
|
|
||||||
newCollectionBtn.children = [createNewCollectionGroup(container)];
|
|
||||||
const newDatabaseBtn = createNewDatabase(container);
|
|
||||||
newCollectionBtn.children.push(newDatabaseBtn);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userContext.apiType !== "Tables") {
|
||||||
|
newCollectionBtn.children = [createNewCollectionGroup(container)];
|
||||||
|
const newDatabaseBtn = createNewDatabase(container);
|
||||||
|
newCollectionBtn.children.push(newDatabaseBtn);
|
||||||
|
}
|
||||||
|
|
||||||
if (useNotebook.getState().isNotebookEnabled) {
|
if (useNotebook.getState().isNotebookEnabled) {
|
||||||
addDivider();
|
buttons.push(createDivider());
|
||||||
const notebookButtons: CommandButtonComponentProps[] = [];
|
const notebookButtons: CommandButtonComponentProps[] = [];
|
||||||
|
|
||||||
const newNotebookButton = createNewNotebookButton(container);
|
const newNotebookButton = createNewNotebookButton(container);
|
||||||
@@ -130,7 +128,7 @@ export function createStaticCommandBarButtons(
|
|||||||
const isQuerySupported = userContext.apiType === "SQL" || userContext.apiType === "Gremlin";
|
const isQuerySupported = userContext.apiType === "SQL" || userContext.apiType === "Gremlin";
|
||||||
|
|
||||||
if (isQuerySupported) {
|
if (isQuerySupported) {
|
||||||
addDivider();
|
buttons.push(createDivider());
|
||||||
const newSqlQueryBtn = createNewSQLQueryButton(selectedNodeState);
|
const newSqlQueryBtn = createNewSQLQueryButton(selectedNodeState);
|
||||||
buttons.push(newSqlQueryBtn);
|
buttons.push(newSqlQueryBtn);
|
||||||
}
|
}
|
||||||
@@ -200,7 +198,7 @@ export function createControlCommandBarButtons(container: Explorer): CommandButt
|
|||||||
{
|
{
|
||||||
iconSrc: SettingsIcon,
|
iconSrc: SettingsIcon,
|
||||||
iconAlt: "Settings",
|
iconAlt: "Settings",
|
||||||
onCommandClick: () => useSidePanel.getState().openSidePanel("Settings", <SettingsPane explorer={container} />),
|
onCommandClick: () => useSidePanel.getState().openSidePanel("Settings", <SettingsPane />),
|
||||||
commandButtonLabel: undefined,
|
commandButtonLabel: undefined,
|
||||||
ariaLabel: "Settings",
|
ariaLabel: "Settings",
|
||||||
tooltipText: "Settings",
|
tooltipText: "Settings",
|
||||||
@@ -334,8 +332,13 @@ function createNewSQLQueryButton(selectedNodeState: SelectedNodeState): CommandB
|
|||||||
iconSrc: AddSqlQueryIcon,
|
iconSrc: AddSqlQueryIcon,
|
||||||
iconAlt: label,
|
iconAlt: label,
|
||||||
onCommandClick: () => {
|
onCommandClick: () => {
|
||||||
const selectedCollection: ViewModels.Collection = selectedNodeState.findSelectedCollection();
|
if (useSelectedNode.getState().isQueryCopilotCollectionSelected()) {
|
||||||
selectedCollection && selectedCollection.onNewQueryClick(selectedCollection);
|
useTabs.getState().openAndActivateReactTab(ReactTabKind.QueryCopilot);
|
||||||
|
traceOpen(Action.OpenQueryCopilotFromNewQuery, { apiType: userContext.apiType });
|
||||||
|
} else {
|
||||||
|
const selectedCollection: ViewModels.Collection = selectedNodeState.findSelectedCollection();
|
||||||
|
selectedCollection && selectedCollection.onNewQueryClick(selectedCollection);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
commandButtonLabel: label,
|
commandButtonLabel: label,
|
||||||
ariaLabel: label,
|
ariaLabel: label,
|
||||||
@@ -515,7 +518,7 @@ function createOpenTerminalButtonByKind(
|
|||||||
case ViewModels.TerminalKind.Postgres:
|
case ViewModels.TerminalKind.Postgres:
|
||||||
return "PSQL";
|
return "PSQL";
|
||||||
case ViewModels.TerminalKind.VCoreMongo:
|
case ViewModels.TerminalKind.VCoreMongo:
|
||||||
return "MongoDB (vCore)";
|
return "MongoDB (vcore)";
|
||||||
default:
|
default:
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ describe("CommandBarUtil tests", () => {
|
|||||||
|
|
||||||
// Click gets called
|
// Click gets called
|
||||||
converted.onClick();
|
converted.onClick();
|
||||||
expect(btn.onCommandClick).toHaveBeenCalled();
|
expect(btn.onCommandClick).toBeCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should convert NavbarButtonConfig to split button", () => {
|
it("should convert NavbarButtonConfig to split button", () => {
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import {
|
|||||||
IDropdownOption,
|
IDropdownOption,
|
||||||
IDropdownStyles,
|
IDropdownStyles,
|
||||||
} from "@fluentui/react";
|
} from "@fluentui/react";
|
||||||
import { useQueryCopilot } from "hooks/useQueryCopilot";
|
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
import _ from "underscore";
|
import _ from "underscore";
|
||||||
import ChevronDownIcon from "../../../../images/Chevron_down.svg";
|
import ChevronDownIcon from "../../../../images/Chevron_down.svg";
|
||||||
@@ -25,10 +24,7 @@ import { MemoryTracker } from "./MemoryTrackerComponent";
|
|||||||
* @param btns
|
* @param btns
|
||||||
*/
|
*/
|
||||||
export const convertButton = (btns: CommandButtonComponentProps[], backgroundColor: string): ICommandBarItemProps[] => {
|
export const convertButton = (btns: CommandButtonComponentProps[], backgroundColor: string): ICommandBarItemProps[] => {
|
||||||
const buttonHeightPx =
|
const buttonHeightPx = StyleConstants.CommandBarButtonHeight;
|
||||||
configContext.platform == Platform.Fabric
|
|
||||||
? StyleConstants.FabricCommandBarButtonHeight
|
|
||||||
: StyleConstants.CommandBarButtonHeight;
|
|
||||||
|
|
||||||
const hoverColor =
|
const hoverColor =
|
||||||
configContext.platform == Platform.Fabric ? StyleConstants.FabricAccentLight : StyleConstants.AccentLight;
|
configContext.platform == Platform.Fabric ? StyleConstants.FabricAccentLight : StyleConstants.AccentLight;
|
||||||
@@ -61,11 +57,7 @@ export const convertButton = (btns: CommandButtonComponentProps[], backgroundCol
|
|||||||
},
|
},
|
||||||
onClick: (ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement>) => {
|
onClick: (ev?: React.MouseEvent<HTMLElement, MouseEvent> | React.KeyboardEvent<HTMLElement>) => {
|
||||||
btn.onCommandClick(ev);
|
btn.onCommandClick(ev);
|
||||||
let copilotEnabled = false;
|
TelemetryProcessor.trace(Action.ClickCommandBarButton, ActionModifiers.Mark, { label });
|
||||||
if (useQueryCopilot.getState().copilotEnabled && useQueryCopilot.getState().copilotUserDBEnabled) {
|
|
||||||
copilotEnabled = useQueryCopilot.getState().copilotEnabledforExecution;
|
|
||||||
}
|
|
||||||
TelemetryProcessor.trace(Action.ClickCommandBarButton, ActionModifiers.Mark, { label, copilotEnabled });
|
|
||||||
},
|
},
|
||||||
key: `${btn.commandButtonLabel}${index}`,
|
key: `${btn.commandButtonLabel}${index}`,
|
||||||
text: label,
|
text: label,
|
||||||
@@ -115,7 +107,6 @@ export const convertButton = (btns: CommandButtonComponentProps[], backgroundCol
|
|||||||
splitButtonContainer: {
|
splitButtonContainer: {
|
||||||
marginLeft: 5,
|
marginLeft: 5,
|
||||||
marginRight: 5,
|
marginRight: 5,
|
||||||
height: buttonHeightPx,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
className: btn.className,
|
className: btn.className,
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { makeNotebookRecord } from "@nteract/commutable";
|
|
||||||
import { actions, state } from "@nteract/core";
|
|
||||||
import * as Immutable from "immutable";
|
import * as Immutable from "immutable";
|
||||||
import { StateObservable } from "redux-observable";
|
import { StateObservable } from "redux-observable";
|
||||||
import { Subject, of } from "rxjs";
|
import { Subject, of } from "rxjs";
|
||||||
import { toArray } from "rxjs/operators";
|
import { toArray } from "rxjs/operators";
|
||||||
|
import { makeNotebookRecord } from "@nteract/commutable";
|
||||||
|
import { actions, state, epics } from "@nteract/core";
|
||||||
import * as sinon from "sinon";
|
import * as sinon from "sinon";
|
||||||
|
|
||||||
import { NotebookUtil } from "../NotebookUtil";
|
|
||||||
import { launchWebSocketKernelEpic } from "./epics";
|
|
||||||
import { CdbAppState, makeCdbRecord } from "./types";
|
import { CdbAppState, makeCdbRecord } from "./types";
|
||||||
|
import { launchWebSocketKernelEpic } from "./epics";
|
||||||
|
import { NotebookUtil } from "../NotebookUtil";
|
||||||
|
|
||||||
import { sessions } from "rx-jupyter";
|
import { sessions } from "rx-jupyter";
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
const kernelRef = "fake";
|
const kernelRef = "fake";
|
||||||
|
|
||||||
it("launches remote kernels", async () => {
|
it("launches remote kernels", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const cwd = "/";
|
const cwd = "/";
|
||||||
const kernelId = "123";
|
const kernelId = "123";
|
||||||
@@ -183,7 +183,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("launches any kernel with no kernelspecs in the state", async () => {
|
it("launches any kernel with no kernelspecs in the state", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const cwd = "/";
|
const cwd = "/";
|
||||||
const kernelId = "123";
|
const kernelId = "123";
|
||||||
@@ -236,7 +236,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("launches no kernel if no kernel is specified and state has no kernelspecs", async () => {
|
it("launches no kernel if no kernel is specified and state has no kernelspecs", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const cwd = "/";
|
const cwd = "/";
|
||||||
const kernelId = "123";
|
const kernelId = "123";
|
||||||
@@ -289,7 +289,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("emits an error if backend returns an error", async () => {
|
it("emits an error if backend returns an error", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const cwd = "/";
|
const cwd = "/";
|
||||||
const action$ = of(
|
const action$ = of(
|
||||||
@@ -388,7 +388,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("launches supported kernel in kernelspecs", async () => {
|
it("launches supported kernel in kernelspecs", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const action$ = of(
|
const action$ = of(
|
||||||
actions.launchKernelByName({
|
actions.launchKernelByName({
|
||||||
@@ -409,7 +409,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("launches undefined kernel uses default kernel from kernelspecs", async () => {
|
it("launches undefined kernel uses default kernel from kernelspecs", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const action$ = of(
|
const action$ = of(
|
||||||
actions.launchKernelByName({
|
actions.launchKernelByName({
|
||||||
@@ -431,7 +431,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("launches unsupported kernel uses default kernel from kernelspecs", async () => {
|
it("launches unsupported kernel uses default kernel from kernelspecs", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const action$ = of(
|
const action$ = of(
|
||||||
actions.launchKernelByName({
|
actions.launchKernelByName({
|
||||||
@@ -453,7 +453,7 @@ describe("launchWebSocketKernelEpic", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("launches unsupported kernel uses kernelspecs with similar name", async () => {
|
it("launches unsupported kernel uses kernelspecs with similar name", async () => {
|
||||||
const state$ = new StateObservable(new Subject<CdbAppState>() as any, initialState);
|
const state$ = new StateObservable(new Subject<CdbAppState>(), initialState);
|
||||||
|
|
||||||
const action$ = of(
|
const action$ = of(
|
||||||
actions.launchKernelByName({
|
actions.launchKernelByName({
|
||||||
|
|||||||
@@ -69,8 +69,8 @@ const addInitialCodeCellEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<{} | actions.CreateCellBelow> => {
|
): Observable<{} | actions.CreateCellBelow> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.FETCH_CONTENT_FULFILLED) as any,
|
ofType(actions.FETCH_CONTENT_FULFILLED),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
const contentRef = action.payload.contentRef;
|
const contentRef = action.payload.contentRef;
|
||||||
const model = selectors.model(state, { contentRef });
|
const model = selectors.model(state, { contentRef });
|
||||||
@@ -116,7 +116,7 @@ const formWebSocketURL = (serverConfig: NotebookServiceConfig, kernelId: string,
|
|||||||
*/
|
*/
|
||||||
export const acquireKernelInfoEpic = (action$: Observable<actions.NewKernelAction>) => {
|
export const acquireKernelInfoEpic = (action$: Observable<actions.NewKernelAction>) => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.LAUNCH_KERNEL_SUCCESSFUL) as any,
|
ofType(actions.LAUNCH_KERNEL_SUCCESSFUL),
|
||||||
switchMap((action: actions.NewKernelAction) => {
|
switchMap((action: actions.NewKernelAction) => {
|
||||||
const {
|
const {
|
||||||
payload: {
|
payload: {
|
||||||
@@ -271,9 +271,9 @@ export const launchWebSocketKernelEpic = (
|
|||||||
state$: StateObservable<CdbAppState>,
|
state$: StateObservable<CdbAppState>,
|
||||||
) => {
|
) => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.LAUNCH_KERNEL_BY_NAME) as any,
|
ofType(actions.LAUNCH_KERNEL_BY_NAME),
|
||||||
// Only accept jupyter servers for the host with this epic
|
// Only accept jupyter servers for the host with this epic
|
||||||
filter(() => selectors.isCurrentHostJupyter(state$.value as never)),
|
filter(() => selectors.isCurrentHostJupyter(state$.value)),
|
||||||
switchMap((action: actions.LaunchKernelByNameAction) => {
|
switchMap((action: actions.LaunchKernelByNameAction) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
const host = selectors.currentHost(state);
|
const host = selectors.currentHost(state);
|
||||||
@@ -382,7 +382,7 @@ export const restartWebSocketKernelEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
) =>
|
) =>
|
||||||
action$.pipe(
|
action$.pipe(
|
||||||
ofType(actions.RESTART_KERNEL) as any,
|
ofType(actions.RESTART_KERNEL),
|
||||||
concatMap((action: actions.RestartKernel) => {
|
concatMap((action: actions.RestartKernel) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
|
|
||||||
@@ -449,7 +449,7 @@ export const restartWebSocketKernelEpic = (
|
|||||||
});
|
});
|
||||||
|
|
||||||
const awaitKernelReady = action$.pipe(
|
const awaitKernelReady = action$.pipe(
|
||||||
ofType(actions.LAUNCH_KERNEL_SUCCESSFUL) as any,
|
ofType(actions.LAUNCH_KERNEL_SUCCESSFUL),
|
||||||
filter((action: actions.NewKernelAction | actions.RestartKernel) => action.payload.kernelRef === newKernelRef),
|
filter((action: actions.NewKernelAction | actions.RestartKernel) => action.payload.kernelRef === newKernelRef),
|
||||||
take(1),
|
take(1),
|
||||||
timeout(60000), // If kernel doesn't come up within this interval we will abort follow-on actions.
|
timeout(60000), // If kernel doesn't come up within this interval we will abort follow-on actions.
|
||||||
@@ -492,9 +492,9 @@ const changeWebSocketKernelEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
) => {
|
) => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.CHANGE_KERNEL_BY_NAME) as any,
|
ofType(actions.CHANGE_KERNEL_BY_NAME),
|
||||||
// Only accept jupyter servers for the host with this epic
|
// Only accept jupyter servers for the host with this epic
|
||||||
filter(() => selectors.isCurrentHostJupyter(state$.value as never)),
|
filter(() => selectors.isCurrentHostJupyter(state$.value)),
|
||||||
switchMap((action: actions.ChangeKernelByName) => {
|
switchMap((action: actions.ChangeKernelByName) => {
|
||||||
const {
|
const {
|
||||||
payload: { contentRef, oldKernelRef, kernelSpecName },
|
payload: { contentRef, oldKernelRef, kernelSpecName },
|
||||||
@@ -574,8 +574,8 @@ const focusInitialCodeCellEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<{} | actions.FocusCell> => {
|
): Observable<{} | actions.FocusCell> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.CREATE_CELL_APPEND) as any,
|
ofType(actions.CREATE_CELL_APPEND),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
const contentRef = action.payload.contentRef;
|
const contentRef = action.payload.contentRef;
|
||||||
const model = selectors.model(state, { contentRef });
|
const model = selectors.model(state, { contentRef });
|
||||||
@@ -616,8 +616,8 @@ const notificationsToUserEpic = (action$: Observable<any>, state$: StateObservab
|
|||||||
actions.SAVE_FULFILLED,
|
actions.SAVE_FULFILLED,
|
||||||
actions.SAVE_FAILED,
|
actions.SAVE_FAILED,
|
||||||
actions.FETCH_CONTENT_FAILED,
|
actions.FETCH_CONTENT_FAILED,
|
||||||
) as any,
|
),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case actions.RESTART_KERNEL_SUCCESSFUL: {
|
case actions.RESTART_KERNEL_SUCCESSFUL: {
|
||||||
const title = "Kernel restart";
|
const title = "Kernel restart";
|
||||||
@@ -662,8 +662,8 @@ const handleKernelConnectionLostEpic = (
|
|||||||
state$: StateObservable<CdbAppState>,
|
state$: StateObservable<CdbAppState>,
|
||||||
): Observable<CdbActions.UpdateKernelRestartDelayAction | actions.RestartKernel | {}> => {
|
): Observable<CdbActions.UpdateKernelRestartDelayAction | actions.RestartKernel | {}> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.UPDATE_DISPLAY_FAILED) as any,
|
ofType(actions.UPDATE_DISPLAY_FAILED),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
|
|
||||||
const msg = "Notebook was disconnected from kernel";
|
const msg = "Notebook was disconnected from kernel";
|
||||||
@@ -721,8 +721,8 @@ export const cleanKernelOnConnectionLostEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<actions.KillKernelSuccessful> => {
|
): Observable<actions.KillKernelSuccessful> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.UPDATE_DISPLAY_FAILED) as any,
|
ofType(actions.UPDATE_DISPLAY_FAILED),
|
||||||
switchMap((action: any) => {
|
switchMap((action) => {
|
||||||
const contentRef = action.payload.contentRef;
|
const contentRef = action.payload.contentRef;
|
||||||
const kernelRef = selectors.kernelRefByContentRef(state$.value, { contentRef });
|
const kernelRef = selectors.kernelRefByContentRef(state$.value, { contentRef });
|
||||||
return of(
|
return of(
|
||||||
@@ -744,8 +744,8 @@ const executeFocusedCellAndFocusNextEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<{} | actions.FocusNextCellEditor> => {
|
): Observable<{} | actions.FocusNextCellEditor> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(CdbActions.EXECUTE_FOCUSED_CELL_AND_FOCUS_NEXT) as any,
|
ofType(CdbActions.EXECUTE_FOCUSED_CELL_AND_FOCUS_NEXT),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const contentRef = action.payload.contentRef;
|
const contentRef = action.payload.contentRef;
|
||||||
return concat(
|
return concat(
|
||||||
of(actions.executeFocusedCell({ contentRef })),
|
of(actions.executeFocusedCell({ contentRef })),
|
||||||
@@ -765,8 +765,8 @@ const closeUnsupportedMimetypesEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<{}> => {
|
): Observable<{}> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.FETCH_CONTENT_FULFILLED) as any,
|
ofType(actions.FETCH_CONTENT_FULFILLED),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const mimetype = action.payload.model.mimetype;
|
const mimetype = action.payload.model.mimetype;
|
||||||
if (!TextFile.handles(mimetype)) {
|
if (!TextFile.handles(mimetype)) {
|
||||||
const filepath = action.payload.filepath;
|
const filepath = action.payload.filepath;
|
||||||
@@ -796,8 +796,8 @@ const closeContentFailedToFetchEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<{}> => {
|
): Observable<{}> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.FETCH_CONTENT_FAILED) as any,
|
ofType(actions.FETCH_CONTENT_FAILED),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const filepath = action.payload.filepath;
|
const filepath = action.payload.filepath;
|
||||||
// Close tab and show error message
|
// Close tab and show error message
|
||||||
useTabs
|
useTabs
|
||||||
@@ -818,7 +818,7 @@ const traceNotebookTelemetryEpic = (
|
|||||||
state$: StateObservable<CdbAppState>,
|
state$: StateObservable<CdbAppState>,
|
||||||
): Observable<{}> => {
|
): Observable<{}> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(cdbActions.TRACE_NOTEBOOK_TELEMETRY) as any,
|
ofType(cdbActions.TRACE_NOTEBOOK_TELEMETRY),
|
||||||
mergeMap((action: cdbActions.TraceNotebookTelemetryAction) => {
|
mergeMap((action: cdbActions.TraceNotebookTelemetryAction) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
|
|
||||||
@@ -844,7 +844,7 @@ const traceNotebookInfoEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<{} | cdbActions.TraceNotebookTelemetryAction> => {
|
): Observable<{} | cdbActions.TraceNotebookTelemetryAction> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.FETCH_CONTENT_FULFILLED) as any,
|
ofType(actions.FETCH_CONTENT_FULFILLED),
|
||||||
mergeMap((action: { payload: any }) => {
|
mergeMap((action: { payload: any }) => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
const contentRef = action.payload.contentRef;
|
const contentRef = action.payload.contentRef;
|
||||||
@@ -897,7 +897,7 @@ const traceNotebookKernelEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<cdbActions.TraceNotebookTelemetryAction> => {
|
): Observable<cdbActions.TraceNotebookTelemetryAction> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.LAUNCH_KERNEL_SUCCESSFUL) as any,
|
ofType(actions.LAUNCH_KERNEL_SUCCESSFUL),
|
||||||
mergeMap((action: { payload: any; type: string }) => {
|
mergeMap((action: { payload: any; type: string }) => {
|
||||||
return of(
|
return of(
|
||||||
cdbActions.traceNotebookTelemetry({
|
cdbActions.traceNotebookTelemetry({
|
||||||
@@ -917,8 +917,8 @@ const resetCellStatusOnExecuteCanceledEpic = (
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<actions.UpdateCellStatus> => {
|
): Observable<actions.UpdateCellStatus> => {
|
||||||
return action$.pipe(
|
return action$.pipe(
|
||||||
ofType(actions.EXECUTE_CANCELED) as any,
|
ofType(actions.EXECUTE_CANCELED),
|
||||||
mergeMap((action: any) => {
|
mergeMap((action) => {
|
||||||
const contentRef = action.payload.contentRef;
|
const contentRef = action.payload.contentRef;
|
||||||
const model = state$.value.core.entities.contents.byRef.get(contentRef).model;
|
const model = state$.value.core.entities.contents.byRef.get(contentRef).model;
|
||||||
let busyCellIds: string[] = [];
|
let busyCellIds: string[] = [];
|
||||||
@@ -960,8 +960,8 @@ export function autoSaveCurrentContentEpic(
|
|||||||
state$: StateObservable<AppState>,
|
state$: StateObservable<AppState>,
|
||||||
): Observable<actions.Save> {
|
): Observable<actions.Save> {
|
||||||
return state$.pipe(
|
return state$.pipe(
|
||||||
map((state) => autoSaveInterval(state)) as any,
|
map((state) => autoSaveInterval(state)),
|
||||||
switchMap((time) => interval(time as number)) as any,
|
switchMap((time) => interval(time)),
|
||||||
mergeMap(() => {
|
mergeMap(() => {
|
||||||
const state = state$.value;
|
const state = state$.value;
|
||||||
return from(
|
return from(
|
||||||
@@ -976,7 +976,7 @@ export function autoSaveCurrentContentEpic(
|
|||||||
)
|
)
|
||||||
.keys(),
|
.keys(),
|
||||||
);
|
);
|
||||||
}) as any,
|
}),
|
||||||
filter((contentRef: ContentRef) => {
|
filter((contentRef: ContentRef) => {
|
||||||
const model = selectors.model(state$.value, { contentRef });
|
const model = selectors.model(state$.value, { contentRef });
|
||||||
const content = selectors.content(state$.value, { contentRef });
|
const content = selectors.content(state$.value, { contentRef });
|
||||||
@@ -985,12 +985,12 @@ export function autoSaveCurrentContentEpic(
|
|||||||
model.type === "notebook" &&
|
model.type === "notebook" &&
|
||||||
NotebookUtil.getContentProviderType(content.filepath) !== NotebookContentProviderType.JupyterContentProviderType
|
NotebookUtil.getContentProviderType(content.filepath) !== NotebookContentProviderType.JupyterContentProviderType
|
||||||
) {
|
) {
|
||||||
return selectors.notebook.isDirty(model as never);
|
return selectors.notebook.isDirty(model);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}) as any,
|
}),
|
||||||
map((contentRef: ContentRef) => actions.save({ contentRef })) as any,
|
map((contentRef: ContentRef) => actions.save({ contentRef })),
|
||||||
) as any;
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const allEpics = [
|
export const allEpics = [
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ export default function configureStore(
|
|||||||
|
|
||||||
const protect = (epic: Epic) => {
|
const protect = (epic: Epic) => {
|
||||||
return (action$: Observable<any>, state$: any, dependencies: any) =>
|
return (action$: Observable<any>, state$: any, dependencies: any) =>
|
||||||
epic(action$ as any, state$, dependencies).pipe(
|
epic(action$, state$, dependencies).pipe(
|
||||||
catchError((error, caught) => {
|
catchError((error, caught) => {
|
||||||
traceFailure("Epic failure", error);
|
traceFailure("Epic failure", error);
|
||||||
return caught;
|
return caught;
|
||||||
}) as any,
|
}),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ export default function configureStore(
|
|||||||
};
|
};
|
||||||
|
|
||||||
const protectEpics = (epics: Epic[]): Epic[] => {
|
const protectEpics = (epics: Epic[]): Epic[] => {
|
||||||
return epics.map((epic) => protect(epic)) as any;
|
return epics.map((epic) => protect(epic));
|
||||||
};
|
};
|
||||||
|
|
||||||
const filteredCoreEpics = getCoreEpics(autoStartKernelOnNotebookOpen);
|
const filteredCoreEpics = getCoreEpics(autoStartKernelOnNotebookOpen);
|
||||||
@@ -64,7 +64,7 @@ export default function configureStore(
|
|||||||
core: coreReducer as any,
|
core: coreReducer as any,
|
||||||
cdb: cdbReducer,
|
cdb: cdbReducer,
|
||||||
},
|
},
|
||||||
epics: protectEpics([...filteredCoreEpics, ...allEpics] as any),
|
epics: protectEpics([...filteredCoreEpics, ...allEpics]),
|
||||||
epicDependencies: { contentProvider },
|
epicDependencies: { contentProvider },
|
||||||
epicMiddleware: customMiddlewares.concat(catchErrorMiddleware),
|
epicMiddleware: customMiddlewares.concat(catchErrorMiddleware),
|
||||||
enhancer: composeEnhancers,
|
enhancer: composeEnhancers,
|
||||||
@@ -106,5 +106,5 @@ export const getCoreEpics = (autoStartKernelOnNotebookOpen: boolean): Epic[] =>
|
|||||||
filteredCoreEpics.push(coreEpics.launchKernelWhenNotebookSetEpic);
|
filteredCoreEpics.push(coreEpics.launchKernelWhenNotebookSetEpic);
|
||||||
}
|
}
|
||||||
|
|
||||||
return filteredCoreEpics as any;
|
return filteredCoreEpics;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ function openPane(action: ActionContracts.OpenPane, explorer: Explorer) {
|
|||||||
action.paneKind === ActionContracts.PaneKind.GlobalSettings ||
|
action.paneKind === ActionContracts.PaneKind.GlobalSettings ||
|
||||||
action.paneKind === ActionContracts.PaneKind[ActionContracts.PaneKind.GlobalSettings]
|
action.paneKind === ActionContracts.PaneKind[ActionContracts.PaneKind.GlobalSettings]
|
||||||
) {
|
) {
|
||||||
useSidePanel.getState().openSidePanel("Settings", <SettingsPane explorer={explorer} />);
|
useSidePanel.getState().openSidePanel("Settings", <SettingsPane />);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -114,8 +114,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
|||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
createNewDatabase:
|
createNewDatabase: userContext.apiType !== "Tables" && !this.props.databaseId,
|
||||||
userContext.apiType !== "Tables" && configContext.platform !== Platform.Fabric && !this.props.databaseId,
|
|
||||||
newDatabaseId: props.isQuickstart ? this.getSampleDBName() : "",
|
newDatabaseId: props.isQuickstart ? this.getSampleDBName() : "",
|
||||||
isSharedThroughputChecked: this.getSharedThroughputDefault(),
|
isSharedThroughputChecked: this.getSharedThroughputDefault(),
|
||||||
selectedDatabaseId:
|
selectedDatabaseId:
|
||||||
@@ -275,38 +274,36 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
|||||||
</TooltipHost>
|
</TooltipHost>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
{configContext.platform !== Platform.Fabric && (
|
<Stack horizontal verticalAlign="center">
|
||||||
<Stack horizontal verticalAlign="center">
|
<div role="radiogroup">
|
||||||
<div role="radiogroup">
|
<input
|
||||||
<input
|
className="panelRadioBtn"
|
||||||
className="panelRadioBtn"
|
checked={this.state.createNewDatabase}
|
||||||
checked={this.state.createNewDatabase}
|
aria-label="Create new database"
|
||||||
aria-label="Create new database"
|
aria-checked={this.state.createNewDatabase}
|
||||||
aria-checked={this.state.createNewDatabase}
|
name="databaseType"
|
||||||
name="databaseType"
|
type="radio"
|
||||||
type="radio"
|
role="radio"
|
||||||
role="radio"
|
id="databaseCreateNew"
|
||||||
id="databaseCreateNew"
|
tabIndex={0}
|
||||||
tabIndex={0}
|
onChange={this.onCreateNewDatabaseRadioBtnChange.bind(this)}
|
||||||
onChange={this.onCreateNewDatabaseRadioBtnChange.bind(this)}
|
/>
|
||||||
/>
|
<span className="panelRadioBtnLabel">Create new</span>
|
||||||
<span className="panelRadioBtnLabel">Create new</span>
|
|
||||||
|
|
||||||
<input
|
<input
|
||||||
className="panelRadioBtn"
|
className="panelRadioBtn"
|
||||||
checked={!this.state.createNewDatabase}
|
checked={!this.state.createNewDatabase}
|
||||||
aria-label="Use existing database"
|
aria-label="Use existing database"
|
||||||
aria-checked={!this.state.createNewDatabase}
|
aria-checked={!this.state.createNewDatabase}
|
||||||
name="databaseType"
|
name="databaseType"
|
||||||
type="radio"
|
type="radio"
|
||||||
role="radio"
|
role="radio"
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
onChange={this.onUseExistingDatabaseRadioBtnChange.bind(this)}
|
onChange={this.onUseExistingDatabaseRadioBtnChange.bind(this)}
|
||||||
/>
|
/>
|
||||||
<span className="panelRadioBtnLabel">Use existing</span>
|
<span className="panelRadioBtnLabel">Use existing</span>
|
||||||
</div>
|
</div>
|
||||||
</Stack>
|
</Stack>
|
||||||
)}
|
|
||||||
|
|
||||||
{this.state.createNewDatabase && (
|
{this.state.createNewDatabase && (
|
||||||
<Stack className="panelGroupSpacing">
|
<Stack className="panelGroupSpacing">
|
||||||
@@ -1431,6 +1428,8 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
|||||||
this.setState({ isExecuting: false });
|
this.setState({ isExecuting: false });
|
||||||
TelemetryProcessor.traceSuccess(Action.CreateCollection, telemetryData, startKey);
|
TelemetryProcessor.traceSuccess(Action.CreateCollection, telemetryData, startKey);
|
||||||
useSidePanel.getState().closeSidePanel();
|
useSidePanel.getState().closeSidePanel();
|
||||||
|
// open NPS Survey Dialog once the collection is created
|
||||||
|
this.props.explorer.openNPSSurveyDialog();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const errorMessage: string = getErrorMessage(error);
|
const errorMessage: string = getErrorMessage(error);
|
||||||
this.setState({ isExecuting: false, errorMessage, showErrorDetails: true });
|
this.setState({ isExecuting: false, errorMessage, showErrorDetails: true });
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ describe("Cassandra add collection pane test", () => {
|
|||||||
expect(screen.getByRole("combobox", { name: "Choose existing keyspace id" })).toBeDefined();
|
expect(screen.getByRole("combobox", { name: "Choose existing keyspace id" })).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("enter Keyspace name", () => {
|
it("enter Keyspace name ", () => {
|
||||||
fireEvent.change(screen.getByRole("textbox", { name: "Keyspace id" }), { target: { value: "table1" } });
|
fireEvent.change(screen.getByRole("textbox", { name: "Keyspace id" }), { target: { value: "table1" } });
|
||||||
expect(screen.getByText("CREATE TABLE table1.")).toBeDefined();
|
expect(screen.getByText("CREATE TABLE table1.")).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
|||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
{!isServerlessAccount() && isKeyspaceShared && !keyspaceCreateNew && (
|
{!isServerlessAccount() && isKeyspaceShared && !keyspaceCreateNew && (
|
||||||
<Stack horizontal verticalAlign="center">
|
<Stack>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
id="tableSharedThroughput"
|
id="tableSharedThroughput"
|
||||||
|
|||||||
@@ -35,11 +35,10 @@ export const DeleteCollectionConfirmationPane: FunctionComponent<DeleteCollectio
|
|||||||
|
|
||||||
const collectionName = getCollectionName().toLocaleLowerCase();
|
const collectionName = getCollectionName().toLocaleLowerCase();
|
||||||
const paneTitle = "Delete " + collectionName;
|
const paneTitle = "Delete " + collectionName;
|
||||||
|
|
||||||
const onSubmit = async (): Promise<void> => {
|
const onSubmit = async (): Promise<void> => {
|
||||||
const collection = useSelectedNode.getState().findSelectedCollection();
|
const collection = useSelectedNode.getState().findSelectedCollection();
|
||||||
if (!collection || inputCollectionName !== collection.id()) {
|
if (!collection || inputCollectionName !== collection.id()) {
|
||||||
const errorMessage = "Input id " + inputCollectionName + " does not match the selected " + collection.id();
|
const errorMessage = "Input " + collectionName + " id does not match the selected " + collectionName;
|
||||||
setFormError(errorMessage);
|
setFormError(errorMessage);
|
||||||
NotificationConsoleUtils.logConsoleError(
|
NotificationConsoleUtils.logConsoleError(
|
||||||
`Error while deleting ${collectionName} ${collection.id()}: ${errorMessage}`,
|
`Error while deleting ${collectionName} ${collection.id()}: ${errorMessage}`,
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="css-109"
|
className="css-53"
|
||||||
>
|
>
|
||||||
Confirm by typing the
|
Confirm by typing the
|
||||||
container
|
container
|
||||||
@@ -340,19 +340,19 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
value=""
|
value=""
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField is-required root-111"
|
className="ms-TextField is-required root-55"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-112"
|
className="ms-TextField-fieldGroup fieldGroup-56"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-label="Confirm by typing the container id"
|
aria-label="Confirm by typing the container id"
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
className="ms-TextField-field field-113"
|
className="ms-TextField-field field-57"
|
||||||
id="confirmCollectionId"
|
id="confirmCollectionId"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
@@ -1259,7 +1259,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1285,7 +1285,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1297,16 +1297,14 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1337,7 +1335,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -1364,7 +1362,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1389,16 +1387,14 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1432,7 +1428,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1449,7 +1445,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1461,7 +1457,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1477,13 +1473,12 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1494,16 +1489,14 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1526,21 +1519,13 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -1553,7 +1538,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -1566,7 +1551,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1580,7 +1565,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1594,7 +1579,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -1610,7 +1595,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -1619,7 +1604,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1635,7 +1620,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1647,7 +1632,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1660,7 +1645,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1682,18 +1667,18 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -1743,7 +1728,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1752,7 +1737,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1760,7 +1745,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1782,16 +1767,14 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1813,7 +1796,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2103,7 +2086,7 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="OK"
|
aria-label="OK"
|
||||||
className="ms-Button ms-Button--primary root-122"
|
className="ms-Button ms-Button--primary root-66"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -2115,16 +2098,16 @@ exports[`Delete Collection Confirmation Pane submit() should call delete collect
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-123"
|
className="ms-Button-flexContainer flexContainer-67"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-124"
|
className="ms-Button-textContainer textContainer-68"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-126"
|
className="ms-Button-label label-70"
|
||||||
id="id__5"
|
id="id__3"
|
||||||
key="id__5"
|
key="id__3"
|
||||||
>
|
>
|
||||||
OK
|
OK
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -306,7 +306,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label root-109"
|
className="ms-Label root-53"
|
||||||
>
|
>
|
||||||
Partition key value
|
Partition key value
|
||||||
</label>
|
</label>
|
||||||
@@ -316,11 +316,11 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
horizontal={true}
|
horizontal={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack css-110"
|
className="ms-Stack css-54"
|
||||||
>
|
>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
defaultSelectedKey="string"
|
defaultSelectedKey="string"
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
label="Key"
|
label="Key"
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
options={
|
options={
|
||||||
@@ -661,7 +661,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
responsiveMode={0}
|
responsiveMode={3}
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
theme={
|
theme={
|
||||||
@@ -1225,7 +1225,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label ms-Dropdown-label root-129"
|
className="ms-Label ms-Dropdown-label root-71"
|
||||||
id="Dropdown0-label"
|
id="Dropdown0-label"
|
||||||
>
|
>
|
||||||
Key
|
Key
|
||||||
@@ -1236,7 +1236,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
aria-haspopup="listbox"
|
aria-haspopup="listbox"
|
||||||
aria-labelledby="Dropdown0-label Dropdown0-option"
|
aria-labelledby="Dropdown0-label Dropdown0-option"
|
||||||
className="ms-Dropdown dropdown-111"
|
className="ms-Dropdown dropdown-55"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
data-ktp-target={true}
|
data-ktp-target={true}
|
||||||
id="Dropdown0"
|
id="Dropdown0"
|
||||||
@@ -1251,23 +1251,25 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
aria-atomic={true}
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
className="ms-Dropdown-title title-156"
|
aria-live="polite"
|
||||||
|
className="ms-Dropdown-title title-97"
|
||||||
id="Dropdown0-option"
|
id="Dropdown0-option"
|
||||||
>
|
>
|
||||||
String
|
String
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
className="ms-Dropdown-caretDownWrapper caretDownWrapper-113"
|
className="ms-Dropdown-caretDownWrapper caretDownWrapper-57"
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Dropdown-caretDown caretDown-114"
|
className="ms-Dropdown-caretDown caretDown-58"
|
||||||
iconName="ChevronDown"
|
iconName="ChevronDown"
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Dropdown-caretDown caretDown-114"
|
className="ms-Dropdown-caretDown caretDown-58"
|
||||||
iconName="ChevronDown"
|
iconName="ChevronDown"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
theme={
|
theme={
|
||||||
@@ -1546,7 +1548,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Dropdown-caretDown caretDown-132"
|
className="ms-Dropdown-caretDown caretDown-73"
|
||||||
data-icon-name="ChevronDown"
|
data-icon-name="ChevronDown"
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -1561,7 +1563,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
</Dropdown>
|
</Dropdown>
|
||||||
<StyledTextFieldBase
|
<StyledTextFieldBase
|
||||||
id="confirmCollectionId"
|
id="confirmCollectionId"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
label="Value"
|
label="Value"
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
@@ -1850,7 +1852,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
validateOnLoad={true}
|
validateOnLoad={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField root-134"
|
className="ms-TextField root-75"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
@@ -2139,7 +2141,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label root-109"
|
className="ms-Label root-53"
|
||||||
htmlFor="confirmCollectionId"
|
htmlFor="confirmCollectionId"
|
||||||
id="TextFieldLabel3"
|
id="TextFieldLabel3"
|
||||||
>
|
>
|
||||||
@@ -2148,12 +2150,12 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
</LabelBase>
|
</LabelBase>
|
||||||
</StyledLabelBase>
|
</StyledLabelBase>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-135"
|
className="ms-TextField-fieldGroup fieldGroup-76"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-labelledby="TextFieldLabel3"
|
aria-labelledby="TextFieldLabel3"
|
||||||
className="ms-TextField-field field-136"
|
className="ms-TextField-field field-77"
|
||||||
id="confirmCollectionId"
|
id="confirmCollectionId"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
@@ -2462,7 +2464,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label root-109"
|
className="ms-Label root-53"
|
||||||
>
|
>
|
||||||
Enter input parameters (if any)
|
Enter input parameters (if any)
|
||||||
</label>
|
</label>
|
||||||
@@ -2472,11 +2474,11 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
horizontal={true}
|
horizontal={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack css-110"
|
className="ms-Stack css-54"
|
||||||
>
|
>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
defaultSelectedKey="string"
|
defaultSelectedKey="string"
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
label="Key"
|
label="Key"
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
options={
|
options={
|
||||||
@@ -2817,7 +2819,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
responsiveMode={0}
|
responsiveMode={3}
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
theme={
|
theme={
|
||||||
@@ -3099,12 +3101,12 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<StyledLabelBase
|
<StyledLabelBase
|
||||||
className="ms-Dropdown-label"
|
className="ms-Dropdown-label"
|
||||||
id="Dropdown6-label"
|
id="Dropdown4-label"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
>
|
>
|
||||||
<LabelBase
|
<LabelBase
|
||||||
className="ms-Dropdown-label"
|
className="ms-Dropdown-label"
|
||||||
id="Dropdown6-label"
|
id="Dropdown4-label"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
theme={
|
theme={
|
||||||
Object {
|
Object {
|
||||||
@@ -3381,8 +3383,8 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label ms-Dropdown-label root-129"
|
className="ms-Label ms-Dropdown-label root-71"
|
||||||
id="Dropdown6-label"
|
id="Dropdown4-label"
|
||||||
>
|
>
|
||||||
Key
|
Key
|
||||||
</label>
|
</label>
|
||||||
@@ -3391,11 +3393,11 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
<div
|
<div
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
aria-haspopup="listbox"
|
aria-haspopup="listbox"
|
||||||
aria-labelledby="Dropdown6-label Dropdown6-option"
|
aria-labelledby="Dropdown4-label Dropdown4-option"
|
||||||
className="ms-Dropdown dropdown-111"
|
className="ms-Dropdown dropdown-55"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
data-ktp-target={true}
|
data-ktp-target={true}
|
||||||
id="Dropdown6"
|
id="Dropdown4"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -3407,23 +3409,25 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
aria-atomic={true}
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
className="ms-Dropdown-title title-156"
|
aria-live="polite"
|
||||||
id="Dropdown6-option"
|
className="ms-Dropdown-title title-97"
|
||||||
|
id="Dropdown4-option"
|
||||||
>
|
>
|
||||||
String
|
String
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
className="ms-Dropdown-caretDownWrapper caretDownWrapper-113"
|
className="ms-Dropdown-caretDownWrapper caretDownWrapper-57"
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Dropdown-caretDown caretDown-114"
|
className="ms-Dropdown-caretDown caretDown-58"
|
||||||
iconName="ChevronDown"
|
iconName="ChevronDown"
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Dropdown-caretDown caretDown-114"
|
className="ms-Dropdown-caretDown caretDown-58"
|
||||||
iconName="ChevronDown"
|
iconName="ChevronDown"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
theme={
|
theme={
|
||||||
@@ -3702,7 +3706,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Dropdown-caretDown caretDown-132"
|
className="ms-Dropdown-caretDown caretDown-73"
|
||||||
data-icon-name="ChevronDown"
|
data-icon-name="ChevronDown"
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -3718,7 +3722,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
<StyledTextFieldBase
|
<StyledTextFieldBase
|
||||||
defaultValue=""
|
defaultValue=""
|
||||||
id="confirmCollectionId"
|
id="confirmCollectionId"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
label="Param"
|
label="Param"
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
@@ -4008,19 +4012,19 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
validateOnLoad={true}
|
validateOnLoad={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField root-134"
|
className="ms-TextField root-75"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
>
|
>
|
||||||
<StyledLabelBase
|
<StyledLabelBase
|
||||||
htmlFor="confirmCollectionId"
|
htmlFor="confirmCollectionId"
|
||||||
id="TextFieldLabel9"
|
id="TextFieldLabel7"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
>
|
>
|
||||||
<LabelBase
|
<LabelBase
|
||||||
htmlFor="confirmCollectionId"
|
htmlFor="confirmCollectionId"
|
||||||
id="TextFieldLabel9"
|
id="TextFieldLabel7"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
theme={
|
theme={
|
||||||
Object {
|
Object {
|
||||||
@@ -4297,21 +4301,21 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label root-109"
|
className="ms-Label root-53"
|
||||||
htmlFor="confirmCollectionId"
|
htmlFor="confirmCollectionId"
|
||||||
id="TextFieldLabel9"
|
id="TextFieldLabel7"
|
||||||
>
|
>
|
||||||
Param
|
Param
|
||||||
</label>
|
</label>
|
||||||
</LabelBase>
|
</LabelBase>
|
||||||
</StyledLabelBase>
|
</StyledLabelBase>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-135"
|
className="ms-TextField-fieldGroup fieldGroup-76"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-labelledby="TextFieldLabel9"
|
aria-labelledby="TextFieldLabel7"
|
||||||
className="ms-TextField-field field-136"
|
className="ms-TextField-field field-77"
|
||||||
id="confirmCollectionId"
|
id="confirmCollectionId"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
@@ -4327,7 +4331,6 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
</TextFieldBase>
|
</TextFieldBase>
|
||||||
</StyledTextFieldBase>
|
</StyledTextFieldBase>
|
||||||
<div
|
<div
|
||||||
key=".0:$.$.2/.$.$.0"
|
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<StyledImageBase
|
<StyledImageBase
|
||||||
@@ -4625,7 +4628,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
width={20}
|
width={20}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Image addRemoveIconLabel root-145"
|
className="ms-Image addRemoveIconLabel root-86"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"height": 30,
|
"height": 30,
|
||||||
@@ -4635,7 +4638,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="Delete param"
|
alt="Delete param"
|
||||||
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-146"
|
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-87"
|
||||||
id="deleteparam"
|
id="deleteparam"
|
||||||
key="fabricImage[object Object]"
|
key="fabricImage[object Object]"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -4649,7 +4652,6 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
</StyledImageBase>
|
</StyledImageBase>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
key=".0:$.$.2/.$.$.1"
|
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<StyledImageBase
|
<StyledImageBase
|
||||||
@@ -4947,7 +4949,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
width={20}
|
width={20}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Image addRemoveIconLabel root-145"
|
className="ms-Image addRemoveIconLabel root-86"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"height": 30,
|
"height": 30,
|
||||||
@@ -4957,7 +4959,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="Add param"
|
alt="Add param"
|
||||||
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-146"
|
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-87"
|
||||||
id="addparam"
|
id="addparam"
|
||||||
key="fabricImage[object Object]"
|
key="fabricImage[object Object]"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -4979,14 +4981,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack css-110"
|
className="ms-Stack css-54"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
<StyledImageBase
|
<StyledImageBase
|
||||||
alt="Add param"
|
alt="Add param"
|
||||||
height={30}
|
height={30}
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
src={Object {}}
|
src={Object {}}
|
||||||
width={20}
|
width={20}
|
||||||
>
|
>
|
||||||
@@ -5271,7 +5273,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
width={20}
|
width={20}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Image root-145"
|
className="ms-Image root-86"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"height": 30,
|
"height": 30,
|
||||||
@@ -5281,7 +5283,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="Add param"
|
alt="Add param"
|
||||||
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-146"
|
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-87"
|
||||||
key="fabricImage[object Object]"
|
key="fabricImage[object Object]"
|
||||||
onError={[Function]}
|
onError={[Function]}
|
||||||
onLoad={[Function]}
|
onLoad={[Function]}
|
||||||
@@ -5292,10 +5294,10 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
</StyledImageBase>
|
</StyledImageBase>
|
||||||
<Text
|
<Text
|
||||||
className="addNewParamStyle"
|
className="addNewParamStyle"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="addNewParamStyle css-147"
|
className="addNewParamStyle css-88"
|
||||||
>
|
>
|
||||||
Add New Param
|
Add New Param
|
||||||
</span>
|
</span>
|
||||||
@@ -6192,7 +6194,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6218,7 +6220,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6230,16 +6232,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -6270,7 +6270,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -6297,7 +6297,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -6322,16 +6322,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -6365,7 +6363,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -6382,7 +6380,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -6394,7 +6392,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -6410,13 +6408,12 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6427,16 +6424,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -6459,21 +6454,13 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -6486,7 +6473,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -6499,7 +6486,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -6513,7 +6500,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -6527,7 +6514,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -6543,7 +6530,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -6552,7 +6539,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -6568,7 +6555,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6580,7 +6567,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6593,7 +6580,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6615,18 +6602,18 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -6676,7 +6663,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -6685,7 +6672,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -6693,7 +6680,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -6715,16 +6702,14 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -6746,7 +6731,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -7036,7 +7021,7 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="Execute"
|
aria-label="Execute"
|
||||||
className="ms-Button ms-Button--primary root-148"
|
className="ms-Button ms-Button--primary root-89"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -7048,16 +7033,16 @@ exports[`Excute Sproc Param Pane should render Default properly 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-149"
|
className="ms-Button-flexContainer flexContainer-90"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-150"
|
className="ms-Button-textContainer textContainer-91"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-152"
|
className="ms-Button-label label-93"
|
||||||
id="id__12"
|
id="id__8"
|
||||||
key="id__12"
|
key="id__8"
|
||||||
>
|
>
|
||||||
Execute
|
Execute
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -112,9 +112,8 @@
|
|||||||
margin-top: 28px;
|
margin-top: 28px;
|
||||||
margin-left: 4px !important;
|
margin-left: 4px !important;
|
||||||
}
|
}
|
||||||
.addRemoveIcon [alt="editEntity"]:focus,
|
.addRemoveIcon [alt="editEntity"]:focus,.addRemoveIconLabel [alt="editEntity"]:focus{
|
||||||
.addRemoveIconLabel [alt="editEntity"]:focus {
|
border:1px dashed #605E5C
|
||||||
border: 1px dashed #605e5c;
|
|
||||||
}
|
}
|
||||||
.addNewParamStyle {
|
.addNewParamStyle {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
@@ -154,9 +153,6 @@
|
|||||||
.backImageIcon {
|
.backImageIcon {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
[alt="back"]:focus {
|
|
||||||
border: 1px solid #605e5c;
|
|
||||||
}
|
|
||||||
.addEntityDatePicker {
|
.addEntityDatePicker {
|
||||||
max-width: 145px;
|
max-width: 145px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export class PanelContainerComponent extends React.Component<PanelContainerProps
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount(): void {
|
omponentDidMount(): void {
|
||||||
window.addEventListener("resize", () => this.setState({ height: this.getPanelHeight() }));
|
window.addEventListener("resize", () => this.setState({ height: this.getPanelHeight() }));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,12 +62,12 @@ export class PanelContainerComponent extends React.Component<PanelContainerProps
|
|||||||
customWidth={this.props.panelWidth ? this.props.panelWidth : "440px"}
|
customWidth={this.props.panelWidth ? this.props.panelWidth : "440px"}
|
||||||
headerClassName="panelHeader"
|
headerClassName="panelHeader"
|
||||||
onRenderNavigationContent={this.props.onRenderNavigationContent}
|
onRenderNavigationContent={this.props.onRenderNavigationContent}
|
||||||
isFooterAtBottom={true}
|
|
||||||
styles={{
|
styles={{
|
||||||
navigation: { borderBottom: "1px solid #cccccc" },
|
navigation: { borderBottom: "1px solid #cccccc" },
|
||||||
content: { padding: 0 },
|
content: { padding: 0, height: "100%" },
|
||||||
|
scrollableContent: { height: "100%" },
|
||||||
header: { padding: "0 0 8px 34px" },
|
header: { padding: "0 0 8px 34px" },
|
||||||
commands: { marginTop: 8, paddingTop: 0 },
|
commands: { marginTop: 8 },
|
||||||
}}
|
}}
|
||||||
style={{ height: this.state.height }}
|
style={{ height: this.state.height }}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -32,8 +32,14 @@ export const PanelInfoErrorComponent: React.FunctionComponent<PanelInfoErrorProp
|
|||||||
return (
|
return (
|
||||||
<Stack className="panelInfoErrorContainer" horizontal verticalAlign="center">
|
<Stack className="panelInfoErrorContainer" horizontal verticalAlign="center">
|
||||||
{icon}
|
{icon}
|
||||||
<span className="panelWarningErrorDetailsLinkContainer" role="alert" aria-live="assertive">
|
<span className="panelWarningErrorDetailsLinkContainer">
|
||||||
<Text aria-label={message} className="panelWarningErrorMessage" variant="small">
|
<Text
|
||||||
|
role="alert"
|
||||||
|
aria-live="assertive"
|
||||||
|
aria-label={message}
|
||||||
|
className="panelWarningErrorMessage"
|
||||||
|
variant="small"
|
||||||
|
>
|
||||||
{message}
|
{message}
|
||||||
{link && linkText && (
|
{link && linkText && (
|
||||||
<Link target="_blank" href={link}>
|
<Link target="_blank" href={link}>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { fireEvent, render, screen } from "@testing-library/react";
|
import { fireEvent, render, screen } from "@testing-library/react";
|
||||||
import { ReactWrapper, mount } from "enzyme";
|
import { mount, ReactWrapper } from "enzyme";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { RightPaneForm } from "./RightPaneForm";
|
import { RightPaneForm } from "./RightPaneForm";
|
||||||
|
|
||||||
@@ -34,6 +34,6 @@ describe("Right Pane Form", () => {
|
|||||||
it("should render error in header", () => {
|
it("should render error in header", () => {
|
||||||
render(<RightPaneForm {...props} formError="file already Exist" />);
|
render(<RightPaneForm {...props} formError="file already Exist" />);
|
||||||
expect(screen.getByLabelText("error")).toBeDefined();
|
expect(screen.getByLabelText("error")).toBeDefined();
|
||||||
expect(screen.getByRole("alert").innerHTML).toContain("file already Exist");
|
expect(screen.getByRole("alert").innerHTML).toEqual("file already Exist");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -901,7 +901,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -927,7 +927,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -939,16 +939,14 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -979,7 +977,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -1006,7 +1004,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1031,16 +1029,14 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1074,7 +1070,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1091,7 +1087,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1103,7 +1099,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1119,13 +1115,12 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1136,16 +1131,14 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1168,21 +1161,13 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -1195,7 +1180,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -1208,7 +1193,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1222,7 +1207,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1236,7 +1221,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -1252,7 +1237,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -1261,7 +1246,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1277,7 +1262,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1289,7 +1274,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1302,7 +1287,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1324,18 +1309,18 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -1385,7 +1370,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1394,7 +1379,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1402,7 +1387,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1424,16 +1409,14 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1455,7 +1438,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1745,7 +1728,7 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="Load"
|
aria-label="Load"
|
||||||
className="ms-Button ms-Button--primary root-109"
|
className="ms-Button ms-Button--primary root-53"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -1757,14 +1740,14 @@ exports[`Right Pane Form should render Default properly 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-110"
|
className="ms-Button-flexContainer flexContainer-54"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-111"
|
className="ms-Button-textContainer textContainer-55"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-113"
|
className="ms-Button-label label-57"
|
||||||
id="id__0"
|
id="id__0"
|
||||||
key="id__0"
|
key="id__0"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { SettingsPane } from "./SettingsPane";
|
|||||||
|
|
||||||
describe("Settings Pane", () => {
|
describe("Settings Pane", () => {
|
||||||
it("should render Default properly", () => {
|
it("should render Default properly", () => {
|
||||||
const wrapper = shallow(<SettingsPane explorer={null} />);
|
const wrapper = shallow(<SettingsPane />);
|
||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ describe("Settings Pane", () => {
|
|||||||
},
|
},
|
||||||
} as DatabaseAccount,
|
} as DatabaseAccount,
|
||||||
});
|
});
|
||||||
const wrapper = shallow(<SettingsPane explorer={null} />);
|
const wrapper = shallow(<SettingsPane />);
|
||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
import {
|
import { Checkbox, ChoiceGroup, IChoiceGroupOption, SpinButton } from "@fluentui/react";
|
||||||
Checkbox,
|
|
||||||
ChoiceGroup,
|
|
||||||
IChoiceGroupOption,
|
|
||||||
ISpinButtonStyles,
|
|
||||||
IToggleStyles,
|
|
||||||
Position,
|
|
||||||
SpinButton,
|
|
||||||
Toggle,
|
|
||||||
} from "@fluentui/react";
|
|
||||||
import * as Constants from "Common/Constants";
|
import * as Constants from "Common/Constants";
|
||||||
import { InfoTooltip } from "Common/Tooltip/InfoTooltip";
|
import { InfoTooltip } from "Common/Tooltip/InfoTooltip";
|
||||||
import { configContext } from "ConfigContext";
|
import { configContext } from "ConfigContext";
|
||||||
@@ -15,33 +6,19 @@ import { LocalStorageUtility, StorageKey } from "Shared/StorageUtility";
|
|||||||
import * as StringUtility from "Shared/StringUtility";
|
import * as StringUtility from "Shared/StringUtility";
|
||||||
import { userContext } from "UserContext";
|
import { userContext } from "UserContext";
|
||||||
import { logConsoleInfo } from "Utils/NotificationConsoleUtils";
|
import { logConsoleInfo } from "Utils/NotificationConsoleUtils";
|
||||||
import * as PriorityBasedExecutionUtils from "Utils/PriorityBasedExecutionUtils";
|
|
||||||
import { useQueryCopilot } from "hooks/useQueryCopilot";
|
|
||||||
import { useSidePanel } from "hooks/useSidePanel";
|
import { useSidePanel } from "hooks/useSidePanel";
|
||||||
import React, { FunctionComponent, useState } from "react";
|
import React, { FunctionComponent, MouseEvent, useState } from "react";
|
||||||
import Explorer from "../../Explorer";
|
|
||||||
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
import { RightPaneForm, RightPaneFormProps } from "../RightPaneForm/RightPaneForm";
|
||||||
|
import * as PriorityBasedExecutionUtils from "Utils/PriorityBasedExecutionUtils";
|
||||||
|
|
||||||
export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
export const SettingsPane: FunctionComponent = () => {
|
||||||
explorer,
|
|
||||||
}: {
|
|
||||||
explorer: Explorer;
|
|
||||||
}): JSX.Element => {
|
|
||||||
const closeSidePanel = useSidePanel((state) => state.closeSidePanel);
|
const closeSidePanel = useSidePanel((state) => state.closeSidePanel);
|
||||||
const [isExecuting, setIsExecuting] = useState<boolean>(false);
|
const [isExecuting, setIsExecuting] = useState<boolean>(false);
|
||||||
const [refreshExplorer, setRefreshExplorer] = useState<boolean>(false);
|
|
||||||
const [pageOption, setPageOption] = useState<string>(
|
const [pageOption, setPageOption] = useState<string>(
|
||||||
LocalStorageUtility.getEntryNumber(StorageKey.ActualItemPerPage) === Constants.Queries.unlimitedItemsPerPage
|
LocalStorageUtility.getEntryNumber(StorageKey.ActualItemPerPage) === Constants.Queries.unlimitedItemsPerPage
|
||||||
? Constants.Queries.UnlimitedPageOption
|
? Constants.Queries.UnlimitedPageOption
|
||||||
: Constants.Queries.CustomPageOption,
|
: Constants.Queries.CustomPageOption,
|
||||||
);
|
);
|
||||||
const [queryTimeoutEnabled, setQueryTimeoutEnabled] = useState<boolean>(
|
|
||||||
LocalStorageUtility.getEntryBoolean(StorageKey.QueryTimeoutEnabled),
|
|
||||||
);
|
|
||||||
const [queryTimeout, setQueryTimeout] = useState<number>(LocalStorageUtility.getEntryNumber(StorageKey.QueryTimeout));
|
|
||||||
const [automaticallyCancelQueryAfterTimeout, setAutomaticallyCancelQueryAfterTimeout] = useState<boolean>(
|
|
||||||
LocalStorageUtility.getEntryBoolean(StorageKey.AutomaticallyCancelQueryAfterTimeout),
|
|
||||||
);
|
|
||||||
const [customItemPerPage, setCustomItemPerPage] = useState<number>(
|
const [customItemPerPage, setCustomItemPerPage] = useState<number>(
|
||||||
LocalStorageUtility.getEntryNumber(StorageKey.CustomItemPerPage) || 0,
|
LocalStorageUtility.getEntryNumber(StorageKey.CustomItemPerPage) || 0,
|
||||||
);
|
);
|
||||||
@@ -60,21 +37,6 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
? LocalStorageUtility.getEntryString(StorageKey.IsGraphAutoVizDisabled)
|
? LocalStorageUtility.getEntryString(StorageKey.IsGraphAutoVizDisabled)
|
||||||
: "false",
|
: "false",
|
||||||
);
|
);
|
||||||
const [retryAttempts, setRetryAttempts] = useState<number>(
|
|
||||||
LocalStorageUtility.hasItem(StorageKey.RetryAttempts)
|
|
||||||
? LocalStorageUtility.getEntryNumber(StorageKey.RetryAttempts)
|
|
||||||
: Constants.Queries.DefaultRetryAttempts,
|
|
||||||
);
|
|
||||||
const [retryInterval, setRetryInterval] = useState<number>(
|
|
||||||
LocalStorageUtility.hasItem(StorageKey.RetryInterval)
|
|
||||||
? LocalStorageUtility.getEntryNumber(StorageKey.RetryInterval)
|
|
||||||
: Constants.Queries.DefaultRetryIntervalInMs,
|
|
||||||
);
|
|
||||||
const [MaxWaitTimeInSeconds, setMaxWaitTimeInSeconds] = useState<number>(
|
|
||||||
LocalStorageUtility.hasItem(StorageKey.MaxWaitTimeInSeconds)
|
|
||||||
? LocalStorageUtility.getEntryNumber(StorageKey.MaxWaitTimeInSeconds)
|
|
||||||
: Constants.Queries.DefaultMaxWaitTimeInSeconds,
|
|
||||||
);
|
|
||||||
const [maxDegreeOfParallelism, setMaxDegreeOfParallelism] = useState<number>(
|
const [maxDegreeOfParallelism, setMaxDegreeOfParallelism] = useState<number>(
|
||||||
LocalStorageUtility.hasItem(StorageKey.MaxDegreeOfParellism)
|
LocalStorageUtility.hasItem(StorageKey.MaxDegreeOfParellism)
|
||||||
? LocalStorageUtility.getEntryNumber(StorageKey.MaxDegreeOfParellism)
|
? LocalStorageUtility.getEntryNumber(StorageKey.MaxDegreeOfParellism)
|
||||||
@@ -85,17 +47,13 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
? LocalStorageUtility.getEntryString(StorageKey.PriorityLevel)
|
? LocalStorageUtility.getEntryString(StorageKey.PriorityLevel)
|
||||||
: Constants.PriorityLevel.Default,
|
: Constants.PriorityLevel.Default,
|
||||||
);
|
);
|
||||||
const [copilotSampleDBEnabled, setCopilotSampleDBEnabled] = useState<boolean>(
|
|
||||||
LocalStorageUtility.getEntryString(StorageKey.CopilotSampleDBEnabled) === "true",
|
|
||||||
);
|
|
||||||
const explorerVersion = configContext.gitSha;
|
const explorerVersion = configContext.gitSha;
|
||||||
const shouldShowQueryPageOptions = userContext.apiType === "SQL";
|
const shouldShowQueryPageOptions = userContext.apiType === "SQL";
|
||||||
const shouldShowGraphAutoVizOption = userContext.apiType === "Gremlin";
|
const shouldShowGraphAutoVizOption = userContext.apiType === "Gremlin";
|
||||||
const shouldShowCrossPartitionOption = userContext.apiType !== "Gremlin";
|
const shouldShowCrossPartitionOption = userContext.apiType !== "Gremlin";
|
||||||
const shouldShowParallelismOption = userContext.apiType !== "Gremlin";
|
const shouldShowParallelismOption = userContext.apiType !== "Gremlin";
|
||||||
const shouldShowPriorityLevelOption = PriorityBasedExecutionUtils.isFeatureEnabled();
|
const shouldShowPriorityLevelOption = PriorityBasedExecutionUtils.isFeatureEnabled();
|
||||||
const shouldShowCopilotSampleDBOption = userContext.apiType === "SQL" && useQueryCopilot.getState().copilotEnabled;
|
const handlerOnSubmit = (e: MouseEvent<HTMLButtonElement>) => {
|
||||||
const handlerOnSubmit = async () => {
|
|
||||||
setIsExecuting(true);
|
setIsExecuting(true);
|
||||||
|
|
||||||
LocalStorageUtility.setEntryNumber(
|
LocalStorageUtility.setEntryNumber(
|
||||||
@@ -103,15 +61,10 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
isCustomPageOptionSelected() ? customItemPerPage : Constants.Queries.unlimitedItemsPerPage,
|
isCustomPageOptionSelected() ? customItemPerPage : Constants.Queries.unlimitedItemsPerPage,
|
||||||
);
|
);
|
||||||
LocalStorageUtility.setEntryNumber(StorageKey.CustomItemPerPage, customItemPerPage);
|
LocalStorageUtility.setEntryNumber(StorageKey.CustomItemPerPage, customItemPerPage);
|
||||||
LocalStorageUtility.setEntryBoolean(StorageKey.QueryTimeoutEnabled, queryTimeoutEnabled);
|
|
||||||
LocalStorageUtility.setEntryNumber(StorageKey.RetryAttempts, retryAttempts);
|
|
||||||
LocalStorageUtility.setEntryNumber(StorageKey.RetryInterval, retryInterval);
|
|
||||||
LocalStorageUtility.setEntryNumber(StorageKey.MaxWaitTimeInSeconds, MaxWaitTimeInSeconds);
|
|
||||||
LocalStorageUtility.setEntryString(StorageKey.ContainerPaginationEnabled, containerPaginationEnabled.toString());
|
LocalStorageUtility.setEntryString(StorageKey.ContainerPaginationEnabled, containerPaginationEnabled.toString());
|
||||||
LocalStorageUtility.setEntryString(StorageKey.IsCrossPartitionQueryEnabled, crossPartitionQueryEnabled.toString());
|
LocalStorageUtility.setEntryString(StorageKey.IsCrossPartitionQueryEnabled, crossPartitionQueryEnabled.toString());
|
||||||
LocalStorageUtility.setEntryNumber(StorageKey.MaxDegreeOfParellism, maxDegreeOfParallelism);
|
LocalStorageUtility.setEntryNumber(StorageKey.MaxDegreeOfParellism, maxDegreeOfParallelism);
|
||||||
LocalStorageUtility.setEntryString(StorageKey.PriorityLevel, priorityLevel.toString());
|
LocalStorageUtility.setEntryString(StorageKey.PriorityLevel, priorityLevel.toString());
|
||||||
LocalStorageUtility.setEntryString(StorageKey.CopilotSampleDBEnabled, copilotSampleDBEnabled.toString());
|
|
||||||
|
|
||||||
if (shouldShowGraphAutoVizOption) {
|
if (shouldShowGraphAutoVizOption) {
|
||||||
LocalStorageUtility.setEntryBoolean(
|
LocalStorageUtility.setEntryBoolean(
|
||||||
@@ -120,14 +73,6 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queryTimeoutEnabled) {
|
|
||||||
LocalStorageUtility.setEntryNumber(StorageKey.QueryTimeout, queryTimeout);
|
|
||||||
LocalStorageUtility.setEntryBoolean(
|
|
||||||
StorageKey.AutomaticallyCancelQueryAfterTimeout,
|
|
||||||
automaticallyCancelQueryAfterTimeout,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
setIsExecuting(false);
|
setIsExecuting(false);
|
||||||
logConsoleInfo(
|
logConsoleInfo(
|
||||||
`Updated items per page setting to ${LocalStorageUtility.getEntryNumber(StorageKey.ActualItemPerPage)}`,
|
`Updated items per page setting to ${LocalStorageUtility.getEntryNumber(StorageKey.ActualItemPerPage)}`,
|
||||||
@@ -151,8 +96,8 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
logConsoleInfo(
|
logConsoleInfo(
|
||||||
`Updated query setting to ${LocalStorageUtility.getEntryString(StorageKey.SetPartitionKeyUndefined)}`,
|
`Updated query setting to ${LocalStorageUtility.getEntryString(StorageKey.SetPartitionKeyUndefined)}`,
|
||||||
);
|
);
|
||||||
refreshExplorer && (await explorer.refreshExplorer());
|
|
||||||
closeSidePanel();
|
closeSidePanel();
|
||||||
|
e.preventDefault();
|
||||||
};
|
};
|
||||||
|
|
||||||
const isCustomPageOptionSelected = () => {
|
const isCustomPageOptionSelected = () => {
|
||||||
@@ -167,7 +112,7 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
formError: "",
|
formError: "",
|
||||||
isExecuting,
|
isExecuting,
|
||||||
submitButtonText: "Apply",
|
submitButtonText: "Apply",
|
||||||
onSubmit: () => handlerOnSubmit(),
|
onSubmit: () => handlerOnSubmit(undefined),
|
||||||
};
|
};
|
||||||
const pageOptionList: IChoiceGroupOption[] = [
|
const pageOptionList: IChoiceGroupOption[] = [
|
||||||
{ key: Constants.Queries.CustomPageOption, text: "Custom" },
|
{ key: Constants.Queries.CustomPageOption, text: "Custom" },
|
||||||
@@ -195,48 +140,6 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
setPageOption(option.key);
|
setPageOption(option.key);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOnQueryTimeoutToggleChange = (ev: React.MouseEvent<HTMLElement>, checked?: boolean): void => {
|
|
||||||
setQueryTimeoutEnabled(checked);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnAutomaticallyCancelQueryToggleChange = (ev: React.MouseEvent<HTMLElement>, checked?: boolean): void => {
|
|
||||||
setAutomaticallyCancelQueryAfterTimeout(checked);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnQueryTimeoutSpinButtonChange = (ev: React.MouseEvent<HTMLElement>, newValue?: string): void => {
|
|
||||||
const queryTimeout = Number(newValue);
|
|
||||||
if (!isNaN(queryTimeout)) {
|
|
||||||
setQueryTimeout(queryTimeout);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnQueryRetryAttemptsSpinButtonChange = (ev: React.MouseEvent<HTMLElement>, newValue?: string): void => {
|
|
||||||
const retryAttempts = Number(newValue);
|
|
||||||
if (!isNaN(retryAttempts)) {
|
|
||||||
setRetryAttempts(retryAttempts);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnRetryIntervalSpinButtonChange = (ev: React.MouseEvent<HTMLElement>, newValue?: string): void => {
|
|
||||||
const retryInterval = Number(newValue);
|
|
||||||
if (!isNaN(retryInterval)) {
|
|
||||||
setRetryInterval(retryInterval);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnMaxWaitTimeSpinButtonChange = (ev: React.MouseEvent<HTMLElement>, newValue?: string): void => {
|
|
||||||
const MaxWaitTimeInSeconds = Number(newValue);
|
|
||||||
if (!isNaN(MaxWaitTimeInSeconds)) {
|
|
||||||
setMaxWaitTimeInSeconds(MaxWaitTimeInSeconds);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleSampleDatabaseChange = async (ev: React.MouseEvent<HTMLElement>, checked?: boolean): Promise<void> => {
|
|
||||||
setCopilotSampleDBEnabled(checked);
|
|
||||||
useQueryCopilot.getState().setCopilotSampleDBEnabled(checked);
|
|
||||||
setRefreshExplorer(!refreshExplorer);
|
|
||||||
};
|
|
||||||
|
|
||||||
const choiceButtonStyles = {
|
const choiceButtonStyles = {
|
||||||
root: {
|
root: {
|
||||||
clear: "both",
|
clear: "both",
|
||||||
@@ -258,35 +161,6 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
const queryTimeoutToggleStyles: IToggleStyles = {
|
|
||||||
label: {
|
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: 400,
|
|
||||||
display: "block",
|
|
||||||
},
|
|
||||||
root: {},
|
|
||||||
container: {},
|
|
||||||
pill: {},
|
|
||||||
thumb: {},
|
|
||||||
text: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
const queryTimeoutSpinButtonStyles: ISpinButtonStyles = {
|
|
||||||
label: {
|
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: 400,
|
|
||||||
},
|
|
||||||
root: {
|
|
||||||
paddingBottom: 10,
|
|
||||||
},
|
|
||||||
labelWrapper: {},
|
|
||||||
icon: {},
|
|
||||||
spinButtonWrapper: {},
|
|
||||||
input: {},
|
|
||||||
arrowButtonsContainer: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<RightPaneForm {...genericPaneProps}>
|
<RightPaneForm {...genericPaneProps}>
|
||||||
<div className="paneMainContent">
|
<div className="paneMainContent">
|
||||||
@@ -337,123 +211,8 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{userContext.apiType === "SQL" && (
|
|
||||||
<div className="settingsSection">
|
|
||||||
<div className="settingsSectionPart">
|
|
||||||
<div>
|
|
||||||
<legend id="queryTimeoutLabel" className="settingsSectionLabel legendLabel">
|
|
||||||
Query Timeout
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
When a query reaches a specified time limit, a popup with an option to cancel the query will show
|
|
||||||
unless automatic cancellation has been enabled
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<Toggle
|
|
||||||
styles={queryTimeoutToggleStyles}
|
|
||||||
label="Enable query timeout"
|
|
||||||
onChange={handleOnQueryTimeoutToggleChange}
|
|
||||||
defaultChecked={queryTimeoutEnabled}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
{queryTimeoutEnabled && (
|
|
||||||
<div>
|
|
||||||
<SpinButton
|
|
||||||
label="Query timeout (ms)"
|
|
||||||
labelPosition={Position.top}
|
|
||||||
defaultValue={(queryTimeout || 5000).toString()}
|
|
||||||
min={100}
|
|
||||||
step={1000}
|
|
||||||
onChange={handleOnQueryTimeoutSpinButtonChange}
|
|
||||||
incrementButtonAriaLabel="Increase value by 1000"
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1000"
|
|
||||||
styles={queryTimeoutSpinButtonStyles}
|
|
||||||
/>
|
|
||||||
<Toggle
|
|
||||||
label="Automatically cancel query after timeout"
|
|
||||||
styles={queryTimeoutToggleStyles}
|
|
||||||
onChange={handleOnAutomaticallyCancelQueryToggleChange}
|
|
||||||
defaultChecked={automaticallyCancelQueryAfterTimeout}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<div className="settingsSection">
|
<div className="settingsSection">
|
||||||
<div className="settingsSectionPart">
|
<div className="settingsSectionPart">
|
||||||
<div className="settingsSectionLabel">
|
|
||||||
Retry Settings
|
|
||||||
<InfoTooltip>Retry policy associated with throttled requests during CosmosDB queries.</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<legend id="queryRetryAttemptsLabel" className="settingsSectionLabel legendLabel">
|
|
||||||
Max retry attempts
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>Max number of retries to be performed for a request. Default value 9.</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<SpinButton
|
|
||||||
labelPosition={Position.top}
|
|
||||||
min={1}
|
|
||||||
step={1}
|
|
||||||
value={"" + retryAttempts}
|
|
||||||
onChange={handleOnQueryRetryAttemptsSpinButtonChange}
|
|
||||||
incrementButtonAriaLabel="Increase value by 1"
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1"
|
|
||||||
onIncrement={(newValue) => setRetryAttempts(parseInt(newValue) + 1 || retryAttempts)}
|
|
||||||
onDecrement={(newValue) => setRetryAttempts(parseInt(newValue) - 1 || retryAttempts)}
|
|
||||||
onValidate={(newValue) => setRetryAttempts(parseInt(newValue) || retryAttempts)}
|
|
||||||
styles={queryTimeoutSpinButtonStyles}
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<legend id="queryRetryAttemptsLabel" className="settingsSectionLabel legendLabel">
|
|
||||||
Fixed retry interval (ms)
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Fixed retry interval in milliseconds to wait between each retry ignoring the retryAfter returned as part
|
|
||||||
of the response. Default value is 0 milliseconds.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<SpinButton
|
|
||||||
labelPosition={Position.top}
|
|
||||||
min={1000}
|
|
||||||
step={1000}
|
|
||||||
value={"" + retryInterval}
|
|
||||||
onChange={handleOnRetryIntervalSpinButtonChange}
|
|
||||||
incrementButtonAriaLabel="Increase value by 1000"
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1000"
|
|
||||||
onIncrement={(newValue) => setRetryInterval(parseInt(newValue) + 1000 || retryInterval)}
|
|
||||||
onDecrement={(newValue) => setRetryInterval(parseInt(newValue) - 1000 || retryInterval)}
|
|
||||||
onValidate={(newValue) => setRetryInterval(parseInt(newValue) || retryInterval)}
|
|
||||||
styles={queryTimeoutSpinButtonStyles}
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<legend id="queryRetryAttemptsLabel" className="settingsSectionLabel legendLabel">
|
|
||||||
Max wait time (s)
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Max wait time in seconds to wait for a request while the retries are happening. Default value 30
|
|
||||||
seconds.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<SpinButton
|
|
||||||
labelPosition={Position.top}
|
|
||||||
min={1}
|
|
||||||
step={1}
|
|
||||||
value={"" + MaxWaitTimeInSeconds}
|
|
||||||
onChange={handleOnMaxWaitTimeSpinButtonChange}
|
|
||||||
incrementButtonAriaLabel="Increase value by 1"
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1"
|
|
||||||
onIncrement={(newValue) => setMaxWaitTimeInSeconds(parseInt(newValue) + 1 || MaxWaitTimeInSeconds)}
|
|
||||||
onDecrement={(newValue) => setMaxWaitTimeInSeconds(parseInt(newValue) - 1 || MaxWaitTimeInSeconds)}
|
|
||||||
onValidate={(newValue) => setMaxWaitTimeInSeconds(parseInt(newValue) || MaxWaitTimeInSeconds)}
|
|
||||||
styles={queryTimeoutSpinButtonStyles}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="settingsSection">
|
|
||||||
<div className="settingsSectionPart settingsSectionInlineCheckbox">
|
|
||||||
<div className="settingsSectionLabel">
|
<div className="settingsSectionLabel">
|
||||||
Enable container pagination
|
Enable container pagination
|
||||||
<InfoTooltip>
|
<InfoTooltip>
|
||||||
@@ -473,7 +232,7 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
</div>
|
</div>
|
||||||
{shouldShowCrossPartitionOption && (
|
{shouldShowCrossPartitionOption && (
|
||||||
<div className="settingsSection">
|
<div className="settingsSection">
|
||||||
<div className="settingsSectionPart settingsSectionInlineCheckbox">
|
<div className="settingsSectionPart">
|
||||||
<div className="settingsSectionLabel">
|
<div className="settingsSectionLabel">
|
||||||
Enable cross-partition query
|
Enable cross-partition query
|
||||||
<InfoTooltip>
|
<InfoTooltip>
|
||||||
@@ -564,30 +323,6 @@ export const SettingsPane: FunctionComponent<{ explorer: Explorer }> = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{shouldShowCopilotSampleDBOption && (
|
|
||||||
<div className="settingsSection">
|
|
||||||
<div className="settingsSectionPart settingsSectionInlineCheckbox">
|
|
||||||
<div className="settingsSectionLabel">
|
|
||||||
Enable sample database
|
|
||||||
<InfoTooltip>
|
|
||||||
This is a sample database and collection with synthetic product data you can use to explore using
|
|
||||||
NoSQL queries and Copilot. This will appear as another database in the Data Explorer UI, and is
|
|
||||||
created by, and maintained by Microsoft at no cost to you.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Checkbox
|
|
||||||
styles={{
|
|
||||||
label: { padding: 0 },
|
|
||||||
}}
|
|
||||||
className="padding"
|
|
||||||
ariaLabel="Enable sample db for Copilot"
|
|
||||||
checked={copilotSampleDBEnabled}
|
|
||||||
onChange={handleSampleDatabaseChange}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
<div className="settingsSection">
|
<div className="settingsSection">
|
||||||
<div className="settingsSectionPart">
|
<div className="settingsSectionPart">
|
||||||
<div className="settingsSectionLabel">Explorer Version</div>
|
<div className="settingsSectionLabel">Explorer Version</div>
|
||||||
|
|||||||
@@ -102,179 +102,6 @@ exports[`Settings Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="settingsSectionPart"
|
className="settingsSectionPart"
|
||||||
>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryTimeoutLabel"
|
|
||||||
>
|
|
||||||
Query Timeout
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
When a query reaches a specified time limit, a popup with an option to cancel the query will show unless automatic cancellation has been enabled
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<StyledToggleBase
|
|
||||||
defaultChecked={false}
|
|
||||||
label="Enable query timeout"
|
|
||||||
onChange={[Function]}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"container": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"display": "block",
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"pill": Object {},
|
|
||||||
"root": Object {},
|
|
||||||
"text": Object {},
|
|
||||||
"thumb": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
className="settingsSection"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
className="settingsSectionPart"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
className="settingsSectionLabel"
|
|
||||||
>
|
|
||||||
Retry Settings
|
|
||||||
<InfoTooltip>
|
|
||||||
Retry policy associated with throttled requests during CosmosDB queries.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryRetryAttemptsLabel"
|
|
||||||
>
|
|
||||||
Max retry attempts
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Max number of retries to be performed for a request. Default value 9.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<StyledSpinButton
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1"
|
|
||||||
incrementButtonAriaLabel="Increase value by 1"
|
|
||||||
labelPosition={0}
|
|
||||||
min={1}
|
|
||||||
onChange={[Function]}
|
|
||||||
onDecrement={[Function]}
|
|
||||||
onIncrement={[Function]}
|
|
||||||
onValidate={[Function]}
|
|
||||||
step={1}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"arrowButtonsContainer": Object {},
|
|
||||||
"icon": Object {},
|
|
||||||
"input": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"labelWrapper": Object {},
|
|
||||||
"root": Object {
|
|
||||||
"paddingBottom": 10,
|
|
||||||
},
|
|
||||||
"spinButtonWrapper": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value="9"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryRetryAttemptsLabel"
|
|
||||||
>
|
|
||||||
Fixed retry interval (ms)
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Fixed retry interval in milliseconds to wait between each retry ignoring the retryAfter returned as part of the response. Default value is 0 milliseconds.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<StyledSpinButton
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1000"
|
|
||||||
incrementButtonAriaLabel="Increase value by 1000"
|
|
||||||
labelPosition={0}
|
|
||||||
min={1000}
|
|
||||||
onChange={[Function]}
|
|
||||||
onDecrement={[Function]}
|
|
||||||
onIncrement={[Function]}
|
|
||||||
onValidate={[Function]}
|
|
||||||
step={1000}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"arrowButtonsContainer": Object {},
|
|
||||||
"icon": Object {},
|
|
||||||
"input": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"labelWrapper": Object {},
|
|
||||||
"root": Object {
|
|
||||||
"paddingBottom": 10,
|
|
||||||
},
|
|
||||||
"spinButtonWrapper": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value="0"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryRetryAttemptsLabel"
|
|
||||||
>
|
|
||||||
Max wait time (s)
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Max wait time in seconds to wait for a request while the retries are happening. Default value 30 seconds.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<StyledSpinButton
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1"
|
|
||||||
incrementButtonAriaLabel="Increase value by 1"
|
|
||||||
labelPosition={0}
|
|
||||||
min={1}
|
|
||||||
onChange={[Function]}
|
|
||||||
onDecrement={[Function]}
|
|
||||||
onIncrement={[Function]}
|
|
||||||
onValidate={[Function]}
|
|
||||||
step={1}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"arrowButtonsContainer": Object {},
|
|
||||||
"icon": Object {},
|
|
||||||
"input": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"labelWrapper": Object {},
|
|
||||||
"root": Object {
|
|
||||||
"paddingBottom": 10,
|
|
||||||
},
|
|
||||||
"spinButtonWrapper": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value="30"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
className="settingsSection"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
className="settingsSectionPart settingsSectionInlineCheckbox"
|
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="settingsSectionLabel"
|
className="settingsSectionLabel"
|
||||||
@@ -303,7 +130,7 @@ exports[`Settings Pane should render Default properly 1`] = `
|
|||||||
className="settingsSection"
|
className="settingsSection"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="settingsSectionPart settingsSectionInlineCheckbox"
|
className="settingsSectionPart"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="settingsSectionLabel"
|
className="settingsSectionLabel"
|
||||||
@@ -389,139 +216,6 @@ exports[`Settings Pane should render Gremlin properly 1`] = `
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="settingsSectionPart"
|
className="settingsSectionPart"
|
||||||
>
|
|
||||||
<div
|
|
||||||
className="settingsSectionLabel"
|
|
||||||
>
|
|
||||||
Retry Settings
|
|
||||||
<InfoTooltip>
|
|
||||||
Retry policy associated with throttled requests during CosmosDB queries.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryRetryAttemptsLabel"
|
|
||||||
>
|
|
||||||
Max retry attempts
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Max number of retries to be performed for a request. Default value 9.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<StyledSpinButton
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1"
|
|
||||||
incrementButtonAriaLabel="Increase value by 1"
|
|
||||||
labelPosition={0}
|
|
||||||
min={1}
|
|
||||||
onChange={[Function]}
|
|
||||||
onDecrement={[Function]}
|
|
||||||
onIncrement={[Function]}
|
|
||||||
onValidate={[Function]}
|
|
||||||
step={1}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"arrowButtonsContainer": Object {},
|
|
||||||
"icon": Object {},
|
|
||||||
"input": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"labelWrapper": Object {},
|
|
||||||
"root": Object {
|
|
||||||
"paddingBottom": 10,
|
|
||||||
},
|
|
||||||
"spinButtonWrapper": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value="9"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryRetryAttemptsLabel"
|
|
||||||
>
|
|
||||||
Fixed retry interval (ms)
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Fixed retry interval in milliseconds to wait between each retry ignoring the retryAfter returned as part of the response. Default value is 0 milliseconds.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<StyledSpinButton
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1000"
|
|
||||||
incrementButtonAriaLabel="Increase value by 1000"
|
|
||||||
labelPosition={0}
|
|
||||||
min={1000}
|
|
||||||
onChange={[Function]}
|
|
||||||
onDecrement={[Function]}
|
|
||||||
onIncrement={[Function]}
|
|
||||||
onValidate={[Function]}
|
|
||||||
step={1000}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"arrowButtonsContainer": Object {},
|
|
||||||
"icon": Object {},
|
|
||||||
"input": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"labelWrapper": Object {},
|
|
||||||
"root": Object {
|
|
||||||
"paddingBottom": 10,
|
|
||||||
},
|
|
||||||
"spinButtonWrapper": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value="0"
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
<legend
|
|
||||||
className="settingsSectionLabel legendLabel"
|
|
||||||
id="queryRetryAttemptsLabel"
|
|
||||||
>
|
|
||||||
Max wait time (s)
|
|
||||||
</legend>
|
|
||||||
<InfoTooltip>
|
|
||||||
Max wait time in seconds to wait for a request while the retries are happening. Default value 30 seconds.
|
|
||||||
</InfoTooltip>
|
|
||||||
</div>
|
|
||||||
<StyledSpinButton
|
|
||||||
decrementButtonAriaLabel="Decrease value by 1"
|
|
||||||
incrementButtonAriaLabel="Increase value by 1"
|
|
||||||
labelPosition={0}
|
|
||||||
min={1}
|
|
||||||
onChange={[Function]}
|
|
||||||
onDecrement={[Function]}
|
|
||||||
onIncrement={[Function]}
|
|
||||||
onValidate={[Function]}
|
|
||||||
step={1}
|
|
||||||
styles={
|
|
||||||
Object {
|
|
||||||
"arrowButtonsContainer": Object {},
|
|
||||||
"icon": Object {},
|
|
||||||
"input": Object {},
|
|
||||||
"label": Object {
|
|
||||||
"fontSize": 12,
|
|
||||||
"fontWeight": 400,
|
|
||||||
},
|
|
||||||
"labelWrapper": Object {},
|
|
||||||
"root": Object {
|
|
||||||
"paddingBottom": 10,
|
|
||||||
},
|
|
||||||
"spinButtonWrapper": Object {},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value="30"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
className="settingsSection"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
className="settingsSectionPart settingsSectionInlineCheckbox"
|
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="settingsSectionLabel"
|
className="settingsSectionLabel"
|
||||||
|
|||||||
@@ -357,7 +357,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
value=""
|
value=""
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField is-required root-110"
|
className="ms-TextField is-required root-54"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
@@ -648,7 +648,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
className="ms-Label root-121"
|
className="ms-Label root-65"
|
||||||
htmlFor="TextField0"
|
htmlFor="TextField0"
|
||||||
id="TextFieldLabel2"
|
id="TextFieldLabel2"
|
||||||
>
|
>
|
||||||
@@ -657,13 +657,13 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
</LabelBase>
|
</LabelBase>
|
||||||
</StyledLabelBase>
|
</StyledLabelBase>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-111"
|
className="ms-TextField-fieldGroup fieldGroup-55"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-labelledby="TextFieldLabel2"
|
aria-labelledby="TextFieldLabel2"
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
className="ms-TextField-field field-112"
|
className="ms-TextField-field field-56"
|
||||||
id="TextField0"
|
id="TextField0"
|
||||||
name="collectionIdConfirmation"
|
name="collectionIdConfirmation"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
@@ -1569,7 +1569,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1595,7 +1595,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1607,16 +1607,14 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1647,7 +1645,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -1674,7 +1672,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1699,16 +1697,14 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1742,7 +1738,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1759,7 +1755,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1771,7 +1767,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1787,13 +1783,12 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1804,16 +1799,14 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1836,21 +1829,13 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -1863,7 +1848,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -1876,7 +1861,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1890,7 +1875,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1904,7 +1889,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -1920,7 +1905,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -1929,7 +1914,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1945,7 +1930,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1957,7 +1942,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1970,7 +1955,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1992,18 +1977,18 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -2053,7 +2038,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2062,7 +2047,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2070,7 +2055,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2092,16 +2077,14 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -2123,7 +2106,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2413,7 +2396,7 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="Create"
|
aria-label="Create"
|
||||||
className="ms-Button ms-Button--primary root-122"
|
className="ms-Button ms-Button--primary root-66"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -2425,16 +2408,16 @@ exports[`StringInput Pane should render Create new directory properly 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-123"
|
className="ms-Button-flexContainer flexContainer-67"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-124"
|
className="ms-Button-textContainer textContainer-68"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-126"
|
className="ms-Button-label label-70"
|
||||||
id="id__5"
|
id="id__3"
|
||||||
key="id__5"
|
key="id__3"
|
||||||
>
|
>
|
||||||
Create
|
Create
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -213,24 +213,12 @@ export const AddTableEntityPanel: FunctionComponent<AddTableEntityPanelProps> =
|
|||||||
setSelectedRow(rowEndex);
|
setSelectedRow(rowEndex);
|
||||||
setIsEntityValuePanelTrue();
|
setIsEntityValuePanelTrue();
|
||||||
};
|
};
|
||||||
const handlePress = (event: React.KeyboardEvent<HTMLElement>): void => {
|
|
||||||
if (event.key === "Enter" || event.key === "Space") {
|
|
||||||
setIsEntityValuePanelFalse();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (isEntityValuePanelOpen) {
|
if (isEntityValuePanelOpen) {
|
||||||
return (
|
return (
|
||||||
<Stack style={{ padding: "20px 34px" }}>
|
<Stack style={{ padding: "20px 34px" }}>
|
||||||
<Stack horizontal {...columnProps}>
|
<Stack horizontal {...columnProps}>
|
||||||
<Image
|
<Image {...backImageProps} src={RevertBackIcon} alt="back" onClick={() => setIsEntityValuePanelFalse()} />
|
||||||
{...backImageProps}
|
|
||||||
src={RevertBackIcon}
|
|
||||||
alt="back"
|
|
||||||
tabIndex={0}
|
|
||||||
onClick={setIsEntityValuePanelFalse}
|
|
||||||
onKeyPress={handlePress}
|
|
||||||
/>
|
|
||||||
<Label>{entityAttributeProperty}</Label>
|
<Label>{entityAttributeProperty}</Label>
|
||||||
</Stack>
|
</Stack>
|
||||||
<TextField
|
<TextField
|
||||||
|
|||||||
@@ -390,9 +390,6 @@ export const EditTableEntityPanel: FunctionComponent<EditTableEntityPanelProps>
|
|||||||
</Stack>
|
</Stack>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="panelNullWarning" style={{ padding: "20px", color: "red" }}>
|
|
||||||
Warning: Null fields will not be displayed for editing.
|
|
||||||
</div>
|
|
||||||
</RightPaneForm>
|
</RightPaneForm>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ describe("Table query select Panel", () => {
|
|||||||
it("Should checked availableCheckbox by default", () => {
|
it("Should checked availableCheckbox by default", () => {
|
||||||
const wrapper = mount(<TableQuerySelectPanel {...props} />);
|
const wrapper = mount(<TableQuerySelectPanel {...props} />);
|
||||||
expect(wrapper.find("#availableCheckbox").first().props()).toEqual({
|
expect(wrapper.find("#availableCheckbox").first().props()).toEqual({
|
||||||
|
ariaPositionInSet: 0,
|
||||||
id: "availableCheckbox",
|
id: "availableCheckbox",
|
||||||
label: "Available Columns",
|
label: "Available Columns",
|
||||||
checked: true,
|
checked: true,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Checkbox, Text } from "@fluentui/react";
|
import { Checkbox, Text } from "@fluentui/react";
|
||||||
import React, { FunctionComponent, useEffect, useState } from "react";
|
import React, { FunctionComponent, useEffect, useState } from "react";
|
||||||
import { userContext } from "../../../../UserContext";
|
|
||||||
import { useSidePanel } from "../../../../hooks/useSidePanel";
|
import { useSidePanel } from "../../../../hooks/useSidePanel";
|
||||||
|
import { userContext } from "../../../../UserContext";
|
||||||
import * as Constants from "../../../Tables/Constants";
|
import * as Constants from "../../../Tables/Constants";
|
||||||
import QueryViewModel from "../../../Tables/QueryBuilder/QueryViewModel";
|
import QueryViewModel from "../../../Tables/QueryBuilder/QueryViewModel";
|
||||||
import { RightPaneForm, RightPaneFormProps } from "../../RightPaneForm/RightPaneForm";
|
import { RightPaneForm, RightPaneFormProps } from "../../RightPaneForm/RightPaneForm";
|
||||||
@@ -128,8 +128,9 @@ export const TableQuerySelectPanel: FunctionComponent<TableQuerySelectPanelProps
|
|||||||
label="Available Columns"
|
label="Available Columns"
|
||||||
checked={isAvailableColumnChecked}
|
checked={isAvailableColumnChecked}
|
||||||
onChange={availableColumnsCheckboxClick}
|
onChange={availableColumnsCheckboxClick}
|
||||||
|
ariaPositionInSet={0}
|
||||||
/>
|
/>
|
||||||
{columnOptions.map((column) => {
|
{columnOptions.map((column, index) => {
|
||||||
return (
|
return (
|
||||||
<Checkbox
|
<Checkbox
|
||||||
label={column.columnName}
|
label={column.columnName}
|
||||||
@@ -137,6 +138,7 @@ export const TableQuerySelectPanel: FunctionComponent<TableQuerySelectPanelProps
|
|||||||
key={column.columnName}
|
key={column.columnName}
|
||||||
checked={column.selected}
|
checked={column.selected}
|
||||||
disabled={!column.editable}
|
disabled={!column.editable}
|
||||||
|
ariaPositionInSet={index + 1}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
<span
|
<span
|
||||||
className="css-109"
|
className="css-53"
|
||||||
>
|
>
|
||||||
Select the columns that you want to query.
|
Select the columns that you want to query.
|
||||||
</span>
|
</span>
|
||||||
@@ -37,12 +37,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
className="column-select-view"
|
className="column-select-view"
|
||||||
>
|
>
|
||||||
<StyledCheckboxBase
|
<StyledCheckboxBase
|
||||||
|
ariaPositionInSet={0}
|
||||||
checked={true}
|
checked={true}
|
||||||
id="availableCheckbox"
|
id="availableCheckbox"
|
||||||
label="Available Columns"
|
label="Available Columns"
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
>
|
>
|
||||||
<CheckboxBase
|
<CheckboxBase
|
||||||
|
ariaPositionInSet={0}
|
||||||
checked={true}
|
checked={true}
|
||||||
id="availableCheckbox"
|
id="availableCheckbox"
|
||||||
label="Available Columns"
|
label="Available Columns"
|
||||||
@@ -323,30 +325,33 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Checkbox is-checked is-enabled root-110"
|
className="ms-Checkbox is-checked is-enabled root-54"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
|
aria-checked="true"
|
||||||
|
aria-label="Available Columns"
|
||||||
|
aria-posinset={0}
|
||||||
checked={true}
|
checked={true}
|
||||||
className="input-111"
|
className="input-55"
|
||||||
data-ktp-execute-target={true}
|
data-ktp-execute-target={true}
|
||||||
id="availableCheckbox"
|
id="availableCheckbox"
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
/>
|
/>
|
||||||
<label
|
<label
|
||||||
className="ms-Checkbox-label label-112"
|
className="ms-Checkbox-label label-56"
|
||||||
htmlFor="availableCheckbox"
|
htmlFor="availableCheckbox"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Checkbox-checkbox checkbox-113"
|
className="ms-Checkbox-checkbox checkbox-57"
|
||||||
data-ktp-target={true}
|
data-ktp-target={true}
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
className="ms-Checkbox-checkmark checkmark-114"
|
className="ms-Checkbox-checkmark checkmark-58"
|
||||||
iconName="CheckMark"
|
iconName="CheckMark"
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
className="ms-Checkbox-checkmark checkmark-114"
|
className="ms-Checkbox-checkmark checkmark-58"
|
||||||
iconName="CheckMark"
|
iconName="CheckMark"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
theme={
|
theme={
|
||||||
@@ -625,7 +630,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Checkbox-checkmark checkmark-118"
|
className="ms-Checkbox-checkmark checkmark-61"
|
||||||
data-icon-name="CheckMark"
|
data-icon-name="CheckMark"
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -634,7 +639,8 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
</StyledIconBase>
|
</StyledIconBase>
|
||||||
</div>
|
</div>
|
||||||
<span
|
<span
|
||||||
className="ms-Checkbox-text text-115"
|
aria-hidden="true"
|
||||||
|
className="ms-Checkbox-text text-59"
|
||||||
>
|
>
|
||||||
Available Columns
|
Available Columns
|
||||||
</span>
|
</span>
|
||||||
@@ -643,6 +649,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
</CheckboxBase>
|
</CheckboxBase>
|
||||||
</StyledCheckboxBase>
|
</StyledCheckboxBase>
|
||||||
<StyledCheckboxBase
|
<StyledCheckboxBase
|
||||||
|
ariaPositionInSet={1}
|
||||||
checked={true}
|
checked={true}
|
||||||
disabled={false}
|
disabled={false}
|
||||||
key=""
|
key=""
|
||||||
@@ -650,6 +657,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
>
|
>
|
||||||
<CheckboxBase
|
<CheckboxBase
|
||||||
|
ariaPositionInSet={1}
|
||||||
checked={true}
|
checked={true}
|
||||||
disabled={false}
|
disabled={false}
|
||||||
label=""
|
label=""
|
||||||
@@ -930,12 +938,15 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Checkbox is-checked is-enabled root-110"
|
className="ms-Checkbox is-checked is-enabled root-54"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
|
aria-checked="true"
|
||||||
aria-disabled={false}
|
aria-disabled={false}
|
||||||
|
aria-label=""
|
||||||
|
aria-posinset={1}
|
||||||
checked={true}
|
checked={true}
|
||||||
className="input-111"
|
className="input-55"
|
||||||
data-ktp-execute-target={true}
|
data-ktp-execute-target={true}
|
||||||
disabled={false}
|
disabled={false}
|
||||||
id="checkbox-0"
|
id="checkbox-0"
|
||||||
@@ -943,19 +954,19 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
type="checkbox"
|
type="checkbox"
|
||||||
/>
|
/>
|
||||||
<label
|
<label
|
||||||
className="ms-Checkbox-label label-112"
|
className="ms-Checkbox-label label-56"
|
||||||
htmlFor="checkbox-0"
|
htmlFor="checkbox-0"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Checkbox-checkbox checkbox-113"
|
className="ms-Checkbox-checkbox checkbox-57"
|
||||||
data-ktp-target={true}
|
data-ktp-target={true}
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
className="ms-Checkbox-checkmark checkmark-114"
|
className="ms-Checkbox-checkmark checkmark-58"
|
||||||
iconName="CheckMark"
|
iconName="CheckMark"
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
className="ms-Checkbox-checkmark checkmark-114"
|
className="ms-Checkbox-checkmark checkmark-58"
|
||||||
iconName="CheckMark"
|
iconName="CheckMark"
|
||||||
styles={[Function]}
|
styles={[Function]}
|
||||||
theme={
|
theme={
|
||||||
@@ -1234,7 +1245,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-hidden={true}
|
aria-hidden={true}
|
||||||
className="ms-Checkbox-checkmark checkmark-118"
|
className="ms-Checkbox-checkmark checkmark-61"
|
||||||
data-icon-name="CheckMark"
|
data-icon-name="CheckMark"
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -2138,7 +2149,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2164,7 +2175,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2176,16 +2187,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -2216,7 +2225,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -2243,7 +2252,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -2268,16 +2277,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -2311,7 +2318,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2328,7 +2335,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -2340,7 +2347,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -2356,13 +2363,12 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2373,16 +2379,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -2405,21 +2409,13 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -2432,7 +2428,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -2445,7 +2441,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -2459,7 +2455,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -2473,7 +2469,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -2489,7 +2485,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -2498,7 +2494,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2514,7 +2510,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2526,7 +2522,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2539,7 +2535,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2561,18 +2557,18 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -2622,7 +2618,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2631,7 +2627,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2639,7 +2635,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2661,16 +2657,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -2692,7 +2686,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2982,7 +2976,7 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="OK"
|
aria-label="OK"
|
||||||
className="ms-Button ms-Button--primary root-125"
|
className="ms-Button ms-Button--primary root-68"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -2994,14 +2988,14 @@ exports[`Table query select Panel should render Default properly 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-126"
|
className="ms-Button-flexContainer flexContainer-69"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-127"
|
className="ms-Button-textContainer textContainer-70"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-129"
|
className="ms-Button-label label-72"
|
||||||
id="id__1"
|
id="id__1"
|
||||||
key="id__1"
|
key="id__1"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
aria-label="Add Property"
|
aria-label="Add Property"
|
||||||
className="ms-Stack addButtonEntiy css-109"
|
className="ms-Stack addButtonEntiy css-53"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
onKeyPress={[Function]}
|
onKeyPress={[Function]}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
@@ -43,7 +43,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
<StyledImageBase
|
<StyledImageBase
|
||||||
alt="Add Property"
|
alt="Add Property"
|
||||||
height={30}
|
height={30}
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
src={Object {}}
|
src={Object {}}
|
||||||
width={16}
|
width={16}
|
||||||
>
|
>
|
||||||
@@ -328,7 +328,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
width={16}
|
width={16}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Image root-110"
|
className="ms-Image root-54"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"height": 30,
|
"height": 30,
|
||||||
@@ -338,7 +338,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="Add Property"
|
alt="Add Property"
|
||||||
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-111"
|
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-55"
|
||||||
key="fabricImage[object Object]"
|
key="fabricImage[object Object]"
|
||||||
onError={[Function]}
|
onError={[Function]}
|
||||||
onLoad={[Function]}
|
onLoad={[Function]}
|
||||||
@@ -349,10 +349,10 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
</StyledImageBase>
|
</StyledImageBase>
|
||||||
<Text
|
<Text
|
||||||
className="addNewParamStyle"
|
className="addNewParamStyle"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="addNewParamStyle css-112"
|
className="addNewParamStyle css-56"
|
||||||
>
|
>
|
||||||
Add Property
|
Add Property
|
||||||
</span>
|
</span>
|
||||||
@@ -1249,7 +1249,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1275,7 +1275,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1287,16 +1287,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1327,7 +1325,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -1354,7 +1352,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1379,16 +1377,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1422,7 +1418,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1439,7 +1435,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1451,7 +1447,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1467,13 +1463,12 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1484,16 +1479,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1516,21 +1509,13 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -1543,7 +1528,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -1556,7 +1541,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1570,7 +1555,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1584,7 +1569,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -1600,7 +1585,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -1609,7 +1594,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1625,7 +1610,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1637,7 +1622,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1650,7 +1635,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1672,18 +1657,18 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -1733,7 +1718,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1742,7 +1727,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1750,7 +1735,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1772,16 +1757,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1803,7 +1786,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2093,7 +2076,7 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="Add Entity"
|
aria-label="Add Entity"
|
||||||
className="ms-Button ms-Button--primary root-113"
|
className="ms-Button ms-Button--primary root-57"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -2105,14 +2088,14 @@ exports[`Excute Add Table Entity Pane should render Default properly 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-114"
|
className="ms-Button-flexContainer flexContainer-58"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-115"
|
className="ms-Button-textContainer textContainer-59"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-117"
|
className="ms-Button-label label-61"
|
||||||
id="id__0"
|
id="id__0"
|
||||||
key="id__0"
|
key="id__0"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -32,13 +32,13 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack addButtonEntiy css-109"
|
className="ms-Stack addButtonEntiy css-53"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
>
|
>
|
||||||
<StyledImageBase
|
<StyledImageBase
|
||||||
alt="Add Entity"
|
alt="Add Entity"
|
||||||
height={30}
|
height={30}
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
src={Object {}}
|
src={Object {}}
|
||||||
width={16}
|
width={16}
|
||||||
>
|
>
|
||||||
@@ -323,7 +323,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
width={16}
|
width={16}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Image root-110"
|
className="ms-Image root-54"
|
||||||
style={
|
style={
|
||||||
Object {
|
Object {
|
||||||
"height": 30,
|
"height": 30,
|
||||||
@@ -333,7 +333,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
alt="Add Entity"
|
alt="Add Entity"
|
||||||
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-111"
|
className="ms-Image-image ms-Image-image--portrait is-notLoaded is-fadeIn image-55"
|
||||||
key="fabricImage[object Object]"
|
key="fabricImage[object Object]"
|
||||||
onError={[Function]}
|
onError={[Function]}
|
||||||
onLoad={[Function]}
|
onLoad={[Function]}
|
||||||
@@ -344,10 +344,10 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
</StyledImageBase>
|
</StyledImageBase>
|
||||||
<Text
|
<Text
|
||||||
className="addNewParamStyle"
|
className="addNewParamStyle"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="addNewParamStyle css-112"
|
className="addNewParamStyle css-56"
|
||||||
>
|
>
|
||||||
Add Property
|
Add Property
|
||||||
</span>
|
</span>
|
||||||
@@ -355,17 +355,6 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</Stack>
|
</Stack>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
className="panelNullWarning"
|
|
||||||
style={
|
|
||||||
Object {
|
|
||||||
"color": "red",
|
|
||||||
"padding": "20px",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
>
|
|
||||||
Warning: Null fields will not be displayed for editing.
|
|
||||||
</div>
|
|
||||||
<PanelFooterComponent
|
<PanelFooterComponent
|
||||||
buttonLabel="Update"
|
buttonLabel="Update"
|
||||||
isButtonDisabled={false}
|
isButtonDisabled={false}
|
||||||
@@ -1255,7 +1244,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1281,7 +1270,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1293,16 +1282,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1333,7 +1320,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -1360,7 +1347,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1385,16 +1372,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -1428,7 +1413,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1445,7 +1430,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1457,7 +1442,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -1473,13 +1458,12 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1490,16 +1474,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1522,21 +1504,13 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -1549,7 +1523,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -1562,7 +1536,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1576,7 +1550,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -1590,7 +1564,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -1606,7 +1580,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -1615,7 +1589,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1631,7 +1605,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1643,7 +1617,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1656,7 +1630,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1678,18 +1652,18 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -1739,7 +1713,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1748,7 +1722,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1756,7 +1730,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -1778,16 +1752,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -1809,7 +1781,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2099,7 +2071,7 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="Update"
|
aria-label="Update"
|
||||||
className="ms-Button ms-Button--primary root-113"
|
className="ms-Button ms-Button--primary root-57"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -2111,14 +2083,14 @@ exports[`Excute Edit Table Entity Pane should render Default properly 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-114"
|
className="ms-Button-flexContainer flexContainer-58"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-115"
|
className="ms-Button-textContainer textContainer-59"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-117"
|
className="ms-Button-label label-61"
|
||||||
id="id__0"
|
id="id__0"
|
||||||
key="id__0"
|
key="id__0"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
verticalAlign="center"
|
verticalAlign="center"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-Stack panelInfoErrorContainer css-109"
|
className="ms-Stack panelInfoErrorContainer css-53"
|
||||||
>
|
>
|
||||||
<StyledIconBase
|
<StyledIconBase
|
||||||
aria-label="warning"
|
aria-label="warning"
|
||||||
className="panelWarningIcon"
|
className="panelWarningIcon"
|
||||||
iconName="WarningSolid"
|
iconName="WarningSolid"
|
||||||
key=".0:$.$.0"
|
key=".0:$.0"
|
||||||
>
|
>
|
||||||
<IconBase
|
<IconBase
|
||||||
aria-label="warning"
|
aria-label="warning"
|
||||||
@@ -314,7 +314,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
aria-label="warning"
|
aria-label="warning"
|
||||||
className="panelWarningIcon root-112"
|
className="panelWarningIcon root-55"
|
||||||
data-icon-name="WarningSolid"
|
data-icon-name="WarningSolid"
|
||||||
role="img"
|
role="img"
|
||||||
>
|
>
|
||||||
@@ -323,19 +323,21 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
</IconBase>
|
</IconBase>
|
||||||
</StyledIconBase>
|
</StyledIconBase>
|
||||||
<span
|
<span
|
||||||
aria-live="assertive"
|
|
||||||
className="panelWarningErrorDetailsLinkContainer"
|
className="panelWarningErrorDetailsLinkContainer"
|
||||||
key=".0:$.$.1"
|
key=".0:$.1"
|
||||||
role="alert"
|
|
||||||
>
|
>
|
||||||
<Text
|
<Text
|
||||||
aria-label="Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources."
|
aria-label="Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources."
|
||||||
|
aria-live="assertive"
|
||||||
className="panelWarningErrorMessage"
|
className="panelWarningErrorMessage"
|
||||||
|
role="alert"
|
||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
aria-label="Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources."
|
aria-label="Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources."
|
||||||
className="panelWarningErrorMessage css-113"
|
aria-live="assertive"
|
||||||
|
className="panelWarningErrorMessage css-56"
|
||||||
|
role="alert"
|
||||||
>
|
>
|
||||||
Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources.
|
Warning! The action you are about to take cannot be undone. Continuing will permanently delete this resource and all of its children resources.
|
||||||
</span>
|
</span>
|
||||||
@@ -359,7 +361,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="css-113"
|
className="css-56"
|
||||||
>
|
>
|
||||||
Confirm by typing the database id
|
Confirm by typing the database id
|
||||||
</span>
|
</span>
|
||||||
@@ -663,19 +665,19 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
validateOnLoad={true}
|
validateOnLoad={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField is-required root-115"
|
className="ms-TextField is-required root-58"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-116"
|
className="ms-TextField-fieldGroup fieldGroup-59"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-label="Confirm by typing the database id"
|
aria-label="Confirm by typing the database id"
|
||||||
autoFocus={true}
|
autoFocus={true}
|
||||||
className="ms-TextField-field field-117"
|
className="ms-TextField-field field-60"
|
||||||
id="confirmDatabaseId"
|
id="confirmDatabaseId"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
@@ -699,7 +701,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="css-126"
|
className="css-69"
|
||||||
>
|
>
|
||||||
Help us improve Azure Cosmos DB!
|
Help us improve Azure Cosmos DB!
|
||||||
</span>
|
</span>
|
||||||
@@ -709,7 +711,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
variant="small"
|
variant="small"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="css-126"
|
className="css-69"
|
||||||
>
|
>
|
||||||
What is the reason why you are deleting this database?
|
What is the reason why you are deleting this database?
|
||||||
</span>
|
</span>
|
||||||
@@ -1013,18 +1015,18 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
validateOnLoad={true}
|
validateOnLoad={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField ms-TextField--multiline root-115"
|
className="ms-TextField ms-TextField--multiline root-58"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-wrapper"
|
className="ms-TextField-wrapper"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className="ms-TextField-fieldGroup fieldGroup-127"
|
className="ms-TextField-fieldGroup fieldGroup-70"
|
||||||
>
|
>
|
||||||
<textarea
|
<textarea
|
||||||
aria-invalid={false}
|
aria-invalid={false}
|
||||||
aria-label="Help us improve Azure Cosmos DB! What is the reason why you are deleting this database?"
|
aria-label="Help us improve Azure Cosmos DB! What is the reason why you are deleting this database?"
|
||||||
className="ms-TextField-field field-128"
|
className="ms-TextField-field field-71"
|
||||||
id="deleteDatabaseFeedbackInput"
|
id="deleteDatabaseFeedbackInput"
|
||||||
onBlur={[Function]}
|
onBlur={[Function]}
|
||||||
onChange={[Function]}
|
onChange={[Function]}
|
||||||
@@ -1929,7 +1931,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"iconDisabled": Object {
|
"iconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1955,7 +1957,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"menuIconDisabled": Object {
|
"menuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -1967,16 +1969,14 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -2007,7 +2007,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"display": "inline-block",
|
"display": "inline-block",
|
||||||
"padding": "0 16px",
|
"padding": "0 16px",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active > span": Object {
|
":active > *": Object {
|
||||||
"left": 0,
|
"left": 0,
|
||||||
"position": "relative",
|
"position": "relative",
|
||||||
"top": 0,
|
"top": 0,
|
||||||
@@ -2034,7 +2034,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -2059,16 +2059,14 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid transparent",
|
"border": "1px solid transparent",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 2,
|
"bottom": 2,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 2,
|
"left": 2,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 2,
|
"right": 2,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
"outlineColor": "ButtonText",
|
"outlineColor": "ButtonText",
|
||||||
@@ -2102,7 +2100,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"backgroundColor": "#f3f2f1",
|
"backgroundColor": "#f3f2f1",
|
||||||
"color": "#d2d0ce",
|
"color": "#d2d0ce",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2119,7 +2117,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"border": "1px solid #106ebe",
|
"border": "1px solid #106ebe",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"borderColor": "Highlight",
|
"borderColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -2131,7 +2129,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"border": "1px solid #005a9e",
|
"border": "1px solid #005a9e",
|
||||||
"color": "#ffffff",
|
"color": "#ffffff",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"borderColor": "WindowText",
|
"borderColor": "WindowText",
|
||||||
@@ -2147,13 +2145,12 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"overflow": "hidden",
|
"overflow": "hidden",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"whiteSpace": "nowrap",
|
|
||||||
"width": 1,
|
"width": 1,
|
||||||
},
|
},
|
||||||
"splitButtonContainer": Array [
|
"splitButtonContainer": Array [
|
||||||
Object {
|
Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2164,16 +2161,14 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": "none",
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -2196,21 +2191,13 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderRight": "none",
|
"borderRight": "none",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
},
|
},
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"borderBottomRightRadius": "0",
|
"borderBottomRightRadius": "0",
|
||||||
"borderTopRightRadius": "0",
|
"borderTopRightRadius": "0",
|
||||||
"flexGrow": "1",
|
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
":active": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
":hover": Object {
|
|
||||||
"border": "none",
|
|
||||||
},
|
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
@@ -2223,7 +2210,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
".ms-Button--primary + .ms-Button": Object {
|
".ms-Button--primary + .ms-Button": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "1px solid WindowText",
|
"border": "1px solid WindowText",
|
||||||
"borderLeftWidth": "0",
|
"borderLeftWidth": "0",
|
||||||
},
|
},
|
||||||
@@ -2236,7 +2223,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -2250,7 +2237,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
@@ -2264,7 +2251,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"border": "none",
|
"border": "none",
|
||||||
"outline": "none",
|
"outline": "none",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"MsHighContrastAdjust": "none",
|
"MsHighContrastAdjust": "none",
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
@@ -2280,7 +2267,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Highlight",
|
"backgroundColor": "Highlight",
|
||||||
"color": "Window",
|
"color": "Window",
|
||||||
},
|
},
|
||||||
@@ -2289,7 +2276,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
".ms-Button.is-disabled": Object {
|
".ms-Button.is-disabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2305,7 +2292,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2317,7 +2304,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "WindowText",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2330,7 +2317,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 31,
|
"right": 31,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "GrayText",
|
"backgroundColor": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2352,18 +2339,18 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"backgroundColor": "#106ebe",
|
"backgroundColor": "#106ebe",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "Highlight",
|
"color": "Highlight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Canvas",
|
"backgroundColor": "WindowText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Object {
|
Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"color": "WindowText",
|
"color": "WindowText",
|
||||||
},
|
},
|
||||||
@@ -2413,7 +2400,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Button--primary": Object {
|
".ms-Button--primary": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"borderColor": "GrayText",
|
"borderColor": "GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2422,7 +2409,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
},
|
},
|
||||||
".ms-Button-menuIcon": Object {
|
".ms-Button-menuIcon": Object {
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2430,7 +2417,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
":hover": Object {
|
":hover": Object {
|
||||||
"cursor": "default",
|
"cursor": "default",
|
||||||
},
|
},
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"backgroundColor": "Window",
|
"backgroundColor": "Window",
|
||||||
"border": "1px solid GrayText",
|
"border": "1px solid GrayText",
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
@@ -2452,16 +2439,14 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
".ms-Fabric--isFocusVisible &:focus:after": Object {
|
||||||
"border": "1px solid #ffffff",
|
"border": "1px solid #ffffff",
|
||||||
"borderRadius": undefined,
|
|
||||||
"bottom": 3,
|
"bottom": 3,
|
||||||
"content": "\\"\\"",
|
"content": "\\"\\"",
|
||||||
"left": 3,
|
"left": 3,
|
||||||
"outline": "1px solid #605e5c",
|
"outline": "1px solid #605e5c",
|
||||||
"pointerEvents": undefined,
|
|
||||||
"position": "absolute",
|
"position": "absolute",
|
||||||
"right": 3,
|
"right": 3,
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"border": "none",
|
"border": "none",
|
||||||
"bottom": -2,
|
"bottom": -2,
|
||||||
"left": -2,
|
"left": -2,
|
||||||
@@ -2483,7 +2468,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
"splitButtonMenuIconDisabled": Object {
|
"splitButtonMenuIconDisabled": Object {
|
||||||
"color": "#a19f9d",
|
"color": "#a19f9d",
|
||||||
"selectors": Object {
|
"selectors": Object {
|
||||||
"@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)": Object {
|
"@media screen and (-ms-high-contrast: active), (forced-colors: active)": Object {
|
||||||
"color": "GrayText",
|
"color": "GrayText",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -2773,7 +2758,7 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
aria-label="OK"
|
aria-label="OK"
|
||||||
className="ms-Button ms-Button--primary root-130"
|
className="ms-Button ms-Button--primary root-73"
|
||||||
data-is-focusable={true}
|
data-is-focusable={true}
|
||||||
id="sidePanelOkButton"
|
id="sidePanelOkButton"
|
||||||
onClick={[Function]}
|
onClick={[Function]}
|
||||||
@@ -2785,16 +2770,16 @@ exports[`Delete Database Confirmation Pane Should call delete database 1`] = `
|
|||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-flexContainer flexContainer-131"
|
className="ms-Button-flexContainer flexContainer-74"
|
||||||
data-automationid="splitbuttonprimary"
|
data-automationid="splitbuttonprimary"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-textContainer textContainer-132"
|
className="ms-Button-textContainer textContainer-75"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
className="ms-Button-label label-134"
|
className="ms-Button-label label-77"
|
||||||
id="id__10"
|
id="id__6"
|
||||||
key="id__10"
|
key="id__6"
|
||||||
>
|
>
|
||||||
OK
|
OK
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ exports[`PaneContainerComponent test should be resize if notification console is
|
|||||||
customWidth="440px"
|
customWidth="440px"
|
||||||
headerClassName="panelHeader"
|
headerClassName="panelHeader"
|
||||||
headerText="test"
|
headerText="test"
|
||||||
isFooterAtBottom={true}
|
|
||||||
isLightDismiss={true}
|
isLightDismiss={true}
|
||||||
isOpen={true}
|
isOpen={true}
|
||||||
onDismiss={[Function]}
|
onDismiss={[Function]}
|
||||||
@@ -19,9 +18,9 @@ exports[`PaneContainerComponent test should be resize if notification console is
|
|||||||
Object {
|
Object {
|
||||||
"commands": Object {
|
"commands": Object {
|
||||||
"marginTop": 8,
|
"marginTop": 8,
|
||||||
"paddingTop": 0,
|
|
||||||
},
|
},
|
||||||
"content": Object {
|
"content": Object {
|
||||||
|
"height": "100%",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
},
|
},
|
||||||
"header": Object {
|
"header": Object {
|
||||||
@@ -30,6 +29,9 @@ exports[`PaneContainerComponent test should be resize if notification console is
|
|||||||
"navigation": Object {
|
"navigation": Object {
|
||||||
"borderBottom": "1px solid #cccccc",
|
"borderBottom": "1px solid #cccccc",
|
||||||
},
|
},
|
||||||
|
"scrollableContent": Object {
|
||||||
|
"height": "100%",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
type={7}
|
type={7}
|
||||||
@@ -46,7 +48,6 @@ exports[`PaneContainerComponent test should render with panel content and header
|
|||||||
customWidth="440px"
|
customWidth="440px"
|
||||||
headerClassName="panelHeader"
|
headerClassName="panelHeader"
|
||||||
headerText="test"
|
headerText="test"
|
||||||
isFooterAtBottom={true}
|
|
||||||
isLightDismiss={true}
|
isLightDismiss={true}
|
||||||
isOpen={true}
|
isOpen={true}
|
||||||
onDismiss={[Function]}
|
onDismiss={[Function]}
|
||||||
@@ -59,9 +60,9 @@ exports[`PaneContainerComponent test should render with panel content and header
|
|||||||
Object {
|
Object {
|
||||||
"commands": Object {
|
"commands": Object {
|
||||||
"marginTop": 8,
|
"marginTop": 8,
|
||||||
"paddingTop": 0,
|
|
||||||
},
|
},
|
||||||
"content": Object {
|
"content": Object {
|
||||||
|
"height": "100%",
|
||||||
"padding": 0,
|
"padding": 0,
|
||||||
},
|
},
|
||||||
"header": Object {
|
"header": Object {
|
||||||
@@ -70,6 +71,9 @@ exports[`PaneContainerComponent test should render with panel content and header
|
|||||||
"navigation": Object {
|
"navigation": Object {
|
||||||
"borderBottom": "1px solid #cccccc",
|
"borderBottom": "1px solid #cccccc",
|
||||||
},
|
},
|
||||||
|
"scrollableContent": Object {
|
||||||
|
"height": "100%",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
type={7}
|
type={7}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Checkbox, DefaultButton, IconButton, PrimaryButton, TextField } from "@fluentui/react";
|
import { Checkbox, ChoiceGroup, DefaultButton, IconButton, PrimaryButton, TextField } from "@fluentui/react";
|
||||||
import Explorer from "Explorer/Explorer";
|
import Explorer from "Explorer/Explorer";
|
||||||
import { QueryCopilotFeedbackModal } from "Explorer/QueryCopilot/Modal/QueryCopilotFeedbackModal";
|
import { QueryCopilotFeedbackModal } from "Explorer/QueryCopilot/Modal/QueryCopilotFeedbackModal";
|
||||||
import { useCopilotStore } from "Explorer/QueryCopilot/QueryCopilotContext";
|
|
||||||
import { SubmitFeedback } from "Explorer/QueryCopilot/Shared/QueryCopilotClient";
|
import { SubmitFeedback } from "Explorer/QueryCopilot/Shared/QueryCopilotClient";
|
||||||
import { getUserEmail } from "Utils/UserUtils";
|
import { getUserEmail } from "Utils/UserUtils";
|
||||||
import { shallow } from "enzyme";
|
import { shallow } from "enzyme";
|
||||||
|
import { useQueryCopilot } from "hooks/useQueryCopilot";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
jest.mock("Utils/UserUtils");
|
jest.mock("Utils/UserUtils");
|
||||||
@@ -13,49 +13,21 @@ jest.mock("Utils/UserUtils");
|
|||||||
jest.mock("Explorer/QueryCopilot/Shared/QueryCopilotClient");
|
jest.mock("Explorer/QueryCopilot/Shared/QueryCopilotClient");
|
||||||
SubmitFeedback as jest.Mock;
|
SubmitFeedback as jest.Mock;
|
||||||
|
|
||||||
jest.mock("Explorer/QueryCopilot/QueryCopilotContext");
|
|
||||||
const mockUseCopilotStore = useCopilotStore as jest.Mock;
|
|
||||||
const mockReturnValue = {
|
|
||||||
generatedQuery: "test query",
|
|
||||||
userPrompt: "test prompt",
|
|
||||||
likeQuery: false,
|
|
||||||
showFeedbackModal: false,
|
|
||||||
closeFeedbackModal: jest.fn,
|
|
||||||
setHideFeedbackModalForLikedQueries: jest.fn,
|
|
||||||
};
|
|
||||||
|
|
||||||
describe("Query Copilot Feedback Modal snapshot test", () => {
|
describe("Query Copilot Feedback Modal snapshot test", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mockUseCopilotStore.mockReturnValue(mockReturnValue);
|
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
});
|
});
|
||||||
it("shoud render and match snapshot", () => {
|
it("shoud render and match snapshot", () => {
|
||||||
mockUseCopilotStore.mockReturnValue({
|
useQueryCopilot.getState().openFeedbackModal("test query", false, "test prompt");
|
||||||
...mockReturnValue,
|
|
||||||
showFeedbackModal: true,
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
});
|
|
||||||
const wrapper = shallow(
|
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={new Explorer()}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
expect(wrapper.props().isOpen).toBeTruthy();
|
expect(wrapper.props().isOpen).toBeTruthy();
|
||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should close on cancel click", () => {
|
it("should close on cancel click", () => {
|
||||||
const wrapper = shallow(
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={new Explorer()}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const cancelButton = wrapper.find(IconButton);
|
const cancelButton = wrapper.find(IconButton);
|
||||||
cancelButton.simulate("click");
|
cancelButton.simulate("click");
|
||||||
@@ -66,14 +38,7 @@ describe("Query Copilot Feedback Modal snapshot test", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should get user unput", () => {
|
it("should get user unput", () => {
|
||||||
const wrapper = shallow(
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={new Explorer()}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
const testUserInput = "test user input";
|
const testUserInput = "test user input";
|
||||||
|
|
||||||
const userInput = wrapper.find(TextField).first();
|
const userInput = wrapper.find(TextField).first();
|
||||||
@@ -83,15 +48,30 @@ describe("Query Copilot Feedback Modal snapshot test", () => {
|
|||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should record user contact choice no", () => {
|
||||||
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
|
const contactAllowed = wrapper.find(ChoiceGroup);
|
||||||
|
|
||||||
|
contactAllowed.simulate("change", {}, { key: "no" });
|
||||||
|
|
||||||
|
expect(getUserEmail).toHaveBeenCalledTimes(3);
|
||||||
|
expect(wrapper.find(ChoiceGroup).props().selectedKey).toEqual("no");
|
||||||
|
expect(wrapper).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should record user contact choice yes", () => {
|
||||||
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
|
const contactAllowed = wrapper.find(ChoiceGroup);
|
||||||
|
|
||||||
|
contactAllowed.simulate("change", {}, { key: "yes" });
|
||||||
|
|
||||||
|
expect(getUserEmail).toHaveBeenCalledTimes(4);
|
||||||
|
expect(wrapper.find(ChoiceGroup).props().selectedKey).toEqual("yes");
|
||||||
|
expect(wrapper).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
it("should not render dont show again button", () => {
|
it("should not render dont show again button", () => {
|
||||||
const wrapper = shallow(
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={new Explorer()}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const dontShowAgain = wrapper.find(Checkbox);
|
const dontShowAgain = wrapper.find(Checkbox);
|
||||||
|
|
||||||
@@ -99,20 +79,9 @@ describe("Query Copilot Feedback Modal snapshot test", () => {
|
|||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should render dont show again button and check it", () => {
|
it("should render dont show again button and check it ", () => {
|
||||||
mockUseCopilotStore.mockReturnValue({
|
useQueryCopilot.getState().openFeedbackModal("test query", true, "test prompt");
|
||||||
...mockReturnValue,
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
showFeedbackModal: true,
|
|
||||||
likeQuery: true,
|
|
||||||
});
|
|
||||||
const wrapper = shallow(
|
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={new Explorer()}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const dontShowAgain = wrapper.find(Checkbox);
|
const dontShowAgain = wrapper.find(Checkbox);
|
||||||
dontShowAgain.simulate("change", {}, true);
|
dontShowAgain.simulate("change", {}, true);
|
||||||
@@ -123,14 +92,7 @@ describe("Query Copilot Feedback Modal snapshot test", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should cancel submission", () => {
|
it("should cancel submission", () => {
|
||||||
const wrapper = shallow(
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={new Explorer()} />);
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={new Explorer()}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const cancelButton = wrapper.find(DefaultButton);
|
const cancelButton = wrapper.find(DefaultButton);
|
||||||
cancelButton.simulate("click");
|
cancelButton.simulate("click");
|
||||||
@@ -140,49 +102,22 @@ describe("Query Copilot Feedback Modal snapshot test", () => {
|
|||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should not submit submission if required description field is null", () => {
|
it("should submit submission", () => {
|
||||||
const explorer = new Explorer();
|
const explorer = new Explorer();
|
||||||
const wrapper = shallow(
|
const wrapper = shallow(<QueryCopilotFeedbackModal explorer={explorer} />);
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={explorer}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const submitButton = wrapper.find(PrimaryButton);
|
const submitButton = wrapper.find(PrimaryButton);
|
||||||
submitButton.simulate("click");
|
submitButton.simulate("click");
|
||||||
wrapper.setProps({});
|
wrapper.setProps({});
|
||||||
|
|
||||||
expect(SubmitFeedback).toHaveBeenCalledTimes(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should submit submission", () => {
|
|
||||||
const explorer = new Explorer();
|
|
||||||
const wrapper = shallow(
|
|
||||||
<QueryCopilotFeedbackModal
|
|
||||||
explorer={explorer}
|
|
||||||
databaseId="CopilotUserDb"
|
|
||||||
containerId="CopilotUserContainer"
|
|
||||||
mode="User"
|
|
||||||
/>,
|
|
||||||
);
|
|
||||||
|
|
||||||
const submitButton = wrapper.find("form");
|
|
||||||
submitButton.simulate("submit");
|
|
||||||
wrapper.setProps({});
|
|
||||||
|
|
||||||
expect(SubmitFeedback).toHaveBeenCalledTimes(1);
|
expect(SubmitFeedback).toHaveBeenCalledTimes(1);
|
||||||
expect(SubmitFeedback).toHaveBeenCalledWith({
|
expect(SubmitFeedback).toHaveBeenCalledWith({
|
||||||
containerId: "CopilotUserContainer",
|
|
||||||
databaseId: "CopilotUserDb",
|
|
||||||
mode: "User",
|
|
||||||
params: {
|
params: {
|
||||||
likeQuery: false,
|
likeQuery: false,
|
||||||
generatedQuery: "test query",
|
generatedQuery: "",
|
||||||
userPrompt: "test prompt",
|
userPrompt: "",
|
||||||
description: "",
|
description: "",
|
||||||
|
contact: getUserEmail(),
|
||||||
},
|
},
|
||||||
explorer: explorer,
|
explorer: explorer,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
Checkbox,
|
Checkbox,
|
||||||
|
ChoiceGroup,
|
||||||
DefaultButton,
|
DefaultButton,
|
||||||
IconButton,
|
IconButton,
|
||||||
Link,
|
Link,
|
||||||
@@ -10,21 +11,12 @@ import {
|
|||||||
TextField,
|
TextField,
|
||||||
} from "@fluentui/react";
|
} from "@fluentui/react";
|
||||||
import Explorer from "Explorer/Explorer";
|
import Explorer from "Explorer/Explorer";
|
||||||
import { useCopilotStore } from "Explorer/QueryCopilot/QueryCopilotContext";
|
|
||||||
import { SubmitFeedback } from "Explorer/QueryCopilot/Shared/QueryCopilotClient";
|
import { SubmitFeedback } from "Explorer/QueryCopilot/Shared/QueryCopilotClient";
|
||||||
|
import { useQueryCopilot } from "hooks/useQueryCopilot";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
import { getUserEmail } from "../../../Utils/UserUtils";
|
||||||
|
|
||||||
export const QueryCopilotFeedbackModal = ({
|
export const QueryCopilotFeedbackModal = ({ explorer }: { explorer: Explorer }): JSX.Element => {
|
||||||
explorer,
|
|
||||||
databaseId,
|
|
||||||
containerId,
|
|
||||||
mode,
|
|
||||||
}: {
|
|
||||||
explorer: Explorer;
|
|
||||||
databaseId: string;
|
|
||||||
containerId: string;
|
|
||||||
mode: string;
|
|
||||||
}): JSX.Element => {
|
|
||||||
const {
|
const {
|
||||||
generatedQuery,
|
generatedQuery,
|
||||||
userPrompt,
|
userPrompt,
|
||||||
@@ -32,72 +24,94 @@ export const QueryCopilotFeedbackModal = ({
|
|||||||
showFeedbackModal,
|
showFeedbackModal,
|
||||||
closeFeedbackModal,
|
closeFeedbackModal,
|
||||||
setHideFeedbackModalForLikedQueries,
|
setHideFeedbackModalForLikedQueries,
|
||||||
} = useCopilotStore();
|
} = useQueryCopilot();
|
||||||
|
const [isContactAllowed, setIsContactAllowed] = React.useState<boolean>(true);
|
||||||
const [description, setDescription] = React.useState<string>("");
|
const [description, setDescription] = React.useState<string>("");
|
||||||
const [doNotShowAgainChecked, setDoNotShowAgainChecked] = React.useState<boolean>(false);
|
const [doNotShowAgainChecked, setDoNotShowAgainChecked] = React.useState<boolean>(false);
|
||||||
|
const [contact, setContact] = React.useState<string>(getUserEmail());
|
||||||
const handleSubmit = () => {
|
|
||||||
closeFeedbackModal();
|
|
||||||
setHideFeedbackModalForLikedQueries(doNotShowAgainChecked);
|
|
||||||
SubmitFeedback({
|
|
||||||
params: { generatedQuery, likeQuery, description, userPrompt },
|
|
||||||
explorer,
|
|
||||||
databaseId,
|
|
||||||
containerId,
|
|
||||||
mode: mode,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal isOpen={showFeedbackModal}>
|
<Modal isOpen={showFeedbackModal}>
|
||||||
<form onSubmit={handleSubmit}>
|
<Stack style={{ padding: 24 }}>
|
||||||
<Stack style={{ padding: 24 }}>
|
<Stack horizontal horizontalAlign="space-between">
|
||||||
<Stack horizontal horizontalAlign="space-between">
|
<Text style={{ fontSize: 20, fontWeight: 600, marginBottom: 20 }}>Send feedback to Microsoft</Text>
|
||||||
<Text style={{ fontSize: 20, fontWeight: 600, marginBottom: 20 }}>Send feedback to Microsoft</Text>
|
<IconButton iconProps={{ iconName: "Cancel" }} onClick={() => closeFeedbackModal()} />
|
||||||
<IconButton iconProps={{ iconName: "Cancel" }} onClick={() => closeFeedbackModal()} />
|
|
||||||
</Stack>
|
|
||||||
<Text style={{ fontSize: 14, marginBottom: 14 }}>Your feedback will help improve the experience.</Text>
|
|
||||||
<TextField
|
|
||||||
styles={{ root: { marginBottom: 14 } }}
|
|
||||||
label="Description"
|
|
||||||
required
|
|
||||||
placeholder="Provide more details"
|
|
||||||
value={description}
|
|
||||||
onChange={(_, newValue) => setDescription(newValue)}
|
|
||||||
multiline
|
|
||||||
rows={3}
|
|
||||||
/>
|
|
||||||
<TextField
|
|
||||||
styles={{ root: { marginBottom: 14 } }}
|
|
||||||
label="Query generated"
|
|
||||||
defaultValue={generatedQuery}
|
|
||||||
readOnly
|
|
||||||
/>
|
|
||||||
<Text style={{ fontSize: 12, marginBottom: 14 }}>
|
|
||||||
By pressing submit, your feedback will be used to improve Microsoft products and services. Please see the{" "}
|
|
||||||
{
|
|
||||||
<Link href="https://privacy.microsoft.com/privacystatement" target="_blank">
|
|
||||||
Privacy statement
|
|
||||||
</Link>
|
|
||||||
}{" "}
|
|
||||||
for more information.
|
|
||||||
</Text>
|
|
||||||
{likeQuery && (
|
|
||||||
<Checkbox
|
|
||||||
styles={{ label: { paddingLeft: 0 }, root: { marginBottom: 14 } }}
|
|
||||||
label="Don't show me this next time"
|
|
||||||
checked={doNotShowAgainChecked}
|
|
||||||
onChange={(_, checked) => setDoNotShowAgainChecked(checked)}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
<Stack horizontal horizontalAlign="end">
|
|
||||||
<PrimaryButton styles={{ root: { marginRight: 8 } }} type="submit">
|
|
||||||
Submit
|
|
||||||
</PrimaryButton>
|
|
||||||
<DefaultButton onClick={() => closeFeedbackModal()}>Cancel</DefaultButton>
|
|
||||||
</Stack>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</form>
|
<Text style={{ fontSize: 14, marginBottom: 14 }}>Your feedback will help improve the experience.</Text>
|
||||||
|
<TextField
|
||||||
|
styles={{ root: { marginBottom: 14 } }}
|
||||||
|
label="Description"
|
||||||
|
required
|
||||||
|
placeholder="Provide more details"
|
||||||
|
value={description}
|
||||||
|
onChange={(_, newValue) => setDescription(newValue)}
|
||||||
|
multiline
|
||||||
|
rows={3}
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
styles={{ root: { marginBottom: 14 } }}
|
||||||
|
label="Query generated"
|
||||||
|
defaultValue={generatedQuery}
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
<ChoiceGroup
|
||||||
|
styles={{
|
||||||
|
root: {
|
||||||
|
marginBottom: 14,
|
||||||
|
},
|
||||||
|
flexContainer: {
|
||||||
|
selectors: {
|
||||||
|
".ms-ChoiceField-field::before": { marginTop: 4 },
|
||||||
|
".ms-ChoiceField-field::after": { marginTop: 4 },
|
||||||
|
".ms-ChoiceFieldLabel": { paddingLeft: 6 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
label="May we contact you about your feedback?"
|
||||||
|
options={[
|
||||||
|
{ key: "yes", text: "Yes, you may contact me." },
|
||||||
|
{ key: "no", text: "No, do not contact me." },
|
||||||
|
]}
|
||||||
|
selectedKey={isContactAllowed ? "yes" : "no"}
|
||||||
|
onChange={(_, option) => {
|
||||||
|
setIsContactAllowed(option.key === "yes");
|
||||||
|
setContact(option.key === "yes" ? getUserEmail() : "");
|
||||||
|
}}
|
||||||
|
></ChoiceGroup>
|
||||||
|
<Text style={{ fontSize: 12, marginBottom: 14 }}>
|
||||||
|
By pressing submit, your feedback will be used to improve Microsoft products and services. Please see the{" "}
|
||||||
|
{
|
||||||
|
<Link href="https://privacy.microsoft.com/privacystatement" target="_blank">
|
||||||
|
Privacy statement
|
||||||
|
</Link>
|
||||||
|
}{" "}
|
||||||
|
for more information.
|
||||||
|
</Text>
|
||||||
|
{likeQuery && (
|
||||||
|
<Checkbox
|
||||||
|
styles={{ label: { paddingLeft: 0 }, root: { marginBottom: 14 } }}
|
||||||
|
label="Don't show me this next time"
|
||||||
|
checked={doNotShowAgainChecked}
|
||||||
|
onChange={(_, checked) => setDoNotShowAgainChecked(checked)}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<Stack horizontal horizontalAlign="end">
|
||||||
|
<PrimaryButton
|
||||||
|
styles={{ root: { marginRight: 8 } }}
|
||||||
|
onClick={() => {
|
||||||
|
closeFeedbackModal();
|
||||||
|
setHideFeedbackModalForLikedQueries(doNotShowAgainChecked);
|
||||||
|
SubmitFeedback({
|
||||||
|
params: { generatedQuery, likeQuery, description, userPrompt, contact },
|
||||||
|
explorer: explorer,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Submit
|
||||||
|
</PrimaryButton>
|
||||||
|
<DefaultButton onClick={() => closeFeedbackModal()}>Cancel</DefaultButton>
|
||||||
|
</Stack>
|
||||||
|
</Stack>
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
.modalContentPadding {
|
.modalContentPadding {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
width: 513px;
|
width: 513px;
|
||||||
|
height: 638px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exitPadding {
|
.exitPadding {
|
||||||
@@ -38,7 +39,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.buttonPadding {
|
.buttonPadding {
|
||||||
padding: 15px 0px 15px 0px;
|
padding: 15px 0px 0px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tryButton {
|
.tryButton {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { IconButton, Image, Link, Modal, PrimaryButton, Stack, StackItem, Text } from "@fluentui/react";
|
import { IconButton, Image, Link, Modal, PrimaryButton, Stack, StackItem, Text } from "@fluentui/react";
|
||||||
import { useBoolean } from "@fluentui/react-hooks";
|
import { useBoolean } from "@fluentui/react-hooks";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
import Database from "../../../../images/CopilotDatabase.svg";
|
||||||
import Flash from "../../../../images/CopilotFlash.svg";
|
import Flash from "../../../../images/CopilotFlash.svg";
|
||||||
import Thumb from "../../../../images/CopilotThumb.svg";
|
import Thumb from "../../../../images/CopilotThumb.svg";
|
||||||
import CoplilotWelcomeIllustration from "../../../../images/CopliotWelcomeIllustration.svg";
|
import CoplilotWelcomeIllustration from "../../../../images/CopliotWelcomeIllustration.svg";
|
||||||
@@ -22,10 +23,8 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
|||||||
onDismiss={hideModal}
|
onDismiss={hideModal}
|
||||||
isBlocking={false}
|
isBlocking={false}
|
||||||
styles={{
|
styles={{
|
||||||
main: {
|
scrollableContent: {
|
||||||
maxHeight: 600,
|
minHeight: 680,
|
||||||
borderRadius: 10,
|
|
||||||
overflow: "hidden",
|
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -37,6 +36,9 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
|||||||
</Stack.Item>
|
</Stack.Item>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack horizontal grow={1} horizontalAlign="end" verticalAlign="start" className="exitPadding">
|
<Stack horizontal grow={1} horizontalAlign="end" verticalAlign="start" className="exitPadding">
|
||||||
|
<Stack.Item className="previewMargin">
|
||||||
|
<Text className="preview">Preview</Text>
|
||||||
|
</Stack.Item>
|
||||||
<Stack.Item>
|
<Stack.Item>
|
||||||
<IconButton
|
<IconButton
|
||||||
onClick={hideModal}
|
onClick={hideModal}
|
||||||
@@ -50,7 +52,7 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
|||||||
</Stack>
|
</Stack>
|
||||||
<Stack horizontalAlign="center">
|
<Stack horizontalAlign="center">
|
||||||
<Stack.Item align="center" style={{ textAlign: "center" }}>
|
<Stack.Item align="center" style={{ textAlign: "center" }}>
|
||||||
<Text className="title bold">Welcome to Microsoft Copilot for Azure in Cosmos DB</Text>
|
<Text className="title bold">Welcome to Copilot in Azure Cosmos DB (Private Preview)</Text>
|
||||||
</Stack.Item>
|
</Stack.Item>
|
||||||
<Stack.Item align="center" className="text">
|
<Stack.Item align="center" className="text">
|
||||||
<Stack horizontal>
|
<Stack horizontal>
|
||||||
@@ -67,7 +69,7 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
|||||||
<Text>
|
<Text>
|
||||||
Ask Copilot to generate a query by describing the query in your words.
|
Ask Copilot to generate a query by describing the query in your words.
|
||||||
<br />
|
<br />
|
||||||
<Link target="_blank" href="https://aka.ms/MicrosoftCopilotForAzureInCDBHowTo">
|
<Link target="_blank" href="https://aka.ms/cdb-copilot-learn-more">
|
||||||
Learn more
|
Learn more
|
||||||
</Link>
|
</Link>
|
||||||
</Text>
|
</Text>
|
||||||
@@ -85,11 +87,31 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
|||||||
</StackItem>
|
</StackItem>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Text>
|
<Text>
|
||||||
AI-generated content can have mistakes. Make sure it is accurate and appropriate before executing the
|
AI-generated content can have mistakes. Make sure it’s accurate and appropriate before using it.
|
||||||
query.
|
|
||||||
<br />
|
<br />
|
||||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-preview-terms">
|
<Link target="_blank" href="https://aka.ms/cdb-copilot-preview-terms">
|
||||||
Read our preview terms here
|
Read preview terms
|
||||||
|
</Link>
|
||||||
|
</Text>
|
||||||
|
</Stack.Item>
|
||||||
|
<Stack.Item align="center" className="text">
|
||||||
|
<Stack horizontal>
|
||||||
|
<StackItem align="start" className="imageTextPadding">
|
||||||
|
<Image src={Database} />
|
||||||
|
</StackItem>
|
||||||
|
<StackItem align="start">
|
||||||
|
<Text className="bold">
|
||||||
|
Query Copilot works on a sample database.
|
||||||
|
<br />
|
||||||
|
</Text>
|
||||||
|
</StackItem>
|
||||||
|
</Stack>
|
||||||
|
<Text>
|
||||||
|
While in Private Preview, Query Copilot is setup to work on sample database we have configured for you
|
||||||
|
at no cost.
|
||||||
|
<br />
|
||||||
|
<Link target="_blank" href="https://aka.ms/cdb-copilot-learn-more">
|
||||||
|
Learn more
|
||||||
</Link>
|
</Link>
|
||||||
</Text>
|
</Text>
|
||||||
</Stack.Item>
|
</Stack.Item>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user