Merge pull request #18560 from appsmithorg/release-29nov
chore: Release v1.8.11
This commit is contained in:
commit
cfc1dde746
|
|
@ -1,37 +0,0 @@
|
|||
name: 📖 Documentation Improvement
|
||||
description: Suggest improvements to our documentation
|
||||
title: "[Docs]: "
|
||||
labels: [Documentation]
|
||||
assignees:
|
||||
- Nikhil-Nandagopal
|
||||
- danciaclara
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this documentation improvement request!
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
description: Please search to see if an issue realated to this already exists.
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Documentation Link
|
||||
description: Add a link to the page which needs improvement (if relevant)
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the problem
|
||||
description: Is the documentation missing? Or is it confusing? Why is it confusing?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the improvement
|
||||
description: A clear and concise description of the improvement.
|
||||
validations:
|
||||
required: true
|
||||
2
.github/config.json
vendored
2
.github/config.json
vendored
File diff suppressed because one or more lines are too long
12
.github/workflows/perf-test.yml
vendored
12
.github/workflows/perf-test.yml
vendored
|
|
@ -168,6 +168,18 @@ jobs:
|
|||
yarn global add serve
|
||||
echo "$(yarn global bin)" >> $GITHUB_PATH
|
||||
|
||||
- name: Load docker image
|
||||
if: steps.run_result.outputs.run_result != 'success'
|
||||
env:
|
||||
APPSMITH_LICENSE_KEY: ${{ secrets.APPSMITH_LICENSE_KEY }}
|
||||
working-directory: "."
|
||||
run: |
|
||||
mkdir -p ~/git-server/keys
|
||||
mkdir -p ~/git-server/repos
|
||||
docker run --name test-event-driver -d -p 2222:22 -p 5001:5001 -p 3306:3306 \
|
||||
-p 5432:5432 -p 28017:27017 -p 25:25 --privileged --pid=host --ipc=host --volume /:/host -v ~/git-server/keys:/git-server/keys \
|
||||
-v ~/git-server/repos:/git-server/repos appsmith/test-event-driver:latest
|
||||
|
||||
- name: Setting up the perf tests
|
||||
if: steps.run_result.outputs.run_result != 'success'
|
||||
shell: bash
|
||||
|
|
|
|||
|
|
@ -1476,7 +1476,7 @@ jobs:
|
|||
|
||||
# Force save the failed spec list into a cache
|
||||
- name: Store the combined run result
|
||||
if: needs.ui-test.result
|
||||
if: needs.ui-test.result != 'success'
|
||||
uses: martijnhols/actions-cache/save@v3
|
||||
with:
|
||||
path: |
|
||||
|
|
@ -1487,7 +1487,7 @@ jobs:
|
|||
|
||||
# Force save the fat failed spec list into a cache
|
||||
- name: Store the combined run result for fat
|
||||
if: needs.ui-test.result
|
||||
if: needs.fat-container-test.result != 'success'
|
||||
uses: martijnhols/actions-cache/save@v3
|
||||
with:
|
||||
path: |
|
||||
|
|
@ -1499,7 +1499,7 @@ jobs:
|
|||
# Upload combined failed spec list to a file
|
||||
# This is done for debugging.
|
||||
- name: upload combined failed spec
|
||||
if: needs.ui-test.result
|
||||
if: needs.ui-test.result != 'success'
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: combined_failed_spec
|
||||
|
|
@ -1508,7 +1508,7 @@ jobs:
|
|||
# Upload combined failed fat spec list to a file
|
||||
# This is done for debugging.
|
||||
- name: upload combined failed spec
|
||||
if: needs.ui-test.result
|
||||
if: needs.fat-container-test.result != 'success'
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: combined_failed_spec_fat
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ We welcome all feature requests, whether it's to add new functionality to an exi
|
|||
File your feature request through GitHub Issues using the [Feature Request](https://github.com/appsmithorg/appsmith/issues/new?assignees=Nikhil-Nandagopal&labels=Enhancement&template=--feature-request.yaml&title=%5BFeature%5D%3A+) template.
|
||||
|
||||
#### 📝 Improve the documentation
|
||||
In the process of shipping features quickly, we may forget to keep our docs up to date. You can help by suggesting improvements to our documentation using the [Documentation Improvement](https://github.com/appsmithorg/appsmith/issues/new?assignees=Nikhil-Nandagopal&labels=Documentation&template=--documentation-improvement.yaml&title=%5BDocs%5D%3A+) template or dive right into our [Docs Contribution Guide](contributions/docs/CONTRIBUTING.md)!
|
||||
In the process of shipping features quickly, we may forget to keep our docs up to date. You can help by suggesting improvements to our documentation using the [Documentation templates](https://github.com/appsmithorg/appsmith-docs/issues/new/choose) or dive right into our [Docs Contribution Guide](https://github.com/appsmithorg/appsmith-docs/blob/main/CONTRIBUTING.md)!
|
||||
|
||||
#### ⚙️ Close a Bug / Feature issue
|
||||
We welcome contributions that help make appsmith bug free & improve the experience of our users. You can also find issues tagged [Good First Issues](https://github.com/appsmithorg/appsmith/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22+bug). Check out our [Code Contribution Guide](contributions/CodeContributionsGuidelines.md) to begin.
|
||||
|
|
|
|||
17
README.md
17
README.md
|
|
@ -165,8 +165,8 @@ Lets build great software together.
|
|||
[](https://github.com/sharat87)
|
||||
[](https://github.com/riodeuno)
|
||||
[](https://github.com/vicky-primathon)
|
||||
[](https://github.com/satbir121)
|
||||
[](https://github.com/akash-codemonk)
|
||||
[](https://github.com/satbir121)
|
||||
[](https://github.com/nidhi-nair)
|
||||
[](https://github.com/Tooluloope)
|
||||
[](https://github.com/sumitsum)
|
||||
|
|
@ -198,16 +198,16 @@ Lets build great software together.
|
|||
[](https://github.com/ayushpahwa)
|
||||
[](https://github.com/Parthvi12)
|
||||
[](https://github.com/ashit-rath)
|
||||
[](https://github.com/areyabhishek)
|
||||
[](https://github.com/AmanAgarwal041)
|
||||
[](https://github.com/areyabhishek)
|
||||
[](https://github.com/rimildeyjsr)
|
||||
[](https://github.com/cokoghenun)
|
||||
[](https://github.com/ankurrsinghal)
|
||||
[](https://github.com/cokoghenun)
|
||||
[](https://github.com/vishnu-gp)
|
||||
[](https://github.com/keyurparalkar)
|
||||
[](https://github.com/vihar)
|
||||
[](https://github.com/eco-monk)
|
||||
[](https://github.com/ChandanBalajiBP)
|
||||
[](https://github.com/eco-monk)
|
||||
[](https://github.com/souma-ghosh)
|
||||
[](https://github.com/subrata71)
|
||||
[](https://github.com/dhruvikn)
|
||||
|
|
@ -215,23 +215,22 @@ Lets build great software together.
|
|||
[](https://github.com/tanvibhakta)
|
||||
[](https://github.com/berzerkeer)
|
||||
[](https://github.com/nsarupr)
|
||||
[](https://github.com/sondermanish)
|
||||
[](https://github.com/sneha122)
|
||||
[](https://github.com/pratapaprasanna)
|
||||
[](https://github.com/sondermanish)
|
||||
[](https://github.com/Pranay105)
|
||||
[](https://github.com/iamrkcheers)
|
||||
[](https://github.com/vaibh1297)
|
||||
[](https://github.com/ankitsrivas14)
|
||||
[](https://github.com/kocharrahul7)
|
||||
[](https://github.com/rohitagarwal88)
|
||||
[](https://github.com/ramsaptami)
|
||||
[](https://github.com/ravikp7)
|
||||
[](https://github.com/AS-Laguna)
|
||||
[](https://github.com/NilanshBansal)
|
||||
[](https://github.com/RakshaKShetty)
|
||||
[](https://github.com/ravikp7)
|
||||
[](https://github.com/iamrkcheers)
|
||||
[](https://github.com/Rishabhkaul)
|
||||
[](https://github.com/rohan-arthur)
|
||||
[](https://github.com/somnathdasadhikari)
|
||||
[](https://github.com/hiteshjoshi)
|
||||
[](https://github.com/rlnorthcutt)
|
||||
[](https://github.com/vuiets)
|
||||
|
|
@ -245,6 +244,7 @@ Lets build great software together.
|
|||
[](https://github.com/riteshkew)
|
||||
[](https://github.com/andrewdietekoki)
|
||||
[](https://github.com/GreenFlux)
|
||||
[](https://github.com/vivonk)
|
||||
[](https://github.com/danciaclara)
|
||||
[](https://github.com/Debsourabh)
|
||||
[](https://github.com/tejasahluwalia)
|
||||
|
|
@ -390,6 +390,7 @@ Lets build great software together.
|
|||
[](https://github.com/Saket2)
|
||||
[](https://github.com/withshubh)
|
||||
[](https://github.com/smrutiparida)
|
||||
[](https://github.com/somnathdasadhikari)
|
||||
[](https://github.com/srijanshetty)
|
||||
[](https://github.com/Sufiyan1997)
|
||||
[](https://github.com/rayrny)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ plugins.push(
|
|||
swSrc: "./src/serviceWorker.js",
|
||||
mode: "development",
|
||||
swDest: "./pageService.js",
|
||||
maximumFileSizeToCacheInBytes: 10 * 1024 * 1024,
|
||||
maximumFileSizeToCacheInBytes: 11 * 1024 * 1024,
|
||||
}),
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,857 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896.0,
|
||||
"snapColumns": 64.0,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 560.0,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125.0,
|
||||
"parentRowSpace": 1.0,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69.0,
|
||||
"minHeight": 1292.0,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1.0,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0.0,
|
||||
"children": [
|
||||
{
|
||||
"template": {
|
||||
"Image1": {
|
||||
"isVisible": true,
|
||||
"defaultImage": "https://assets.appsmith.com/widgets/default.png",
|
||||
"imageShape": "RECTANGLE",
|
||||
"maxZoomLevel": 1.0,
|
||||
"enableRotation": false,
|
||||
"enableDownload": false,
|
||||
"objectFit": "cover",
|
||||
"image": "{{List1.listData.map((currentItem) => currentItem.img)}}",
|
||||
"widgetName": "Image1",
|
||||
"version": 1.0,
|
||||
"animateLoading": true,
|
||||
"type": "IMAGE_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Image",
|
||||
"key": "n1szm8g77z",
|
||||
"iconSVG": "/static/media/icon.52d8fb963abcb95c79b10f1553389f22.svg",
|
||||
"boxShadow": "none",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "image"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": [],
|
||||
"widgetId": "852qrq5vm1",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"leftColumn": 0.0,
|
||||
"rightColumn": 16.0,
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 8.0,
|
||||
"parentId": "7z0hh0zvos"
|
||||
},
|
||||
"Text1": {
|
||||
"isVisible": true,
|
||||
"text": "{{List1.listData.map((currentItem) => currentItem.name)}}",
|
||||
"fontSize": "1rem",
|
||||
"fontStyle": "BOLD",
|
||||
"textAlign": "LEFT",
|
||||
"textColor": "#231F20",
|
||||
"widgetName": "Text1",
|
||||
"shouldTruncate": false,
|
||||
"overflow": "NONE",
|
||||
"version": 1.0,
|
||||
"animateLoading": true,
|
||||
"minDynamicHeight": 4.0,
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Text",
|
||||
"key": "tf4er66bom",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"textStyle": "HEADING",
|
||||
"boxShadow": "none",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "text"
|
||||
},
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": [],
|
||||
"widgetId": "1sfn18h25j",
|
||||
"renderMode": "CANVAS",
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"leftColumn": 16.0,
|
||||
"rightColumn": 28.0,
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 4.0,
|
||||
"parentId": "7z0hh0zvos"
|
||||
},
|
||||
"Text2": {
|
||||
"isVisible": true,
|
||||
"text": "{{List1.listData.map((currentItem) => currentItem.id)}}",
|
||||
"fontSize": "1rem",
|
||||
"fontStyle": "BOLD",
|
||||
"textAlign": "LEFT",
|
||||
"textColor": "#231F20",
|
||||
"widgetName": "Text2",
|
||||
"shouldTruncate": false,
|
||||
"overflow": "NONE",
|
||||
"version": 1.0,
|
||||
"animateLoading": true,
|
||||
"minDynamicHeight": 4.0,
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Text",
|
||||
"key": "tf4er66bom",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"textStyle": "BODY",
|
||||
"boxShadow": "none",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "text"
|
||||
},
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": [],
|
||||
"widgetId": "ekx7bft1ux",
|
||||
"renderMode": "CANVAS",
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"leftColumn": 16.0,
|
||||
"rightColumn": 24.0,
|
||||
"topRow": 4.0,
|
||||
"bottomRow": 8.0,
|
||||
"parentId": "7z0hh0zvos"
|
||||
},
|
||||
"CheckboxGroup1": {
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"options": [
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
}
|
||||
],
|
||||
"defaultSelectedValues": [
|
||||
"BLUE"
|
||||
],
|
||||
"isDisabled": false,
|
||||
"isInline": true,
|
||||
"isRequired": false,
|
||||
"labelText": "Label",
|
||||
"labelPosition": "Top",
|
||||
"labelAlignment": "left",
|
||||
"labelWidth": 5.0,
|
||||
"widgetName": "CheckboxGroup1",
|
||||
"version": 2.0,
|
||||
"minDynamicHeight": 4.0,
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"type": "CHECKBOX_GROUP_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Checkbox Group",
|
||||
"key": "2ge4cq00z3",
|
||||
"iconSVG": "/static/media/icon.ecb3847950c4515966ef642a32758afb.svg",
|
||||
"widgetId": "30pveks53r",
|
||||
"renderMode": "CANVAS",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 4.2734375,
|
||||
"parentRowSpace": 10.0,
|
||||
"leftColumn": 35.0,
|
||||
"rightColumn": 58.0,
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 6.0,
|
||||
"parentId": "7z0hh0zvos",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"logBlackList": {
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"labelTextSize": true,
|
||||
"options": true,
|
||||
"defaultSelectedValues": true,
|
||||
"isDisabled": true,
|
||||
"isInline": true,
|
||||
"isRequired": true,
|
||||
"labelText": true,
|
||||
"labelPosition": true,
|
||||
"labelAlignment": true,
|
||||
"labelWidth": true,
|
||||
"widgetName": true,
|
||||
"version": true,
|
||||
"minDynamicHeight": true,
|
||||
"maxDynamicHeight": true,
|
||||
"dynamicHeight": true,
|
||||
"searchTags": true,
|
||||
"type": true,
|
||||
"hideCard": true,
|
||||
"isDeprecated": true,
|
||||
"replacement": true,
|
||||
"displayName": true,
|
||||
"key": true,
|
||||
"iconSVG": true,
|
||||
"isCanvas": true,
|
||||
"minHeight": true,
|
||||
"widgetId": true,
|
||||
"renderMode": true,
|
||||
"accentColor": true,
|
||||
"borderRadius": true,
|
||||
"isLoading": true,
|
||||
"parentColumnSpace": true,
|
||||
"parentRowSpace": true,
|
||||
"leftColumn": true,
|
||||
"rightColumn": true,
|
||||
"topRow": true,
|
||||
"bottomRow": true,
|
||||
"parentId": true,
|
||||
"dynamicBindingPathList": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"widgetName": "List1",
|
||||
"listData": [
|
||||
{
|
||||
"id": "001",
|
||||
"name": "Blue",
|
||||
"img": "https://assets.appsmith.com/widgets/default.png"
|
||||
},
|
||||
{
|
||||
"id": "002",
|
||||
"name": "Green",
|
||||
"img": "https://assets.appsmith.com/widgets/default.png"
|
||||
},
|
||||
{
|
||||
"id": "003",
|
||||
"name": "Red",
|
||||
"img": "https://assets.appsmith.com/widgets/default.png"
|
||||
}
|
||||
],
|
||||
"isCanvas": true,
|
||||
"displayName": "List",
|
||||
"iconSVG": "/static/media/icon.9925ee17dee37bf1ba7374412563a8a7.svg",
|
||||
"topRow": 8.0,
|
||||
"bottomRow": 48.0,
|
||||
"parentRowSpace": 10.0,
|
||||
"type": "LIST_WIDGET",
|
||||
"hideCard": false,
|
||||
"gridGap": 0.0,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 12.5625,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 18.0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
},
|
||||
{
|
||||
"key": "template.Image1.image"
|
||||
},
|
||||
{
|
||||
"key": "template.Text1.text"
|
||||
},
|
||||
{
|
||||
"key": "template.Text2.text"
|
||||
}
|
||||
],
|
||||
"gridType": "vertical",
|
||||
"enhancements": true,
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas1",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 400.0,
|
||||
"parentRowSpace": 1.0,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": false,
|
||||
"hideCard": true,
|
||||
"dropDisabled": true,
|
||||
"openParentPropertyPane": true,
|
||||
"minHeight": 400.0,
|
||||
"noPad": true,
|
||||
"parentColumnSpace": 1.0,
|
||||
"leftColumn": 0.0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"widgetName": "Container1",
|
||||
"borderColor": "#E0DEDE",
|
||||
"disallowCopy": true,
|
||||
"isCanvas": true,
|
||||
"displayName": "Container",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 12.0,
|
||||
"dragDisabled": true,
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"openParentPropertyPane": true,
|
||||
"shouldScrollContents": true,
|
||||
"isDeletable": false,
|
||||
"animateLoading": true,
|
||||
"leftColumn": 0.0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas2",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 150.0,
|
||||
"parentRowSpace": 1.0,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": false,
|
||||
"hideCard": true,
|
||||
"minHeight": 150.0,
|
||||
"parentColumnSpace": 1.0,
|
||||
"leftColumn": 0.0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Image1",
|
||||
"displayName": "Image",
|
||||
"iconSVG": "/static/media/icon.52d8fb963abcb95c79b10f1553389f22.svg",
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 8.0,
|
||||
"type": "IMAGE_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"dynamicTriggerPathList": [],
|
||||
"imageShape": "RECTANGLE",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "image"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"leftColumn": 0.0,
|
||||
"defaultImage": "https://assets.appsmith.com/widgets/default.png",
|
||||
"key": "n1szm8g77z",
|
||||
"image": "{{currentItem.img}}",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 16.0,
|
||||
"objectFit": "cover",
|
||||
"widgetId": "852qrq5vm1",
|
||||
"logBlackList": {
|
||||
"isVisible": true,
|
||||
"defaultImage": true,
|
||||
"imageShape": true,
|
||||
"maxZoomLevel": true,
|
||||
"enableRotation": true,
|
||||
"enableDownload": true,
|
||||
"objectFit": true,
|
||||
"image": true,
|
||||
"widgetName": true,
|
||||
"version": true,
|
||||
"animateLoading": true,
|
||||
"searchTags": true,
|
||||
"type": true,
|
||||
"hideCard": true,
|
||||
"isDeprecated": true,
|
||||
"replacement": true,
|
||||
"displayName": true,
|
||||
"key": true,
|
||||
"iconSVG": true,
|
||||
"isCanvas": true,
|
||||
"boxShadow": true,
|
||||
"dynamicBindingPathList": true,
|
||||
"dynamicTriggerPathList": true,
|
||||
"minHeight": true,
|
||||
"widgetId": true,
|
||||
"renderMode": true,
|
||||
"borderRadius": true,
|
||||
"isLoading": true,
|
||||
"parentColumnSpace": true,
|
||||
"parentRowSpace": true,
|
||||
"leftColumn": true,
|
||||
"rightColumn": true,
|
||||
"topRow": true,
|
||||
"bottomRow": true,
|
||||
"parentId": true
|
||||
},
|
||||
"isVisible": true,
|
||||
"version": 1.0,
|
||||
"parentId": "7z0hh0zvos",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"maxZoomLevel": 1.0,
|
||||
"enableDownload": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"enableRotation": false
|
||||
},
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Text1",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 4.0,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"dynamicTriggerPathList": [],
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "text"
|
||||
},
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"leftColumn": 16.0,
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "{{currentItem.name}}",
|
||||
"key": "tf4er66bom",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 28.0,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "1sfn18h25j",
|
||||
"logBlackList": {
|
||||
"isVisible": true,
|
||||
"text": true,
|
||||
"fontSize": true,
|
||||
"fontStyle": true,
|
||||
"textAlign": true,
|
||||
"textColor": true,
|
||||
"widgetName": true,
|
||||
"shouldTruncate": true,
|
||||
"overflow": true,
|
||||
"version": true,
|
||||
"animateLoading": true,
|
||||
"minDynamicHeight": true,
|
||||
"maxDynamicHeight": true,
|
||||
"dynamicHeight": true,
|
||||
"searchTags": true,
|
||||
"type": true,
|
||||
"hideCard": true,
|
||||
"isDeprecated": true,
|
||||
"replacement": true,
|
||||
"displayName": true,
|
||||
"key": true,
|
||||
"iconSVG": true,
|
||||
"isCanvas": true,
|
||||
"textStyle": true,
|
||||
"boxShadow": true,
|
||||
"dynamicBindingPathList": true,
|
||||
"dynamicTriggerPathList": true,
|
||||
"minHeight": true,
|
||||
"widgetId": true,
|
||||
"renderMode": true,
|
||||
"truncateButtonColor": true,
|
||||
"fontFamily": true,
|
||||
"borderRadius": true,
|
||||
"isLoading": true,
|
||||
"parentColumnSpace": true,
|
||||
"parentRowSpace": true,
|
||||
"leftColumn": true,
|
||||
"rightColumn": true,
|
||||
"topRow": true,
|
||||
"bottomRow": true,
|
||||
"parentId": true
|
||||
},
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1.0,
|
||||
"parentId": "7z0hh0zvos",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"fontSize": "1rem",
|
||||
"textStyle": "HEADING",
|
||||
"minDynamicHeight": 4.0
|
||||
},
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Text2",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 4.0,
|
||||
"bottomRow": 9.0,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"dynamicTriggerPathList": [],
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "text"
|
||||
},
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"leftColumn": 16.0,
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "{{currentItem.id}}",
|
||||
"key": "tf4er66bom",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 24.0,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "ekx7bft1ux",
|
||||
"logBlackList": {
|
||||
"isVisible": true,
|
||||
"text": true,
|
||||
"fontSize": true,
|
||||
"fontStyle": true,
|
||||
"textAlign": true,
|
||||
"textColor": true,
|
||||
"widgetName": true,
|
||||
"shouldTruncate": true,
|
||||
"overflow": true,
|
||||
"version": true,
|
||||
"animateLoading": true,
|
||||
"minDynamicHeight": true,
|
||||
"maxDynamicHeight": true,
|
||||
"dynamicHeight": true,
|
||||
"searchTags": true,
|
||||
"type": true,
|
||||
"hideCard": true,
|
||||
"isDeprecated": true,
|
||||
"replacement": true,
|
||||
"displayName": true,
|
||||
"key": true,
|
||||
"iconSVG": true,
|
||||
"isCanvas": true,
|
||||
"textStyle": true,
|
||||
"boxShadow": true,
|
||||
"dynamicBindingPathList": true,
|
||||
"dynamicTriggerPathList": true,
|
||||
"minHeight": true,
|
||||
"widgetId": true,
|
||||
"renderMode": true,
|
||||
"truncateButtonColor": true,
|
||||
"fontFamily": true,
|
||||
"borderRadius": true,
|
||||
"isLoading": true,
|
||||
"parentColumnSpace": true,
|
||||
"parentRowSpace": true,
|
||||
"leftColumn": true,
|
||||
"rightColumn": true,
|
||||
"topRow": true,
|
||||
"bottomRow": true,
|
||||
"parentId": true
|
||||
},
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1.0,
|
||||
"parentId": "7z0hh0zvos",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 4.0,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"originalBottomRow": 9.0,
|
||||
"fontSize": "1rem",
|
||||
"textStyle": "BODY",
|
||||
"minDynamicHeight": 4.0
|
||||
},
|
||||
{
|
||||
"widgetName": "CheckboxGroup1",
|
||||
"displayName": "Checkbox Group",
|
||||
"iconSVG": "/static/media/icon.ecb3847950c4515966ef642a32758afb.svg",
|
||||
"labelText": "Label",
|
||||
"topRow": 0.0,
|
||||
"bottomRow": 13.0,
|
||||
"parentRowSpace": 10.0,
|
||||
"labelWidth": 5.0,
|
||||
"type": "CHECKBOX_GROUP_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 4.2734375,
|
||||
"leftColumn": 35.0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"labelPosition": "Top",
|
||||
"options": [
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
}
|
||||
],
|
||||
"isDisabled": false,
|
||||
"key": "2ge4cq00z3",
|
||||
"labelTextSize": "0.875rem",
|
||||
"isRequired": false,
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 58.0,
|
||||
"defaultSelectedValues": [
|
||||
"BLUE"
|
||||
],
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "30pveks53r",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"logBlackList": {
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"labelTextSize": true,
|
||||
"options": true,
|
||||
"defaultSelectedValues": true,
|
||||
"isDisabled": true,
|
||||
"isInline": true,
|
||||
"isRequired": true,
|
||||
"labelText": true,
|
||||
"labelPosition": true,
|
||||
"labelAlignment": true,
|
||||
"labelWidth": true,
|
||||
"widgetName": true,
|
||||
"version": true,
|
||||
"minDynamicHeight": true,
|
||||
"maxDynamicHeight": true,
|
||||
"dynamicHeight": true,
|
||||
"searchTags": true,
|
||||
"type": true,
|
||||
"hideCard": true,
|
||||
"isDeprecated": true,
|
||||
"replacement": true,
|
||||
"displayName": true,
|
||||
"key": true,
|
||||
"iconSVG": true,
|
||||
"isCanvas": true,
|
||||
"minHeight": true,
|
||||
"widgetId": true,
|
||||
"renderMode": true,
|
||||
"accentColor": true,
|
||||
"borderRadius": true,
|
||||
"isLoading": true,
|
||||
"parentColumnSpace": true,
|
||||
"parentRowSpace": true,
|
||||
"leftColumn": true,
|
||||
"rightColumn": true,
|
||||
"topRow": true,
|
||||
"bottomRow": true,
|
||||
"parentId": true,
|
||||
"dynamicBindingPathList": true
|
||||
},
|
||||
"isVisible": true,
|
||||
"version": 2.0,
|
||||
"parentId": "7z0hh0zvos",
|
||||
"labelAlignment": "left",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 0.0,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"originalBottomRow": 6.0,
|
||||
"isInline": true,
|
||||
"minDynamicHeight": 4.0
|
||||
}
|
||||
],
|
||||
"key": "8xilm9v7l4",
|
||||
"isDeprecated": false,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "7z0hh0zvos",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"containerStyle": "none",
|
||||
"isVisible": true,
|
||||
"version": 1.0,
|
||||
"parentId": "s5iecr6n8i",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
],
|
||||
"borderWidth": "1",
|
||||
"key": "h9n2njehd3",
|
||||
"disablePropertyPane": true,
|
||||
"backgroundColor": "white",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 64.0,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "s5iecr6n8i",
|
||||
"containerStyle": "card",
|
||||
"isVisible": true,
|
||||
"version": 1.0,
|
||||
"parentId": "9iszxoqodt",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"disabledWidgetFeatures": [
|
||||
"dynamicHeight"
|
||||
],
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000.0,
|
||||
"minDynamicHeight": 10.0
|
||||
}
|
||||
],
|
||||
"key": "8xilm9v7l4",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 301.5,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "9iszxoqodt",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"containerStyle": "none",
|
||||
"isVisible": true,
|
||||
"version": 1.0,
|
||||
"parentId": "3c9elfu0p5",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
],
|
||||
"privateWidgets": {
|
||||
"undefined": true
|
||||
},
|
||||
"key": "5a7y7jpy4y",
|
||||
"backgroundColor": "transparent",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 42.0,
|
||||
"itemBackgroundColor": "#FFFFFF",
|
||||
"widgetId": "3c9elfu0p5",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": true,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
426
app/client/cypress/fixtures/alignmentWithDynamicHeightDsl.json
Normal file
426
app/client/cypress/fixtures/alignmentWithDynamicHeightDsl.json
Normal file
|
|
@ -0,0 +1,426 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 1224,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 2670,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 121,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69,
|
||||
"minHeight": 1220,
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"widgetName": "Text1",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 17,
|
||||
"bottomRow": 82,
|
||||
"parentRowSpace": 10,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 5,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "text"
|
||||
}
|
||||
],
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "{{appsmith.store.text}}",
|
||||
"key": "9ccwuxni06",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 57,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "l3kr1x82zd",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 17,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"originalBottomRow": 22,
|
||||
"fontSize": "1rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"widgetName": "Text3",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 83,
|
||||
"bottomRow": 165,
|
||||
"parentRowSpace": 10,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 27,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "text"
|
||||
}
|
||||
],
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "{{appsmith.store.text}}",
|
||||
"key": "9ccwuxni06",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 64,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "o3bwh27p3h",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 23,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"originalBottomRow": 28,
|
||||
"fontSize": "1rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"resetFormOnClick": false,
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Button2",
|
||||
"onClick": "{{storeValue('text', `Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,`)}}",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "onClick"
|
||||
}
|
||||
],
|
||||
"displayName": "Button",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"topRow": 89,
|
||||
"bottomRow": 93,
|
||||
"parentRowSpace": 10,
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [
|
||||
{
|
||||
"key": "onClick"
|
||||
}
|
||||
],
|
||||
"leftColumn": 5,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"text": "Small",
|
||||
"isDisabled": false,
|
||||
"key": "gpamqfjowi",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 21,
|
||||
"isDefaultClickDisabled": true,
|
||||
"widgetId": "pgpxxkqql0",
|
||||
"isVisible": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 29,
|
||||
"disabledWhenInvalid": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"originalBottomRow": 33,
|
||||
"buttonVariant": "PRIMARY",
|
||||
"placement": "CENTER"
|
||||
},
|
||||
{
|
||||
"resetFormOnClick": false,
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Button1",
|
||||
"onClick": "{{storeValue('text', `Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum`)}}",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "onClick"
|
||||
}
|
||||
],
|
||||
"displayName": "Button",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"topRow": 101,
|
||||
"bottomRow": 105,
|
||||
"parentRowSpace": 10,
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [
|
||||
{
|
||||
"key": "onClick"
|
||||
}
|
||||
],
|
||||
"leftColumn": 4,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"text": "Medium",
|
||||
"isDisabled": false,
|
||||
"key": "gpamqfjowi",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 20,
|
||||
"isDefaultClickDisabled": true,
|
||||
"widgetId": "oh3y8w2j1p",
|
||||
"isVisible": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 34,
|
||||
"disabledWhenInvalid": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"originalBottomRow": 38,
|
||||
"buttonVariant": "PRIMARY",
|
||||
"placement": "CENTER"
|
||||
},
|
||||
{
|
||||
"resetFormOnClick": false,
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Button1Copy",
|
||||
"onClick": "{{storeValue('text', `Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.\n\nWhy do we use it?\nIt is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).\n\n\nWhere does it come from?\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.\n\nThe standard chunk of Lorem Ipsum used since the 1500s is reproduced below for those interested. Sections 1.10.32 and 1.10.33 from \"de Finibus Bonorum et Malorum\" by Cicero are also reproduced in their exact original form, accompanied by English versions from the 1914 translation by H. Rackham.\n\nWhere can I get some?\nThere are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model senten`)}}",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "onClick"
|
||||
}
|
||||
],
|
||||
"displayName": "Button",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"topRow": 167,
|
||||
"bottomRow": 171,
|
||||
"parentRowSpace": 10,
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [
|
||||
{
|
||||
"key": "onClick"
|
||||
}
|
||||
],
|
||||
"leftColumn": 28,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"text": "Large",
|
||||
"isDisabled": false,
|
||||
"key": "gpamqfjowi",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 44,
|
||||
"isDefaultClickDisabled": true,
|
||||
"widgetId": "ter388gte5",
|
||||
"isVisible": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 39,
|
||||
"disabledWhenInvalid": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"originalBottomRow": 43,
|
||||
"buttonVariant": "PRIMARY",
|
||||
"placement": "CENTER"
|
||||
},
|
||||
{
|
||||
"widgetName": "Text2",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 181,
|
||||
"bottomRow": 251,
|
||||
"parentRowSpace": 10,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 5,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "text"
|
||||
}
|
||||
],
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "{{appsmith.store.text}}",
|
||||
"key": "9ccwuxni06",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 53,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "22trl91ovs",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 44,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"originalBottomRow": 49,
|
||||
"fontSize": "1rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"widgetName": "Text4",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 187,
|
||||
"bottomRow": 259,
|
||||
"parentRowSpace": 10,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"parentColumnSpace": 15.265625,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 16,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "text"
|
||||
}
|
||||
],
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "{{appsmith.store.text}}",
|
||||
"key": "9ccwuxni06",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 60,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "wdz3pjzsi5",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 50,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"originalBottomRow": 55,
|
||||
"fontSize": "1rem",
|
||||
"minDynamicHeight": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,170 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 1290,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"widgetName": "Container1",
|
||||
"borderColor": "#E0DEDE",
|
||||
"isCanvas": true,
|
||||
"displayName": "Container",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"topRow": 6,
|
||||
"bottomRow": 16,
|
||||
"parentRowSpace": 10,
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"shouldScrollContents": true,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 11.9375,
|
||||
"leftColumn": 16,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas1",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0,
|
||||
"bottomRow": 100,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": false,
|
||||
"hideCard": true,
|
||||
"minHeight": 100,
|
||||
"parentColumnSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"options": [
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
}
|
||||
],
|
||||
"defaultSelectedValues": [
|
||||
"BLUE"
|
||||
],
|
||||
"isDisabled": false,
|
||||
"isInline": true,
|
||||
"isRequired": false,
|
||||
"labelText": "Label",
|
||||
"labelPosition": "Top",
|
||||
"labelAlignment": "left",
|
||||
"labelWidth": 5,
|
||||
"widgetName": "CheckboxGroup1",
|
||||
"version": 2,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"type": "CHECKBOX_GROUP_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Checkbox Group",
|
||||
"key": "px8e5kndcb",
|
||||
"iconSVG": "/static/media/icon.ecb3847950c4515966ef642a32758afb.svg",
|
||||
"widgetId": "li1gq4tzny",
|
||||
"renderMode": "CANVAS",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 3.42578125,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 18,
|
||||
"rightColumn": 41,
|
||||
"topRow": 0,
|
||||
"bottomRow": 6,
|
||||
"parentId": "tbezx4vcxu",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"key": "49f4d77rwd",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 286.5,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "tbezx4vcxu",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"containerStyle": "none",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "57nv0ufxq1",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
],
|
||||
"borderWidth": "1",
|
||||
"key": "g4phrz9m3l",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 40,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "57nv0ufxq1",
|
||||
"containerStyle": "card",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"minDynamicHeight": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
109
app/client/cypress/fixtures/dynamicHeightContainerdsl.json
Normal file
109
app/client/cypress/fixtures/dynamicHeightContainerdsl.json
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 1292,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"widgetName": "Container1",
|
||||
"containerStyle": "card",
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"animateLoading": true,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas1",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "49f4d77rwd",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [],
|
||||
"minHeight": 100,
|
||||
"widgetId": "tbezx4vcxu",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 286.5,
|
||||
"topRow": 0,
|
||||
"bottomRow": 100,
|
||||
"parentId": "57nv0ufxq1",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"minDynamicHeight": 10,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"shouldScrollContents": true,
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Container",
|
||||
"key": "g4phrz9m3l",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "57nv0ufxq1",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 11.9375,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 20,
|
||||
"rightColumn": 44,
|
||||
"topRow": 23,
|
||||
"bottomRow": 33,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
481
app/client/cypress/fixtures/dynamicHeightFormSwitchdsl.json
Normal file
481
app/client/cypress/fixtures/dynamicHeightFormSwitchdsl.json
Normal file
|
|
@ -0,0 +1,481 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 1290,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "FIXED",
|
||||
"shouldScrollContents": true,
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"animateLoading": true,
|
||||
"widgetName": "Form1",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas1",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "74zfu9g19a",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "FIXED",
|
||||
"overflow": "NONE",
|
||||
"text": "Form",
|
||||
"fontSize": "1.25rem",
|
||||
"fontStyle": "BOLD",
|
||||
"textAlign": "LEFT",
|
||||
"textColor": "#231F20",
|
||||
"widgetName": "Text1",
|
||||
"shouldTruncate": false,
|
||||
"version": 1,
|
||||
"animateLoading": true,
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Text",
|
||||
"key": "qjy37lgbc3",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"widgetId": "8c07j99hsy",
|
||||
"renderMode": "CANVAS",
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"leftColumn": 1.5,
|
||||
"rightColumn": 25.5,
|
||||
"topRow": 1,
|
||||
"bottomRow": 5,
|
||||
"parentId": "5fswq5m00l",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetName": "SwitchGroup1",
|
||||
"options": [
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
}
|
||||
],
|
||||
"defaultSelectedValues": [
|
||||
"BLUE"
|
||||
],
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isInline": true,
|
||||
"animateLoading": true,
|
||||
"alignment": "left",
|
||||
"labelText": "Label",
|
||||
"labelPosition": "Left",
|
||||
"labelAlignment": "left",
|
||||
"labelWidth": 5,
|
||||
"version": 1,
|
||||
"labelTextSize": "0.875rem",
|
||||
"type": "SWITCH_GROUP_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Switch Group",
|
||||
"key": "gu5yyvgl2n",
|
||||
"iconSVG": "/static/media/icon.c98225eee52c61080cd91042d88545c8.svg",
|
||||
"isCanvas": false,
|
||||
"widgetId": "k6h69sgn79",
|
||||
"renderMode": "CANVAS",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 4.1640625,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 9,
|
||||
"rightColumn": 35,
|
||||
"topRow": 27,
|
||||
"bottomRow": 31,
|
||||
"parentId": "5fswq5m00l",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"onSelectionChange": "{{showModal('Modal1')}}",
|
||||
"dynamicTriggerPathList": [
|
||||
{
|
||||
"key": "onSelectionChange"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"minHeight": 310,
|
||||
"widgetId": "5fswq5m00l",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 286.5,
|
||||
"topRow": 0,
|
||||
"bottomRow": 310,
|
||||
"parentId": "qx47bk6wx8",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"searchTags": [
|
||||
"group"
|
||||
],
|
||||
"type": "FORM_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Form",
|
||||
"key": "d7jgl29xqe",
|
||||
"iconSVG": "/static/media/icon.ea3e08d130e59c56867ae40114c10eed.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "qx47bk6wx8",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 11.9375,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 14,
|
||||
"rightColumn": 38,
|
||||
"topRow": 10,
|
||||
"bottomRow": 43,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
},
|
||||
{
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"shouldScrollContents": true,
|
||||
"width": 456,
|
||||
"height": 240,
|
||||
"canEscapeKeyClose": true,
|
||||
"animateLoading": true,
|
||||
"detachFromLayout": true,
|
||||
"canOutsideClickClose": true,
|
||||
"widgetName": "Modal1",
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas2",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "74zfu9g19a",
|
||||
"canExtend": true,
|
||||
"isDisabled": false,
|
||||
"shouldScrollContents": false,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"iconName": "cross",
|
||||
"buttonVariant": "TERTIARY",
|
||||
"isDisabled": false,
|
||||
"widgetName": "IconButton1",
|
||||
"version": 1,
|
||||
"animateLoading": true,
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"type": "ICON_BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Icon Button",
|
||||
"key": "oipik9z0jf",
|
||||
"iconSVG": "/static/media/icon.1a0c634ac75f9fa6b6ae7a8df882a3ba.svg",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"iconSize": 24,
|
||||
"widgetId": "h84z4pqq7d",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"isLoading": false,
|
||||
"leftColumn": 58,
|
||||
"rightColumn": 64,
|
||||
"topRow": 0,
|
||||
"bottomRow": 4,
|
||||
"parentId": "b8h15fewxw",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"onClick": "{{closeModal('Modal1')}}"
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "FIXED",
|
||||
"overflow": "NONE",
|
||||
"text": "Modal Title",
|
||||
"fontSize": "1.5rem",
|
||||
"fontStyle": "BOLD",
|
||||
"textAlign": "LEFT",
|
||||
"textColor": "#231F20",
|
||||
"widgetName": "Text2",
|
||||
"shouldTruncate": false,
|
||||
"version": 1,
|
||||
"animateLoading": true,
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Text",
|
||||
"key": "qjy37lgbc3",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"widgetId": "j98rl5e7a1",
|
||||
"renderMode": "CANVAS",
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"leftColumn": 1,
|
||||
"rightColumn": 41,
|
||||
"topRow": 1,
|
||||
"bottomRow": 5,
|
||||
"parentId": "b8h15fewxw",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"text": "Close",
|
||||
"buttonVariant": "SECONDARY",
|
||||
"placement": "CENTER",
|
||||
"widgetName": "Button1",
|
||||
"isDisabled": false,
|
||||
"isDefaultClickDisabled": true,
|
||||
"disabledWhenInvalid": false,
|
||||
"resetFormOnClick": false,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Button",
|
||||
"key": "8fy9at549y",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"buttonStyle": "PRIMARY",
|
||||
"widgetId": "w3gw0z0hul",
|
||||
"renderMode": "CANVAS",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"isLoading": false,
|
||||
"leftColumn": 31,
|
||||
"rightColumn": 47,
|
||||
"topRow": 18,
|
||||
"bottomRow": 22,
|
||||
"parentId": "b8h15fewxw",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"onClick": "{{closeModal('Modal1')}}"
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"text": "Confirm",
|
||||
"buttonVariant": "PRIMARY",
|
||||
"placement": "CENTER",
|
||||
"widgetName": "Button2",
|
||||
"isDisabled": false,
|
||||
"isDefaultClickDisabled": true,
|
||||
"disabledWhenInvalid": false,
|
||||
"resetFormOnClick": false,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Button",
|
||||
"key": "8fy9at549y",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"buttonStyle": "PRIMARY_BUTTON",
|
||||
"widgetId": "dcky71d9uv",
|
||||
"renderMode": "CANVAS",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"isLoading": false,
|
||||
"leftColumn": 47,
|
||||
"rightColumn": 63,
|
||||
"topRow": 18,
|
||||
"bottomRow": 22,
|
||||
"parentId": "b8h15fewxw",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"minHeight": 0,
|
||||
"widgetId": "b8h15fewxw",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 0,
|
||||
"topRow": 0,
|
||||
"bottomRow": 0,
|
||||
"parentId": "d0r5dcpeqm",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 2,
|
||||
"searchTags": [
|
||||
"dialog",
|
||||
"popup",
|
||||
"notification"
|
||||
],
|
||||
"type": "MODAL_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Modal",
|
||||
"key": "1y0e1crldi",
|
||||
"iconSVG": "/static/media/icon.4975978e9a961fb0bfb4e38de7ecc7c5.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "d0r5dcpeqm",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 0,
|
||||
"topRow": 0,
|
||||
"bottomRow": 0,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
281
app/client/cypress/fixtures/dynamicHeightStatboxdsl.json
Normal file
281
app/client/cypress/fixtures/dynamicHeightStatboxdsl.json
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 1280,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 1230,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69,
|
||||
"minHeight": 1240,
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicTriggerPathList": [],
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"labelTextSize": "0.875rem",
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Statbox1",
|
||||
"backgroundColor": "white",
|
||||
"rightColumn": 21,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "3sii8uhhjs",
|
||||
"topRow": 17,
|
||||
"bottomRow": 33,
|
||||
"parentRowSpace": 10,
|
||||
"isVisible": true,
|
||||
"type": "STATBOX_WIDGET",
|
||||
"parentId": "0",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 19.8125,
|
||||
"leftColumn": 5,
|
||||
"borderRadius": "0px",
|
||||
"children": [
|
||||
{
|
||||
"labelTextSize": "0.875rem",
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas1",
|
||||
"rightColumn": 317,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "l752czyef7",
|
||||
"containerStyle": "none",
|
||||
"topRow": 0,
|
||||
"bottomRow": 160,
|
||||
"parentRowSpace": 1,
|
||||
"isVisible": true,
|
||||
"canExtend": false,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"version": 1,
|
||||
"parentId": "3sii8uhhjs",
|
||||
"minHeight": 160,
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"borderRadius": "0px",
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Text1",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "fontSize"
|
||||
}
|
||||
],
|
||||
"topRow": 0.5,
|
||||
"bottomRow": 4.5,
|
||||
"type": "TEXT_WIDGET",
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "System Default",
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 1.5,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "text"
|
||||
}
|
||||
],
|
||||
"text": "{{MockApi.data.users[0].id}}",
|
||||
"labelTextSize": "0.875rem",
|
||||
"rightColumn": 37.5,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "4mtayc9eas",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#999999",
|
||||
"version": 1,
|
||||
"parentId": "l752czyef7",
|
||||
"isLoading": false,
|
||||
"borderRadius": "0px",
|
||||
"maxDynamicHeight": 9000,
|
||||
"fontSize": "0.75rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Text2",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "fontSize"
|
||||
}
|
||||
],
|
||||
"topRow": 5.5,
|
||||
"bottomRow": 9.5,
|
||||
"type": "TEXT_WIDGET",
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "System Default",
|
||||
"leftColumn": 1.5,
|
||||
"text": "2.6 M",
|
||||
"labelTextSize": "0.875rem",
|
||||
"rightColumn": 37.5,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "ii2tk6m48f",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1,
|
||||
"parentId": "l752czyef7",
|
||||
"isLoading": false,
|
||||
"borderRadius": "0px",
|
||||
"maxDynamicHeight": 9000,
|
||||
"fontSize": "1.5rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Text3",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "fontSize"
|
||||
}
|
||||
],
|
||||
"topRow": 10,
|
||||
"bottomRow": 14,
|
||||
"type": "TEXT_WIDGET",
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "System Default",
|
||||
"leftColumn": 1.5,
|
||||
"text": "21% more than last month",
|
||||
"labelTextSize": "0.875rem",
|
||||
"rightColumn": 37.5,
|
||||
"textAlign": "LEFT",
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "ptbhksx9p1",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#03B365",
|
||||
"version": 1,
|
||||
"parentId": "l752czyef7",
|
||||
"isLoading": false,
|
||||
"borderRadius": "0px",
|
||||
"maxDynamicHeight": 9000,
|
||||
"fontSize": "0.75rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"labelTextSize": "0.875rem",
|
||||
"boxShadow": "none",
|
||||
"widgetName": "IconButton1",
|
||||
"rightColumn": 61,
|
||||
"iconName": "arrow-top-right",
|
||||
"buttonColor": "#03B365",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"widgetId": "x35ni1hugn",
|
||||
"topRow": 3,
|
||||
"bottomRow": 11,
|
||||
"isVisible": true,
|
||||
"type": "ICON_BUTTON_WIDGET",
|
||||
"version": 1,
|
||||
"parentId": "l752czyef7",
|
||||
"isLoading": false,
|
||||
"borderRadius": "9999px",
|
||||
"leftColumn": 45,
|
||||
"buttonVariant": "PRIMARY",
|
||||
"isDisabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"maxDynamicHeight": 9000,
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"widgetName": "Container1",
|
||||
"containerStyle": "card",
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"animateLoading": true,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas2",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "vhu8oytsk7",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [],
|
||||
"minHeight": 580,
|
||||
"widgetId": "p7wc0hnc0o",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 286.5,
|
||||
"topRow": 0,
|
||||
"bottomRow": 580,
|
||||
"parentId": "q00fefx59g",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"minDynamicHeight": 10,
|
||||
"maxDynamicHeight": 12,
|
||||
"dynamicHeight": "FIXED",
|
||||
"shouldScrollContents": true,
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Container",
|
||||
"key": "fcexgq4024",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "q00fefx59g",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 11.9375,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 22,
|
||||
"rightColumn": 64,
|
||||
"topRow": 3,
|
||||
"bottomRow": 61,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
448
app/client/cypress/fixtures/dynamicTabWidgetdsl.json
Normal file
448
app/client/cypress/fixtures/dynamicTabWidgetdsl.json
Normal file
|
|
@ -0,0 +1,448 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 400,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 64,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"widgetName": "Tabs1",
|
||||
"borderColor": "#E0DEDE",
|
||||
"isCanvas": true,
|
||||
"displayName": "Tabs",
|
||||
"iconSVG": "/static/media/icon.74a6d653c8201e66f1cd367a3fba2657.svg",
|
||||
"topRow": 1,
|
||||
"bottomRow": 20,
|
||||
"parentRowSpace": 10,
|
||||
"type": "TABS_WIDGET",
|
||||
"hideCard": false,
|
||||
"shouldScrollContents": true,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 9.96875,
|
||||
"leftColumn": 18,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"tabId": "tab1",
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas1",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0,
|
||||
"bottomRow": 190,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"hideCard": true,
|
||||
"shouldScrollContents": false,
|
||||
"minHeight": 190,
|
||||
"parentColumnSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"animateLoading": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"options": [
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
}
|
||||
],
|
||||
"defaultSelectedValues": [
|
||||
"BLUE"
|
||||
],
|
||||
"isDisabled": false,
|
||||
"isInline": true,
|
||||
"isRequired": false,
|
||||
"labelText": "Label",
|
||||
"labelPosition": "Left",
|
||||
"labelAlignment": "left",
|
||||
"labelWidth": 5,
|
||||
"widgetName": "CheckboxGroup1",
|
||||
"version": 2,
|
||||
"type": "CHECKBOX_GROUP_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Checkbox Group",
|
||||
"key": "2hr4hycu4v",
|
||||
"iconSVG": "/static/media/icon.ecb3847950c4515966ef642a32758afb.svg",
|
||||
"widgetId": "9uc345gnqg",
|
||||
"renderMode": "CANVAS",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 3.42578125,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 13,
|
||||
"rightColumn": 36,
|
||||
"topRow": 9,
|
||||
"bottomRow": 19,
|
||||
"parentId": "zpypn0rx6a",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
],
|
||||
"isDisabled": false,
|
||||
"key": "wibrs53af5",
|
||||
"isDeprecated": false,
|
||||
"tabName": "Tab 1",
|
||||
"rightColumn": 239.25,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "zpypn0rx6a",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "ynm15ab6f2",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
},
|
||||
{
|
||||
"tabId": "tab2",
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas2",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0,
|
||||
"bottomRow": 190,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"hideCard": true,
|
||||
"shouldScrollContents": false,
|
||||
"minHeight": 190,
|
||||
"parentColumnSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"shouldScrollContents": true,
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"animateLoading": true,
|
||||
"widgetName": "Form1",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas3",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "xp8804b2ms",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 0,
|
||||
"maxDynamicHeight": 0,
|
||||
"dynamicHeight": "FIXED",
|
||||
"text": "Form",
|
||||
"fontSize": "1.25rem",
|
||||
"fontStyle": "BOLD",
|
||||
"textAlign": "LEFT",
|
||||
"textColor": "#231F20",
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"widgetName": "Text1",
|
||||
"shouldTruncate": false,
|
||||
"overflow": "NONE",
|
||||
"version": 1,
|
||||
"animateLoading": true,
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Text",
|
||||
"key": "qjibufjufj",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"widgetId": "oltjpz4xge",
|
||||
"renderMode": "CANVAS",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"leftColumn": 1.5,
|
||||
"rightColumn": 25.5,
|
||||
"topRow": 1,
|
||||
"bottomRow": 5,
|
||||
"parentId": "gfw87mvf4s",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"text": "Submit",
|
||||
"buttonVariant": "PRIMARY",
|
||||
"placement": "CENTER",
|
||||
"widgetName": "Button1",
|
||||
"isDisabled": false,
|
||||
"isDefaultClickDisabled": true,
|
||||
"disabledWhenInvalid": true,
|
||||
"resetFormOnClick": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Button",
|
||||
"key": "fkiknl12i3",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"widgetId": "jdvk4o9jli",
|
||||
"renderMode": "CANVAS",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"isLoading": false,
|
||||
"leftColumn": 46,
|
||||
"rightColumn": 62,
|
||||
"topRow": 33,
|
||||
"bottomRow": 37,
|
||||
"parentId": "gfw87mvf4s",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"animateLoading": true,
|
||||
"text": "Reset",
|
||||
"buttonVariant": "SECONDARY",
|
||||
"placement": "CENTER",
|
||||
"widgetName": "Button2",
|
||||
"isDisabled": false,
|
||||
"isDefaultClickDisabled": true,
|
||||
"disabledWhenInvalid": false,
|
||||
"resetFormOnClick": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Button",
|
||||
"key": "fkiknl12i3",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"widgetId": "1u527b0c32",
|
||||
"renderMode": "CANVAS",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"isLoading": false,
|
||||
"leftColumn": 30,
|
||||
"rightColumn": 46,
|
||||
"topRow": 33,
|
||||
"bottomRow": 37,
|
||||
"parentId": "gfw87mvf4s",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"minHeight": 390,
|
||||
"widgetId": "gfw87mvf4s",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 100.91015625,
|
||||
"topRow": 0,
|
||||
"bottomRow": 390,
|
||||
"parentId": "hxyieil09m",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"searchTags": [
|
||||
"group"
|
||||
],
|
||||
"type": "FORM_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Form",
|
||||
"key": "23o06odb25",
|
||||
"iconSVG": "/static/media/icon.ea3e08d130e59c56867ae40114c10eed.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "hxyieil09m",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 4.20458984375,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 11,
|
||||
"rightColumn": 35,
|
||||
"topRow": 1,
|
||||
"bottomRow": 40,
|
||||
"parentId": "gmq0wikmsj",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
],
|
||||
"isDisabled": false,
|
||||
"key": "wibrs53af5",
|
||||
"isDeprecated": false,
|
||||
"tabName": "Tab 2",
|
||||
"rightColumn": 239.25,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "gmq0wikmsj",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "ynm15ab6f2",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
],
|
||||
"borderWidth": 1,
|
||||
"key": "hf8p55gs4n",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 47,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "ynm15ab6f2",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"defaultTab": "Tab 1",
|
||||
"shouldShowTabs": true,
|
||||
"tabsObj": {
|
||||
"tab1": {
|
||||
"label": "Tab 1",
|
||||
"id": "tab1",
|
||||
"widgetId": "zpypn0rx6a",
|
||||
"isVisible": true,
|
||||
"index": 0
|
||||
},
|
||||
"tab2": {
|
||||
"label": "Tab 2",
|
||||
"id": "tab2",
|
||||
"widgetId": "gmq0wikmsj",
|
||||
"isVisible": true,
|
||||
"index": 1
|
||||
}
|
||||
},
|
||||
"isVisible": true,
|
||||
"version": 3,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"minDynamicHeight": 4,
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
287
app/client/cypress/fixtures/invisibleWidgetdsl.json
Normal file
287
app/client/cypress/fixtures/invisibleWidgetdsl.json
Normal file
|
|
@ -0,0 +1,287 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 570,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 65,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"widgetName": "Container1",
|
||||
"borderColor": "#E0DEDE",
|
||||
"isCanvas": true,
|
||||
"displayName": "Container",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"topRow": 16,
|
||||
"bottomRow": 40,
|
||||
"parentRowSpace": 10,
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"shouldScrollContents": true,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 9.96875,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 8,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas1",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0,
|
||||
"bottomRow": 240,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": false,
|
||||
"hideCard": true,
|
||||
"minHeight": 240,
|
||||
"parentColumnSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Input1",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "isVisible"
|
||||
}
|
||||
],
|
||||
"displayName": "Input",
|
||||
"iconSVG": "/static/media/icon.9f505595da61a34f563dba82adeb06ec.svg",
|
||||
"searchTags": [
|
||||
"form",
|
||||
"text input",
|
||||
"number",
|
||||
"textarea"
|
||||
],
|
||||
"topRow": 5,
|
||||
"bottomRow": 12,
|
||||
"parentRowSpace": 10,
|
||||
"labelWidth": 5,
|
||||
"autoFocus": false,
|
||||
"type": "INPUT_WIDGET_V2",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 3.42578125,
|
||||
"dynamicTriggerPathList": [],
|
||||
"resetOnSubmit": true,
|
||||
"leftColumn": 18,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "isVisible"
|
||||
}
|
||||
],
|
||||
"labelPosition": "Top",
|
||||
"labelStyle": "",
|
||||
"inputType": "TEXT",
|
||||
"isDisabled": false,
|
||||
"key": "xeqahmz2n0",
|
||||
"labelTextSize": "0.875rem",
|
||||
"isRequired": false,
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 38,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "8bfucv7r1x",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": "{{!Checkbox1.isChecked}}",
|
||||
"label": "Off",
|
||||
"version": 2,
|
||||
"parentId": "7k7dojtq6h",
|
||||
"labelAlignment": "left",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"iconAlign": "left",
|
||||
"defaultText": "",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Input2",
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "isVisible"
|
||||
}
|
||||
],
|
||||
"displayName": "Input",
|
||||
"iconSVG": "/static/media/icon.9f505595da61a34f563dba82adeb06ec.svg",
|
||||
"searchTags": [
|
||||
"form",
|
||||
"text input",
|
||||
"number",
|
||||
"textarea"
|
||||
],
|
||||
"topRow": 15,
|
||||
"bottomRow": 22,
|
||||
"parentRowSpace": 10,
|
||||
"labelWidth": 5,
|
||||
"autoFocus": false,
|
||||
"type": "INPUT_WIDGET_V2",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 6.38525390625,
|
||||
"dynamicTriggerPathList": [],
|
||||
"resetOnSubmit": true,
|
||||
"leftColumn": 16,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "isVisible"
|
||||
}
|
||||
],
|
||||
"labelPosition": "Top",
|
||||
"labelStyle": "",
|
||||
"inputType": "TEXT",
|
||||
"isDisabled": false,
|
||||
"key": "xeqahmz2n0",
|
||||
"labelTextSize": "0.875rem",
|
||||
"isRequired": false,
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 36,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "xiw6br6yni",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": "{{Checkbox1.isChecked}}",
|
||||
"label": "On",
|
||||
"version": 2,
|
||||
"parentId": "7k7dojtq6h",
|
||||
"labelAlignment": "left",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"iconAlign": "left",
|
||||
"defaultText": "",
|
||||
"minDynamicHeight": 4
|
||||
}
|
||||
],
|
||||
"key": "j130wuw4eb",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 239.25,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "7k7dojtq6h",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"containerStyle": "none",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "9ti9l1m9zc",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
],
|
||||
"borderWidth": "1",
|
||||
"key": "0hl3710evc",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 51,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"widgetId": "9ti9l1m9zc",
|
||||
"containerStyle": "card",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"originalTopRow": 16,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"originalBottomRow": 59,
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"widgetName": "Checkbox1",
|
||||
"displayName": "Checkbox",
|
||||
"iconSVG": "/static/media/icon.aaab032b43383e4fa53ffc0ef40c90ef.svg",
|
||||
"searchTags": [
|
||||
"boolean"
|
||||
],
|
||||
"topRow": 45,
|
||||
"bottomRow": 49,
|
||||
"parentRowSpace": 10,
|
||||
"type": "CHECKBOX_WIDGET",
|
||||
"alignWidget": "LEFT",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 9.96875,
|
||||
"leftColumn": 22,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"labelPosition": "Left",
|
||||
"isDisabled": false,
|
||||
"key": "u8vvhzphvk",
|
||||
"isRequired": false,
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 34,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "vdfj8it9cv",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": true,
|
||||
"label": "Label",
|
||||
"version": 1,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"defaultCheckedState": true,
|
||||
"maxDynamicHeight": 9000,
|
||||
"minDynamicHeight": 4,
|
||||
"originalTopRow": 45,
|
||||
"originalBottomRow": 49
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
776
app/client/cypress/fixtures/jsonFormDynamicHeightDsl.json
Normal file
776
app/client/cypress/fixtures/jsonFormDynamicHeightDsl.json
Normal file
|
|
@ -0,0 +1,776 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 1292,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 65,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Modal1",
|
||||
"isCanvas": true,
|
||||
"displayName": "Modal",
|
||||
"iconSVG": "/static/media/icon.4975978e9a961fb0bfb4e38de7ecc7c5.svg",
|
||||
"searchTags": [
|
||||
"dialog",
|
||||
"popup",
|
||||
"notification"
|
||||
],
|
||||
"topRow": 0,
|
||||
"bottomRow": 0,
|
||||
"parentRowSpace": 1,
|
||||
"type": "MODAL_WIDGET",
|
||||
"hideCard": false,
|
||||
"shouldScrollContents": true,
|
||||
"animateLoading": true,
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicTriggerPathList": [],
|
||||
"leftColumn": 0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Canvas2",
|
||||
"displayName": "Canvas",
|
||||
"topRow": 0,
|
||||
"bottomRow": 240,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"hideCard": true,
|
||||
"shouldScrollContents": false,
|
||||
"minHeight": 240,
|
||||
"parentColumnSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"boxShadow": "none",
|
||||
"widgetName": "IconButton1",
|
||||
"onClick": "{{closeModal('Modal1')}}",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"displayName": "Icon Button",
|
||||
"iconSVG": "/static/media/icon.1a0c634ac75f9fa6b6ae7a8df882a3ba.svg",
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"topRow": 0,
|
||||
"bottomRow": 4,
|
||||
"type": "ICON_BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"leftColumn": 58,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"iconSize": 24,
|
||||
"isDisabled": false,
|
||||
"key": "oipik9z0jf",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 64,
|
||||
"iconName": "cross",
|
||||
"widgetId": "h84z4pqq7d",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "b8h15fewxw",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"buttonVariant": "TERTIARY"
|
||||
},
|
||||
{
|
||||
"widgetName": "Text2",
|
||||
"displayName": "Text",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"topRow": 1,
|
||||
"bottomRow": 5,
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"overflow": "NONE",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"leftColumn": 1,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"shouldTruncate": false,
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"text": "Modal Title",
|
||||
"key": "qjy37lgbc3",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 41,
|
||||
"dynamicHeight": "FIXED",
|
||||
"textAlign": "LEFT",
|
||||
"widgetId": "j98rl5e7a1",
|
||||
"isVisible": true,
|
||||
"fontStyle": "BOLD",
|
||||
"textColor": "#231F20",
|
||||
"version": 1,
|
||||
"parentId": "b8h15fewxw",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 9000,
|
||||
"fontSize": "1.5rem",
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"resetFormOnClick": false,
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Button1",
|
||||
"onClick": "{{closeModal('Modal1')}}",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"displayName": "Button",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"topRow": 18,
|
||||
"bottomRow": 22,
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"leftColumn": 31,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"text": "Close",
|
||||
"isDisabled": false,
|
||||
"key": "8fy9at549y",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 47,
|
||||
"isDefaultClickDisabled": true,
|
||||
"widgetId": "w3gw0z0hul",
|
||||
"buttonStyle": "PRIMARY",
|
||||
"isVisible": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"parentId": "b8h15fewxw",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"disabledWhenInvalid": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"buttonVariant": "SECONDARY",
|
||||
"placement": "CENTER"
|
||||
},
|
||||
{
|
||||
"resetFormOnClick": false,
|
||||
"boxShadow": "none",
|
||||
"widgetName": "Button2",
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"displayName": "Button",
|
||||
"iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg",
|
||||
"searchTags": [
|
||||
"click",
|
||||
"submit"
|
||||
],
|
||||
"topRow": 18,
|
||||
"bottomRow": 22,
|
||||
"type": "BUTTON_WIDGET",
|
||||
"hideCard": false,
|
||||
"animateLoading": true,
|
||||
"leftColumn": 47,
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"text": "Confirm",
|
||||
"isDisabled": false,
|
||||
"key": "8fy9at549y",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 63,
|
||||
"isDefaultClickDisabled": true,
|
||||
"widgetId": "dcky71d9uv",
|
||||
"buttonStyle": "PRIMARY_BUTTON",
|
||||
"isVisible": true,
|
||||
"recaptchaType": "V3",
|
||||
"version": 1,
|
||||
"parentId": "b8h15fewxw",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"disabledWhenInvalid": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"buttonVariant": "PRIMARY",
|
||||
"placement": "CENTER"
|
||||
}
|
||||
],
|
||||
"isDisabled": false,
|
||||
"key": "74zfu9g19a",
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 0,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "b8h15fewxw",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isVisible": true,
|
||||
"version": 1,
|
||||
"parentId": "d0r5dcpeqm",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
}
|
||||
],
|
||||
"key": "1y0e1crldi",
|
||||
"height": 240,
|
||||
"isDeprecated": false,
|
||||
"rightColumn": 0,
|
||||
"detachFromLayout": true,
|
||||
"dynamicHeight": "FIXED",
|
||||
"widgetId": "d0r5dcpeqm",
|
||||
"canOutsideClickClose": true,
|
||||
"canEscapeKeyClose": true,
|
||||
"version": 2,
|
||||
"parentId": "0",
|
||||
"renderMode": "CANVAS",
|
||||
"isLoading": false,
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"maxDynamicHeight": 0,
|
||||
"width": 456,
|
||||
"minDynamicHeight": 4
|
||||
},
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "FIXED",
|
||||
"animateLoading": true,
|
||||
"backgroundColor": "#fff",
|
||||
"disabledWhenInvalid": true,
|
||||
"fixedFooter": true,
|
||||
"schema": {
|
||||
"__root_schema__": {
|
||||
"children": {
|
||||
"name": {
|
||||
"children": {},
|
||||
"dataType": "string",
|
||||
"defaultValue": "{{((sourceData, formData, fieldState) => (sourceData.name))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"fieldType": "Text Input",
|
||||
"sourceData": "John",
|
||||
"isCustomField": false,
|
||||
"accessor": "name",
|
||||
"identifier": "name",
|
||||
"position": 0,
|
||||
"originalIdentifier": "name",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"iconAlign": "left",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isSpellCheck": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": "Name"
|
||||
},
|
||||
"date_of_birth": {
|
||||
"children": {},
|
||||
"dataType": "string",
|
||||
"defaultValue": "{{((sourceData, formData, fieldState) => (moment(sourceData.date_of_birth, \"DD/MM/YYYY\").format(\"YYYY-MM-DDTHH:mm:ss.sssZ\")))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"fieldType": "Datepicker",
|
||||
"sourceData": "20/02/1990",
|
||||
"isCustomField": false,
|
||||
"accessor": "date_of_birth",
|
||||
"identifier": "date_of_birth",
|
||||
"position": 1,
|
||||
"originalIdentifier": "date_of_birth",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"closeOnSelection": false,
|
||||
"convertToISO": false,
|
||||
"dateFormat": "DD/MM/YYYY",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isVisible": true,
|
||||
"label": "Date Of Birth",
|
||||
"maxDate": "2121-12-31T18:29:00.000Z",
|
||||
"minDate": "1920-12-31T18:30:00.000Z",
|
||||
"shortcuts": false,
|
||||
"timePrecision": "minute",
|
||||
"labelTextSize": "0.875rem"
|
||||
},
|
||||
"employee_id": {
|
||||
"children": {},
|
||||
"dataType": "number",
|
||||
"defaultValue": "{{((sourceData, formData, fieldState) => (sourceData.employee_id))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"fieldType": "Number Input",
|
||||
"sourceData": 1001,
|
||||
"isCustomField": false,
|
||||
"accessor": "employee_id",
|
||||
"identifier": "employee_id",
|
||||
"position": 2,
|
||||
"originalIdentifier": "employee_id",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"iconAlign": "left",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isSpellCheck": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": "Employee Id"
|
||||
},
|
||||
"customField1": {
|
||||
"children": {},
|
||||
"dataType": "string",
|
||||
"fieldType": "Text Input",
|
||||
"sourceData": "",
|
||||
"isCustomField": true,
|
||||
"accessor": "customField1",
|
||||
"identifier": "customField1",
|
||||
"position": 3,
|
||||
"originalIdentifier": "customField1",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"iconAlign": "left",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isSpellCheck": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": "Custom Field 1"
|
||||
},
|
||||
"customField2": {
|
||||
"children": {},
|
||||
"dataType": "string",
|
||||
"fieldType": "Text Input",
|
||||
"sourceData": "",
|
||||
"isCustomField": true,
|
||||
"accessor": "customField2",
|
||||
"identifier": "customField2",
|
||||
"position": 4,
|
||||
"originalIdentifier": "customField2",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"iconAlign": "left",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isSpellCheck": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": "Custom Field 2"
|
||||
},
|
||||
"customField3": {
|
||||
"children": {},
|
||||
"dataType": "string",
|
||||
"fieldType": "Text Input",
|
||||
"sourceData": "",
|
||||
"isCustomField": true,
|
||||
"accessor": "customField3",
|
||||
"identifier": "customField3",
|
||||
"position": 5,
|
||||
"originalIdentifier": "customField3",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"iconAlign": "left",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isSpellCheck": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": "Custom Field 3"
|
||||
},
|
||||
"customField4": {
|
||||
"children": {},
|
||||
"dataType": "string",
|
||||
"fieldType": "Text Input",
|
||||
"sourceData": "",
|
||||
"isCustomField": true,
|
||||
"accessor": "customField4",
|
||||
"identifier": "customField4",
|
||||
"position": 6,
|
||||
"originalIdentifier": "customField4",
|
||||
"accentColor": "{{((sourceData, formData, fieldState) => (appsmith.theme.colors.primaryColor))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"iconAlign": "left",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isSpellCheck": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": "Custom Field 4"
|
||||
}
|
||||
},
|
||||
"dataType": "object",
|
||||
"defaultValue": "{{((sourceData, formData, fieldState) => (sourceData))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"fieldType": "Object",
|
||||
"sourceData": {
|
||||
"name": "John",
|
||||
"date_of_birth": "20/02/1990",
|
||||
"employee_id": 1001
|
||||
},
|
||||
"isCustomField": false,
|
||||
"accessor": "__root_schema__",
|
||||
"identifier": "__root_schema__",
|
||||
"position": -1,
|
||||
"originalIdentifier": "__root_schema__",
|
||||
"borderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"boxShadow": "none",
|
||||
"cellBorderRadius": "{{((sourceData, formData, fieldState) => (appsmith.theme.borderRadius.appBorderRadius))(JSONForm1.sourceData, JSONForm1.formData, JSONForm1.fieldState)}}",
|
||||
"cellBoxShadow": "none",
|
||||
"isDisabled": false,
|
||||
"isRequired": false,
|
||||
"isVisible": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"label": ""
|
||||
}
|
||||
},
|
||||
"scrollContents": true,
|
||||
"showReset": true,
|
||||
"title": "Form",
|
||||
"version": 1,
|
||||
"borderWidth": "1",
|
||||
"borderColor": "#E0DEDE",
|
||||
"widgetName": "JSONForm1",
|
||||
"autoGenerateForm": true,
|
||||
"fieldLimitExceeded": false,
|
||||
"sourceData": {
|
||||
"name": "John",
|
||||
"date_of_birth": "20/02/1990",
|
||||
"employee_id": 1001
|
||||
},
|
||||
"submitButtonLabel": "Submit",
|
||||
"resetButtonLabel": "Reset",
|
||||
"type": "JSON_FORM_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "JSON Form",
|
||||
"key": "wrvbzxoh9c",
|
||||
"iconSVG": "/static/media/icon.5b428de12db9ad6a591955ead07f86e9.svg",
|
||||
"widgetId": "s10ovhzkte",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"submitButtonStyles": {
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"buttonVariant": "PRIMARY"
|
||||
},
|
||||
"resetButtonStyles": {
|
||||
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"buttonVariant": "SECONDARY"
|
||||
},
|
||||
"childStylesheet": {
|
||||
"ARRAY": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"cellBorderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"cellBoxShadow": "none"
|
||||
},
|
||||
"OBJECT": {
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none",
|
||||
"cellBorderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"cellBoxShadow": "none"
|
||||
},
|
||||
"CHECKBOX": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}"
|
||||
},
|
||||
"CURRENCY_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"DATEPICKER": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"EMAIL_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"MULTISELECT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"MULTILINE_TEXT_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"NUMBER_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"PASSWORD_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"PHONE_NUMBER_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"RADIO_GROUP": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"SELECT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"SWITCH": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"boxShadow": "none"
|
||||
},
|
||||
"TEXT_INPUT": {
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"boxShadow": "none"
|
||||
}
|
||||
},
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 9.96875,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 15,
|
||||
"rightColumn": 40,
|
||||
"topRow": 28,
|
||||
"bottomRow": 78,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
},
|
||||
{
|
||||
"key": "submitButtonStyles.buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "submitButtonStyles.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "resetButtonStyles.buttonColor"
|
||||
},
|
||||
{
|
||||
"key": "resetButtonStyles.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.ARRAY.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.ARRAY.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.ARRAY.cellBorderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.OBJECT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.OBJECT.cellBorderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.CHECKBOX.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.CHECKBOX.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.CURRENCY_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.CURRENCY_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.DATEPICKER.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.DATEPICKER.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.EMAIL_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.EMAIL_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.MULTISELECT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.MULTISELECT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.MULTILINE_TEXT_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.MULTILINE_TEXT_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.NUMBER_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.NUMBER_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.PASSWORD_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.PASSWORD_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.PHONE_NUMBER_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.PHONE_NUMBER_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.RADIO_GROUP.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.SELECT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.SELECT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.SWITCH.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.TEXT_INPUT.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "childStylesheet.TEXT_INPUT.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.name.defaultValue"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.name.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.name.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.date_of_birth.defaultValue"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.date_of_birth.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.date_of_birth.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.employee_id.defaultValue"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.employee_id.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.employee_id.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.defaultValue"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.cellBorderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField1.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField1.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField2.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField2.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField3.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField3.borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField4.accentColor"
|
||||
},
|
||||
{
|
||||
"key": "schema.__root_schema__.children.customField4.borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicPropertyPathList": [
|
||||
{
|
||||
"key": "schema.__root_schema__.children.date_of_birth.defaultValue"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
344
app/client/cypress/fixtures/multipleContainerdsl.json
Normal file
344
app/client/cypress/fixtures/multipleContainerdsl.json
Normal file
|
|
@ -0,0 +1,344 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 600,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 69,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"shouldScrollContents": true,
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"widgetName": "Container1",
|
||||
"containerStyle": "card",
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"animateLoading": true,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas1",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "mqfi7o9374",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"shouldScrollContents": true,
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"widgetName": "Container2",
|
||||
"containerStyle": "card",
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"animateLoading": true,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas2",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "mqfi7o9374",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"shouldScrollContents": true,
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"widgetName": "Container3",
|
||||
"containerStyle": "card",
|
||||
"borderColor": "#E0DEDE",
|
||||
"borderWidth": "1",
|
||||
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
|
||||
"animateLoading": true,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"widgetName": "Canvas3",
|
||||
"version": 1,
|
||||
"detachFromLayout": true,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"hideCard": true,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Canvas",
|
||||
"key": "mqfi7o9374",
|
||||
"containerStyle": "none",
|
||||
"canExtend": false,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"animateLoading": true,
|
||||
"labelTextSize": "0.875rem",
|
||||
"options": [
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
}
|
||||
],
|
||||
"defaultSelectedValues": [
|
||||
"BLUE"
|
||||
],
|
||||
"isDisabled": false,
|
||||
"isInline": true,
|
||||
"isRequired": false,
|
||||
"labelText": "Label",
|
||||
"labelPosition": "Left",
|
||||
"labelAlignment": "left",
|
||||
"labelWidth": 5,
|
||||
"widgetName": "CheckboxGroup1",
|
||||
"version": 2,
|
||||
"type": "CHECKBOX_GROUP_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Checkbox Group",
|
||||
"key": "hm1iv7bfuy",
|
||||
"iconSVG": "/static/media/icon.ecb3847950c4515966ef642a32758afb.svg",
|
||||
"widgetId": "v37fp7if60",
|
||||
"renderMode": "CANVAS",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 2.9258722066879272,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 8,
|
||||
"rightColumn": 57,
|
||||
"topRow": 33,
|
||||
"bottomRow": 45,
|
||||
"parentId": "05i6e0t0fa",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "accentColor"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
],
|
||||
"minHeight": 470,
|
||||
"widgetId": "05i6e0t0fa",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 47.16357421875,
|
||||
"topRow": 0,
|
||||
"bottomRow": 470,
|
||||
"parentId": "l44iyd101d",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Container",
|
||||
"key": "ojfkbwpxhu",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "l44iyd101d",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1.96514892578125,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 4,
|
||||
"rightColumn": 59,
|
||||
"topRow": 1,
|
||||
"bottomRow": 48,
|
||||
"parentId": "wor0jspl6z",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
],
|
||||
"minHeight": 500,
|
||||
"widgetId": "wor0jspl6z",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 145.76953125,
|
||||
"topRow": 0,
|
||||
"bottomRow": 500,
|
||||
"parentId": "429zp6cdxf",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Container",
|
||||
"key": "ojfkbwpxhu",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "429zp6cdxf",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 6.07373046875,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 9,
|
||||
"rightColumn": 52,
|
||||
"topRow": 5,
|
||||
"bottomRow": 55,
|
||||
"parentId": "stwsepims4",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
],
|
||||
"minHeight": 570,
|
||||
"widgetId": "stwsepims4",
|
||||
"renderMode": "CANVAS",
|
||||
"boxShadow": "none",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 1,
|
||||
"parentRowSpace": 1,
|
||||
"leftColumn": 0,
|
||||
"rightColumn": 239.25,
|
||||
"topRow": 0,
|
||||
"bottomRow": 570,
|
||||
"parentId": "v7qrdx618b",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "accentColor"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"searchTags": [
|
||||
"div",
|
||||
"parent",
|
||||
"group"
|
||||
],
|
||||
"type": "CONTAINER_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Container",
|
||||
"key": "ojfkbwpxhu",
|
||||
"iconSVG": "/static/media/icon.1977dca3370505e2db3a8e44cfd54907.svg",
|
||||
"isCanvas": true,
|
||||
"widgetId": "v7qrdx618b",
|
||||
"renderMode": "CANVAS",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 9.96875,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 18,
|
||||
"rightColumn": 59,
|
||||
"topRow": 1,
|
||||
"bottomRow": 58,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "borderRadius"
|
||||
},
|
||||
{
|
||||
"key": "boxShadow"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
77
app/client/cypress/fixtures/textWidgetDynamicdsl.json
Normal file
77
app/client/cypress/fixtures/textWidgetDynamicdsl.json
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"dsl": {
|
||||
"widgetName": "MainContainer",
|
||||
"backgroundColor": "none",
|
||||
"rightColumn": 4896,
|
||||
"snapColumns": 64,
|
||||
"detachFromLayout": true,
|
||||
"widgetId": "0",
|
||||
"topRow": 0,
|
||||
"bottomRow": 400,
|
||||
"containerStyle": "none",
|
||||
"snapRows": 125,
|
||||
"parentRowSpace": 1,
|
||||
"type": "CANVAS_WIDGET",
|
||||
"canExtend": true,
|
||||
"version": 64,
|
||||
"minHeight": 1292,
|
||||
"dynamicTriggerPathList": [],
|
||||
"parentColumnSpace": 1,
|
||||
"dynamicBindingPathList": [],
|
||||
"leftColumn": 0,
|
||||
"children": [
|
||||
{
|
||||
"isVisible": true,
|
||||
"minDynamicHeight": 4,
|
||||
"maxDynamicHeight": 9000,
|
||||
"dynamicHeight": "AUTO_HEIGHT",
|
||||
"text": "Test Auto Height",
|
||||
"fontSize": "1rem",
|
||||
"fontStyle": "BOLD",
|
||||
"textAlign": "LEFT",
|
||||
"textColor": "#231F20",
|
||||
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
|
||||
"widgetName": "Text1",
|
||||
"shouldTruncate": false,
|
||||
"overflow": "NONE",
|
||||
"version": 1,
|
||||
"animateLoading": true,
|
||||
"searchTags": [
|
||||
"typography",
|
||||
"paragraph",
|
||||
"label"
|
||||
],
|
||||
"type": "TEXT_WIDGET",
|
||||
"hideCard": false,
|
||||
"isDeprecated": false,
|
||||
"displayName": "Text",
|
||||
"key": "t24h8uem36",
|
||||
"iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg",
|
||||
"widgetId": "nwkbwkxa62",
|
||||
"renderMode": "CANVAS",
|
||||
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
|
||||
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
|
||||
"isLoading": false,
|
||||
"parentColumnSpace": 9.96875,
|
||||
"parentRowSpace": 10,
|
||||
"leftColumn": 19,
|
||||
"rightColumn": 35,
|
||||
"topRow": 11,
|
||||
"bottomRow": 15,
|
||||
"parentId": "0",
|
||||
"dynamicBindingPathList": [
|
||||
{
|
||||
"key": "truncateButtonColor"
|
||||
},
|
||||
{
|
||||
"key": "fontFamily"
|
||||
},
|
||||
{
|
||||
"key": "borderRadius"
|
||||
}
|
||||
],
|
||||
"dynamicTriggerPathList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,9 @@ describe("Dynamic input autocomplete", () => {
|
|||
cy.addDsl(dsl);
|
||||
});
|
||||
it("opens autocomplete for bindings", () => {
|
||||
cy.selectEntityByName("TestModal");
|
||||
cy.wait(3000);
|
||||
cy.selectEntityByName("Aditya");
|
||||
cy.openPropertyPane("buttonwidget");
|
||||
cy.get(dynamicInputLocators.input)
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ describe("Binding Expressions should not be truncated in Url and path extraction
|
|||
// })
|
||||
//.trigger("mouseover")
|
||||
.dblclick()
|
||||
.dblclick()
|
||||
.type("{{JSObject1.");
|
||||
agHelper.GetNAssertElementText(locator._hints, "offsetValue", "have.text", 1);
|
||||
agHelper.Sleep();
|
||||
|
|
@ -65,6 +66,7 @@ describe("Binding Expressions should not be truncated in Url and path extraction
|
|||
.contains("__limit__")
|
||||
//.trigger("mouseover")
|
||||
.dblclick()
|
||||
.dblclick()
|
||||
.type("{{JSObject1.");
|
||||
agHelper.GetNClickByContains(locator._hints, "limitValue");
|
||||
agHelper.Sleep(2000);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
const dsl = require("../../../../fixtures/dynamicHeightContainerdsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation with limits", function() {
|
||||
it("Validate change in auto height with limits width for widgets and highlight section validation", function() {
|
||||
cy.addDsl(dsl);
|
||||
cy.wait(3000); //for dsl to settle
|
||||
cy.openPropertyPane("containerwidget");
|
||||
cy.changeLayoutHeight(commonlocators.autoHeightWithLimits);
|
||||
cy.wait(3000); //for dsl to settle
|
||||
//cy.checkMinDefaultValue(commonlocators.minHeight,"4")
|
||||
//cy.testJsontext(commonlocators.minHeight, "5");
|
||||
//cy.get(commonlocators.overlayMin).should("be.visible");
|
||||
cy.get("[data-cy='t--auto-height-overlay-handles-min']").trigger(
|
||||
"mouseover",
|
||||
);
|
||||
cy.contains("Min-Height: 10 rows");
|
||||
cy.get("[data-cy='t--auto-height-overlay-handles-min']").should(
|
||||
"be.visible",
|
||||
);
|
||||
cy.get("[data-cy='t--auto-height-overlay-handles-min'] div")
|
||||
.eq(0)
|
||||
.should("have.css", "background-color", "rgb(243, 43, 139)");
|
||||
/*cy.get(commonlocators.overlayMin).should(
|
||||
"have.css",
|
||||
"background-color",
|
||||
"rgba(243, 43, 139, 0.1)",
|
||||
);*/
|
||||
cy.get("[data-cy='t--auto-height-overlay-handles-max']").trigger(
|
||||
"mouseover",
|
||||
);
|
||||
cy.contains("Max-Height: 12 rows");
|
||||
//cy.checkMaxDefaultValue(commonlocators.maxHeight,"40")
|
||||
//cy.testJsontext(commonlocators.maxHeight, "60");
|
||||
cy.get("[data-cy='t--auto-height-overlay-handles-max']").should(
|
||||
"be.visible",
|
||||
);
|
||||
cy.get("[data-cy='t--auto-height-overlay-handles-max'] div")
|
||||
.eq(0)
|
||||
.should("have.css", "background-color", "rgb(243, 43, 139)");
|
||||
//cy.contains("Max-Height: 60 rows");
|
||||
cy.changeLayoutHeight(commonlocators.fixed);
|
||||
cy.changeLayoutHeight(commonlocators.autoHeightWithLimits);
|
||||
//cy.contains("Min-Height: 5 rows");
|
||||
//cy.checkMinDefaultValue(commonlocators.minHeight,"5")
|
||||
// cy.checkMaxDefaultValue(commonlocators.maxHeight,"60")
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
const dsl = require("../../../../fixtures/dynamicHeightContainerCheckboxdsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation", function() {
|
||||
it("Validate change with auto height width for widgets", function() {
|
||||
cy.addDsl(dsl);
|
||||
cy.wait(3000); //for dsl to settle
|
||||
cy.openPropertyPane("containerwidget");
|
||||
//cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.openPropertyPane("checkboxgroupwidget");
|
||||
//cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((height) => {
|
||||
cy.get(".t--widget-checkboxgroupwidget")
|
||||
.invoke("css", "height")
|
||||
.then((checkboxheight) => {
|
||||
cy.get(commonlocators.addOption).click();
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.get(".t--widget-checkboxgroupwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newcheckboxheight) => {
|
||||
expect(checkboxheight).to.not.equal(newcheckboxheight);
|
||||
});
|
||||
});
|
||||
cy.wait(2000);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newheight) => {
|
||||
expect(height).to.not.equal(newheight);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
const dsl = require("../../../../fixtures/dynamicHeightFormSwitchdsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation", function() {
|
||||
it("Validate change with auto height width for Form/Switch", function() {
|
||||
cy.addDsl(dsl);
|
||||
cy.wait(3000); //for dsl to settle
|
||||
cy.openPropertyPane("formwidget");
|
||||
cy.get(".t--widget-formwidget")
|
||||
.invoke("css", "height")
|
||||
.then((formheight) => {
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.openPropertyPane("switchgroupwidget");
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.get(".t--widget-switchgroupwidget")
|
||||
.invoke("css", "height")
|
||||
.then((switchheight) => {
|
||||
cy.get(".t--widget-formwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newformheight) => {
|
||||
//expect(formheight).to.not.equal(newformheight)
|
||||
cy.updateCodeInput(
|
||||
".t--property-control-options",
|
||||
`[
|
||||
{
|
||||
"label": "Blue",
|
||||
"value": "BLUE"
|
||||
},
|
||||
{
|
||||
"label": "Green",
|
||||
"value": "GREEN"
|
||||
},
|
||||
{
|
||||
"label": "Red",
|
||||
"value": "RED"
|
||||
},
|
||||
{
|
||||
"label": "Yellow",
|
||||
"value": "YELLOW"
|
||||
},
|
||||
{
|
||||
"label": "Purple",
|
||||
"value": "PURPLE"
|
||||
},
|
||||
{
|
||||
"label": "Pink",
|
||||
"value": "PINK"
|
||||
},
|
||||
{
|
||||
"label": "Black",
|
||||
"value": "BLACK"
|
||||
},
|
||||
{
|
||||
"label": "Grey",
|
||||
"value": "GREY"
|
||||
},
|
||||
{
|
||||
"label": "Orange",
|
||||
"value": "ORANGE"
|
||||
},
|
||||
{
|
||||
"label": "Cream",
|
||||
"value": "CREAM"
|
||||
}
|
||||
]`,
|
||||
);
|
||||
cy.get(".t--widget-switchgroupwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newswitchheight) => {
|
||||
cy.get(".t--widget-formwidget")
|
||||
.invoke("css", "height")
|
||||
.then((updatedformheight) => {
|
||||
expect(newformheight).to.not.equal(updatedformheight);
|
||||
expect(switchheight).to.not.equal(newswitchheight);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
cy.get(".t--draggable-switchgroupwidget .bp3-control-indicator")
|
||||
.first()
|
||||
.click({ force: true });
|
||||
cy.wait(3000);
|
||||
cy.get(".t--modal-widget").should("have.length", 1);
|
||||
cy.get(".t--widget-propertypane-toggle")
|
||||
.first()
|
||||
.click({ force: true });
|
||||
//cy.changeLayoutHeight(commonlocators.autoHeightWithLimits);
|
||||
//cy.checkMinDefaultValue(commonlocators.minHeight,"4")
|
||||
//cy.checkMaxDefaultValue(commonlocators.maxHeight,"24")
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.wait(3000);
|
||||
cy.get("button:contains('Close')").click({ force: true });
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
const dsl = require("../../../../fixtures/jsonFormDynamicHeightDsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation", function() {
|
||||
it("Validate change with auto height width for JsonForm", function() {
|
||||
cy.addDsl(dsl);
|
||||
cy.wait(3000); //for dsl to settle
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.get(".t--widget-jsonformwidget")
|
||||
.invoke("css", "height")
|
||||
.then((formheight) => {
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.wait(5000);
|
||||
cy.get(".t--widget-jsonformwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newformheight) => {
|
||||
expect(formheight).to.not.equal(newformheight);
|
||||
cy.get(".t--show-column-btn")
|
||||
.eq(0)
|
||||
.click({ force: true });
|
||||
cy.get(".t--show-column-btn")
|
||||
.eq(1)
|
||||
.click({ force: true });
|
||||
cy.get(".t--show-column-btn")
|
||||
.eq(2)
|
||||
.click({ force: true });
|
||||
// cy.get("[data-cy='t--resizable-handle-TOP']")
|
||||
// .within(($el) => {
|
||||
// cy.window().then((win) => {
|
||||
// const after = win.getComputedStyle($el[0], "::after");
|
||||
// expect(after).not.to.exist
|
||||
// });
|
||||
// });
|
||||
// cy.get("[data-cy='t--resizable-handle-BOTTOM']").should("not.exist");
|
||||
cy.changeLayoutHeight(commonlocators.fixed);
|
||||
cy.wait(5000);
|
||||
cy.get(".t--widget-jsonformwidget")
|
||||
.invoke("css", "height")
|
||||
.then((updatedformheight) => {
|
||||
expect(newformheight).to.not.equal(updatedformheight);
|
||||
cy.get(".t--show-column-btn")
|
||||
.eq(2)
|
||||
.click({ force: true });
|
||||
cy.get(".t--show-column-btn")
|
||||
.eq(1)
|
||||
.click({ force: true });
|
||||
// cy.get("[data-cy='t--resizable-handle-TOP']").should("exist");
|
||||
// cy.get("[data-cy='t--resizable-handle-BOTTOM']").should("exist");
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.wait(5000);
|
||||
cy.get(".t--widget-jsonformwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newupdatedformheight) => {
|
||||
expect(updatedformheight).to.not.equal(
|
||||
newupdatedformheight,
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
const dsl = require("../../../../fixtures/multipleContainerdsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation for multiple container", function() {
|
||||
before(() => {
|
||||
cy.addDsl(dsl);
|
||||
});
|
||||
it("Validate change in auto height width with multiple containers", function() {
|
||||
cy.wait(3000); //for dsl to settle
|
||||
cy.openPropertyPaneWithIndex("containerwidget", 0);
|
||||
cy.changeLayoutHeight(commonlocators.fixed);
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.openPropertyPaneWithIndex("containerwidget", 1);
|
||||
cy.changeLayoutHeight(commonlocators.fixed);
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.openPropertyPane("checkboxgroupwidget");
|
||||
cy.changeLayoutHeight(commonlocators.fixed);
|
||||
cy.changeLayoutHeight(commonlocators.autoHeight);
|
||||
cy.wait(2000);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.eq(0)
|
||||
.invoke("css", "height")
|
||||
.then((oheight) => {
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.eq(1)
|
||||
.invoke("css", "height")
|
||||
.then((mheight) => {
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.eq(2)
|
||||
.invoke("css", "height")
|
||||
.then((iheight) => {
|
||||
cy.get(".t--widget-checkboxgroupwidget")
|
||||
.invoke("css", "height")
|
||||
.then((checkboxheight) => {
|
||||
cy.get(commonlocators.addOption).click({ force: true });
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.wait(3000);
|
||||
cy.get(".t--widget-checkboxgroupwidget")
|
||||
.invoke("css", "height")
|
||||
.then((newcheckboxheight) => {
|
||||
expect(checkboxheight).to.not.equal(newcheckboxheight);
|
||||
});
|
||||
});
|
||||
cy.wait(2000);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.eq(0)
|
||||
.invoke("css", "height")
|
||||
.then((onewheight) => {
|
||||
expect(oheight).to.not.equal(onewheight);
|
||||
});
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.eq(1)
|
||||
.invoke("css", "height")
|
||||
.then((mnewheight) => {
|
||||
expect(mheight).to.not.equal(mnewheight);
|
||||
});
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.eq(2)
|
||||
.invoke("css", "height")
|
||||
.then((inewheight) => {
|
||||
expect(iheight).to.not.equal(inewheight);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
const dsl = require("../../../../fixtures/dynamicTabWidgetdsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation for Tab widget", function() {
|
||||
before(() => {
|
||||
cy.addDsl(dsl);
|
||||
});
|
||||
it("Tab widget validation of height with dynamic height feature", function() {
|
||||
//changing the Text Name and verifying
|
||||
cy.wait(3000);
|
||||
cy.openPropertyPane("tabswidget");
|
||||
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
|
||||
cy.get(".t--tabid-tab1").click({ force: true });
|
||||
cy.wait(3000);
|
||||
cy.get(".t--widget-tabswidget")
|
||||
.invoke("css", "height")
|
||||
.then((theight) => {
|
||||
cy.get(".t--tabid-tab2").click({ force: true });
|
||||
cy.wait(3000);
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
//cy.get(".t--draggable-checkboxwidget .bp3-control-indicator").click({ force: true })
|
||||
cy.get(".t--widget-tabswidget")
|
||||
.invoke("css", "height")
|
||||
.then((tnewheight) => {
|
||||
expect(theight).to.not.equal(tnewheight);
|
||||
cy.reload();
|
||||
cy.openPropertyPane("tabswidget");
|
||||
expect(theight).to.equal(theight);
|
||||
});
|
||||
});
|
||||
cy.changeLayoutHeight(commonlocators.fixed);
|
||||
cy.get(".t--tabid-tab1").click({ force: true });
|
||||
cy.wait(3000);
|
||||
cy.get(".t--widget-tabswidget")
|
||||
.invoke("css", "height")
|
||||
.then((theight) => {
|
||||
cy.get(".t--tabid-tab2").click({ force: true });
|
||||
cy.wait(3000);
|
||||
//cy.get(".t--draggable-checkboxwidget .bp3-control-indicator").click({ force: true })
|
||||
cy.get(".t--widget-tabswidget")
|
||||
.invoke("css", "height")
|
||||
.then((tnewheight) => {
|
||||
expect(theight).to.equal(tnewheight);
|
||||
cy.get(commonlocators.showTabsControl).click({ force: true });
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
cy.get(".t--widget-tabswidget")
|
||||
.invoke("css", "height")
|
||||
.then((upheight) => {
|
||||
expect(tnewheight).to.equal(upheight);
|
||||
cy.get(".t--tabid-tab1").should("not.exist");
|
||||
cy.get(".t--tabid-tab2").should("not.exist");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
const dsl = require("../../../../fixtures/textWidgetDynamicdsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation for text widget", function() {
|
||||
before(() => {
|
||||
cy.addDsl(dsl);
|
||||
});
|
||||
it("Text widget validation of height with dynamic height feature", function() {
|
||||
const textMsg = "Dynamic panel validation for text widget wrt height";
|
||||
//changing the Text Name and verifying
|
||||
cy.openPropertyPane("textwidget");
|
||||
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
|
||||
cy.get(".t--widget-textwidget")
|
||||
.invoke("css", "height")
|
||||
.then((theight) => {
|
||||
//Changing the text label
|
||||
cy.testCodeMirror(textMsg);
|
||||
cy.moveToStyleTab();
|
||||
cy.ChangeTextStyle(
|
||||
this.data.TextHeading,
|
||||
commonlocators.headingTextStyle,
|
||||
textMsg,
|
||||
);
|
||||
cy.wait("@updateLayout");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.invoke("css", "height")
|
||||
.then((tnewheight) => {
|
||||
expect(theight).to.not.equal(tnewheight);
|
||||
});
|
||||
cy.PublishtheApp();
|
||||
cy.get(commonlocators.headingTextStyle)
|
||||
.should("have.text", textMsg)
|
||||
.should("have.css", "font-size", "16px");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.invoke("css", "height")
|
||||
.then((tnewheight) => {
|
||||
expect(theight).to.not.equal(tnewheight);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
const dsl = require("../../../../fixtures/alignmentWithDynamicHeightDsl.json");
|
||||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
|
||||
describe("Dynamic Height Width validation", function() {
|
||||
function validateCssProperties(property) {
|
||||
cy.get("button:contains('Small')").click({ force: true });
|
||||
cy.wait(3000);
|
||||
cy.selectEntityByName("Text1");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(0)
|
||||
.invoke("css", property)
|
||||
.then((firstText) => {
|
||||
cy.selectEntityByName("Text2");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(1)
|
||||
.invoke("css", property)
|
||||
.then((secondText) => {
|
||||
cy.selectEntityByName("Text3");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(2)
|
||||
.invoke("css", property)
|
||||
.then((thirdText) => {
|
||||
cy.selectEntityByName("Text4");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(3)
|
||||
.invoke("css", property)
|
||||
.then((fourthText) => {
|
||||
cy.get("button:contains('Large')").click({ force: true });
|
||||
cy.selectEntityByName("Text1");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(0)
|
||||
.invoke("css", property)
|
||||
.then((largefirstText) => {
|
||||
cy.selectEntityByName("Text2");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(1)
|
||||
.invoke("css", property)
|
||||
.then((largesecondText) => {
|
||||
cy.selectEntityByName("Text3");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(2)
|
||||
.invoke("css", property)
|
||||
.then((largethirdText) => {
|
||||
cy.selectEntityByName("Text4");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(3)
|
||||
.invoke("css", property)
|
||||
.then((largefourthText) => {
|
||||
if (property == "left") {
|
||||
expect(firstText).to.equal(
|
||||
largefirstText,
|
||||
);
|
||||
expect(secondText).to.equal(
|
||||
largesecondText,
|
||||
);
|
||||
expect(thirdText).to.equal(
|
||||
largethirdText,
|
||||
);
|
||||
expect(fourthText).to.equal(
|
||||
largefourthText,
|
||||
);
|
||||
} else {
|
||||
expect(firstText).to.not.equal(
|
||||
largefirstText,
|
||||
);
|
||||
expect(secondText).to.not.equal(
|
||||
largesecondText,
|
||||
);
|
||||
expect(thirdText).to.not.equal(
|
||||
largethirdText,
|
||||
);
|
||||
expect(fourthText).to.not.equal(
|
||||
largefourthText,
|
||||
);
|
||||
}
|
||||
cy.get("button:contains('Small')").click({
|
||||
force: true,
|
||||
});
|
||||
cy.wait(3000);
|
||||
cy.selectEntityByName("Text1");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(0)
|
||||
.invoke("css", property)
|
||||
.then((updatelargefirstText) => {
|
||||
cy.selectEntityByName("Text2");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(1)
|
||||
.invoke("css", property)
|
||||
.then((updatelargesecondText) => {
|
||||
cy.selectEntityByName("Text3");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(2)
|
||||
.invoke("css", property)
|
||||
.then((updatelargethirdText) => {
|
||||
cy.selectEntityByName("Text4");
|
||||
cy.get(".t--widget-textwidget")
|
||||
.eq(3)
|
||||
.invoke("css", property)
|
||||
.then(
|
||||
(updatelargefourthText) => {
|
||||
//expect(firstText).to.equal(updatelargefirstText);
|
||||
expect(
|
||||
secondText,
|
||||
).to.equal(
|
||||
updatelargesecondText,
|
||||
);
|
||||
expect(
|
||||
thirdText,
|
||||
).to.equal(
|
||||
updatelargethirdText,
|
||||
);
|
||||
expect(
|
||||
fourthText,
|
||||
).to.equal(
|
||||
updatelargefourthText,
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
it("Validate change with auto height width for text widgets", function() {
|
||||
cy.addDsl(dsl);
|
||||
cy.wait(30000); //for dsl to settled
|
||||
validateCssProperties("height");
|
||||
//validateCssProperties("top");
|
||||
validateCssProperties("left");
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
const commonlocators = require("../../../../locators/commonlocators.json");
|
||||
const dsl = require("../../../../fixtures/invisibleWidgetdsl.json");
|
||||
|
||||
describe("Dynamic Height Width validation for Visibility", function() {
|
||||
before(() => {
|
||||
cy.addDsl(dsl);
|
||||
});
|
||||
it("Validating visbility/invisiblity of widget with dynamic height feature", function() {
|
||||
//changing the Text Name and verifying
|
||||
cy.wait(3000);
|
||||
cy.openPropertyPane("containerwidget");
|
||||
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
|
||||
cy.openPropertyPaneWithIndex("inputwidgetv2", 0);
|
||||
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
|
||||
cy.openPropertyPaneWithIndex("inputwidgetv2", 1);
|
||||
cy.changeLayoutHeightWithoutWait(commonlocators.autoHeight);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((theight) => {
|
||||
cy.get(commonlocators.checkboxIndicator).click({ force: true });
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((tnewheight) => {
|
||||
expect(theight).to.equal(tnewheight);
|
||||
cy.get("label:Contains('On')").should("not.be.enabled");
|
||||
});
|
||||
});
|
||||
cy.PublishtheApp();
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((theight) => {
|
||||
cy.get(".bp3-control-indicator").click({ force: true });
|
||||
cy.wait(2000);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((tnewheight) => {
|
||||
expect(theight).to.not.equal(tnewheight);
|
||||
cy.get("label:Contains('On')").should("not.exist");
|
||||
cy.get("label:Contains('Off')").should("be.visible");
|
||||
cy.get(".bp3-control-indicator").click({ force: true });
|
||||
cy.wait(2000);
|
||||
cy.get(".t--widget-containerwidget")
|
||||
.invoke("css", "height")
|
||||
.then((tonheight) => {
|
||||
expect(tonheight).to.not.equal(tnewheight);
|
||||
cy.get("label:Contains('Off')").should("not.exist");
|
||||
cy.get("label:Contains('On')").should("be.visible");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -37,7 +37,6 @@ describe("Entity explorer Drag and Drop widgets testcases", function() {
|
|||
* @param{toggleButton Css} Assert to be checked
|
||||
*/
|
||||
cy.moveToContentTab();
|
||||
cy.togglebar(commonlocators.scrollView);
|
||||
cy.get(formWidgetsPage.formD)
|
||||
.scrollTo("bottom")
|
||||
.should("be.visible");
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
const dsl = require("../../../../fixtures/Bugs/CheckboxGroupInListWidgetDsl.json");
|
||||
|
||||
describe("Canvas context Property Pane", function() {
|
||||
it("Bug Fix: Unable to delete checkbox child when it is inside list widget #18191", () => {
|
||||
cy.addDsl(dsl);
|
||||
cy.openPropertyPane("checkboxgroupwidget");
|
||||
//check number of options
|
||||
cy.get(".t--property-control-options > div:nth-child(2) > div").should(
|
||||
"have.length",
|
||||
3,
|
||||
);
|
||||
//click on delete button
|
||||
cy.get(
|
||||
".t--property-control-options > div:nth-child(2) > div:nth-child(2) > button",
|
||||
).click();
|
||||
|
||||
//verify deletion
|
||||
cy.get(".t--property-control-options > div:nth-child(2) > div").should(
|
||||
"have.length",
|
||||
2,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
@ -4,6 +4,8 @@ import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
|||
|
||||
const homePage = ObjectsRegistry.HomePage;
|
||||
const agHelper = ObjectsRegistry.AggregateHelper;
|
||||
const ee = ObjectsRegistry.EntityExplorer;
|
||||
const apiPage = ObjectsRegistry.ApiPage;
|
||||
|
||||
describe("MaintainContext&Focus", function() {
|
||||
it("1. Import the test application", () => {
|
||||
|
|
@ -135,4 +137,12 @@ describe("MaintainContext&Focus", function() {
|
|||
cy.SearchEntityandOpen("JSObject2");
|
||||
cy.assertCursorOnCodeInput(".js-editor", { ch: 2, line: 2 });
|
||||
});
|
||||
|
||||
it("7. Check if selected tab on right tab persists", () => {
|
||||
ee.SelectEntityByName("Rest_Api_1");
|
||||
apiPage.SelectRightPaneTab("connections");
|
||||
ee.SelectEntityByName("SQL_Query");
|
||||
ee.SelectEntityByName("Rest_Api_1");
|
||||
apiPage.AssertRightPaneSelectedTab("connections");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -271,9 +271,10 @@ describe("Linting", () => {
|
|||
apiPage.CreateAndFillApi("https://jsonplaceholder.typicode.com/");
|
||||
|
||||
createMySQLDatasourceQuery();
|
||||
|
||||
agHelper.RefreshPage();//Since this seems failing a bit
|
||||
clickButtonAndAssertLintError(false);
|
||||
});
|
||||
|
||||
it("8. Doesn't show lint errors for supported web apis", () => {
|
||||
const JS_OBJECT_WITH_WEB_API = `export default {
|
||||
myFun1: () => {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ describe("Preview mode functionality", function() {
|
|||
|
||||
it("checks if widgets can be selected or not", function() {
|
||||
// in preview mode, entity explorer and property pane are not visible
|
||||
// Also, draggable and resizable components are not available.
|
||||
const selector = `.t--draggable-buttonwidget`;
|
||||
cy.wait(500);
|
||||
cy.get(selector)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ describe("Canvas Resize", function() {
|
|||
cy.get(commonlocators.dropTarget).should(
|
||||
"have.css",
|
||||
"height",
|
||||
`${dsl.bottomRow}px`,
|
||||
`${dsl.minHeight}px`,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ let propPane = ObjectsRegistry.PropertyPane,
|
|||
ee = ObjectsRegistry.EntityExplorer;
|
||||
|
||||
describe("Theme validation usecase for multi-select widget", function() {
|
||||
it("Drag and drop multi-select widget and validate Default font and list of font validation + Bug 15007", function() {
|
||||
it("1. Drag and drop multi-select widget and validate Default font and list of font validation + Bug 15007", function() {
|
||||
//cy.reload(); // To remove the rename tooltip
|
||||
ee.DragDropWidgetNVerify("multiselectwidgetv2", 300, 80);
|
||||
cy.get(themelocator.canvas).click({ force: true });
|
||||
|
|
@ -96,7 +96,7 @@ describe("Theme validation usecase for multi-select widget", function() {
|
|||
cy.contains("Color").click({ force: true });
|
||||
});
|
||||
|
||||
it.skip("Publish the App and validate Font across the app + Bug 15007", function() {
|
||||
it.skip("2. Publish the App and validate Font across the app + Bug 15007", function() {
|
||||
//Skipping due to mentioned bug
|
||||
cy.PublishtheApp();
|
||||
cy.get(".rc-select-selection-item > .rc-select-selection-item-content")
|
||||
|
|
@ -118,7 +118,7 @@ describe("Theme validation usecase for multi-select widget", function() {
|
|||
cy.goToEditFromPublish();
|
||||
});
|
||||
|
||||
it("Validate current theme feature", function() {
|
||||
it("3. Validate current theme feature", function() {
|
||||
cy.get("#canvas-selection-0").click({ force: true });
|
||||
//Change the Theme
|
||||
cy.get(commonlocators.changeThemeBtn).click({ force: true });
|
||||
|
|
@ -138,7 +138,7 @@ describe("Theme validation usecase for multi-select widget", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("Publish the App and validate change of Theme across the app in publish mode", function() {
|
||||
it("4. Publish the App and validate change of Theme across the app in publish mode", function() {
|
||||
cy.PublishtheApp();
|
||||
cy.get(".rc-select-selection-item > .rc-select-selection-item-content")
|
||||
.first()
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
describe("Visual regression tests", () => {
|
||||
// for any changes in UI, update the screenshot in snapshot folder, to do so:
|
||||
// 1. Delete the required screenshot which you want to update
|
||||
// 2. Run test in headless mode with any browser (to maintain same resolution in CI)
|
||||
// 2. Run test in headless mode with chrome (to maintain same resolution in CI)
|
||||
// command: "npx cypress run --spec cypress/integration/Smoke_TestSuite/ClientSideTests/VisualTests/WidgetsLayout_spec.js --browser chrome"
|
||||
// 3. New screenshot will be generated in the snapshot folder
|
||||
|
||||
it("Verify SwitchGroup inline enable/disbale", () => {
|
||||
|
|
@ -18,7 +19,7 @@ describe("Visual regression tests", () => {
|
|||
//Unchecking & verify snap
|
||||
cy.get(".t--property-control-inline input")
|
||||
.uncheck({ force: true })
|
||||
.wait(200)
|
||||
.wait(2000)
|
||||
.should("not.be.checked");
|
||||
cy.get("[data-testid=switchgroup-container]").matchImageSnapshot(
|
||||
"inlineDisabled",
|
||||
|
|
@ -27,7 +28,7 @@ describe("Visual regression tests", () => {
|
|||
//Checking again & verify snap
|
||||
cy.get(".t--property-control-inline input")
|
||||
.check({ force: true })
|
||||
.wait(200)
|
||||
.wait(2000)
|
||||
.should("be.checked");
|
||||
|
||||
cy.get("[data-testid=switchgroup-container]").matchImageSnapshot(
|
||||
|
|
@ -37,7 +38,7 @@ describe("Visual regression tests", () => {
|
|||
//Unchecking again & verify snap
|
||||
cy.get(".t--property-control-inline input")
|
||||
.uncheck({ force: true })
|
||||
.wait(200)
|
||||
.wait(2000)
|
||||
.should("not.be.checked");
|
||||
// taking screenshot of app home page in edit mode
|
||||
cy.get("[data-testid=switchgroup-container]").matchImageSnapshot(
|
||||
|
|
|
|||
|
|
@ -12,20 +12,18 @@ describe("Form reset functionality", function() {
|
|||
.eq(2)
|
||||
.click()
|
||||
.should("have.class", "selected-row");
|
||||
// Select three options
|
||||
cy.get(widgets.multiSelectWidget).click({ force: true });
|
||||
cy.get(widgets.multiSelectWidget).type("Option");
|
||||
cy.wait(2000);
|
||||
cy.get(".rc-select-selection-overflow").click({ force: true });
|
||||
cy.dropdownMultiSelectDynamic("Option 1");
|
||||
cy.dropdownMultiSelectDynamic("Option 2");
|
||||
cy.dropdownMultiSelectDynamic("Option 3");
|
||||
// Verify input should include the name "lindsay.ferguson@reqres.in"
|
||||
cy.get(widgets.inputWidget + " " + "input")
|
||||
cy.get(".text-input-wrapper input")
|
||||
.eq(0)
|
||||
.invoke("attr", "value")
|
||||
.should("contain", "lindsay.ferguson@reqres.in");
|
||||
// Reset the form
|
||||
cy.get(widgets.formButtonWidget)
|
||||
.contains("Reset")
|
||||
.click({ force: true });
|
||||
cy.get("button:contains('Reset')").click({ force: true });
|
||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
cy.wait(500);
|
||||
// verify table should not have selected row
|
||||
|
|
@ -39,32 +37,27 @@ describe("Form reset functionality", function() {
|
|||
},
|
||||
);
|
||||
// Verify input should not include "lindsay.ferguson@reqres.in"
|
||||
cy.get(widgets.inputWidget + " " + "input")
|
||||
cy.get(".text-input-wrapper input")
|
||||
.eq(0)
|
||||
.invoke("attr", "value")
|
||||
.should("not.contain", "lindsay.ferguson@reqres.in");
|
||||
|
||||
// input widgets should not be in error state
|
||||
cy.get(widgets.inputWidget + " " + "input").should(
|
||||
"not.have.css",
|
||||
"border-color",
|
||||
"rgb(242, 43, 43)",
|
||||
);
|
||||
cy.get(".text-input-wrapper input")
|
||||
.eq(0)
|
||||
.should("not.have.css", "border-color", "rgb(242, 43, 43)");
|
||||
|
||||
cy.get(widgets.currencyInputWidget + " " + "input").should(
|
||||
"not.have.css",
|
||||
"border-color",
|
||||
"rgb(242, 43, 43)",
|
||||
);
|
||||
cy.get(".text-input-wrapper input")
|
||||
.eq(0)
|
||||
.should("not.have.css", "border-color", "rgb(242, 43, 43)");
|
||||
|
||||
cy.get(widgets.phoneInputWidget + " " + "input").should(
|
||||
"not.have.css",
|
||||
"border-color",
|
||||
"rgb(242, 43, 43)",
|
||||
);
|
||||
cy.get(".text-input-wrapper input")
|
||||
.eq(1)
|
||||
.should("not.have.css", "border-color", "rgb(242, 43, 43)");
|
||||
|
||||
// Earlier select widget used to remain in error state which wasn't an expected behavior after reset
|
||||
// now even select widget will not show error after reset.
|
||||
cy.get(`.rc-select-selector`).should(
|
||||
cy.get(`.rc-select-selection-overflow`).should(
|
||||
"not.have.css",
|
||||
"border-color",
|
||||
"rgb(242, 43, 43)",
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ describe("Input Widget Max Char Functionality", function() {
|
|||
it("Text Input maxChar shows error if defaultText longer", () => {
|
||||
cy.get(widgetsPage.innertext).click();
|
||||
cy.get(".bp3-popover-content").should(($x) => {
|
||||
expect($x).contain("Default text length must be less than 5 characters");
|
||||
expect($x).contain(
|
||||
"Default text length must be less than or equal to 5 characters",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,9 @@ describe("Text Field Property Control", () => {
|
|||
cy.testJsontext("maxchars", 5);
|
||||
cy.get(`${fieldPrefix}-name input`).click();
|
||||
cy.get(".bp3-popover-content").should(($x) => {
|
||||
expect($x).contain("Default text length must be less than 5 characters");
|
||||
expect($x).contain(
|
||||
"Default text length must be less than or equal to 5 characters",
|
||||
);
|
||||
});
|
||||
cy.testJsontext("maxchars", "");
|
||||
});
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
cy.testJsontext("text", "{{JSON.stringify(JSONForm1.formData)}}");
|
||||
});
|
||||
|
||||
it("can hide Array Field", () => {
|
||||
it("1. can hide Array Field", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.openFieldConfiguration("education");
|
||||
hideAndVerifyProperties("education", [
|
||||
|
|
@ -94,7 +94,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
]);
|
||||
});
|
||||
|
||||
it("can hide Array Field's inner fields", () => {
|
||||
it("2. can hide Array Field's inner fields", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.openFieldConfiguration("education");
|
||||
cy.openFieldConfiguration("__array_item__");
|
||||
|
|
@ -105,7 +105,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
});
|
||||
});
|
||||
|
||||
it("can hide Checkbox Field", () => {
|
||||
it("3. can hide Checkbox Field", () => {
|
||||
// Add new custom field
|
||||
addCustomField("Checkbox");
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
removeCustomField();
|
||||
});
|
||||
|
||||
it("can hide Currency Field", () => {
|
||||
it("4. can hide Currency Field", () => {
|
||||
const defaultValue = 1000;
|
||||
// Add new custom field
|
||||
addCustomField("Currency Input");
|
||||
|
|
@ -123,28 +123,28 @@ describe("JSON Form Hidden fields", () => {
|
|||
removeCustomField();
|
||||
});
|
||||
|
||||
it("can hide Date Field", () => {
|
||||
it("5. can hide Date Field", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.openFieldConfiguration("dob");
|
||||
|
||||
hideAndVerifyProperties("dob", "10/12/1992");
|
||||
});
|
||||
|
||||
it("can hide Input Field", () => {
|
||||
it("6. can hide Input Field", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.openFieldConfiguration("name");
|
||||
|
||||
hideAndVerifyProperties("name", "John");
|
||||
});
|
||||
|
||||
it("can hide Multiselect Field", () => {
|
||||
it("7. can hide Multiselect Field", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.openFieldConfiguration("hobbies");
|
||||
|
||||
hideAndVerifyProperties("hobbies", ["travelling", "swimming"]);
|
||||
});
|
||||
|
||||
it("can hide Object Field", () => {
|
||||
it("8. can hide Object Field", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
cy.openFieldConfiguration("address");
|
||||
|
||||
|
|
@ -154,7 +154,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
});
|
||||
});
|
||||
|
||||
it("can hide Phone Number Input Field", () => {
|
||||
it("9. can hide Phone Number Input Field", () => {
|
||||
const defaultValue = "1000";
|
||||
// Add new custom field
|
||||
addCustomField("Phone Number Input");
|
||||
|
|
@ -166,7 +166,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
removeCustomField();
|
||||
});
|
||||
|
||||
it("can hide Radio Group Field", () => {
|
||||
it("10. can hide Radio Group Field", () => {
|
||||
const defaultValue = "Y";
|
||||
// Add new custom field
|
||||
addCustomField("Phone Number Input");
|
||||
|
|
@ -178,7 +178,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
removeCustomField();
|
||||
});
|
||||
|
||||
it("can hide Select Field", () => {
|
||||
it("11. can hide Select Field", () => {
|
||||
const defaultValue = "BLUE";
|
||||
// Add new custom field
|
||||
addCustomField(/^Select/);
|
||||
|
|
@ -190,7 +190,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
removeCustomField();
|
||||
});
|
||||
|
||||
it("can hide Switch Field", () => {
|
||||
it("12. can hide Switch Field", () => {
|
||||
// Add new custom field
|
||||
addCustomField("Switch");
|
||||
|
||||
|
|
@ -199,7 +199,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
removeCustomField();
|
||||
});
|
||||
|
||||
it("hides fields on first load", () => {
|
||||
it("13. hides fields on first load", () => {
|
||||
cy.openPropertyPane("jsonformwidget");
|
||||
|
||||
// hide education field
|
||||
|
|
@ -214,6 +214,7 @@ describe("JSON Form Hidden fields", () => {
|
|||
|
||||
// publish the app
|
||||
cy.PublishtheApp();
|
||||
cy.wait(1000);
|
||||
|
||||
// Check if name is hidden
|
||||
cy.get(`${fieldPrefix}-name`).should("not.exist");
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
const dsl = require("../../../../../fixtures/StatboxDsl.json");
|
||||
const dsl1 = require("../../../../../fixtures/dynamicHeightStatboxdsl.json");
|
||||
const explorer = require("../../../../../locators/explorerlocators.json");
|
||||
const data = require("../../../../../fixtures/example.json");
|
||||
const widgetsPage = require("../../../../../locators/Widgets.json");
|
||||
|
|
@ -87,9 +88,10 @@ describe("Statbox Widget Functionality", function() {
|
|||
});
|
||||
|
||||
it("5. Verify Statbox can be placed inside another widget", () => {
|
||||
cy.addDsl(dsl1);
|
||||
cy.get(explorer.addWidget).click();
|
||||
// placing statbox widget inside container widget
|
||||
cy.dragAndDropToCanvas("containerwidget", { x: 500, y: 300 });
|
||||
//cy.dragAndDropToCanvas("containerwidget", { x: 500, y: 300 });
|
||||
cy.dragAndDropToWidget("statboxwidget", "containerwidget", {
|
||||
x: 100,
|
||||
y: 100,
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ describe("RichTextEditor Widget Functionality", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it.only("Check if the cursor position is at the end for the RTE widget", function() {
|
||||
it("Check if the cursor position is at the end for the RTE widget", function() {
|
||||
const tinyMceId = "rte-6h8j08u7ea";
|
||||
const testString = "Test Content";
|
||||
const testStringLen = testString.length;
|
||||
|
|
@ -274,6 +274,18 @@ describe("RichTextEditor Widget Functionality", function() {
|
|||
});
|
||||
});
|
||||
|
||||
it("Check if button for Underline exists within the Toolbar of RTE widget", () => {
|
||||
cy.get('[aria-label="Underline"]').should("exist");
|
||||
});
|
||||
|
||||
it("Check if button for Background Color is rendered only once within the Toolbar of RTE widget", () => {
|
||||
cy.get('[aria-label="Background color"]').should("have.length", 1);
|
||||
});
|
||||
|
||||
it("Check if button for Text Color is rendered only once within the Toolbar of RTE widget", () => {
|
||||
cy.get('[aria-label="Text color"]').should("have.length", 1);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cy.goToEditFromPublish();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -85,13 +85,13 @@ describe("Number Slider spec", () => {
|
|||
propPane.UpdatePropertyFieldValue("Default Value", "-10");
|
||||
|
||||
agHelper.VerifyEvaluatedErrorMessage(
|
||||
"This value must be greater than min value",
|
||||
"This value must be greater than or equal to the min value",
|
||||
);
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Default Value", "110");
|
||||
|
||||
agHelper.VerifyEvaluatedErrorMessage(
|
||||
"This value must be less than max value",
|
||||
"This value must be less than or equal to the max value",
|
||||
);
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Default Value", "asd");
|
||||
|
|
@ -121,6 +121,8 @@ describe("Number Slider spec", () => {
|
|||
.focus()
|
||||
.type("{rightArrow}");
|
||||
|
||||
agHelper.Sleep(2000); //for the changes to reflect in text widget
|
||||
|
||||
// Assert the Text widget has value 20
|
||||
agHelper.GetText(getWidgetSelector(WIDGET.TEXT)).then(($label) => {
|
||||
expect($label).to.eq("20");
|
||||
|
|
@ -133,8 +135,7 @@ describe("Number Slider spec", () => {
|
|||
.type("{leftArrow}")
|
||||
.type("{leftArrow}");
|
||||
|
||||
agHelper.Sleep(200);
|
||||
|
||||
agHelper.Sleep(2000); //for the changes to reflect in text widget
|
||||
// Assert the Text widget has value 0
|
||||
agHelper.GetText(getWidgetSelector(WIDGET.TEXT)).then(($label) => {
|
||||
expect($label).to.eq("0");
|
||||
|
|
|
|||
|
|
@ -39,8 +39,6 @@ describe("Range Slider spec", () => {
|
|||
agHelper.VerifyEvaluatedErrorMessage("This value must be a number");
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Min. Value", "0");
|
||||
|
||||
// agHelper.VerifyEvaluatedValue("0");
|
||||
});
|
||||
|
||||
it("2. Validates Max. Value", () => {
|
||||
|
|
@ -59,8 +57,6 @@ describe("Range Slider spec", () => {
|
|||
agHelper.VerifyEvaluatedErrorMessage("This value must be a number");
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Max. Value", "100");
|
||||
|
||||
// agHelper.VerifyEvaluatedValue("100");
|
||||
});
|
||||
|
||||
it("3. Validates Step Size", () => {
|
||||
|
|
@ -79,8 +75,6 @@ describe("Range Slider spec", () => {
|
|||
agHelper.VerifyEvaluatedErrorMessage("This value must be a number");
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Step Size", "1");
|
||||
|
||||
// agHelper.VerifyEvaluatedValue("1");
|
||||
});
|
||||
|
||||
it("4. Validates Min Range", () => {
|
||||
|
|
@ -101,15 +95,13 @@ describe("Range Slider spec", () => {
|
|||
agHelper.VerifyEvaluatedErrorMessage("This value must be less than 100");
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Min. Range", "10");
|
||||
|
||||
// agHelper.VerifyEvaluatedValue("10");
|
||||
});
|
||||
|
||||
it("5. Validates Default Start Value", () => {
|
||||
propPane.UpdatePropertyFieldValue("Default Start Value", "-100");
|
||||
|
||||
agHelper.VerifyEvaluatedErrorMessage(
|
||||
"This value must be greater than min value",
|
||||
"This value must be greater than or equal to the min value",
|
||||
);
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Default Start Value", "110");
|
||||
|
|
@ -123,8 +115,6 @@ describe("Range Slider spec", () => {
|
|||
agHelper.VerifyEvaluatedErrorMessage("This value must be a number");
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Default Start Value", "10");
|
||||
|
||||
// agHelper.VerifyEvaluatedValue("10");
|
||||
});
|
||||
|
||||
it("6. Validates Default End Value", () => {
|
||||
|
|
@ -137,7 +127,7 @@ describe("Range Slider spec", () => {
|
|||
propPane.UpdatePropertyFieldValue("Default End Value", "110");
|
||||
|
||||
agHelper.VerifyEvaluatedErrorMessage(
|
||||
"This value must be less than max value",
|
||||
"This value must be less than or equal to the max value",
|
||||
);
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Default End Value", "asd");
|
||||
|
|
@ -145,8 +135,6 @@ describe("Range Slider spec", () => {
|
|||
agHelper.VerifyEvaluatedErrorMessage("This value must be a number");
|
||||
|
||||
propPane.UpdatePropertyFieldValue("Default End Value", "100");
|
||||
|
||||
// agHelper.VerifyEvaluatedValue("100");
|
||||
});
|
||||
|
||||
it("7. Change Step Size and check if binding value changes", () => {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.addDsl(dsl);
|
||||
});
|
||||
|
||||
it("should test that allow Add new row property is present", () => {
|
||||
it("1.1. should test that allow Add new row property is present", () => {
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
cy.get(".t--property-control-allowaddingarow").should("exist");
|
||||
cy.get(
|
||||
|
|
@ -24,7 +24,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
).should("exist");
|
||||
});
|
||||
|
||||
it("should test that Add new row link appears on the UI when the allow add new row property is enabled", () => {
|
||||
it("1.2. should test that Add new row link appears on the UI when the allow add new row property is enabled", () => {
|
||||
cy.get(".t--add-new-row").should("not.exist");
|
||||
propPane.ToggleOnOrOff("Allow adding a row", "On");
|
||||
cy.get(".t--add-new-row").should("exist");
|
||||
|
|
@ -32,7 +32,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--add-new-row").should("not.exist");
|
||||
});
|
||||
|
||||
it("should test that onSave, onDiscard and default row are showing up only when the allow add new property is enabled", () => {
|
||||
it("1.3. should test that onSave, onDiscard and default row are showing up only when the allow add new property is enabled", () => {
|
||||
cy.get(".t--property-control-onsave").should("not.exist");
|
||||
cy.get(".t--property-control-ondiscard").should("not.exist");
|
||||
cy.get(".t--property-control-defaultvalues").should("not.exist");
|
||||
|
|
@ -42,14 +42,14 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--property-control-defaultvalues").should("exist");
|
||||
});
|
||||
|
||||
it("should test that add new row link is disabled during the inline editing flow", () => {
|
||||
it("1.4. should test that add new row link is disabled during the inline editing flow", () => {
|
||||
cy.get(".t--add-new-row.disabled").should("not.exist");
|
||||
cy.makeColumnEditable("step");
|
||||
cy.editTableCell(0, 0);
|
||||
cy.get(".t--add-new-row.disabled").should("exist");
|
||||
});
|
||||
|
||||
it("should test that clicking on add new row link adds an empty row at the top of the table", () => {
|
||||
it("1.5. should test that clicking on add new row link adds an empty row at the top of the table", () => {
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
cy.get(".tableWrap .new-row").should("not.exist");
|
||||
cy.get(".t--add-new-row").click();
|
||||
|
|
@ -57,7 +57,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
});
|
||||
|
||||
it("should test that new row is getting populated with the default row property value", () => {
|
||||
it("1.6. should test that new row is getting populated with the default row property value", () => {
|
||||
cy.updateCodeInput(
|
||||
".t--property-control-defaultvalues",
|
||||
"{{{step: 'newStepCell'}}}",
|
||||
|
|
@ -70,7 +70,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
});
|
||||
|
||||
it("should test that inline editing, row selection, pagination, search, filters are actions cannot be performed while in add new row feature", () => {
|
||||
it("1.7. should test that inline editing, row selection, pagination, search, filters are actions cannot be performed while in add new row feature", () => {
|
||||
cy.get(".t--widget-tablewidgetv2 .t--search-input").should("exist");
|
||||
cy.get(".t--widget-tablewidgetv2 .t--table-filter-toggle-btn").should(
|
||||
"exist",
|
||||
|
|
@ -111,7 +111,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
});
|
||||
|
||||
it("should test that only editable column cells are in editmode in the new row", () => {
|
||||
it("1.8. should test that only editable column cells are in editmode in the new row", () => {
|
||||
cy.get(".t--add-new-row").click();
|
||||
cy.get(
|
||||
`[data-colindex=0][data-rowindex=0] .t--inlined-cell-editor`,
|
||||
|
|
@ -136,7 +136,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
).should("not.exist");
|
||||
});
|
||||
|
||||
it("should test that newRow property holds the entered data", () => {
|
||||
it("1.9. should test that newRow property holds the entered data", () => {
|
||||
cy.makeColumnEditable("step");
|
||||
cy.makeColumnEditable("task");
|
||||
cy.enterTableCellValue(0, 0, "22");
|
||||
|
|
@ -150,7 +150,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
);
|
||||
});
|
||||
|
||||
it("should test that non data (iconBitton, button, menubutton) column cells are not showing up", () => {
|
||||
it("1.10. should test that non data (iconBitton, button, menubutton) column cells are not showing up", () => {
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
cy.editColumn("step");
|
||||
["Button", "Menu Button", "Icon Button"].forEach((columnType) => {
|
||||
|
|
@ -174,7 +174,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.addDsl(dsl);
|
||||
});
|
||||
|
||||
it("should test that validation is working for a new row cell", () => {
|
||||
it("2.1. should test that validation is working for a new row cell", () => {
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
propPane.ToggleOnOrOff("Allow adding a row", "On");
|
||||
cy.get(".t--add-new-row").click();
|
||||
|
|
@ -262,7 +262,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
});
|
||||
|
||||
it("should test that validation variable isNewRow is working", () => {
|
||||
it("2.2. should test that validation variable isNewRow is working", () => {
|
||||
propPane.UpdatePropertyFieldValue(
|
||||
"Valid",
|
||||
"{{isNewRow ? (editedValue === 1) : (editedValue === 2)}}",
|
||||
|
|
@ -290,7 +290,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
});
|
||||
|
||||
it("should test that validation is working for more than one add new row cell at a time", () => {
|
||||
it("2.3. should test that validation is working for more than one add new row cell at a time", () => {
|
||||
propPane.UpdatePropertyFieldValue("Valid", "{{editedValue === 1}}");
|
||||
cy.get(".t--property-pane-back-btn").click();
|
||||
cy.wait(500);
|
||||
|
|
@ -306,7 +306,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(`.t--inlined-cell-editor-has-error`).should("have.length", 2);
|
||||
});
|
||||
|
||||
it("should test that validation error message only appears when a cell is in focus", () => {
|
||||
it("2.4. should test that validation error message only appears when a cell is in focus", () => {
|
||||
cy.get(".error-tooltip .bp3-popover-content").should("not.exist");
|
||||
cy.get(`[data-colindex=1][data-rowindex=0] input`).focus();
|
||||
cy.get(".error-tooltip .bp3-popover-content").should("have.length", 1);
|
||||
|
|
@ -316,7 +316,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".error-tooltip .bp3-popover-content").should("have.length", 1);
|
||||
});
|
||||
|
||||
it("should test that save button is disabled when there is an error", () => {
|
||||
it("2.5. should test that save button is disabled when there is an error", () => {
|
||||
cy.get(".t--save-new-row").should("be.disabled");
|
||||
cy.get(`.t--inlined-cell-editor-has-error`).should("have.length", 2);
|
||||
cy.enterTableCellValue(0, 0, "1");
|
||||
|
|
@ -335,7 +335,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.addDsl(dsl);
|
||||
});
|
||||
|
||||
it("should test that discard button is undoing the add new feature", () => {
|
||||
it("3.1. should test that discard button is undoing the add new feature", () => {
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
propPane.ToggleOnOrOff("Allow adding a row", "On");
|
||||
cy.get(".tableWrap .new-row").should("not.exist");
|
||||
|
|
@ -344,7 +344,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
});
|
||||
|
||||
it("should test that discard events is triggered when user clicks on the discard button", () => {
|
||||
it("3.2. should test that discard events is triggered when user clicks on the discard button", () => {
|
||||
cy.get(
|
||||
".t--property-control-ondiscard .t--open-dropdown-Select-Action",
|
||||
).click({ force: true });
|
||||
|
|
@ -354,16 +354,11 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".tableWrap .new-row").should("exist");
|
||||
cy.get(".t--discard-new-row").click({ force: true });
|
||||
cy.get(widgetsPage.toastAction).should("be.visible");
|
||||
cy.get(widgetsPage.toastActionText)
|
||||
.last()
|
||||
.invoke("text")
|
||||
.then((text) => {
|
||||
expect(text).to.equal("discarded!!");
|
||||
});
|
||||
agHelper.AssertContains("discarded!!");
|
||||
cy.get(".tableWrap .new-row").should("not.exist");
|
||||
});
|
||||
|
||||
it("should test that save event is triggered when user clicks on the save button", () => {
|
||||
it("3.3. should test that save event is triggered when user clicks on the save button", () => {
|
||||
cy.get(
|
||||
".t--property-control-onsave .t--open-dropdown-Select-Action",
|
||||
).click({ force: true });
|
||||
|
|
@ -373,12 +368,7 @@ describe("Table widget Add new row feature's", () => {
|
|||
cy.get(".tableWrap .new-row").should("exist");
|
||||
cy.get(".t--save-new-row").click({ force: true });
|
||||
cy.get(widgetsPage.toastAction).should("be.visible");
|
||||
cy.get(widgetsPage.toastActionText)
|
||||
.last()
|
||||
.invoke("text")
|
||||
.then((text) => {
|
||||
expect(text).to.equal("saved!!");
|
||||
});
|
||||
agHelper.AssertContains("saved!!");
|
||||
cy.get(".tableWrap .new-row").should("not.exist");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ const dsl = require("../../../../../fixtures/Table/InlineEditingDSL.json");
|
|||
const commonlocators = require("../../../../../locators/commonlocators.json");
|
||||
const widgetsPage = require("../../../../../locators/Widgets.json");
|
||||
import { ObjectsRegistry } from "../../../../../support/Objects/Registry";
|
||||
import { PROPERTY_SELECTOR } from "../../../../../locators/WidgetLocators";
|
||||
const agHelper = ObjectsRegistry.AggregateHelper;
|
||||
|
||||
describe("Table widget inline editing functionality", () => {
|
||||
|
|
@ -711,4 +712,104 @@ describe("Table widget inline editing functionality", () => {
|
|||
"[data-colindex='0'][data-rowindex='0'] .t--inlined-cell-editor",
|
||||
).should("not.have.css", "height", "34px");
|
||||
});
|
||||
|
||||
it("26. should check if updatedRowIndex is getting updated for single row update mode", () => {
|
||||
cy.dragAndDropToCanvas("textwidget", { x: 400, y: 400 });
|
||||
cy.get(".t--widget-textwidget").should("exist");
|
||||
cy.updateCodeInput(
|
||||
".t--property-control-text",
|
||||
`{{Table1.updatedRowIndex}}`,
|
||||
);
|
||||
|
||||
cy.dragAndDropToCanvas("buttonwidget", { x: 300, y: 300 });
|
||||
cy.get(".t--widget-buttonwidget").should("exist");
|
||||
cy.get(PROPERTY_SELECTOR.onClick)
|
||||
.find(".t--js-toggle")
|
||||
.click();
|
||||
cy.updateCodeInput(".t--property-control-label", "Reset");
|
||||
cy.updateCodeInput(
|
||||
PROPERTY_SELECTOR.onClick,
|
||||
`{{resetWidget("Table1",true)}}`,
|
||||
);
|
||||
|
||||
// case 1: check if updatedRowIndex has -1 as the default value:
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", -1);
|
||||
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
|
||||
cy.makeColumnEditable("step");
|
||||
cy.wait(1000);
|
||||
|
||||
// case 2: check if updatedRowIndex is 0, when cell at row 0 is updated.
|
||||
cy.editTableCell(0, 0);
|
||||
cy.enterTableCellValue(0, 0, "#12").type("{enter}");
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", 0);
|
||||
|
||||
// case 3: check if updatedRowIndex is -1 when changes are discarded.
|
||||
cy.discardTableRow(4, 0);
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", -1);
|
||||
|
||||
// case 4: check if the updateRowIndex is -1 when widget is reset
|
||||
cy.editTableCell(0, 1);
|
||||
cy.enterTableCellValue(0, 1, "#13").type("{enter}");
|
||||
cy.contains("Reset").click({ force: true });
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", -1);
|
||||
|
||||
// case 5: check if the updatedRowIndex changes to -1 when the table data changes.
|
||||
cy.wait(1000);
|
||||
cy.editTableCell(0, 2);
|
||||
cy.enterTableCellValue(0, 2, "#14").type("{enter}");
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
cy.get(widgetsPage.tabedataField).type("{backspace}");
|
||||
cy.wait(300);
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", -1);
|
||||
});
|
||||
|
||||
it.only("27. should check if updatedRowIndex is getting updated for multi row update mode", () => {
|
||||
cy.dragAndDropToCanvas("textwidget", { x: 400, y: 400 });
|
||||
cy.get(".t--widget-textwidget").should("exist");
|
||||
cy.updateCodeInput(
|
||||
".t--property-control-text",
|
||||
`{{Table1.updatedRowIndex}}`,
|
||||
);
|
||||
|
||||
cy.dragAndDropToCanvas("buttonwidget", { x: 300, y: 300 });
|
||||
cy.get(".t--widget-buttonwidget").should("exist");
|
||||
cy.get(PROPERTY_SELECTOR.onClick)
|
||||
.find(".t--js-toggle")
|
||||
.click();
|
||||
cy.updateCodeInput(".t--property-control-label", "Reset");
|
||||
cy.updateCodeInput(
|
||||
PROPERTY_SELECTOR.onClick,
|
||||
`{{resetWidget("Table1",true)}}`,
|
||||
);
|
||||
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
|
||||
cy.makeColumnEditable("step");
|
||||
cy.get(".t--button-tab-CUSTOM").click({ force: true });
|
||||
cy.wait(1000);
|
||||
|
||||
// case 1: check if updatedRowIndex is 0, when cell at row 0 is updated.
|
||||
cy.editTableCell(0, 0);
|
||||
cy.enterTableCellValue(0, 0, "#12").type("{enter}");
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", 0);
|
||||
|
||||
// case 2: check if the updateRowIndex is -1 when widget is reset
|
||||
cy.editTableCell(0, 1);
|
||||
cy.enterTableCellValue(0, 1, "#13").type("{enter}");
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", 1);
|
||||
cy.contains("Reset").click({ force: true });
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", -1);
|
||||
|
||||
// case 3: check if the updatedRowIndex changes to -1 when the table data changes.
|
||||
cy.wait(1000);
|
||||
cy.editTableCell(0, 2);
|
||||
cy.enterTableCellValue(0, 2, "#14").type("{enter}");
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", 2);
|
||||
cy.openPropertyPane("tablewidgetv2");
|
||||
cy.get(widgetsPage.tabedataField).type("{backspace}");
|
||||
cy.wait(300);
|
||||
cy.get(commonlocators.textWidgetContainer).should("contain.text", -1);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ describe("Test Suite to validate copy/paste table Widget V2", function() {
|
|||
cy.hoverAndClickParticularIndex(1);
|
||||
cy.selectAction("Show Bindings");
|
||||
cy.get(apiwidget.propertyList).then(function($lis) {
|
||||
expect($lis).to.have.length(19);
|
||||
expect($lis).to.have.length(20);
|
||||
expect($lis.eq(0)).to.contain("{{Table1Copy.selectedRow}}");
|
||||
expect($lis.eq(1)).to.contain("{{Table1Copy.selectedRows}}");
|
||||
});
|
||||
|
|
|
|||
|
|
@ -12,6 +12,15 @@ describe("Text Widget color/font/alignment Functionality", function() {
|
|||
cy.openPropertyPane("textwidget");
|
||||
});
|
||||
it("Test to validate parsing link", function() {
|
||||
// Add link to text widget
|
||||
cy.testCodeMirror("app.appsmith.com");
|
||||
// check if it's a link when no http or https is passed,
|
||||
cy.get(`${commonlocators.headingTextStyle} a`).should(
|
||||
"have.attr",
|
||||
"href",
|
||||
"http://app.appsmith.com",
|
||||
);
|
||||
|
||||
// Add link to text widget
|
||||
cy.testCodeMirror("https://app.appsmith.com");
|
||||
// check if it's parsed as link
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
const apiwidget = require("../../../../locators/apiWidgetslocator.json");
|
||||
const datasourceFormData = require("../../../../fixtures/datasources.json");
|
||||
const datasourceEditor = require("../../../../locators/DatasourcesEditor.json");
|
||||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
|
||||
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
||||
let dataSources = ObjectsRegistry.DataSources;
|
||||
|
||||
describe("Authenticated API Datasource", function() {
|
||||
const URL = datasourceFormData["authenticatedApiUrl"];
|
||||
|
|
@ -44,4 +48,28 @@ describe("Authenticated API Datasource", function() {
|
|||
cy.contains(queryParams).should("not.exist");
|
||||
cy.deleteDatasource("FakeAuthenticatedApi");
|
||||
});
|
||||
|
||||
it("4. Bug: 18051 - Save and Authorise should return to datasource page in view mode and not new datasource page", () => {
|
||||
cy.NavigateToAPI_Panel();
|
||||
cy.get(apiwidget.createAuthApiDatasource).click();
|
||||
cy.generateUUID().then((uuid) => {
|
||||
cy.renameDatasource(uuid);
|
||||
cy.fillAuthenticatedAPIForm();
|
||||
cy.addOAuth2AuthorizationCodeDetails(
|
||||
testdata.accessTokenUrl,
|
||||
testdata.clientID,
|
||||
testdata.clientSecret,
|
||||
testdata.authorizationURL,
|
||||
);
|
||||
dataSources.AuthAPISaveAndAuthorize();
|
||||
cy.xpath('//input[@name="email"]').type("Test@email.com");
|
||||
cy.xpath('//input[@name="email"]').type("Test");
|
||||
cy.xpath("//input[@name='password']").type("Test@123");
|
||||
cy.xpath("//input[@id='login-submit']").click();
|
||||
cy.wait(2000);
|
||||
cy.reload();
|
||||
cy.get(".t--edit-datasource").should("be.visible");
|
||||
dataSources.DeleteDatasouceFromActiveTab(uuid);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
const testdata = require("../../../../fixtures/testdata.json");
|
||||
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
||||
|
||||
const agHelper = ObjectsRegistry.AggregateHelper,
|
||||
dataSources = ObjectsRegistry.DataSources;
|
||||
|
||||
describe("Datasource form related tests", function() {
|
||||
|
||||
it("1. Verify datasource structure refresh on save", () => {
|
||||
agHelper.GenerateUUID();
|
||||
cy.get("@guid").then((uid) => {
|
||||
const guid = uid;
|
||||
const dataSourceName = "Postgres " + guid;
|
||||
cy.get(dataSources._dsEntityItem).click();
|
||||
dataSources.NavigateToDSCreateNew();
|
||||
dataSources.CreatePlugIn("PostgreSQL");
|
||||
agHelper.RenameWithInPane(dataSourceName, false);
|
||||
dataSources.FillPostgresDSForm(false, "docker", "wrongPassword");
|
||||
dataSources.verifySchema("Failed to initialize pool");
|
||||
cy.get(dataSources._activeDS)
|
||||
.contains(dataSourceName)
|
||||
.click();
|
||||
dataSources.updatePassword("docker");
|
||||
dataSources.verifySchema("public.");
|
||||
dataSources.DeleteDatasouceFromActiveTab(dataSourceName);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
import { ObjectsRegistry } from "../../../../support/Objects/Registry";
|
||||
const adminSettings = require("../../../../locators/AdminsSettings");
|
||||
|
||||
describe("Embed settings options", function() {
|
||||
const {
|
||||
AggregateHelper: agHelper,
|
||||
DeployMode: deployMode,
|
||||
EntityExplorer: ee,
|
||||
HomePage: homePage,
|
||||
} = ObjectsRegistry;
|
||||
|
||||
const getIframeBody = () => {
|
||||
// get the iframe > document > body
|
||||
// and retry until the body element is not empty
|
||||
return (
|
||||
cy
|
||||
.get(".t--widget-iframewidget iframe")
|
||||
.its("0.contentDocument.body")
|
||||
.should("not.be.empty")
|
||||
// wraps "body" DOM element to allow
|
||||
// chaining more Cypress commands, like ".find(...)"
|
||||
// https://on.cypress.io/wrap
|
||||
.then(cy.wrap)
|
||||
);
|
||||
};
|
||||
|
||||
before(() => {
|
||||
ee.DragDropWidgetNVerify("buttonwidget", 100, 100);
|
||||
deployMode.DeployApp();
|
||||
cy.get("[data-cy='viewmode-share']").click();
|
||||
cy.get(".t--deployed-url input")
|
||||
.invoke("attr", "value")
|
||||
.as("embeddedAppUrl");
|
||||
cy.enablePublicAccess();
|
||||
cy.get(".t--back-to-home").click();
|
||||
homePage.CreateNewApplication();
|
||||
ee.DragDropWidgetNVerify("iframewidget", 100, 100);
|
||||
cy.get("@embeddedAppUrl").then((url) => {
|
||||
cy.testJsontext("url", url);
|
||||
});
|
||||
// cy.testJsontext("url", this.embeddedAppUrl);
|
||||
deployMode.DeployApp();
|
||||
cy.get("[data-cy='viewmode-share']").click();
|
||||
cy.get(".t--deployed-url input")
|
||||
.invoke("attr", "value")
|
||||
.as("deployUrl");
|
||||
cy.enablePublicAccess();
|
||||
cy.wait(6000);
|
||||
getIframeBody()
|
||||
.contains("Submit")
|
||||
.should("exist");
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
agHelper.RestoreLocalStorageCache();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
agHelper.SaveLocalStorageCache();
|
||||
});
|
||||
|
||||
describe("Wrapper to get access to the alias in all tests", () => {
|
||||
it("1. Allow embedding everywhere", function() {
|
||||
cy.log(this.deployUrl);
|
||||
cy.get(".t--back-to-home").click();
|
||||
cy.get(".admin-settings-menu-option").click();
|
||||
cy.get(".t--admin-settings-APPSMITH_ALLOWED_FRAME_ANCESTORS").within(
|
||||
() => {
|
||||
cy.get("input")
|
||||
.eq(0)
|
||||
.click();
|
||||
},
|
||||
);
|
||||
cy.get(adminSettings.saveButton).click();
|
||||
cy.wait(60000);
|
||||
cy.wait(["@getEnvVariables", "@getEnvVariables"]).then((interception) => {
|
||||
const {
|
||||
APPSMITH_ALLOWED_FRAME_ANCESTORS,
|
||||
} = interception[1].response.body.data;
|
||||
expect(APPSMITH_ALLOWED_FRAME_ANCESTORS).to.equal("*");
|
||||
});
|
||||
cy.get(adminSettings.restartNotice).should("not.exist");
|
||||
cy.visit(this.deployUrl);
|
||||
getIframeBody()
|
||||
.contains("Submit")
|
||||
.should("exist");
|
||||
});
|
||||
|
||||
it("2. Limit embedding", function() {
|
||||
cy.log(this.deployUrl);
|
||||
cy.get(".t--back-to-home").click();
|
||||
cy.get(".admin-settings-menu-option").click();
|
||||
cy.get(".t--admin-settings-APPSMITH_ALLOWED_FRAME_ANCESTORS").within(
|
||||
() => {
|
||||
cy.get("input")
|
||||
.eq(1)
|
||||
.click();
|
||||
cy.get(".bp3-tag-remove")
|
||||
.eq(1)
|
||||
.click();
|
||||
cy.get(".bp3-tag-remove")
|
||||
.eq(0)
|
||||
.click();
|
||||
cy.get(".bp3-input-ghost")
|
||||
.type(window.location.origin)
|
||||
.blur();
|
||||
},
|
||||
);
|
||||
cy.get(adminSettings.saveButton).click();
|
||||
cy.wait(50000);
|
||||
cy.get(adminSettings.restartNotice).should("not.exist");
|
||||
cy.visit(this.deployUrl);
|
||||
getIframeBody()
|
||||
.contains("Submit")
|
||||
.should("exist");
|
||||
});
|
||||
it("3. Disable everywhere", function() {
|
||||
cy.log(this.deployUrl);
|
||||
cy.get(".t--back-to-home").click();
|
||||
cy.get(".admin-settings-menu-option").click();
|
||||
cy.get(".t--admin-settings-APPSMITH_ALLOWED_FRAME_ANCESTORS").within(
|
||||
() => {
|
||||
cy.get("input")
|
||||
.last()
|
||||
.click();
|
||||
},
|
||||
);
|
||||
cy.get(adminSettings.saveButton).click();
|
||||
cy.wait(60000);
|
||||
cy.get(adminSettings.restartNotice).should("not.exist");
|
||||
cy.visit(this.deployUrl);
|
||||
cy.wait(["@getEnvVariables", "@getEnvVariables"]).then((interception) => {
|
||||
const {
|
||||
APPSMITH_ALLOWED_FRAME_ANCESTORS,
|
||||
} = interception[1].response.body.data;
|
||||
expect(APPSMITH_ALLOWED_FRAME_ANCESTORS).to.equal("'none'");
|
||||
});
|
||||
getIframeBody()
|
||||
.contains("Submit")
|
||||
.should("not.exist");
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -25,4 +25,5 @@ export default {
|
|||
disconnectBtn: "[data-testid='disconnect-service-button']",
|
||||
formSignupDisabled: "[data-cy='APPSMITH_SIGNUP_DISABLED']",
|
||||
formLoginDisabled: "[data-cy='APPSMITH_FORM_LOGIN_DISABLED']",
|
||||
embedSettings: ".t--admin-settings-APPSMITH_ALLOWED_FRAME_ANCESTORS",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -192,5 +192,16 @@
|
|||
"cancelActionExecution": ".t--cancel-action-button",
|
||||
"codeScannerScannerLayout": ".t--property-control-scannerlayout",
|
||||
"codeScannerVideo": ".code-scanner-camera-container video",
|
||||
"codeScannerDisabledSVGIcon": ".code-scanner-camera-container div[disabled] svg"
|
||||
"codeScannerDisabledSVGIcon": ".code-scanner-camera-container div[disabled] svg",
|
||||
"layoutHeightDropdown": ".t--property-control-height .remixicon-icon",
|
||||
"fixed": "[data-cy='t--dropdown-option-Fixed']",
|
||||
"autoHeight": "[data-cy='t--dropdown-option-Auto Height']",
|
||||
"autoHeightWithLimits": "[data-cy='t--dropdown-option-Auto Height with limits']",
|
||||
"minHeight": "minheight\\(inrows\\)",
|
||||
"maxHeight": "maxheight\\(inrows\\)",
|
||||
"overlayMin": "[data-cy='t--auto-height-overlay-min']",
|
||||
"overlayMax": "[data-cy='t--auto-height-overlay-max']",
|
||||
"addOption": ".t--property-control-options-add",
|
||||
"showTabsControl": ".t--property-control-showtabs .bp3-control-indicator",
|
||||
"checkboxIndicator": ".t--draggable-checkboxwidget .bp3-control-indicator"
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
|
@ -426,9 +426,14 @@ export class AggregateHelper {
|
|||
.invoke("text");
|
||||
}
|
||||
|
||||
public EnterActionValue(actionName: string, value: string, paste = true) {
|
||||
public EnterActionValue(
|
||||
actionName: string,
|
||||
value: string,
|
||||
paste = true,
|
||||
index = 0,
|
||||
) {
|
||||
cy.xpath(this.locator._actionTextArea(actionName))
|
||||
.first()
|
||||
.eq(index)
|
||||
.scrollIntoView()
|
||||
.focus()
|
||||
.type("{uparrow}", { force: true })
|
||||
|
|
@ -437,7 +442,7 @@ export class AggregateHelper {
|
|||
if ($cm.contents != "") {
|
||||
cy.log("The field is not empty");
|
||||
cy.xpath(this.locator._actionTextArea(actionName))
|
||||
.first()
|
||||
.eq(index)
|
||||
.scrollIntoView()
|
||||
.click({ force: true })
|
||||
.focused()
|
||||
|
|
@ -447,7 +452,7 @@ export class AggregateHelper {
|
|||
}
|
||||
this.Sleep();
|
||||
cy.xpath(this.locator._actionTextArea(actionName))
|
||||
.first()
|
||||
.eq(index)
|
||||
.scrollIntoView()
|
||||
.then((el: any) => {
|
||||
if (paste) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import { ObjectsRegistry } from "../Objects/Registry";
|
||||
|
||||
type RightPaneTabs = "datasources" | "connections";
|
||||
|
||||
export class ApiPage {
|
||||
public agHelper = ObjectsRegistry.AggregateHelper;
|
||||
public locator = ObjectsRegistry.CommonLocators;
|
||||
|
|
@ -30,6 +33,7 @@ export class ApiPage {
|
|||
verb +
|
||||
"')]";
|
||||
private _bodySubTab = (subTab: string) => `[data-cy='tab--${subTab}']`;
|
||||
private _rightPaneTab = (tab: string) => `[data-cy='t--tab-${tab}']`;
|
||||
_visibleTextSpan = (spanText: string) => "//span[text()='" + spanText + "']";
|
||||
_visibleTextDiv = (divText: string) => "//div[text()='" + divText + "']";
|
||||
_noBodyMessageDiv = "#NoBodyMessageDiv";
|
||||
|
|
@ -241,6 +245,17 @@ export class ApiPage {
|
|||
this.agHelper.GetNClick(this._bodySubTab(subTabName));
|
||||
}
|
||||
|
||||
AssertRightPaneSelectedTab(tabName: RightPaneTabs) {
|
||||
cy.get(this._rightPaneTab(tabName)).should(
|
||||
"have.class",
|
||||
"react-tabs__tab--selected",
|
||||
);
|
||||
}
|
||||
|
||||
SelectRightPaneTab(tabName: RightPaneTabs) {
|
||||
this.agHelper.GetNClick(this._rightPaneTab(tabName));
|
||||
}
|
||||
|
||||
ValidateQueryParams(param: { key: string; value: string }) {
|
||||
this.SelectPaneTab("Params");
|
||||
this.agHelper.ValidateCodeEditorContent(this._paramKey(0), param.key);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,9 @@ export class DataSources {
|
|||
"input[name = 'datasourceConfiguration.authentication.password']";
|
||||
private _testDs = ".t--test-datasource";
|
||||
private _saveDs = ".t--save-datasource";
|
||||
private _saveAndAuthorizeDS = ".t--save-and-authorize-datasource";
|
||||
private _datasourceCard = ".t--datasource";
|
||||
_dsEntityItem = "[data-guided-tour-id='explorer-entity-Datasources']";
|
||||
_activeDS = "[data-testid='active-datasource-name']";
|
||||
_templateMenu = ".t--template-menu";
|
||||
_templateMenuOption = (action: string) =>
|
||||
|
|
@ -45,6 +47,7 @@ export class DataSources {
|
|||
"//div[contains(@class, 't--ds-list')]//span[text()='" + dbName + "']";
|
||||
_runQueryBtn = ".t--run-query";
|
||||
_newDatabases = "#new-datasources";
|
||||
_newDatasourceContainer = "#new-integrations-wrapper"
|
||||
_selectDatasourceDropdown = "[data-cy=t--datasource-dropdown]";
|
||||
_selectTableDropdown = "[data-cy=t--table-dropdown]";
|
||||
_selectSheetNameDropdown = "[data-cy=t--sheetName-dropdown]";
|
||||
|
|
@ -106,6 +109,7 @@ export class DataSources {
|
|||
_gsScopeOptions = ".ads-dropdown-options-wrapper div > span div span";
|
||||
private _queryTimeout =
|
||||
"//input[@name='actionConfiguration.timeoutInMillisecond']";
|
||||
_getStructureReq = "/api/v1/datasources/*/structure?ignoreCache=true";
|
||||
|
||||
public StartDataSourceRoutes() {
|
||||
cy.intercept("PUT", "/api/v1/datasources/*").as("saveDatasource");
|
||||
|
|
@ -217,6 +221,7 @@ export class DataSources {
|
|||
// cy.get(this._dsCreateNewTab)
|
||||
// .should("be.visible")
|
||||
// .click({ force: true });
|
||||
cy.get(this._newDatasourceContainer).scrollTo("bottom");
|
||||
cy.get(this._newDatabases).should("be.visible");
|
||||
}
|
||||
|
||||
|
|
@ -331,6 +336,11 @@ export class DataSources {
|
|||
// }).should("have.nested.property", "response.body.responseMeta.status", 200);
|
||||
}
|
||||
|
||||
public AuthAPISaveAndAuthorize() {
|
||||
cy.get(this._saveAndAuthorizeDS).click();
|
||||
this.agHelper.ValidateNetworkStatus("@saveDatasource", 200);
|
||||
}
|
||||
|
||||
public DeleteDatasouceFromActiveTab(
|
||||
datasourceName: string,
|
||||
expectedRes = 200,
|
||||
|
|
@ -680,4 +690,19 @@ export class DataSources {
|
|||
this.agHelper.AssertAutoSave();
|
||||
this.agHelper.GetNClick(this._queryResponse("QUERY"));
|
||||
}
|
||||
|
||||
//Update with new password in the datasource conf page
|
||||
public updatePassword(newPassword: string){
|
||||
cy.get(this._sectionAuthentication).click();
|
||||
cy.get(this._password).type(newPassword);
|
||||
}
|
||||
|
||||
//Fetch schema from server and validate UI for the updates
|
||||
public verifySchema(schema: string){
|
||||
cy.intercept("GET", this._getStructureReq).as("getDSStructure");
|
||||
this.SaveDatasource();
|
||||
cy.wait("@getDSStructure").then(() => {
|
||||
cy.get(".bp3-collapse-body").contains(schema);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,9 @@ export class PropertyPane {
|
|||
this.agHelper.GetNClick(this._colorPickerV2Popover);
|
||||
this.agHelper.GetNClick(this._colorPickerV2Color, colorIndex);
|
||||
} else {
|
||||
this.agHelper.GetElement(this._colorInput(type)).clear();
|
||||
this.agHelper.GetElement(this._colorInput(type)).clear().wait(200);
|
||||
this.agHelper.TypeText(this._colorInput(type), colorIndex);
|
||||
this.agHelper.GetElement(this._colorInput(type)).clear().wait(200);
|
||||
this.agHelper.TypeText(this._colorInput(type), colorIndex);
|
||||
//this.agHelper.UpdateInput(this._colorInputField(type), colorIndex);//not working!
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1581,3 +1581,62 @@ Cypress.Commands.add("moveToContentTab", () => {
|
|||
.first()
|
||||
.click({ force: true });
|
||||
});
|
||||
|
||||
Cypress.Commands.add("openPropertyPaneWithIndex", (widgetType, index) => {
|
||||
const selector = `.t--draggable-${widgetType}`;
|
||||
cy.wait(500);
|
||||
cy.get(selector)
|
||||
.eq(index)
|
||||
.scrollIntoView()
|
||||
.trigger("mouseover", { force: true })
|
||||
.wait(500);
|
||||
cy.get(
|
||||
`${selector}:first-of-type .t--widget-propertypane-toggle > .t--widget-name`,
|
||||
)
|
||||
.eq(index)
|
||||
.scrollIntoView()
|
||||
.click({ force: true });
|
||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||
cy.wait(1000);
|
||||
});
|
||||
|
||||
Cypress.Commands.add("changeLayoutHeight", (locator) => {
|
||||
cy.get(".t--property-control-height .remixicon-icon")
|
||||
.scrollIntoView()
|
||||
.click({ force: true });
|
||||
cy.get(locator).click({ force: true });
|
||||
cy.wait("@updateLayout").should(
|
||||
"have.nested.property",
|
||||
"response.body.responseMeta.status",
|
||||
200,
|
||||
);
|
||||
});
|
||||
|
||||
Cypress.Commands.add("changeLayoutHeightWithoutWait", (locator) => {
|
||||
cy.get(".t--property-control-height .remixicon-icon")
|
||||
.scrollIntoView()
|
||||
.click({ force: true });
|
||||
cy.get(locator).click({ force: true });
|
||||
});
|
||||
|
||||
Cypress.Commands.add("checkMinDefaultValue", (endp, value) => {
|
||||
cy.get(".cm-m-null")
|
||||
.first()
|
||||
.invoke("text")
|
||||
.then((text) => {
|
||||
const someText = text;
|
||||
cy.log(someText);
|
||||
expect(someText).to.equal(value);
|
||||
});
|
||||
});
|
||||
|
||||
Cypress.Commands.add("checkMaxDefaultValue", (endp, value) => {
|
||||
cy.get(".cm-m-null")
|
||||
.last()
|
||||
.invoke("text")
|
||||
.then((text) => {
|
||||
const someText = text;
|
||||
cy.log(someText);
|
||||
expect(someText).to.equal(value);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ export const CONFIG = {
|
|||
iconSVG: IconSVG,
|
||||
needsMeta: false, // Defines if this widget adds any meta properties
|
||||
isCanvas: false, // Defines if this widget has a canvas within in which we can drop other widgets
|
||||
features: {
|
||||
dynamicHeight: false,
|
||||
},
|
||||
defaults: {
|
||||
widgetName: "{{name}}",
|
||||
rows: 1,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@
|
|||
"@blueprintjs/icons": "^3.10.0",
|
||||
"@blueprintjs/popover2": "^0.5.0",
|
||||
"@blueprintjs/select": "^3.10.0",
|
||||
"@craco/craco": "^7.0.0-alpha.3",
|
||||
"@draft-js-plugins/editor": "^4.1.0",
|
||||
"@draft-js-plugins/mention": "^4.5.1",
|
||||
"@fusioncharts/powercharts": "^3.16.0",
|
||||
|
|
@ -37,7 +36,6 @@
|
|||
"algoliasearch": "^4.2.0",
|
||||
"astring": "^1.7.5",
|
||||
"axios": "^0.27.2",
|
||||
"caniuse-lite": "^1.0.30001208",
|
||||
"classnames": "^2.3.1",
|
||||
"codemirror": "^5.59.2",
|
||||
"codemirror-graphql": "^1.2.14",
|
||||
|
|
@ -50,12 +48,10 @@
|
|||
"design-system": "npm:@appsmithorg/design-system@1.0.32",
|
||||
"downloadjs": "^1.4.7",
|
||||
"draft-js": "^0.11.7",
|
||||
"emoji-mart": "^3.0.1",
|
||||
"exceljs-lightweight": "^1.14.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"fast-xml-parser": "^3.17.5",
|
||||
"fastdom": "^1.0.11",
|
||||
"flow-bin": "^0.148.0",
|
||||
"focus-trap-react": "^8.9.2",
|
||||
"fuse.js": "^3.4.5",
|
||||
"fusioncharts": "^3.18.0",
|
||||
|
|
@ -66,20 +62,17 @@
|
|||
"husky": "^3.0.5",
|
||||
"immer": "^9.0.6",
|
||||
"instantsearch.css": "^7.4.2",
|
||||
"instantsearch.js": "^4.4.1",
|
||||
"interweave": "^12.7.2",
|
||||
"interweave-autolink": "^4.4.2",
|
||||
"js-beautify": "^1.14.0",
|
||||
"js-sha256": "^0.9.0",
|
||||
"jshint": "^2.13.4",
|
||||
"json-fn": "^1.1.1",
|
||||
"klona": "^2.0.5",
|
||||
"libphonenumber-js": "^1.9.44",
|
||||
"lint-staged": "^13.0.3",
|
||||
"localforage": "^1.7.3",
|
||||
"lodash": "^4.17.21",
|
||||
"lodash-es": "4.17.21",
|
||||
"lodash-move": "^1.1.1",
|
||||
"loglevel": "^1.7.1",
|
||||
"lottie-web": "^5.7.4",
|
||||
"mammoth": "^1.4.19",
|
||||
|
|
@ -102,7 +95,6 @@
|
|||
"rc-tree-select": "^5.4.0",
|
||||
"re-reselect": "^3.4.0",
|
||||
"react": "^16.12.0",
|
||||
"react-base-table": "^1.9.1",
|
||||
"react-beautiful-dnd": "^12.2.0",
|
||||
"react-custom-scrollbars": "^4.2.1",
|
||||
"react-device-detect": "^2.2.2",
|
||||
|
|
@ -117,12 +109,10 @@
|
|||
"react-google-recaptcha": "^2.1.0",
|
||||
"react-helmet": "^5.2.1",
|
||||
"react-hook-form": "^7.28.0",
|
||||
"react-infinite-scroller": "^1.2.4",
|
||||
"react-instantsearch-dom": "^6.4.0",
|
||||
"react-json-view": "^1.21.3",
|
||||
"react-masonry-css": "^1.0.16",
|
||||
"react-media-recorder": "^1.6.1",
|
||||
"react-mentions": "^4.1.1",
|
||||
"react-modal": "^3.15.1",
|
||||
"react-page-visibility": "^7.0.0",
|
||||
"react-paginating": "^1.4.0",
|
||||
|
|
@ -141,7 +131,6 @@
|
|||
"react-tabs": "^3.0.0",
|
||||
"react-timer-hook": "^3.0.4",
|
||||
"react-toastify": "^5.5.0",
|
||||
"react-transition-group": "^4.3.0",
|
||||
"react-use-gesture": "^7.0.4",
|
||||
"react-virtuoso": "^1.9.0",
|
||||
"react-webcam": "^7.0.1",
|
||||
|
|
@ -198,6 +187,7 @@
|
|||
"devDependencies": {
|
||||
"@babel/helper-create-regexp-features-plugin": "^7.18.6",
|
||||
"@babel/helper-string-parser": "^7.19.4",
|
||||
"@craco/craco": "^7.0.0",
|
||||
"@faker-js/faker": "^7.4.0",
|
||||
"@sentry/webpack-plugin": "^1.18.9",
|
||||
"@testing-library/jest-dom": "5.16.1",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ export type URLBuilderParams = {
|
|||
hash?: string;
|
||||
params?: Record<string, any>;
|
||||
pageId: string;
|
||||
persistExistingParams?: boolean;
|
||||
};
|
||||
|
||||
export const fillPathname = (
|
||||
|
|
|
|||
|
|
@ -116,3 +116,10 @@ export const setApiPaneResponsePaneHeight: (
|
|||
type: ReduxActionTypes.SET_API_PANE_RESPONSE_PANE_HEIGHT,
|
||||
payload: { height: payload },
|
||||
});
|
||||
|
||||
export const setApiRightPaneSelectedTab: (
|
||||
payload: number,
|
||||
) => ReduxAction<{ selectedTab: number }> = (payload: number) => ({
|
||||
type: ReduxActionTypes.SET_API_RIGHT_PANE_SELECTED_TAB,
|
||||
payload: { selectedTab: payload },
|
||||
});
|
||||
|
|
|
|||
|
|
@ -20,13 +20,13 @@ export function setAutoHeightLayoutTreeAction(
|
|||
}
|
||||
|
||||
export function generateAutoHeightLayoutTreeAction(
|
||||
shouldCheckContainersForDynamicHeightUpdates: boolean,
|
||||
shouldCheckContainersForAutoHeightUpdates: boolean,
|
||||
layoutUpdated?: boolean,
|
||||
) {
|
||||
return {
|
||||
type: ReduxActionTypes.GENERATE_AUTO_HEIGHT_LAYOUT_TREE,
|
||||
payload: {
|
||||
shouldCheckContainersForDynamicHeightUpdates,
|
||||
shouldCheckContainersForAutoHeightUpdates,
|
||||
layoutUpdated: !!layoutUpdated,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import {
|
||||
ReduxActionTypes,
|
||||
ReduxAction,
|
||||
ReduxActionType,
|
||||
} from "@appsmith/constants/ReduxActionConstants";
|
||||
import { UpdateWidgetsPayload } from "reducers/entityReducers/canvasWidgetsReducer";
|
||||
import { DynamicPath } from "utils/DynamicBindingUtils";
|
||||
|
|
@ -24,6 +25,7 @@ export interface BatchPropertyUpdatePayload {
|
|||
modify?: Record<string, unknown>; //Key value pairs of paths and values to update
|
||||
remove?: string[]; //Array of paths to delete
|
||||
triggerPaths?: string[]; // Array of paths in the modify and remove list which are trigger paths
|
||||
postUpdateAction?: ReduxActionType; // Array of action types we need to dispatch after propert updates.
|
||||
}
|
||||
|
||||
export const batchUpdateWidgetProperty = (
|
||||
|
|
|
|||
|
|
@ -36,17 +36,12 @@ export const deleteCanvasCardsState = () => ({
|
|||
* action that update canvas layout
|
||||
*
|
||||
* @param width
|
||||
* @param height
|
||||
* @returns
|
||||
*/
|
||||
export const updateCanvasLayoutAction = (
|
||||
width: number,
|
||||
height: number | undefined,
|
||||
) => {
|
||||
export const updateCanvasLayoutAction = (width: number) => {
|
||||
return {
|
||||
type: ReduxActionTypes.UPDATE_CANVAS_LAYOUT,
|
||||
payload: {
|
||||
height,
|
||||
width,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import PerformanceTracker, {
|
|||
PerformanceTransactionName,
|
||||
} from "utils/PerformanceTracker";
|
||||
import { WidgetProps } from "widgets/BaseWidget";
|
||||
import { UpdateWidgetsPayload } from "reducers/entityReducers/canvasWidgetsReducer";
|
||||
|
||||
export const executeTrigger = (
|
||||
payload: ExecuteTriggerPayload,
|
||||
|
|
@ -154,3 +155,12 @@ export const groupWidgets = () => {
|
|||
type: ReduxActionTypes.GROUP_WIDGETS_INIT,
|
||||
};
|
||||
};
|
||||
|
||||
export const updateMultipleWidgetProperties = (
|
||||
widgetsToUpdate: UpdateWidgetsPayload,
|
||||
) => {
|
||||
return {
|
||||
type: ReduxActionTypes.UPDATE_MULTIPLE_WIDGET_PROPERTIES,
|
||||
payload: widgetsToUpdate,
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -688,6 +688,7 @@ export const ReduxActionTypes = {
|
|||
SET_API_PANE_CONFIG_SELECTED_TAB: "SET_API_PANE_CONFIG_SELECTED_TAB",
|
||||
SET_API_PANE_RESPONSE_SELECTED_TAB: "SET_API_PANE_RESPONSE_SELECTED_TAB",
|
||||
SET_API_PANE_RESPONSE_PANE_HEIGHT: "SET_API_PANE_RESPONSE_PANE_HEIGHT",
|
||||
SET_API_RIGHT_PANE_SELECTED_TAB: "SET_API_RIGHT_PANE_SELECTED_TAB",
|
||||
GENERATE_KEY_AND_SET_CODE_EDITOR_LAST_FOCUS:
|
||||
"GENERATE_KEY_AND_SET_CODE_EDITOR_LAST_FOCUS",
|
||||
SET_CODE_EDITOR_CURSOR_HISTORY: "SET_CODE_EDITOR_CURSOR_HISTORY",
|
||||
|
|
@ -712,6 +713,7 @@ export const ReduxActionTypes = {
|
|||
CHECK_CONTAINERS_FOR_AUTO_HEIGHT: "CHECK_CONTAINERS_FOR_AUTO_HEIGHT",
|
||||
UPDATE_WIDGET_AUTO_HEIGHT: "UPDATE_WIDGET_AUTO_HEIGHT",
|
||||
SET_LINT_ERRORS: "SET_LINT_ERRORS",
|
||||
SET_AUTO_HEIGHT_WITH_LIMITS_CHANGING: "SET_AUTO_HEIGHT_WITH_LIMITS_CHANGING",
|
||||
PROCESS_AUTO_HEIGHT_UPDATES: "PROCESS_AUTO_HEIGHT_UPDATES",
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ export const ERROR_EMPTY_APPLICATION_NAME = () =>
|
|||
export const API_PATH_START_WITH_SLASH_ERROR = () => `Path cannot start with /`;
|
||||
export const FIELD_REQUIRED_ERROR = () => `This field is required`;
|
||||
export const INPUT_DEFAULT_TEXT_MAX_CHAR_ERROR = (max: number) =>
|
||||
`Default text length must be less than ${max} characters`;
|
||||
`Default text length must be less than or equal to ${max} characters`;
|
||||
export const INPUT_TEXT_MAX_CHAR_ERROR = (max: number) =>
|
||||
`Input text length must be less than ${max} characters`;
|
||||
export const INPUT_DEFAULT_TEXT_MAX_NUM_ERROR = () =>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@ import {
|
|||
Setting,
|
||||
} from "@appsmith/pages/AdminSettings/config/types";
|
||||
import BrandingBadge from "pages/AppViewer/BrandingBadge";
|
||||
import { TagInput } from "design-system";
|
||||
import QuestionFillIcon from "remixicon-react/QuestionFillIcon";
|
||||
import localStorage from "utils/localStorage";
|
||||
import isUndefined from "lodash/isUndefined";
|
||||
|
||||
export const APPSMITH_INSTANCE_NAME_SETTING_SETTING: Setting = {
|
||||
id: "APPSMITH_INSTANCE_NAME",
|
||||
|
|
@ -81,6 +85,83 @@ export const APPSMITH_HIDE_WATERMARK_SETTING: Setting = {
|
|||
"Hello, I would like to upgrade and remove the watermark.",
|
||||
};
|
||||
|
||||
export const APPSMITH_ALLOWED_FRAME_ANCESTORS_SETTING: Setting = {
|
||||
id: "APPSMITH_ALLOWED_FRAME_ANCESTORS",
|
||||
name: "APPSMITH_ALLOWED_FRAME_ANCESTORS",
|
||||
category: SettingCategories.GENERAL,
|
||||
controlType: SettingTypes.RADIO,
|
||||
label: "Embed Settings",
|
||||
controlTypeProps: {
|
||||
options: [
|
||||
{
|
||||
badge: "NOT RECOMMENDED",
|
||||
tooltip: {
|
||||
icon: <QuestionFillIcon />,
|
||||
text:
|
||||
"Lets all domains, including malicious ones, embed your Appsmith apps. ",
|
||||
linkText: "SEE WHY THIS IS RISKY",
|
||||
link:
|
||||
"https://docs.appsmith.com/getting-started/setup/instance-configuration/frame-ancestors#why-should-i-control-this",
|
||||
},
|
||||
label: "Allow embedding everywhere",
|
||||
value: "ALLOW_EMBEDDING_EVERYWHERE",
|
||||
},
|
||||
{
|
||||
label: "Limit embedding to certain URLs",
|
||||
value: "LIMIT_EMBEDDING",
|
||||
nodeLabel: "You can add one or more URLs",
|
||||
node: <TagInput input={{}} placeholder={""} type={"text"} />,
|
||||
nodeInputPath: "input",
|
||||
nodeParentClass: "tag-input",
|
||||
},
|
||||
{
|
||||
label: "Disable embedding everywhere",
|
||||
value: "DISABLE_EMBEDDING_EVERYWHERE",
|
||||
},
|
||||
],
|
||||
},
|
||||
format: (value: string) => {
|
||||
if (value === "*") {
|
||||
return {
|
||||
value: "ALLOW_EMBEDDING_EVERYWHERE",
|
||||
};
|
||||
} else if (value === "'none'") {
|
||||
return {
|
||||
value: "DISABLE_EMBEDDING_EVERYWHERE",
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
value: "LIMIT_EMBEDDING",
|
||||
additionalData: value ? value.replaceAll(" ", ",") : "",
|
||||
};
|
||||
}
|
||||
},
|
||||
parse: (value: { value: string; additionalData?: any }) => {
|
||||
// Retrieve values from local storage while switching to limit by url option
|
||||
const sources = isUndefined(value.additionalData)
|
||||
? localStorage.getItem("ALLOWED_FRAME_ANCESTORS") ?? ""
|
||||
: value.additionalData.replaceAll(",", " ");
|
||||
// If they are one of the other options we don't store it in storage since it will
|
||||
// set in the env variable on save
|
||||
if (sources !== "*" && sources !== "'none'") {
|
||||
localStorage.setItem("ALLOWED_FRAME_ANCESTORS", sources);
|
||||
}
|
||||
|
||||
if (value.value === "ALLOW_EMBEDDING_EVERYWHERE") {
|
||||
return "*";
|
||||
} else if (value.value === "DISABLE_EMBEDDING_EVERYWHERE") {
|
||||
return "'none'";
|
||||
} else {
|
||||
return sources;
|
||||
}
|
||||
},
|
||||
validate: (value: string) => {
|
||||
if (!value) {
|
||||
return "This field cannot be empty";
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export const config: AdminConfigType = {
|
||||
icon: "settings-2-line",
|
||||
type: SettingCategories.GENERAL,
|
||||
|
|
@ -93,5 +174,6 @@ export const config: AdminConfigType = {
|
|||
APPSMITH_DOWNLOAD_DOCKER_COMPOSE_FILE_SETTING,
|
||||
APPSMITH_DISABLE_TELEMETRY_SETTING,
|
||||
APPSMITH_HIDE_WATERMARK_SETTING,
|
||||
APPSMITH_ALLOWED_FRAME_ANCESTORS_SETTING,
|
||||
],
|
||||
} as AdminConfigType;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,32 @@ import React from "react";
|
|||
import { ReduxAction } from "@appsmith/constants/ReduxActionConstants";
|
||||
import { Dispatch } from "react";
|
||||
import { EventName } from "utils/AnalyticsUtil";
|
||||
import { RadioProps } from "pages/Settings/FormGroup/Radio";
|
||||
|
||||
type ControlType = {
|
||||
[K in keyof ControlPropsType]: {
|
||||
controlType: K;
|
||||
controlTypeProps?: ControlPropsType[K];
|
||||
};
|
||||
}[keyof ControlPropsType];
|
||||
|
||||
type ControlPropsType = {
|
||||
[SettingTypes.RADIO]: RadioProps;
|
||||
[SettingTypes.TEXTINPUT]: unknown;
|
||||
[SettingTypes.TOGGLE]: unknown;
|
||||
[SettingTypes.LINK]: unknown;
|
||||
[SettingTypes.BUTTON]: unknown;
|
||||
[SettingTypes.GROUP]: unknown;
|
||||
[SettingTypes.TEXT]: unknown;
|
||||
[SettingTypes.UNEDITABLEFIELD]: unknown;
|
||||
[SettingTypes.ACCORDION]: unknown;
|
||||
[SettingTypes.TAGINPUT]: unknown;
|
||||
[SettingTypes.DROPDOWN]: unknown;
|
||||
[SettingTypes.CHECKBOX]: unknown;
|
||||
};
|
||||
|
||||
export enum SettingTypes {
|
||||
RADIO = "RADIO",
|
||||
TEXTINPUT = "TEXTINPUT",
|
||||
TOGGLE = "TOGGLE",
|
||||
LINK = "LINK",
|
||||
|
|
@ -25,11 +49,12 @@ export enum SettingSubtype {
|
|||
PASSWORD = "password",
|
||||
}
|
||||
|
||||
export interface Setting {
|
||||
export type Setting = ControlType & {
|
||||
id: string;
|
||||
category?: string;
|
||||
controlType: SettingTypes;
|
||||
controlSubType?: SettingSubtype;
|
||||
format?: (value: string) => any;
|
||||
parse?: (value: any) => any;
|
||||
helpText?: string;
|
||||
label?: string;
|
||||
name?: string;
|
||||
|
|
@ -60,7 +85,7 @@ export interface Setting {
|
|||
needsUpgrade?: boolean;
|
||||
upgradeLogEventName?: EventName;
|
||||
upgradeIntercomMessage?: string;
|
||||
}
|
||||
};
|
||||
|
||||
export interface Category {
|
||||
title: string;
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ import { AutoHeightLayoutTreeReduxState } from "reducers/entityReducers/autoHeig
|
|||
import { CanvasLevelsReduxState } from "reducers/entityReducers/autoHeightReducers/canvasLevelsReducer";
|
||||
import { LintErrors } from "reducers/lintingReducers/lintErrorsReducers";
|
||||
import lintErrorReducer from "reducers/lintingReducers";
|
||||
import { AutoHeightUIState } from "reducers/uiReducers/autoHeightReducer";
|
||||
|
||||
export const reducerObject = {
|
||||
entities: entityReducer,
|
||||
|
|
@ -126,6 +127,7 @@ export interface AppState {
|
|||
mainCanvas: MainCanvasReduxState;
|
||||
focusHistory: FocusHistoryState;
|
||||
editorContext: EditorContextState;
|
||||
autoHeightUI: AutoHeightUIState;
|
||||
};
|
||||
entities: {
|
||||
canvasWidgetsStructure: CanvasWidgetStructure;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import SuperUserSagas from "@appsmith/sagas/SuperUserSagas";
|
|||
import NavigationSagas from "sagas/NavigationSagas";
|
||||
import editorContextSagas from "sagas/editorContextSagas";
|
||||
import PageVisibilitySaga from "sagas/PageVisibilitySagas";
|
||||
import AutoHeightSagas from "sagas/autoHeightSagas";
|
||||
import tenantSagas from "@appsmith/sagas/tenantSagas";
|
||||
|
||||
export const sagas = [
|
||||
|
|
@ -87,5 +88,6 @@ export const sagas = [
|
|||
NavigationSagas,
|
||||
editorContextSagas,
|
||||
PageVisibilitySaga,
|
||||
AutoHeightSagas,
|
||||
tenantSagas,
|
||||
];
|
||||
|
|
|
|||
|
|
@ -16,15 +16,16 @@ describe("<AutoHeightContainer />", () => {
|
|||
maxDynamicHeight={0}
|
||||
minDynamicHeight={0}
|
||||
onHeightUpdate={onHeightUpdate}
|
||||
widgetHeightInPixels={200}
|
||||
>
|
||||
<div data-testid="test" />
|
||||
</AutoHeightContainer>,
|
||||
)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("height", "auto");
|
||||
expect(tree).toHaveStyleRule("height", "auto !important");
|
||||
});
|
||||
|
||||
describe("when isAutoHeightWithLimits is false", () => {
|
||||
describe("when isAutoHeightWithLimits is false.", () => {
|
||||
it("should wrap the children in a simple div with class auto-height-container", async () => {
|
||||
const getTestComponent = () => (
|
||||
<AutoHeightContainer
|
||||
|
|
@ -32,6 +33,7 @@ describe("<AutoHeightContainer />", () => {
|
|||
maxDynamicHeight={0}
|
||||
minDynamicHeight={0}
|
||||
onHeightUpdate={onHeightUpdate}
|
||||
widgetHeightInPixels={200}
|
||||
>
|
||||
<div data-testid="test" />
|
||||
</AutoHeightContainer>
|
||||
|
|
@ -53,6 +55,7 @@ describe("<AutoHeightContainer />", () => {
|
|||
maxDynamicHeight={0}
|
||||
minDynamicHeight={0}
|
||||
onHeightUpdate={onHeightUpdate}
|
||||
widgetHeightInPixels={200}
|
||||
>
|
||||
<div data-testid="test" />
|
||||
</AutoHeightContainer>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
import React, { PropsWithChildren, useRef, useEffect, useState } from "react";
|
||||
import { GridDefaults } from "constants/WidgetConstants";
|
||||
import React, { PropsWithChildren, useEffect, useRef, useState } from "react";
|
||||
import { GridDefaults, WIDGET_PADDING } from "constants/WidgetConstants";
|
||||
import styled from "styled-components";
|
||||
import { WidgetProps } from "widgets/BaseWidget";
|
||||
|
||||
const StyledAutoHeightContainer = styled.div<{ isOverflow?: boolean }>`
|
||||
overflow-y: ${(props) => (props.isOverflow ? "auto" : "unset")};
|
||||
overflow-x: ${(props) => (props.isOverflow ? "hidden" : "unset")};
|
||||
padding-right: 4px;
|
||||
height: 100%;
|
||||
`;
|
||||
|
||||
interface AutoHeightContainerProps {
|
||||
|
|
@ -12,10 +15,12 @@ interface AutoHeightContainerProps {
|
|||
minDynamicHeight: number;
|
||||
isAutoHeightWithLimits: boolean;
|
||||
onHeightUpdate: (height: number) => void;
|
||||
widgetHeightInPixels: number;
|
||||
widgetProps?: WidgetProps;
|
||||
}
|
||||
|
||||
const SimpleContainer = styled.div`
|
||||
height: auto;
|
||||
height: auto !important;
|
||||
`;
|
||||
|
||||
export default function AutoHeightContainer({
|
||||
|
|
@ -24,12 +29,14 @@ export default function AutoHeightContainer({
|
|||
maxDynamicHeight,
|
||||
minDynamicHeight,
|
||||
onHeightUpdate,
|
||||
widgetHeightInPixels,
|
||||
widgetProps,
|
||||
}: PropsWithChildren<AutoHeightContainerProps>) {
|
||||
const [expectedHeight, setExpectedHeight] = useState(0);
|
||||
|
||||
const ref = useRef<HTMLDivElement>(null);
|
||||
|
||||
const observer = useRef(
|
||||
const observer = React.useRef(
|
||||
new ResizeObserver((entries) => {
|
||||
const height = entries[0].contentRect.height;
|
||||
setExpectedHeight(height);
|
||||
|
|
@ -53,15 +60,34 @@ export default function AutoHeightContainer({
|
|||
onHeightUpdate(expectedHeight);
|
||||
}, [minDynamicHeight, maxDynamicHeight]);
|
||||
|
||||
useEffect(() => {
|
||||
if (
|
||||
widgetHeightInPixels !==
|
||||
Math.ceil(
|
||||
Math.ceil(expectedHeight + WIDGET_PADDING * 2) /
|
||||
GridDefaults.DEFAULT_GRID_ROW_HEIGHT,
|
||||
) *
|
||||
GridDefaults.DEFAULT_GRID_ROW_HEIGHT
|
||||
) {
|
||||
onHeightUpdate(expectedHeight);
|
||||
}
|
||||
}, [widgetHeightInPixels]);
|
||||
|
||||
if (isAutoHeightWithLimits) {
|
||||
const expectedHeightInRows = Math.ceil(
|
||||
expectedHeight / GridDefaults.DEFAULT_GRID_ROW_HEIGHT,
|
||||
);
|
||||
|
||||
const backgroundColor =
|
||||
widgetProps?.type === "TEXT_WIDGET"
|
||||
? widgetProps?.backgroundColor
|
||||
: undefined;
|
||||
|
||||
return (
|
||||
<StyledAutoHeightContainer
|
||||
className="auto-height-scroll-container"
|
||||
isOverflow={maxDynamicHeight < expectedHeightInRows}
|
||||
style={{ backgroundColor }}
|
||||
>
|
||||
<SimpleContainer className="auto-height-container" ref={ref}>
|
||||
{children}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
import { GridDefaults } from "constants/WidgetConstants";
|
||||
import React, { ReactNode } from "react";
|
||||
import useWidgetConfig from "utils/hooks/useWidgetConfig";
|
||||
import { DynamicHeight } from "utils/WidgetFeatures";
|
||||
import { WidgetProps } from "widgets/BaseWidget";
|
||||
import {
|
||||
getWidgetMaxAutoHeight,
|
||||
getWidgetMinAutoHeight,
|
||||
} from "widgets/WidgetUtils";
|
||||
import AutoHeightContainer from "./AutoHeightContainer";
|
||||
|
||||
export type AutoHeightWrapperProps = {
|
||||
widgetProps: WidgetProps;
|
||||
children: ReactNode;
|
||||
onUpdateDynamicHeight: (height: number) => void;
|
||||
};
|
||||
|
||||
function AutoHeightContainerWrapper(props: AutoHeightWrapperProps) {
|
||||
const { children, widgetProps } = props;
|
||||
const isCanvas = useWidgetConfig(widgetProps.type, "isCanvas");
|
||||
// eslint-disable-next-line react/jsx-no-useless-fragment
|
||||
if (isCanvas) return <>{children}</>;
|
||||
|
||||
const onHeightUpdate = (height: number) => {
|
||||
props.onUpdateDynamicHeight(height);
|
||||
};
|
||||
|
||||
const maxDynamicHeight = getWidgetMaxAutoHeight(widgetProps);
|
||||
const minDynamicHeight = getWidgetMinAutoHeight(widgetProps);
|
||||
|
||||
const widgetHeightInPixels =
|
||||
(widgetProps.bottomRow - widgetProps.topRow) *
|
||||
GridDefaults.DEFAULT_GRID_ROW_HEIGHT;
|
||||
const isAutoHeightWithLimits =
|
||||
widgetProps.dynamicHeight === DynamicHeight.AUTO_HEIGHT_WITH_LIMITS;
|
||||
|
||||
return (
|
||||
<AutoHeightContainer
|
||||
isAutoHeightWithLimits={isAutoHeightWithLimits}
|
||||
maxDynamicHeight={maxDynamicHeight}
|
||||
minDynamicHeight={minDynamicHeight}
|
||||
onHeightUpdate={onHeightUpdate}
|
||||
widgetHeightInPixels={widgetHeightInPixels}
|
||||
widgetProps={widgetProps}
|
||||
>
|
||||
{children}
|
||||
</AutoHeightContainer>
|
||||
);
|
||||
}
|
||||
|
||||
export default AutoHeightContainerWrapper;
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
import React, { useRef } from "react";
|
||||
import styled from "styled-components";
|
||||
import AutoHeightLimitHandleBorder from "./ui/AutoHeightLimitHandleBorder";
|
||||
import { useDrag } from "react-use-gesture";
|
||||
import { heightToRows } from "./utils";
|
||||
import AutoHeightLimitHandleLabel from "./ui/AutoHeightLimitHandleLabel";
|
||||
import { onDragCallbacksProps, onMouseHoverCallbacksProps } from "./types";
|
||||
import AutoHeightLimitHandleDot from "./ui/AutoHeightLimitHandleDot";
|
||||
|
||||
const AutoHeightLimitHandleGroupContainer = styled.div`
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
pointer-events: all;
|
||||
width: 100%;
|
||||
z-index: 1;
|
||||
`;
|
||||
|
||||
interface AutoHeightLimitHandleGroupProps {
|
||||
isMaxDotActive: boolean;
|
||||
isMinDotActive: boolean;
|
||||
isMaxDotDragging: boolean;
|
||||
isMinDotDragging: boolean;
|
||||
maxY: number;
|
||||
minY: number;
|
||||
onMaxLimitDragCallbacks: onDragCallbacksProps;
|
||||
onMinLimitDragCallbacks: onDragCallbacksProps;
|
||||
onMaxHeightSet: (height: number) => void;
|
||||
onMinHeightSet: (height: number) => void;
|
||||
onMaxLimitMouseHoverCallbacks: onMouseHoverCallbacksProps;
|
||||
onMinLimitMouseHoverCallbacks: onMouseHoverCallbacksProps;
|
||||
}
|
||||
|
||||
interface AutoHeightLimitHandleContainerProps {
|
||||
height: number;
|
||||
}
|
||||
|
||||
const AutoHeightLimitHandleContainer = styled.div<
|
||||
AutoHeightLimitHandleContainerProps
|
||||
>`
|
||||
position: absolute;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 13px;
|
||||
transform: translateY(${(props) => props.height - 6}px);
|
||||
cursor: ns-resize;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
`;
|
||||
|
||||
interface AutoHeightLimitHandleProps {
|
||||
cypressDataID: string;
|
||||
height: number;
|
||||
isActive: boolean;
|
||||
isColliding: boolean;
|
||||
isDragging: boolean;
|
||||
label: string;
|
||||
onDragCallbacks: onDragCallbacksProps;
|
||||
onMouseHoverFunctions: onMouseHoverCallbacksProps;
|
||||
}
|
||||
|
||||
const AutoHeightLimitHandle = ({
|
||||
cypressDataID,
|
||||
height,
|
||||
isActive,
|
||||
isColliding,
|
||||
isDragging,
|
||||
label,
|
||||
onDragCallbacks,
|
||||
onMouseHoverFunctions,
|
||||
}: AutoHeightLimitHandleProps) => {
|
||||
const ref = useRef<HTMLDivElement>(null);
|
||||
const { onStart, onStop, onUpdate } = onDragCallbacks;
|
||||
|
||||
const bind = useDrag((state) => {
|
||||
if (state.first) {
|
||||
onStart();
|
||||
return;
|
||||
}
|
||||
|
||||
if (state.last) {
|
||||
onStop();
|
||||
return;
|
||||
}
|
||||
const [mx, my] = state.movement;
|
||||
|
||||
onUpdate(mx, my);
|
||||
});
|
||||
|
||||
const bindings = bind();
|
||||
|
||||
return (
|
||||
<AutoHeightLimitHandleContainer
|
||||
data-cy={cypressDataID}
|
||||
height={height}
|
||||
ref={ref}
|
||||
{...bindings}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
}}
|
||||
onDragStart={(e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}}
|
||||
onMouseDown={(e) => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
bindings?.onMouseDown && bindings.onMouseDown(e);
|
||||
}}
|
||||
{...onMouseHoverFunctions}
|
||||
>
|
||||
<AutoHeightLimitHandleBorder isActive={isActive} />
|
||||
<AutoHeightLimitHandleDot isDragging={isDragging} />
|
||||
{!isColliding ? (
|
||||
<AutoHeightLimitHandleLabel isActive={isActive}>
|
||||
{label}: {heightToRows(height)} rows
|
||||
</AutoHeightLimitHandleLabel>
|
||||
) : null}
|
||||
</AutoHeightLimitHandleContainer>
|
||||
);
|
||||
};
|
||||
|
||||
const AutoHeightLimitHandleGroup: React.FC<AutoHeightLimitHandleGroupProps> = ({
|
||||
isMaxDotActive,
|
||||
isMaxDotDragging,
|
||||
isMinDotActive,
|
||||
isMinDotDragging,
|
||||
maxY,
|
||||
minY,
|
||||
onMaxLimitDragCallbacks,
|
||||
onMaxLimitMouseHoverCallbacks,
|
||||
onMinLimitDragCallbacks,
|
||||
onMinLimitMouseHoverCallbacks,
|
||||
}) => {
|
||||
const isColliding = maxY === minY;
|
||||
|
||||
return (
|
||||
<AutoHeightLimitHandleGroupContainer data-cy="t-auto-height-overlay-handles">
|
||||
<AutoHeightLimitHandle
|
||||
cypressDataID="t--auto-height-overlay-handles-min"
|
||||
height={minY}
|
||||
isActive={isMinDotActive}
|
||||
isColliding={isColliding}
|
||||
isDragging={isMinDotDragging}
|
||||
label="Min-Height"
|
||||
onDragCallbacks={onMinLimitDragCallbacks}
|
||||
onMouseHoverFunctions={onMinLimitMouseHoverCallbacks}
|
||||
/>
|
||||
<AutoHeightLimitHandle
|
||||
cypressDataID="t--auto-height-overlay-handles-max"
|
||||
height={maxY}
|
||||
isActive={isMaxDotActive}
|
||||
isColliding={false}
|
||||
isDragging={isMaxDotDragging}
|
||||
label={isColliding ? "Height" : "Max-Height"}
|
||||
onDragCallbacks={onMaxLimitDragCallbacks}
|
||||
onMouseHoverFunctions={onMaxLimitMouseHoverCallbacks}
|
||||
/>
|
||||
</AutoHeightLimitHandleGroupContainer>
|
||||
);
|
||||
};
|
||||
|
||||
export default AutoHeightLimitHandleGroup;
|
||||
5
app/client/src/components/autoHeightOverlay/constants.ts
Normal file
5
app/client/src/components/autoHeightOverlay/constants.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
export const OVERLAY_COLOR = "#F32B8B";
|
||||
|
||||
// During dragging we have to scale the size
|
||||
// of the dot to increase its focus
|
||||
export const OVERLAY_HANDLE_DOT_DRAGGING_SCALE = "1.67";
|
||||
144
app/client/src/components/autoHeightOverlay/hooks.ts
Normal file
144
app/client/src/components/autoHeightOverlay/hooks.ts
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
import { CONTAINER_GRID_PADDING } from "constants/WidgetConstants";
|
||||
import { CSSProperties, useEffect, useMemo, useState } from "react";
|
||||
import { CallbackHandlerEventType } from "utils/CallbackHandler/CallbackHandlerEventType";
|
||||
import DynamicHeightCallbackHandler from "utils/CallbackHandler/DynamicHeightCallbackHandler";
|
||||
import { onMouseHoverCallbacksProps } from "./types";
|
||||
|
||||
type UseHoverStateReturnType = [boolean, onMouseHoverCallbacksProps];
|
||||
|
||||
export function useHoverState(): UseHoverStateReturnType {
|
||||
const [isActive, setIsActive] = useState(false);
|
||||
|
||||
function handleMouseEnter(state: boolean) {
|
||||
setIsActive(state);
|
||||
}
|
||||
|
||||
return [
|
||||
isActive,
|
||||
{
|
||||
onMouseEnter: () => handleMouseEnter(true),
|
||||
onMouseLeave: () => handleMouseEnter(false),
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
interface UsePositionedStylesProps {
|
||||
bottomRow: number;
|
||||
leftColumn: number;
|
||||
noContainerOffset?: boolean;
|
||||
parentColumnSpace: number;
|
||||
parentRowSpace: number;
|
||||
rightColumn: number;
|
||||
topRow: number;
|
||||
}
|
||||
|
||||
export const usePositionedStyles = ({
|
||||
bottomRow,
|
||||
leftColumn,
|
||||
noContainerOffset,
|
||||
parentColumnSpace,
|
||||
parentRowSpace,
|
||||
rightColumn,
|
||||
topRow,
|
||||
}: UsePositionedStylesProps) => {
|
||||
const styles: CSSProperties = useMemo(
|
||||
() => ({
|
||||
height: (bottomRow - topRow) * parentRowSpace,
|
||||
width: (rightColumn - leftColumn) * parentColumnSpace,
|
||||
left:
|
||||
leftColumn * parentColumnSpace +
|
||||
(noContainerOffset ? 0 : CONTAINER_GRID_PADDING),
|
||||
top:
|
||||
topRow * parentRowSpace +
|
||||
(noContainerOffset ? 0 : CONTAINER_GRID_PADDING),
|
||||
}),
|
||||
[
|
||||
bottomRow,
|
||||
leftColumn,
|
||||
noContainerOffset,
|
||||
parentColumnSpace,
|
||||
parentRowSpace,
|
||||
rightColumn,
|
||||
topRow,
|
||||
],
|
||||
);
|
||||
|
||||
return styles;
|
||||
};
|
||||
|
||||
export const useMaxMinPropertyPaneFieldsFocused = () => {
|
||||
const [
|
||||
isPropertyPaneMinFieldFocused,
|
||||
setPropertyPaneMinFieldFocused,
|
||||
] = useState(false);
|
||||
|
||||
const [
|
||||
isPropertyPaneMaxFieldFocused,
|
||||
setPropertyPaneMaxFieldFocused,
|
||||
] = useState(false);
|
||||
|
||||
function handleOnMaxLimitPropertyPaneFieldFocus() {
|
||||
setPropertyPaneMaxFieldFocused(true);
|
||||
}
|
||||
|
||||
function handleOnMaxLimitPropertyPaneFieldBlur() {
|
||||
setPropertyPaneMaxFieldFocused(false);
|
||||
}
|
||||
|
||||
function handleOnMinLimitPropertyPaneFieldFocus() {
|
||||
setPropertyPaneMinFieldFocused(true);
|
||||
}
|
||||
|
||||
function handleOnMinLimitPropertyPaneFieldBlur() {
|
||||
setPropertyPaneMinFieldFocused(false);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
DynamicHeightCallbackHandler.add(
|
||||
CallbackHandlerEventType.MAX_HEIGHT_LIMIT_FOCUS,
|
||||
handleOnMaxLimitPropertyPaneFieldFocus,
|
||||
);
|
||||
|
||||
DynamicHeightCallbackHandler.add(
|
||||
CallbackHandlerEventType.MAX_HEIGHT_LIMIT_BLUR,
|
||||
handleOnMaxLimitPropertyPaneFieldBlur,
|
||||
);
|
||||
|
||||
DynamicHeightCallbackHandler.add(
|
||||
CallbackHandlerEventType.MIN_HEIGHT_LIMIT_FOCUS,
|
||||
handleOnMinLimitPropertyPaneFieldFocus,
|
||||
);
|
||||
|
||||
DynamicHeightCallbackHandler.add(
|
||||
CallbackHandlerEventType.MIN_HEIGHT_LIMIT_BLUR,
|
||||
handleOnMinLimitPropertyPaneFieldBlur,
|
||||
);
|
||||
|
||||
return () => {
|
||||
DynamicHeightCallbackHandler.remove(
|
||||
CallbackHandlerEventType.MAX_HEIGHT_LIMIT_FOCUS,
|
||||
handleOnMaxLimitPropertyPaneFieldFocus,
|
||||
);
|
||||
|
||||
DynamicHeightCallbackHandler.remove(
|
||||
CallbackHandlerEventType.MAX_HEIGHT_LIMIT_BLUR,
|
||||
handleOnMaxLimitPropertyPaneFieldBlur,
|
||||
);
|
||||
|
||||
DynamicHeightCallbackHandler.remove(
|
||||
CallbackHandlerEventType.MIN_HEIGHT_LIMIT_FOCUS,
|
||||
handleOnMinLimitPropertyPaneFieldFocus,
|
||||
);
|
||||
|
||||
DynamicHeightCallbackHandler.remove(
|
||||
CallbackHandlerEventType.MIN_HEIGHT_LIMIT_BLUR,
|
||||
handleOnMinLimitPropertyPaneFieldBlur,
|
||||
);
|
||||
};
|
||||
}, []);
|
||||
|
||||
return {
|
||||
isPropertyPaneMaxFieldFocused,
|
||||
isPropertyPaneMinFieldFocused,
|
||||
};
|
||||
};
|
||||
396
app/client/src/components/autoHeightOverlay/index.tsx
Normal file
396
app/client/src/components/autoHeightOverlay/index.tsx
Normal file
|
|
@ -0,0 +1,396 @@
|
|||
import { focusWidget } from "actions/widgetActions";
|
||||
import React, {
|
||||
CSSProperties,
|
||||
memo,
|
||||
useEffect,
|
||||
useMemo,
|
||||
useReducer,
|
||||
} from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { AppState } from "@appsmith/reducers";
|
||||
import styled from "styled-components";
|
||||
import {
|
||||
useShowPropertyPane,
|
||||
useShowTableFilterPane,
|
||||
} from "utils/hooks/dragResizeHooks";
|
||||
import { useWidgetSelection } from "utils/hooks/useWidgetSelection";
|
||||
import { WidgetProps } from "widgets/BaseWidget";
|
||||
import { GridDefaults, WidgetHeightLimits } from "constants/WidgetConstants";
|
||||
import { getParentToOpenSelector } from "selectors/widgetSelectors";
|
||||
import AutoHeightLimitHandleGroup from "./AutoHeightLimitHandleGroup";
|
||||
import AutoHeightLimitOverlayDisplay from "./ui/AutoHeightLimitOverlayDisplay";
|
||||
import { useHoverState, usePositionedStyles } from "./hooks";
|
||||
import { getSnappedValues } from "./utils";
|
||||
import { useAutoHeightUIState } from "utils/hooks/autoHeightUIHooks";
|
||||
import { LayersContext } from "constants/Layers";
|
||||
import {
|
||||
AutoHeightOverlayUIStateReducer,
|
||||
createInitialAutoHeightUIState,
|
||||
} from "./store";
|
||||
import { previewModeSelector } from "selectors/editorSelectors";
|
||||
|
||||
interface StyledAutoHeightOverlayProps {
|
||||
layerIndex: number;
|
||||
isHidden: boolean;
|
||||
}
|
||||
|
||||
const StyledAutoHeightOverlay = styled.div<StyledAutoHeightOverlayProps>`
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
z-index: ${(props) => props.layerIndex};
|
||||
pointer-events: none;
|
||||
display: ${(props) => (props.isHidden ? "none" : "block")};
|
||||
`;
|
||||
|
||||
interface MinMaxHeightProps {
|
||||
maxDynamicHeight: number;
|
||||
minDynamicHeight: number;
|
||||
}
|
||||
|
||||
interface AutoHeightOverlayContainerProps
|
||||
extends MinMaxHeightProps,
|
||||
WidgetProps {
|
||||
batchUpdate: (height: number) => void;
|
||||
onMaxHeightSet: (height: number) => void;
|
||||
onMinHeightSet: (height: number) => void;
|
||||
style?: CSSProperties;
|
||||
}
|
||||
|
||||
interface AutoHeightOverlayProps extends AutoHeightOverlayContainerProps {
|
||||
isHidden: boolean;
|
||||
}
|
||||
|
||||
const AutoHeightOverlay: React.FC<AutoHeightOverlayProps> = memo(
|
||||
({
|
||||
batchUpdate,
|
||||
isHidden,
|
||||
maxDynamicHeight,
|
||||
minDynamicHeight,
|
||||
onMaxHeightSet,
|
||||
onMinHeightSet,
|
||||
style,
|
||||
...props
|
||||
}) => {
|
||||
const showPropertyPane = useShowPropertyPane();
|
||||
const { selectWidget } = useWidgetSelection();
|
||||
const selectedWidget = useSelector(
|
||||
(state: AppState) => state.ui.widgetDragResize.lastSelectedWidget,
|
||||
);
|
||||
|
||||
const parentWidgetToSelect = useSelector(
|
||||
getParentToOpenSelector(props.widgetId),
|
||||
);
|
||||
const showTableFilterPane = useShowTableFilterPane();
|
||||
const {
|
||||
isAutoHeightWithLimitsChanging,
|
||||
setIsAutoHeightWithLimitsChanging,
|
||||
} = useAutoHeightUIState();
|
||||
|
||||
const [autoHeightUIState, autoHeightUIStateDispatch] = useReducer(
|
||||
AutoHeightOverlayUIStateReducer,
|
||||
createInitialAutoHeightUIState({ maxDynamicHeight, minDynamicHeight }),
|
||||
);
|
||||
|
||||
const {
|
||||
isMaxDotDragging,
|
||||
isMinDotDragging,
|
||||
maxdY,
|
||||
maxY,
|
||||
mindY,
|
||||
minY,
|
||||
} = autoHeightUIState;
|
||||
|
||||
function setIsMaxDotDragging(isMaxDotDragging: boolean) {
|
||||
autoHeightUIStateDispatch({
|
||||
type: "SET_IS_MAX_DOT_DRAGGING",
|
||||
payload: {
|
||||
isMaxDotDragging,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function setIsMinDotDragging(isMinDotDragging: boolean) {
|
||||
autoHeightUIStateDispatch({
|
||||
type: "SET_IS_MIN_DOT_DRAGGING",
|
||||
payload: {
|
||||
isMinDotDragging,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function setMaxY(maxY: number) {
|
||||
autoHeightUIStateDispatch({
|
||||
type: "SET_MAX_Y",
|
||||
payload: {
|
||||
maxY,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function setMinY(minY: number) {
|
||||
autoHeightUIStateDispatch({
|
||||
type: "SET_MIN_Y",
|
||||
payload: {
|
||||
minY,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function setMaxdY(maxdY: number) {
|
||||
autoHeightUIStateDispatch({
|
||||
type: "SET_MAX_D_Y",
|
||||
payload: {
|
||||
maxdY,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function setMindY(mindY: number) {
|
||||
autoHeightUIStateDispatch({
|
||||
type: "SET_MIN_D_Y",
|
||||
payload: {
|
||||
mindY,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
const finalMaxY = maxY + maxdY;
|
||||
const finalMinY = minY + mindY;
|
||||
|
||||
useEffect(() => {
|
||||
setMaxY(maxDynamicHeight * GridDefaults.DEFAULT_GRID_ROW_HEIGHT);
|
||||
}, [maxDynamicHeight]);
|
||||
|
||||
function onAnyDotStop() {
|
||||
// Tell the Canvas that we've stopped resizing
|
||||
// Put it later in the stack so that other updates like click, are not propagated to the parent container
|
||||
setTimeout(() => {
|
||||
setIsAutoHeightWithLimitsChanging &&
|
||||
setIsAutoHeightWithLimitsChanging(false);
|
||||
}, 0);
|
||||
|
||||
selectWidget && selectWidget(props.widgetId);
|
||||
|
||||
if (parentWidgetToSelect) {
|
||||
selectWidget &&
|
||||
selectedWidget !== parentWidgetToSelect.widgetId &&
|
||||
selectWidget(parentWidgetToSelect.widgetId);
|
||||
focusWidget(parentWidgetToSelect.widgetId);
|
||||
} else {
|
||||
selectWidget &&
|
||||
selectedWidget !== props.widgetId &&
|
||||
selectWidget(props.widgetId);
|
||||
}
|
||||
// Property pane closes after a resize/drag
|
||||
showPropertyPane && showPropertyPane();
|
||||
}
|
||||
|
||||
function onMaxUpdate(dx: number, dy: number) {
|
||||
if (
|
||||
maxY + dy <=
|
||||
WidgetHeightLimits.MIN_HEIGHT_IN_ROWS *
|
||||
GridDefaults.DEFAULT_GRID_ROW_HEIGHT
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
const snapped = getSnappedValues(dx, dy, snapGrid);
|
||||
|
||||
if (maxY + snapped.y <= minY) {
|
||||
setMindY(snapped.y + (maxY - minY));
|
||||
}
|
||||
|
||||
setMaxdY(snapped.y);
|
||||
}
|
||||
|
||||
function updateMaxHeight(height: number) {
|
||||
setMaxY(height);
|
||||
onMaxHeightSet(height);
|
||||
}
|
||||
|
||||
function updateMinHeight(height: number) {
|
||||
setMinY(height);
|
||||
onMinHeightSet(height);
|
||||
}
|
||||
|
||||
function onMaxStop() {
|
||||
setIsMaxDotDragging(false);
|
||||
const heightToSet = maxY + maxdY;
|
||||
|
||||
if (heightToSet === minY + mindY) {
|
||||
batchUpdate(heightToSet);
|
||||
setMindY(0);
|
||||
setMaxdY(0);
|
||||
} else {
|
||||
updateMaxHeight(heightToSet);
|
||||
setMaxdY(0);
|
||||
}
|
||||
|
||||
onAnyDotStop();
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
setMinY(minDynamicHeight * GridDefaults.DEFAULT_GRID_ROW_HEIGHT);
|
||||
}, [minDynamicHeight]);
|
||||
|
||||
function onMinUpdate(dx: number, dy: number) {
|
||||
if (
|
||||
minY + dy <=
|
||||
WidgetHeightLimits.MIN_HEIGHT_IN_ROWS *
|
||||
GridDefaults.DEFAULT_GRID_ROW_HEIGHT
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
const snapped = getSnappedValues(dx, dy, snapGrid);
|
||||
|
||||
if (minY + snapped.y >= maxY) {
|
||||
setMaxdY(snapped.y - (maxY - minY));
|
||||
}
|
||||
|
||||
setMindY(snapped.y);
|
||||
}
|
||||
|
||||
function onMinStop() {
|
||||
setIsMinDotDragging(false);
|
||||
const heightToSet = minY + mindY;
|
||||
|
||||
if (heightToSet === maxY + maxdY) {
|
||||
batchUpdate(heightToSet);
|
||||
setMindY(0);
|
||||
setMaxdY(0);
|
||||
} else {
|
||||
updateMinHeight(heightToSet);
|
||||
setMindY(0);
|
||||
}
|
||||
|
||||
onAnyDotStop();
|
||||
}
|
||||
|
||||
function onMinDotStart() {
|
||||
setIsMinDotDragging(true);
|
||||
onAnyDotStart();
|
||||
}
|
||||
|
||||
function onAnyDotStart() {
|
||||
setIsAutoHeightWithLimitsChanging &&
|
||||
!isAutoHeightWithLimitsChanging &&
|
||||
setIsAutoHeightWithLimitsChanging(true);
|
||||
selectWidget &&
|
||||
selectedWidget !== props.widgetId &&
|
||||
selectWidget(props.widgetId);
|
||||
// Make sure that this tableFilterPane should close
|
||||
showTableFilterPane && showTableFilterPane();
|
||||
}
|
||||
|
||||
function onMaxDotStart() {
|
||||
setIsMaxDotDragging(true);
|
||||
onAnyDotStart();
|
||||
}
|
||||
|
||||
const [isMinDotActive, minHoverFns] = useHoverState();
|
||||
const [isMaxDotActive, maxHoverFns] = useHoverState();
|
||||
|
||||
const snapGrid = useMemo(
|
||||
() => ({
|
||||
x: props.parentColumnSpace,
|
||||
y: props.parentRowSpace,
|
||||
}),
|
||||
[props.parentColumnSpace, props.parentRowSpace],
|
||||
);
|
||||
|
||||
const {
|
||||
bottomRow,
|
||||
leftColumn,
|
||||
noContainerOffset,
|
||||
parentColumnSpace,
|
||||
parentRowSpace,
|
||||
rightColumn,
|
||||
topRow,
|
||||
} = props;
|
||||
|
||||
const styles = usePositionedStyles({
|
||||
bottomRow,
|
||||
leftColumn,
|
||||
noContainerOffset,
|
||||
parentColumnSpace,
|
||||
parentRowSpace,
|
||||
rightColumn,
|
||||
topRow,
|
||||
});
|
||||
|
||||
const { autoHeightWithLimitsOverlay } = React.useContext(LayersContext);
|
||||
|
||||
return (
|
||||
<StyledAutoHeightOverlay
|
||||
isHidden={isHidden}
|
||||
layerIndex={autoHeightWithLimitsOverlay}
|
||||
onClick={(e) => {
|
||||
// avoid DropTarget handleFocus
|
||||
e.stopPropagation();
|
||||
}}
|
||||
style={style ?? styles}
|
||||
>
|
||||
<AutoHeightLimitOverlayDisplay
|
||||
data-cy="t--auto-height-overlay-min"
|
||||
height={finalMinY}
|
||||
isActive={isMinDotDragging || isMinDotActive}
|
||||
/>
|
||||
<AutoHeightLimitOverlayDisplay
|
||||
data-cy="t--auto-height-overlay-max"
|
||||
height={finalMaxY}
|
||||
isActive={isMaxDotDragging || isMaxDotActive}
|
||||
/>
|
||||
<AutoHeightLimitHandleGroup
|
||||
isMaxDotActive={isMaxDotDragging || isMaxDotActive}
|
||||
isMaxDotDragging={isMaxDotDragging}
|
||||
isMinDotActive={isMinDotDragging || isMinDotActive}
|
||||
isMinDotDragging={isMinDotDragging}
|
||||
maxY={finalMaxY}
|
||||
minY={finalMinY}
|
||||
onMaxHeightSet={onMaxHeightSet}
|
||||
onMaxLimitDragCallbacks={{
|
||||
onUpdate: onMaxUpdate,
|
||||
onStop: onMaxStop,
|
||||
onStart: onMaxDotStart,
|
||||
}}
|
||||
onMaxLimitMouseHoverCallbacks={maxHoverFns}
|
||||
onMinHeightSet={onMinHeightSet}
|
||||
onMinLimitDragCallbacks={{
|
||||
onUpdate: onMinUpdate,
|
||||
onStop: onMinStop,
|
||||
onStart: onMinDotStart,
|
||||
}}
|
||||
onMinLimitMouseHoverCallbacks={minHoverFns}
|
||||
/>
|
||||
</StyledAutoHeightOverlay>
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
const AutoHeightOverlayContainer: React.FC<AutoHeightOverlayContainerProps> = memo(
|
||||
(props) => {
|
||||
const widgetId = props.widgetId;
|
||||
const {
|
||||
isDragging,
|
||||
isResizing,
|
||||
lastSelectedWidget: selectedWidget,
|
||||
selectedWidgets,
|
||||
} = useSelector((state: AppState) => state.ui.widgetDragResize);
|
||||
|
||||
const isPreviewMode = useSelector(previewModeSelector);
|
||||
|
||||
const isWidgetSelected = selectedWidget === widgetId;
|
||||
const multipleWidgetsSelected = selectedWidgets.length > 1;
|
||||
const isHidden = multipleWidgetsSelected || isDragging || isResizing;
|
||||
|
||||
if (isWidgetSelected && !isPreviewMode) {
|
||||
return <AutoHeightOverlay isHidden={isHidden} {...props} />;
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
);
|
||||
|
||||
export default AutoHeightOverlayContainer;
|
||||
100
app/client/src/components/autoHeightOverlay/store.ts
Normal file
100
app/client/src/components/autoHeightOverlay/store.ts
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
import { GridDefaults } from "constants/WidgetConstants";
|
||||
|
||||
interface AutoHeightLimitsUIState {
|
||||
isMaxDotDragging: boolean;
|
||||
isMinDotDragging: boolean;
|
||||
maxY: number; // the actual value
|
||||
maxdY: number; // the difference during dragging
|
||||
minY: number; // the actual value
|
||||
mindY: number; // the difference during dragging
|
||||
}
|
||||
|
||||
type SET_MAX_Y = { type: "SET_MAX_Y"; payload: { maxY: number } };
|
||||
type SET_MIN_Y = { type: "SET_MIN_Y"; payload: { minY: number } };
|
||||
type SET_MAX_D_Y = { type: "SET_MAX_D_Y"; payload: { maxdY: number } };
|
||||
type SET_MIN_D_Y = { type: "SET_MIN_D_Y"; payload: { mindY: number } };
|
||||
type SET_IS_MIN_DOT_DRAGGING = {
|
||||
type: "SET_IS_MIN_DOT_DRAGGING";
|
||||
payload: { isMinDotDragging: boolean };
|
||||
};
|
||||
|
||||
type SET_IS_MAX_DOT_DRAGGING = {
|
||||
type: "SET_IS_MAX_DOT_DRAGGING";
|
||||
payload: { isMaxDotDragging: boolean };
|
||||
};
|
||||
|
||||
type AutoHeightLimitsUIAction =
|
||||
| SET_MAX_Y
|
||||
| SET_MIN_Y
|
||||
| SET_MAX_D_Y
|
||||
| SET_MIN_D_Y
|
||||
| SET_IS_MIN_DOT_DRAGGING
|
||||
| SET_IS_MAX_DOT_DRAGGING;
|
||||
|
||||
export function AutoHeightOverlayUIStateReducer(
|
||||
state: AutoHeightLimitsUIState,
|
||||
action: AutoHeightLimitsUIAction,
|
||||
) {
|
||||
if (action.type === "SET_IS_MAX_DOT_DRAGGING") {
|
||||
return {
|
||||
...state,
|
||||
isMaxDotDragging: action.payload.isMaxDotDragging,
|
||||
};
|
||||
}
|
||||
|
||||
if (action.type === "SET_IS_MIN_DOT_DRAGGING") {
|
||||
return {
|
||||
...state,
|
||||
isMinDotDragging: action.payload.isMinDotDragging,
|
||||
};
|
||||
}
|
||||
|
||||
if (action.type === "SET_MAX_Y") {
|
||||
return {
|
||||
...state,
|
||||
maxY: action.payload.maxY,
|
||||
};
|
||||
}
|
||||
|
||||
if (action.type === "SET_MIN_Y") {
|
||||
return {
|
||||
...state,
|
||||
minY: action.payload.minY,
|
||||
};
|
||||
}
|
||||
|
||||
if (action.type === "SET_MAX_D_Y") {
|
||||
return {
|
||||
...state,
|
||||
maxdY: action.payload.maxdY,
|
||||
};
|
||||
}
|
||||
|
||||
if (action.type === "SET_MIN_D_Y") {
|
||||
return {
|
||||
...state,
|
||||
mindY: action.payload.mindY,
|
||||
};
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
interface CreateInitialAutoHeightUIStateProps {
|
||||
maxDynamicHeight: number;
|
||||
minDynamicHeight: number;
|
||||
}
|
||||
|
||||
export function createInitialAutoHeightUIState({
|
||||
maxDynamicHeight,
|
||||
minDynamicHeight,
|
||||
}: CreateInitialAutoHeightUIStateProps) {
|
||||
return {
|
||||
isMinDotDragging: false,
|
||||
isMaxDotDragging: false,
|
||||
maxY: maxDynamicHeight * GridDefaults.DEFAULT_GRID_ROW_HEIGHT, // the actual value
|
||||
maxdY: 0, // the difference during dragging
|
||||
minY: minDynamicHeight * GridDefaults.DEFAULT_GRID_ROW_HEIGHT, // the actual value
|
||||
mindY: 0, // the difference during dragging
|
||||
};
|
||||
}
|
||||
10
app/client/src/components/autoHeightOverlay/types.ts
Normal file
10
app/client/src/components/autoHeightOverlay/types.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
export interface onDragCallbacksProps {
|
||||
onStart: () => void;
|
||||
onStop: () => void;
|
||||
onUpdate: (x: number, y: number) => void;
|
||||
}
|
||||
|
||||
export interface onMouseHoverCallbacksProps {
|
||||
onMouseEnter: () => void;
|
||||
onMouseLeave: () => void;
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
import React from "react";
|
||||
import "@testing-library/jest-dom";
|
||||
import AutoHeightLimitHandleBorder from "./AutoHeightLimitHandleBorder";
|
||||
import "jest-styled-components";
|
||||
import renderer from "react-test-renderer";
|
||||
import { OVERLAY_COLOR } from "../constants";
|
||||
|
||||
describe("<AutoHeightLimitHandleBorder />", () => {
|
||||
it("should have background-color style set to OVERLAY_COLOR when isActive is true", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitHandleBorder isActive />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("background-color", OVERLAY_COLOR);
|
||||
});
|
||||
|
||||
it("should have background-color style set to undefined when isActive is false", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitHandleBorder isActive={false} />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("background-color");
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
import styled from "styled-components";
|
||||
import { OVERLAY_COLOR } from "../constants";
|
||||
|
||||
interface AutoHeightLimitHandleBorderProps {
|
||||
isActive: boolean;
|
||||
}
|
||||
|
||||
const AutoHeightLimitHandleBorder = styled.div<
|
||||
AutoHeightLimitHandleBorderProps
|
||||
>`
|
||||
background-image: linear-gradient(
|
||||
to right,
|
||||
${OVERLAY_COLOR} 50%,
|
||||
rgba(255, 255, 255, 0) 0%
|
||||
);
|
||||
background-size: 8% 1px;
|
||||
background-repeat: repeat-x;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
|
||||
${(props) => (props.isActive ? `background-color: ${OVERLAY_COLOR}` : "")}
|
||||
`;
|
||||
|
||||
export default AutoHeightLimitHandleBorder;
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
import React from "react";
|
||||
import "@testing-library/jest-dom";
|
||||
import AutoHeightLimitHandleDot from "./AutoHeightLimitHandleDot";
|
||||
import "jest-styled-components";
|
||||
import renderer from "react-test-renderer";
|
||||
import { OVERLAY_COLOR } from "../constants";
|
||||
|
||||
describe("<AutoHeightLimitHandleDot />", () => {
|
||||
it("should have scale style set to 1 when isDragging is false", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitHandleDot isDragging={false} />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("transform", "translateX(-50%) scale( 1 )");
|
||||
});
|
||||
|
||||
it("should have scale style set to 1.67 when isDragging is true", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitHandleDot isDragging />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("transform", "translateX(-50%) scale( 1.67 )");
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import styled from "styled-components";
|
||||
import { OVERLAY_COLOR, OVERLAY_HANDLE_DOT_DRAGGING_SCALE } from "../constants";
|
||||
|
||||
interface AutoHeightLimitHandleDotProps {
|
||||
isDragging: boolean;
|
||||
}
|
||||
|
||||
const AutoHeightLimitHandleDot = styled.div<AutoHeightLimitHandleDotProps>`
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
border-radius: 50%;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
transform: translateX(-50%)
|
||||
scale(
|
||||
${(props) => (props.isDragging ? OVERLAY_HANDLE_DOT_DRAGGING_SCALE : "1")}
|
||||
);
|
||||
border: 1px solid ${OVERLAY_COLOR};
|
||||
background-color: ${OVERLAY_COLOR};
|
||||
box-shadow: 0px 0px 0px 2px white;
|
||||
`;
|
||||
|
||||
export default AutoHeightLimitHandleDot;
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
import React from "react";
|
||||
import "@testing-library/jest-dom";
|
||||
import AutoHeightLimitHandleLabel from "./AutoHeightLimitHandleLabel";
|
||||
import "jest-styled-components";
|
||||
import renderer from "react-test-renderer";
|
||||
|
||||
describe("<AutoHeightLimitHandleLabel />", () => {
|
||||
it("should have display none when isActive is false", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitHandleLabel isActive={false} />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("display", "none");
|
||||
});
|
||||
|
||||
it("should have display initial when isActive is true", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitHandleLabel isActive />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("display", "initial");
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import styled from "styled-components";
|
||||
|
||||
interface AutoHeightLimitHandleLabel {
|
||||
isActive: boolean;
|
||||
}
|
||||
|
||||
const AutoHeightLimitHandleLabel = styled.div<AutoHeightLimitHandleLabel>`
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
padding: 1px 4px;
|
||||
background: #191919;
|
||||
font-weight: 400;
|
||||
font-size: 10px;
|
||||
line-height: 16px;
|
||||
color: #ffffff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
left: 0px;
|
||||
transform: translate(calc(-100% - 4px), -2px);
|
||||
display: ${(props) => (props.isActive ? "initial" : "none")};
|
||||
`;
|
||||
|
||||
export default AutoHeightLimitHandleLabel;
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
import React from "react";
|
||||
import "@testing-library/jest-dom";
|
||||
import AutoHeightLimitOverlayDisplay from "./AutoHeightLimitOverlayDisplay";
|
||||
import "jest-styled-components";
|
||||
import renderer from "react-test-renderer";
|
||||
|
||||
describe("<AutoHeightLimitOverlayDisplay />", () => {
|
||||
it("should have display none when isActive is false", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitOverlayDisplay height={0} isActive={false} />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("display", "none");
|
||||
});
|
||||
|
||||
it("should have display block when isActive is true", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitOverlayDisplay height={0} isActive />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("display", "block");
|
||||
});
|
||||
|
||||
it("should have height style equal to the height passed in props", () => {
|
||||
const tree = renderer
|
||||
.create(<AutoHeightLimitOverlayDisplay height={10} isActive />)
|
||||
.toJSON();
|
||||
expect(tree).toHaveStyleRule("height", "10px");
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
import styled from "styled-components";
|
||||
|
||||
interface AutoHeightLimitOverlayDisplayProps {
|
||||
isActive: boolean;
|
||||
height: number;
|
||||
}
|
||||
|
||||
const AutoHeightLimitOverlayDisplay = styled.div<
|
||||
AutoHeightLimitOverlayDisplayProps
|
||||
>`
|
||||
display: ${(props) => (props.isActive ? "block" : "none")};
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: ${(props) => props.height}px;
|
||||
background-color: rgba(243, 43, 139, 0.1);
|
||||
`;
|
||||
|
||||
export default AutoHeightLimitOverlayDisplay;
|
||||
15
app/client/src/components/autoHeightOverlay/utils.ts
Normal file
15
app/client/src/components/autoHeightOverlay/utils.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import { GridDefaults } from "constants/WidgetConstants";
|
||||
|
||||
export const heightToRows = (height: number) =>
|
||||
Math.floor(height / GridDefaults.DEFAULT_GRID_ROW_HEIGHT);
|
||||
|
||||
export const getSnappedValues = (
|
||||
x: number,
|
||||
y: number,
|
||||
snapGrid: { x: number; y: number },
|
||||
) => {
|
||||
return {
|
||||
x: Math.round(x / snapGrid.x) * snapGrid.x,
|
||||
y: Math.round(y / snapGrid.y) * snapGrid.y,
|
||||
};
|
||||
};
|
||||
|
|
@ -4,7 +4,7 @@ import {
|
|||
FieldWrapper,
|
||||
} from "components/propertyControls/StyledControls";
|
||||
import { InputText } from "components/propertyControls/InputTextControl";
|
||||
import { AutocompleteDataType } from "utils/autocomplete/TernServer";
|
||||
import { AutocompleteDataType } from "utils/autocomplete/CodemirrorTernService";
|
||||
import React from "react";
|
||||
|
||||
export function TextView(props: TextViewProps) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import React, { memo } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import styled from "styled-components";
|
||||
import { generateReactKey } from "utils/generators";
|
||||
import { Collapsible } from ".";
|
||||
|
|
@ -14,7 +14,6 @@ import {
|
|||
} from "@appsmith/constants/messages";
|
||||
import { SuggestedWidget } from "api/ActionAPI";
|
||||
|
||||
import { useSelector } from "store";
|
||||
import { getDataTree } from "selectors/dataTreeSelectors";
|
||||
import { getWidgets } from "sagas/selectors";
|
||||
import { getNextWidgetName } from "sagas/WidgetOperationUtils";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import CodeMirror from "codemirror";
|
||||
import { DataTree, ENTITY_TYPE } from "entities/DataTree/dataTreeFactory";
|
||||
import { AdditionalDynamicDataTree } from "utils/autocomplete/customTreeTypeDefCreator";
|
||||
import { AutocompleteDataType } from "utils/autocomplete/TernServer";
|
||||
import { AutocompleteDataType } from "utils/autocomplete/CodemirrorTernService";
|
||||
|
||||
export enum EditorModes {
|
||||
TEXT = "text/plain",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { HintHelper } from "components/editorComponents/CodeEditor/EditorConfig"
|
|||
import {
|
||||
AutocompleteDataType,
|
||||
CommandsCompletion,
|
||||
} from "utils/autocomplete/TernServer";
|
||||
} from "utils/autocomplete/CodemirrorTernService";
|
||||
import { generateQuickCommands } from "./generateQuickCommands";
|
||||
import { Datasource } from "entities/Datasource";
|
||||
import AnalyticsUtil from "utils/AnalyticsUtil";
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import React from "react";
|
|||
import {
|
||||
AutocompleteDataType,
|
||||
CommandsCompletion,
|
||||
} from "utils/autocomplete/TernServer";
|
||||
} from "utils/autocomplete/CodemirrorTernService";
|
||||
import ReactDOM from "react-dom";
|
||||
import sortBy from "lodash/sortBy";
|
||||
import { PluginType, SlashCommand, SlashCommandPayload } from "entities/Action";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import CodeMirror from "codemirror";
|
||||
import TernServer from "utils/autocomplete/TernServer";
|
||||
import CodemirrorTernService from "utils/autocomplete/CodemirrorTernService";
|
||||
import KeyboardShortcuts from "constants/KeyboardShortcuts";
|
||||
import { HintHelper } from "components/editorComponents/CodeEditor/EditorConfig";
|
||||
import AnalyticsUtil from "utils/AnalyticsUtil";
|
||||
|
|
@ -11,12 +11,12 @@ export const bindingHint: HintHelper = (editor) => {
|
|||
// @ts-expect-error: Types are not available
|
||||
...editor.options.extraKeys,
|
||||
[KeyboardShortcuts.CodeEditor.OpenAutocomplete]: (cm: CodeMirror.Editor) =>
|
||||
checkIfCursorInsideBinding(cm) && TernServer.complete(cm),
|
||||
checkIfCursorInsideBinding(cm) && CodemirrorTernService.complete(cm),
|
||||
[KeyboardShortcuts.CodeEditor.ShowTypeAndInfo]: (cm: CodeMirror.Editor) => {
|
||||
TernServer.showType(cm);
|
||||
CodemirrorTernService.showType(cm);
|
||||
},
|
||||
[KeyboardShortcuts.CodeEditor.OpenDocsLink]: (cm: CodeMirror.Editor) => {
|
||||
TernServer.showDocs(cm);
|
||||
CodemirrorTernService.showDocs(cm);
|
||||
},
|
||||
});
|
||||
return {
|
||||
|
|
@ -26,12 +26,12 @@ export const bindingHint: HintHelper = (editor) => {
|
|||
additionalData,
|
||||
): boolean => {
|
||||
if (additionalData && additionalData.blockCompletions) {
|
||||
TernServer.setEntityInformation({
|
||||
CodemirrorTernService.setEntityInformation({
|
||||
...entityInformation,
|
||||
blockCompletions: additionalData.blockCompletions,
|
||||
});
|
||||
} else {
|
||||
TernServer.setEntityInformation(entityInformation);
|
||||
CodemirrorTernService.setEntityInformation(entityInformation);
|
||||
}
|
||||
|
||||
const entityType = entityInformation?.entityType;
|
||||
|
|
@ -43,7 +43,7 @@ export const bindingHint: HintHelper = (editor) => {
|
|||
}
|
||||
if (shouldShow) {
|
||||
AnalyticsUtil.logEvent("AUTO_COMPLETE_SHOW", {});
|
||||
TernServer.complete(editor);
|
||||
CodemirrorTernService.complete(editor);
|
||||
return true;
|
||||
}
|
||||
// @ts-expect-error: Types are not available
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user