## Description
Fixes canvas resizing issue and introduces performance improvements.
Fixes#34741
## Automation
/ok-to-test tags="@tag.IDE"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9976888930>
> Commit: 89ccd69466efaf6ea6a55c2b3b3fb20175024dbd
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9976888930&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.IDE`
> Spec:
> <hr>Wed, 17 Jul 2024 15:42:40 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced auto-resize functionality for canvas elements based on
container width.
- Added debouncing for resize events to improve performance.
- **Refactor**
- Reorganized imports and constants for better modularity and
maintainability.
- Updated component and hook references to use new
`useCanvasWidthAutoResize`.
- **Tests**
- Added tests for canvas width resolution logic to ensure correct
behavior across different layout types.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Fixes#33982
/ok-to-test tags="@tag.Anvil"
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9952206667>
> Commit: d70ec63edc6cbc9a760c0c1471f9f4249557ee2f
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9952206667&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Anvil`
> Spec:
> <hr>Tue, 16 Jul 2024 07:23:09 UTC
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced tests for paste functionality in the Anvil editor, covering
various scenarios to ensure correct behavior when pasting widgets.
- **Improvement**
- Enhanced the paste function in Anvil editor to skip processing when no
copied widgets are present.
- **Tests**
- Added comprehensive test cases to verify the paste functionality,
including drag-and-drop, keyboard shortcuts, and validation of widget
placement and attributes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro-2.local>
## Description
Today, the DSL contains many properties that are not necessary to be
persisted, as these are properties which are inherent to the widget type
and are statically available in the codebase and during runtime.
`getChildWidgetProps` is the lowest level function the widget addition
flow that is not used in recursion and does not need to return these
runtime properties for proper functioning of the widget addition flow.
The flow is as follows:
`addChildSaga` -> `getUpdateDSLAfterCreatingChild` ->
`generateChildWidgets` -> `getChildWidgetProps` -> `generateWidgetProps`
(Don't understand the distinction in the names of the functions? Me
neither)
In this PR, we're selectively deleting the properties which are going to
be set into the DSL and are not required by the DSL. This is done in the
`getChildWidgetProps` function.
DSL Before:
```{
"isVisible": true,
"type": "BUTTON_WIDGET",
"animateLoading": true,
"text": "Submit",
"buttonVariant": "PRIMARY",
"placement": "CENTER",
"widgetName": "Button1",
"isDisabled": false,
"isDefaultClickDisabled": true,
"disabledWhenInvalid": false,
"resetFormOnClick": false,
"recaptchaType": "V3",
"version": 1,
"responsiveBehavior": "hug",
"minWidth": 120,
"searchTags": ["click", "submit"],
"tags": ["Buttons"],
"hideCard": false,
"isDeprecated": false,
"displayName": "Button",
"key": "yngxey92vx",
"iconSVG": "https://release-appcdn.appsmith.com/static/media/icon.7a418b9e1899a550d7e8f33b48cbde12.svg",
"thumbnailSVG": "https://release-appcdn.appsmith.com/static/media/thumbnail.a348658e996feaad96cadc30d99374ff.svg",
"needsErrorInfo": false,
"onCanvasUI": {
"selectionBGCSSVar": "--on-canvas-ui-widget-selection",
"focusBGCSSVar": "--on-canvas-ui-widget-focus",
"selectionColorCSSVar": "--on-canvas-ui-widget-focus",
"focusColorCSSVar": "--on-canvas-ui-widget-selection",
"disableParentSelection": false
},
"widgetId": "3du74sjd24",
"renderMode": "CANVAS",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"isLoading": false,
"parentColumnSpace": 16.21875,
"parentRowSpace": 10,
"leftColumn": 16,
"rightColumn": 32,
"topRow": 27,
"bottomRow": 31,
"mobileLeftColumn": 16,
"mobileRightColumn": 32,
"mobileTopRow": 27,
"mobileBottomRow": 31,
"parentId": "0",
"dynamicBindingPathList": [
{ "key": "buttonColor" },
{ "key": "borderRadius" }
]
}
```
DSL After:
```
{
"isVisible": true,
"type": "BUTTON_WIDGET",
"animateLoading": true,
"text": "Submit",
"buttonVariant": "PRIMARY",
"placement": "CENTER",
"widgetName": "Button1",
"isDisabled": false,
"isDefaultClickDisabled": true,
"disabledWhenInvalid": false,
"resetFormOnClick": false,
"recaptchaType": "V3",
"version": 1,
"responsiveBehavior": "hug",
"minWidth": 120,
"key": "gtjsfondgr",
"needsErrorInfo": false,
"widgetId": "cszodka6p1",
"renderMode": "CANVAS",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}",
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"isLoading": false,
"parentColumnSpace": 16.21875,
"parentRowSpace": 10,
"leftColumn": 18,
"rightColumn": 34,
"topRow": 28,
"bottomRow": 32,
"mobileLeftColumn": 18,
"mobileRightColumn": 34,
"mobileTopRow": 28,
"mobileBottomRow": 32,
"parentId": "0",
"dynamicBindingPathList": [
{ "key": "buttonColor" },
{ "key": "borderRadius" }
]
}
```
Fixes#21825
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9904027497>
> Commit: b6eac580e47dcdd0b056acdb574aac7b8c7cba2f
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9904027497&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Fri, 12 Jul 2024 08:10:58 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Refactor**
- Improved the drag state generation logic for fixed layouts to enhance
performance and maintainability.
- Simplified the `widget` object in the `WidgetAdditionSagas` to remove
unnecessary properties, improving clarity and efficiency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
This PR makes the following changes to prepare for the Anvil Alpha
release
- Add a toggle to the applications page header that allows us to toggle
the Anvil feature flag from the UI.
- Enable the above toggle if the toggle feature flag is enabled
- When the toggle is enabled the following changes occur in the UX
- Import application via Git is disabled and a callout is shown to the
user
- Git features are unavailable for users in Anvil applications
- Copying and pasting widgets between two different layout systems is
disabled and a warning message is shown to the user
- Partial import export of widgets between two different layout systems
is disabled and a warning message is shown to the user
- CRUD page generation is disabled from datasources
- Anvil applications and classic applications are separated into their
own sections in the workspace.
- In case any of the above sections are empty, an appropriate message is
displayed in the empty section
### Screenshots




### Other details
- Toggle feature flag - `release_anvil_toggle_enabled`
- Anvil feature flag - `release_anvil_enabled`
Fixes#34578Fixes#34576Fixes#34575Fixes#33718
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!CAUTION]
> 🔴🔴🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9793128338>
> Commit: 09401272c1d52c915aee3b68925406f2f5f962ba
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9793128338&attempt=2&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.All
> The following are new failures, please fix them before merging the PR:
<ol>
>
<li>cypress/e2e/Regression/ClientSide/PartialImportExport/PartialExport_spec.ts</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added Anvil toggle functionality to the page header.
- Introduced layout compatibility checks for pasting widgets.
- **Enhancements**
- Updated widget paste action to verify layout system compatibility.
- Improved handling and processing of user-uploaded JSON files for
widget import.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Chang Anvil highlight behaviour:
- Chang the behaviour for an empty canvas
- Fix the behaviour inside the zone
https://github.com/appsmithorg/appsmith/assets/11555074/9f4697ec-b84a-4d3c-a568-42cf2006528fFixes#33443
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9758888261>
> Commit: 40f63c19a687e532f5698ceaabba69a281d5c2c8
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9758888261&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Anvil`
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Improved padding and dimension calculations for better highlight
accuracy in the canvas editor.
- **Bug Fixes**
- Adjusted highlight width calculations for empty canvases.
- Corrected compensators for widget alignment to ensure precise
positioning.
- **Tests**
- Updated test cases to reflect changes in highlight width calculations
and widget dragging behavior.
- **Refactor**
- Renamed variables and adjusted identifiers for clarity and consistency
in highlight tests.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=9GEnyEC)
## Description
> [!TIP]
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._
Fixes#33740
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9643638292>
> Commit: bcc4bbddaa50b0be16e41a3a51db4f6abe732e79
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9643638292&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Anvil`
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced test cases for Anvil modals, covering interactions like
opening, closing, drag and drop operations, and handling modal
functions.
- **Bug Fixes**
- Enhanced testing capabilities with `data-testid` attributes for better
identification and testing of components, particularly in detached
widget drop areas.
- **Refactor**
- Updated the `Modal` component to use `dataAttributes` instead of
`size` prop to streamline attribute handling.
- Dynamic generation of modal class names based on properties for better
styling and consistency.
- **Style**
- Adjusted styling for SVG elements within the `EntityExplorer`
component, specifically modifying the height and width properties.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Pawan Kumar <pawankumar@Pawans-MacBook-Pro-2.local>
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=Pmk6xa9)
## Description
> [!TIP]
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._
Fixes#33981
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9639877981>
> Commit: 311f59c5d6cff265ea985c13f9891193866304d6
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9639877981&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Anvil`
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Tests**
- Introduced test cases for adding and moving widgets within a canvas
layout.
- **New Features**
- Added functionality to generate mock data for a layout with two
sections, each containing a zone widget.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
The purpose of this PR is to collect data about hovered canvas and
widgets and send it to analytics platform.
Fixes#33159
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9584384829>
> Commit: 9cec247f7f1e82e0cc23fa5aa5499008bdc58964
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9584384829&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: ``
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced analytics tracking for side-by-side hover actions in the
IDE canvas.
- Added a new `AnalyticsWrapper` component for handling analytics events
within layout systems.
- Implemented a custom hook `useIsInSideBySideEditor` to check for
side-by-side editor mode.
- Added new CSS styles for layout systems.
- **Bug Fixes**
- Improved handling of widget hover events and analytics tracking in
side-by-side editor mode.
- **Refactor**
- Refactored logic for determining the current entity info and segment
state in the IDE.
- Updated import paths and reordered imports for better organization.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
The API call is moved to a saga called `updateJSCollectionAPICall` whose
role is to identify whom this JS collection belongs to `Page` / `Module`
/ `Workflow` and then call the correct API.
In the context of CE, it just calls the existing `updateJSCollection`
but in EE this saga (`updateJSCollectionAPICall`) is extended and does
the checking mentioned above.
For more info on extension check the [EE
PR](https://github.com/appsmithorg/appsmith-ee/pull/4356)
Fixes https://github.com/appsmithorg/appsmith/issues/34008
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9465185887>
> Commit: 5e0214b97de20cf1b9042717fdb578f872c2c7d3
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9465185887&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Tests**
- Added test cases for the `updateJSCollectionAPICall` function.
- Updated `pageId` constant in `pasteSagas.test.ts` for improved
readability and consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
## Description
Regex update to make it compatible to extract identifiers for both Mongo
ObjectIds and UUIDs. This will help us to keep the unified logic
required in `pg` branch.
## Automation
/ok-to-test tags="@tag.Datasource, @tag.GenerateCRUD, @tag.ImportExport,
@tag.Fork, @tag.Workspace, @tag.Sanity"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9405554200>
> Commit: 3959703aab1d10e28d3b80057793476467126929
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9405554200&attempt=2"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced URL path handling to support both UUID and Mongo ObjectIds.
- **Refactor**
- Replaced hardcoded page IDs with dynamic variables across multiple
test files for improved maintainability and flexibility.
- **Tests**
- Updated test cases to use dynamic page IDs, ensuring consistency and
easier updates in the future.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Removed the option to select the tab button in edit mode.
This is the first PR. There will be separate PRs for each widget.
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9445961677>
> Commit: ccba28bd2b17a7afdc27fb59371f7e72bd370169
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9445961677&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced `isEditMode` getter in widgets to enhance edit mode
detection.
- **Improvements**
- Updated button component properties for better consistency and
usability.
- Enhanced widget interaction logic for more accurate behavior in
different modes.
- **Removed**
- Eliminated unnecessary `minWidth`, `maxWidth`, and `minHeight`
properties from button components.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Fixing vanishing widgets in protected branches
Fixes https://github.com/appsmithorg/appsmith/issues/34128
## Automation
/ok-to-test tags="@tag.Git"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9448976837>
> Commit: b45f21e9573c872c809b4f509d735988cbfcfae7
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9448976837&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Refactor**
- Simplified logic by removing unnecessary checks for protected mode.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=mFGYFxI)
## Description
- Adding additional specs for space distribution and section deletion.
- Adding unit tests for anvil pasting.
Fixes#33739
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9443154667>
> Commit: 4a770670aaf2f00d175066b597680345d840cd60
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9443154667&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added new test cases for verifying section removal and visual aspects
of background-less zones in the Anvil layout system.
- Introduced methods to handle mouse events for space distribution
within sections.
- Added mock data generation functionality for widgets, sections, zones,
and layouts.
- **Tests**
- Implemented tests for paste operations in the Anvil layout system,
including various mock functions and scenarios.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Fixed overflow operation for widgets in zones.
Fixes
#32922#33537
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9386697113>
> Commit: e0f8f24f3dd34ec39acb10846d35d0c2f020ca02
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9386697113&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced dynamic font size customization using CSS custom
properties.
- **Improvements**
- Adjusted layout behavior for `AnvilFlexComponent` to use `fit-content`
for better content fitting.
- Enhanced styling for elements with elevation property, including font
size and spacing adjustments.
- Switched to `isEditOnlyModeSelector` for more accurate layout wrapping
behavior in `SectionRow`.
- **Removals**
- Removed `renderMode` property from `BaseLayoutComponent`,
`FlexLayoutProps`, and related components for streamlined functionality.
- Simplified imports and prop handling in `AlignedWidgetRowComp`.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Fix canvas and resizer height with and without navigation.
Fixes#32301
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9381694039>
> Commit: 5c630f59f3f6b8787ade1a9fe14619f1750f2d92
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9381694039&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Enhancements**
- Improved layout responsiveness by using `navigationHeight` for dynamic
styling in preview mode.
- Simplified height calculations in the editor by replacing
`headerHeight` with `navigationHeight`.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Building blocks onboarding banner was showing to users while in preview
mode. This PR checks for isPreviewMode and sets the building blocks
onboarding to hide when in preview mode.
Fixes#33954
## Automation
/ok-to-test tags="@tag.Sanity"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9364855811>
> Commit: e7c0ee51484adbe1e73d3941dc7e99469ae7fdc3
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9364855811&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Onboarding component now respects the preview mode setting, ensuring
it does not render when in preview mode.
- **Tests**
- Added test cases to verify that the onboarding component does not
render in preview mode for both "Non-AirGap Edition" and "AirGap
Edition".
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Description
Removes building blocks on canvas feature.
Fixes#33756
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9312996633>
> Commit: f8059ccad5bc6e6297b935d26687b330a373cde8
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9312996633&attempt=2"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
- Fixes issue where we couldn't drag multiple widgets from the widget
name component
- Previous and incorrect implementation:
- When starting a drag from the widget name component, we force selected
the widget being dragged, so even if multiple widgets were selected,
only one would drag.
- Fix approach
- When starting a drag from the widget name component, we check if the
widget being dragged is focused. If it is focused, we select the widget
before dragging. Otherwise, we directly allow dragging without any
checks.
- The widget name component only shows up when the widget is either
focused or selected. If it is selected, we don't need to select any
widgets and whichever widgets are selected, they will be dragged.
However, if a widget is only focused, we need to make sure that the
intended widget is being dragged.
Fixes#33842
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9312310513>
> Commit: 171b9d3f38ad964556a2f00bd248a01125f3bd13
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9312310513&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
Closing the modal widget name component was delayed due to the fact that
the DOM node that the widget name component used as a reference, was
still available even after the modal wasn't visible on the Canvas.
This was due to the floating-ui taking time to remove the DOM node.
As a fix, I've made react remove the DOM node when the state for the
modal visibility is set to `false`.
Now, the widget name component closes as soon as it discovers that the
reference is hidden.
Additional fix: Changed the detached widget hook functions to be
agnostic of the term "modal".
Fixes#33381
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9219824326>
> Commit: 3f3f6262983a1a860bba8873d9284cfa5b1a2d12
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9219824326&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
- Fixes some of the performance issues in the widget name component for
Anvil. Particularly, the following
- All widget name components for all widgets used to be added to the DOM
tree, even if they're not visible
- All widget name components had the floating-ui listeners added to them
at all times, leading to a sharp rise in the number of JS listeners and
increasing RAM usage.
- Widget name component positions used to recompute sporadically,
leading to perceived jitter when users scrolled too quickly.
The above issues have been fixed by the following changes
- Widget name component gets added to the DOM only when
`nameComponentState !== "none"`
- Widget name component only has listeners added by floating-ui when the
name component needs to be visible
- Floating-ui is configured to recompute in all `requestAnimationFrame`
cycles
Fixes#33386Fixes#33330
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!CAUTION]
> 🔴🔴🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9205700153>
> Commit: db2487d78aa705d4588ca8242de61a2a9fdfbcc5
> Cypress dashboard: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9205700153&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank"> Click here!</a>
> The following are new failures, please fix them before merging the PR:
<ol>
> <li>cypress/e2e/Regression/ClientSide/BugTests/GitBugs_Spec.ts </ol>
> To know the list of identified flaky tests - <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">Refer here</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
- Add a ghost component (`AnvilWidgetNameComponentWrapper`) that
prevents the widget underneath the widget name component from being
focused
- Select widget when dragging a focused widget from the widget name
component
- Adjust offsets and sizes of the ghost component and the widget name
button
- Remove `onMouseLeave` events from widgets and add an `onMouseLeave`
event to the Canvas.
- Change the pointer to `grab` for the widget name component
Fixes#33385
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!CAUTION]
> 🔴🔴🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9201483569>
> Commit: 4373df84f255534a6eb839b1cad532ae327947ec
> Cypress dashboard: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9201483569&attempt=2&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank"> Click here!</a>
> The following are new failures, please fix them before merging the PR:
<ol>
> <li>cypress/e2e/Regression/ClientSide/BugTests/GitBugs_Spec.ts
>
<li>cypress/e2e/Regression/ClientSide/PartialImportExport/PartialImport_spec.ts
</ol>
> To know the list of identified flaky tests - <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">Refer here</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=C6p2w9c)
## Description
In this PR we are making sure the evaluated values of
elevatedBackground(prop that indicates if a section or zone if elevated)
is used instead of the unevaluated value used so far.
For this we will need to refer to siblings as well, so fetching the data
tree state and iterating to find all siblings is going to be
underperformant.
Hence, creating a context for the editor alone which will collect all
sections and zones current evaluated elevated background.
This context will be accessed by `useAnvilDnDListenerStates` and
`useAnvilDnDCompensators` to decide compensators for a zone and section.
We have also enhanced space distribution UX.
- during explicit ditribution(distribution via the handler inbetween
zones on the canvas) all on canvas ui borders are not displayed except
for zones that have switched off visual separation and at the start of
the action we select the section widget.
- during implicit distribution(distribution via the handler in the
property pane)
- of section, the ux on the canvas remains the same, once the action is
done the section widget is still selected.
- of zone, the ux on the canvas remains the same, once the action is
done the zone widget remains selected.
Fixes#33369Fixes#33212
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9172567552>
> Commit: 40a6bcae2d45e9f7791730108b772b679ad610b0
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9172567552&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=DEipBn-)
## Description
In this PR, we are adding an enhancement to DnD of modal widgets.
DnD was implemented only for layouts so in the case of modal, the header
and footer are not layouts and DnD is not triggered when a widget is
being dragged on top of these components of a modal.
However for the user to be able to efficiently use the DnD of modal,
mouse events of the modal are also needed to be processed.
To enable this we have a new hook that wraps all detached widgets in
editor mode only, `useAnvilDetachedWidgetsDnD`
It makes sure mouse move events on the widget are dispatched to the dnd
listeners via custom event `DETACHED_WIDGET_MOUSE_MOVE_EVENT`
we aslo had to special handle mouse leave and enter utilities to
activate a canvas for DnD,
- for all widgets except modals these are handled on the
`useAnvilDnDEventCallbacks`
- for modal widgets these events are handled on the
`useAnvilDetachedWidgetsDnD`
Fixes#33318
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9171877023>
> Commit: 53925782d15c9998d993f39a0239bee64a7805fc
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9171877023&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
## Description
> [!TIP]
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9083152704>
> Commit: b443ac61370d810a1210715c1fe1566f1cdd94ee
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9083152704&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
Additonally this pull request removes the unnecessary checks inside the
Onboarding component by importing the `isDraggingBuildingBlockToCanvas`
function from `selectors/buildingBlocksSelectors` and using it to
determine if any building blocks are being dragged. --> IT is already
being checked in `DropTargetComponent.tsx` which renderst this
`Onboarding` component.
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Templates, @tag.Datasource"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9013874763>
> Commit: 7f53881efa277883d006d9a2ed45a887dc6f2d47
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9013874763&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
We pass the `widgetId` to a function check if the widget is focused.
This function is mislabeled as `isCurrentWidgetFocused`. The `Current`
assumes that the widget is available in context.
A better name would be `isWidgetFocused`.
This PR refactors to rectify this.
## Automation
/ok-to-test tags="@tag.All"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8960937874>
> Commit: 2126e292d725025fccf98a9c805a1c9b04fc715e
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8960937874&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
This fixes part of the widget selection issues from #33138
Specifically, the following:
- [x] Modal border radius goes away in preview mode.
- [x] When a widget is selected and we hover over it, the border
thickness reduces.
- [x] When clicking on the error button, the property control with the
error is not focused.
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8939093222>
> Commit: a94a7ad57d7bcf65f3c17ee158ff612b41d77f57
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8939093222&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
This PR fixes 2 issues:
1. Building blocks after getting dropped had multiple seleciton on - now
we not selecting anything
2. BBs were visible in side by side nav. Now it will only be visible if
`UI` widget is selected.
Fixes#33085
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Sanity, @tag.Templates"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8909118563>
> Commit: 6603b5c05bad39ffdc06e3b67a83669cd2cfe4f7
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8909118563&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
- Create a new set of configurations that can be added to any widget
that will configure the following:
- Selection state colors
- Focused state colors
- If the parent widget can be toggled from the widget's widget name
component.
- Create a default configuration to use if widget hasn't specified the
colors
- Add CSS color variables for the current selection and focused states
- Add configuration to zone, section and modal widgets.
Fixes#33075
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8897891359>
> Commit: 85cdd6b0f1fcce6888cfa3e0c10159def7b2565e
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8897891359&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
## Description
A set of DUCK type, action and saga that opens the first property
control with error for a given `widgetId`.
Note: This assumes that an error exists when calling the action.
Fixes#33073
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8906908304>
> Commit: 3e397ff84c830bd64b4652b2bbddad987ed7414a
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8906908304&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=MA2NqRe)
## Description
> [!TIP]
> _Add a TL;DR when the description is longer than 500 words or
extremely technical (helps the content, marketing, and DevRel team)._
>
> _Please also include relevant motivation and context. List any
dependencies that are required for this change. Add links to Notion,
Figma or any other documents that might be relevant to the PR._
In #33040 we added a state exclusively to capture modals that are
opened/closed to avoid computing which modal is open based on meta
state.
However the problem with this approach that I had understood after
testing it with deployed apps is that closing a modal is not done only
via the saga, but is done via actions and the modal itself without
dispatching the common saga.
Obviously the above implementation dunked.
Reverting to the previous implementation of relying on meta state to
select visible detached widgets.
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8895170744>
> Commit: 517ffc6ac5302bae6940b17b76774a963a18f773
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8895170744&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=M62wKah)
## Description
Currently we render all the detached widgets(Modal) via a hook and the
widget shows up when the metaValue for visibility is toggled for a
modal.
Problems with this:
- we render all modal widgets even before they are needed.
- everytime something on the canvas changes the widgets are rendered.
To solve this we are going to rely on a state that captures the
currently open detached widgets in anvil
`anvilDetachedWidgets.currentlyOpenDetachedWidgets`
This is captured and reset currently based on show and close operations
of a modal.
we now have the modals that are currently open, we simply use this state
to render detached widgets by extracting the widget from the
`canvasWidgetsStructure` in the `useDetachedChildren` hook.
PS: we are taking advantage of the fact that modal widgets can only be a
child of main canvas in anvil. extracting modal states/props from
`canvasWidgetsStructure` becomes more performant coz its a targetted
search now.
Fixes #`Issue Number`
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8890517497>
> Commit: b68ad19c09f768b99d28b72626ceefaa1b79056d
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8890517497&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced a new component for rendering detached child widgets within
the Anvil layout system.
- **Refactor**
- Updated the handling and rendering process of detached widgets across
various components in the Anvil system.
- **Bug Fixes**
- Adjusted selector logic to correctly retrieve and manage detached
widget states.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
[](https://workerb.linearb.io/v2/badge/collaboration-page?magicLinkId=MdeCkAG)
## Description
In this PR,
- we are refactoring Anvil DnD to use dom elements to render highlights
instead of canvas.
Why?
- Doesn't have the ability to overflow a widget and still allow dnd
events(section widget use case)
- limitations with respect to being testable
- we are adding compensators to dnd layers, so that DnD is not just for
layout but for the entire widget.
Widget is the appsmith entity.
layout is something present in container like widgets like Section and
Zone which allow you to contain children widgets based on a the layout
structure.
What are compensators?
- additional padding for DnD layers in a widget
- additional position offsets for highlights in a widget so that they
don't stick to the layout.
Why compensators?
- Section widget can be activated to show highlights in areas
overlapping with main canvas
- DnD should be possible even at spacings created by parent widget like
in Zone widget
- we are also removing canvas activation logic and moving to using mouse
move event to activate a canvas for DnD.
Fixes#32016
_or_
Fixes `Issue URL`
> [!WARNING]
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._
## Automation
/ok-to-test tags="@tag.Anvil"
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/8872919856>
> Commit: 3f6603bf8480a99437552ac73764c9de1d6f7f95
> Cypress dashboard url: <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8872919856&attempt=1"
target="_blank">Click here!</a>
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Summary by CodeRabbit
- **New Features**
- Introduced a new layout property for widgets, enhancing customization
options.
- Added a custom error boundary component to handle and display errors
elegantly.
- New drag-and-drop components and utilities to improve interaction
within the editor canvas.
- Adjusted component hierarchies in Anvil editor and viewer for better
performance and structure.
- **Refactor**
- Simplified rendering logic in `AnvilWidgetComponent` by removing
conditional boundaries.
- Updated the hierarchy within the Anvil editor, enhancing component
nesting and interaction.
- **Bug Fixes**
- Adjusted padding values and added new constants for better UI
alignment and interaction feedback.
- **Chores**
- Renamed and reorganized Cypress locators and methods for clearer and
more efficient testing automation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->