## Description
TL;DR
This is a complete architectural change of of List widget works to
support all widgets we currently have and should automatically support
any future widgets.
It also introduces nested List widgets i.e a list widget can have a
another list widget which in turn can have another list widget.
Fixes#18206Fixes#6775Fixes#13211Fixes#16582Fixes#11739Fixes#15094Fixes#6840Fixes#10841Fixes#17386Fixes#18340Fixes#16898Fixes#17555Fixes#6858Fixes#9568Fixes#17480Fixes#18523Fixes#18206Fixes#16586Fixes#18106Fixes#16576Fixes#14697Fixes#9607Fixes#19648Fixes#19739Fixes#19652Fixes#18730Fixes#19503Fixes#19498Fixes#19437Fixes#5245Fixes#19150Fixes#18638Fixes#11332Fixes#17901Fixes#19043Fixes#17777Fixes#8237Fixes#15487Fixes#15988Fixes#18621Fixes#16788Fixes#18110Fixes#18382Fixes#17427Fixes#18105Fixes#18287Fixes#19808Fixes#14655
## Type of change
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Cypress
- Jest
- Manual
## Checklist:
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
---------
Co-authored-by: Tolulope Adetula <31691737+Tooluloope@users.noreply.github.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
## Description
This PR adds another feature update we had planned for Auto Height
- [ ] For new applications, in View and Preview mode, any widget which
is invisible will let go of its space and collapse if it's either on the
main Canvas or a container-like widget which has Auto-height enabled.
- [ ] Widgets within a container-like Widget, say Tabs, that doesn't
have Auto-height enabled, will now let go of their space if they're
invisible.
- [ ] The experience in Edit mode has not changed.
TL;DR: In new applications, in the Preview and Published _AKA_ View
modes, if a widget is invisible and within an Auto-height-enabled
container like a Tab, a Modal, a Form, or the main Canvas, it will fully
collapse, allowing widgets below it to move up and take its space. This
changes the behavior today prior to the release of this PR for
Auto-height-enabled widgets.
Fixes#19983Fixes#18681
## Description
Any platform function that accepts a callback were unable to access the
variables declared in its parent scopes. This was a implementation miss
when we originally designed platform functions and again when we turned
almost every platform function into a Promise. This PR fixes this
limitation along with some other edge cases.
- Access outer scope variables inside the callback of run, postMessage,
setInterval, getGeoLocation and watchGeolocation functions.
- Fixes certain edge cases where functions with callbacks when called
inside the then block doesn't get executed. Eg `showAlert.then(() => /*
Doesn't execute */ Api1.run(() => {}))`
- Changes the implementation of all the platform function in appsmith to
maintain the execution metadata (info on from where a function was
invoked, event associated with it etc)
#### Refactor changes
- Added a new folder **_fns_** that would now hold all the platform
functions.
- Introduced a new ExecutionMetadata singleton class that is now
responsible for hold all the meta data related to the current
evaluation.
- Remove TRIGGER_COLLECTOR array where all callback based platform
functions were batched and introduced an Event Emitter based
implementation to handle batched fn calls.
- All callback based functions now emits event when invoked. These
events have handlers attached to the TriggerEmitter object. These
handler does the job of batching these invocations and telling the main
thread. It also ensures that platform fn calls that gets triggered out
the the context of a request/response cycle work.
#### Architecture
<img width="751" alt="Screenshot 2023-02-07 at 10 04 26"
src="https://user-images.githubusercontent.com/32433245/217259200-5eac71bc-f0d3-4d3c-9b69-2a8dc81351bc.png">
Fixes#13156Fixes#20225
## Type of change
- Bug fix (non-breaking change which fixes an issue)
- Refactor
## How Has This Been Tested?
- Jest
- Cypress
- Manual
### Test Plan
- [ ] https://github.com/appsmithorg/TestSmith/issues/2181
- [ ] https://github.com/appsmithorg/TestSmith/issues/2182
- [ ] Post message -
https://appsmith-git-chore-outer-scope-variable-access-get-appsmith.vercel.app/app/post-msg-app/page1-635fcfba2987b442a739b938/edit
- [ ] Apps:
https://appsmith-git-chore-outer-scope-variable-access-get-appsmith.vercel.app/app/earworm-1/home-630c9d85b4658d0f257c4987/edit
- [ ]
https://appsmith-git-chore-outer-scope-variable-access-get-appsmith.vercel.app/app/automation-test-cases/page-1-630c6b90d4ecd573f6bb01e9/edit#0hmn8m90ei
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reviewing all Cypress test
## Description
In order to improve the first load of the applications, now we're only
rendering the widget components that are [above the
fold](https://en.wikipedia.org/wiki/Above_the_fold#In_web_design) right
away and rendering the other widget components whenever the browser is
idle. This decreases the amount of time it takes before the first paint
on the screen.
This is getting shipped behind a feature flag!
## Description
Updates the redirection link when the user clicks on `Upgrade`. Also
renders the background in CSS instead of using still image as an
placeholder.
Fixes#20313
Media

## Type of change
> Please delete options that are not relevant.
- Chore (housekeeping or task changes that don't impact user perception)
## How Has This Been Tested?
- Manual
## Checklist:
### Dev activity
- [ ] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
fix: Autocomplete needs to show async await keywords instead of showing
'no suggestions
<img width="522" alt="image"
src="https://user-images.githubusercontent.com/20187542/215432520-066587e8-665b-4939-bbcf-2bb9d39a88a9.png">
Fixes#10115
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
- Cypress
### Test Plan
### Issues raised during DP testing
## Checklist:
### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
Current evaluation architecture has 2 natures of evaluation
- sync evaluation ( evaluation for data fields )
- async evaluation ( evaluation for trigger events )
For every evaluation, this nature needs to be set according to the field
being evaluated.
It was noticed that for async code evaluation where a code block
executes only after the resolution of promise, for example,
`fetch().then((res) => { showAlert("fetched") });`
Here, the `showAlert` only executes when the fetch is completed and
before that, it could be possible that we have switched to sync
evaluation in the worker. This would lead to a `showAlert` throwing
error.
Hence, we resolve this issue by making `async evaluation` as the default
nature of evaluation.
Fixes https://github.com/appsmithorg/appsmith/issues/19733
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
- Manual
1. Validated Supabse app to check the error and JSPDF
2. Validated sync data field with sync function and framework function -
verify that error for async function is displayed properly
3. Validated older apps(Automation app/Silly string) to verify the Async
error is not displayed
4. .then and catch block in async function -
- Jest
- Cypress
### Test Plan
### Issues raised during DP testing
---------
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
## Description
Features:-
1. Created a new AutoResizeTextArea component in the editorComponents.
Textarea does not increase its height on adding text, but it increases
its scroll height. To accommodate Auto Height with the
textarea/Multi-line InputWidget, I have created a new TextArea component
which changes its height when its content changes based on its
scrollHeight. This is done by creating another hidden similar proxy
Textarea with contents equal to the widget's value, and whenever this
value changes we run a layout effect that sets the main text area height
equal to the scrollHeight of the proxy textarea.
2. Added a new configuration `Multi-line` for InputWidget in the
Data-Type which will decide whether to replace the `input` element with
`textarea`.
Currently, the way to decide whether we should display a textarea or not
is based on whether widget's height is greater than 8 rows or not. To
fix it, I added a proper configuration which will user to select whether
he/she wants a Single-line input or Multi-line textarea.
3. Replaced the label of `Text` configuration to `Single-line` which
remains a simple `input` element as before.
Changed the label of the Text configuration to Single-line in contrast
with Multi-line.
4. Migration
Added migration number 75 for the InputWidgetsV2. Used the same previous
logic to detect whether the input type should be multiple-line or not
and set the `inputType` to `MULTI_LINE_TEXT` if it's true.
5. Changed a lot of CSS styling in Input components (Currency and Phone
too) so that they look similar to other components like DatePicker and
Select. Currently the input component take containers height which is
different from other components.
6. The onSubmit behaviour of the Multi-line input has also changed. Now
the line-break will happen on Enter and submit will be triggered on Cmd
+ Enter.
7. Added an updateHook in the Input widget which when selected the
Multi-line input will set its dynamic height property to AutoHeight.
Fixes#19655
Media
> A video or a GIF is preferred. when using Loom, don’t embed because it
looks like it’s a GIF. instead, just link to the video
## Type of change
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Manual
- Jest
### Test Plan
https://github.com/appsmithorg/TestSmith/issues/2151
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [x] Test plan has been approved by relevant developers
- [x] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
Co-authored-by: Apple <nandan@thinkify.io>
Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
### Description
Fixes [#198](https://github.com/appsmithorg/cloud-services/issues/198)
Media
https://www.loom.com/share/9f22ca26663b465190d50b80d77d8bfd
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
- Manual
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
We need to upgrade `styled-components`, so that it will become easy to
upgrade to version 6.0 when it is out. This is because, v6.0 has an
important functionality which isn't available in today's version.
### Tasks completed
- Update Styled components to latest version.
- Prepare codebase by cleaning up the styled components functions that
will be deprecated in version 6
- We are still using the `withTheme` HOC, we should instead use the
`useTheme` hook (best practices)
- Remove the `AnyStyledComponent` type it is un-necessary and will be
deprecated
Fixes#19463
## Type of change
- Non breaking change. The application should work as before and should
not effect any visual elements or UI.
## How Has This Been Tested?
- Manual @appsmithorg/qa please refer to the test plan for areas of
interest.
- Cypress: All existing test cases must pass.
### Test Plan
- We need to do a sanity check on the Product Updates Modal, Release
section.
- We also need to do a sanity check on the Login, Signup, ResetPassword
pages.
- I think we can merge this Pull Request and continue with our weekly
regression, because there are no style changes in this Pull Request,
everything should work as expected.
## Checklist:
### Dev activity
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
We have updated the user tracking to use a rolling window. Now the
session starts when the user goes to the builder or viewer for the first
time and the subsequent activity tracking will be checked only after an
hour.
For anonymous users, we send the Segment anonymous id in the usage
calls. When the telemetry is off, we still initiate the segment, get the
id and then purge the analytics global object.
Fixed window (in release, as of now)- if the user starts a session at
01:15 pm, we take 01:00 pm as the session start time and we will check
for the next user activity at 2:00 pm.
rolling window (in this PR) - if the user starts a session at 01:15 pm,
we take 01:15 pm as the session start time and we will check for the
next user activity at 2:15 pm.
Fixes https://github.com/appsmithorg/cloud-services/issues/183
## Type of change
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Manual
### Test Plan
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
Since Usage & Billing is EE only, there are a few components which needs
to be code splitted. So code splitted those files and also added feature
flag for Usage & Billing.
TL;DR Code split usage and billing files
Fixes [#146](https://github.com/appsmithorg/cloud-services/issues/146)
## Type of change
> Please delete options that are not relevant.
- Code splitting
## How Has This Been Tested?
- Manual
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
This PR includes Changes for Drag and drop Improvements, That includes,
- Resizing dragging widgets along Container edges.
- Initially resize widgets against Container/Droptarget widgets.
- While holding close to Container/Droptarget widgets for half a second,
start to reflow the widget.
Fixes#19139Fixes#12892
Media
https://user-images.githubusercontent.com/71900764/209154834-66acecbb-2df8-4598-86d5-4fe7843dd21b.mp4
## Type of change
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- Manual
- Jest
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
## Description
The canvas used to calculate the mouse position and grid props gets
truncated in Desktop mode because of the size of the browser. So using
drop target to calculate the values whose size does not change.
Fixes#18710
Media
https://user-images.githubusercontent.com/71900764/209565076-e18ee424-bdd4-4410-a82a-d8d06f7cbac9.mp4
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
- Manual
Was unable to add cypress test for the same, It does not seem to be
recognising mouse positions while verifying positions
### Test Plan
> Add Testsmith test cases links that relate to this PR
### Issues raised during DP testing
> Link issues raised during DP testing for better visiblity and tracking
(copy link from comments dropped on this PR)
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
Related to https://github.com/appsmithorg/appsmith/issues/15538
Need to listen to route change outside editor for that feature.
## Description
Made `ROUTE_CHANGE` redux event to be triggered on every route change.
Previously it was just for editor route changes. (Not for app viewer,
home page etc...)
Made sure existing methods called on `NavigationSaga` ->
`handleRouteChange` listen only to editor route events, as it was
before.
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested?
- Existing cypress tests should pass, since there are no functional
changes.
- Manually verified events are triggered
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test
Co-authored-by: Hetu Nandu <hetu@appsmith.com>
After doing an exploration, I found that ThemeShadowControl and
ThemeBorderRadiusControl were not using the components from the Design
System. Edited those components to make use of DS components.
Also removed some unwanted DOM elements
* remove auto height from list widget's children
* avoid large diffs
* disable auto height in list widget, review commit
* fix children object for list widget during migration
* reposition comment
* fix blueprint message when multiple widgets are added
* remove comment
* List widget test for Dynamic height updated
* fix propertyPane config
* fix property pane search for hidden dynamic height values
Co-authored-by: Apple <nandan@thinkify.io>
* refactor: JSONForm eliminate the use of canvasWidgets and remove childStylesheet from dynamicBindingPathList
* review changes
* fixed field reset on deploy
* reverted prevSourceData changes
* faet: Add menu items source for menu widget
* feat: Add configuration panel for dynamic menu items
* feat: Pass down items from sourceData to menu items widget
* feat: Take menu items config from property pane for dynamic menu items
* fix: Change all onMenuItemClick to onClick for dynamic menu items
* feat: Create MenuComputeValue property control to add support for {{currentItem}} binding in menu widget
* feat: Add JS toggles for style properties for menu widget
* feat: onClick now supports currentItem for menu button widget
* feat: Add currentItem autocomplete, move property pane config to separate files for menu button widget
* feat: WIP - Add Dynamic Menu Items for Table Widget
* Revert "feat: WIP - Add Dynamic Menu Items for Table Widget"
This reverts commit 271f96211c8612bc6f073a1aab7467993b9d7e36.
* fix: remove current item label by default for dynamic menu items in menu button
* feat: Add source data max length 10 validation for dynamic menu items in menu button
* feat: Add migrations for Dynamic Menu Items for Menu Button Widget
* feat: Add cypress test for dynamic menu items for menu button
* test: Update DSLMigration test with menu button widget tests
* fix: Update MenuButtonWidget migration
* fix: DSL migrations for menu button dynmaic items
* fix: Style validations for menu widget
* feat: Add more descriptive help text for configure menu items in menu button widget
* feat: Change menu items source property type from dropdown to icon tabs
* fix: Cy test for menu button widget to select menu items source from button tabs instead of dropdown
* feat: Make ConfigureMenuItemsControl a Generic/reusable OpenNextPanelWithButtonControl
* refactor: Change MenuComputeValue to MenuButtonDynamicItemsControl
* refactor: Merge TABLE_PROPERTY and MENU_PROPERTY into one ARRAY_AND_ANY_PROPERTY
* fix: Don't polute Menu Button DSL with properties for dynamic menu items until the source is static
* style: Change color of curly braces hint in currentItem autocomplete to make it more readable
* fix: remove unused import
* refactor: Move child config panels to a different file, style: Change help text and placeholder for a few properties for Dynamic menu items - menu button
* refactor: Change event autocomplete function name, use fast equal
* refactor: Change source data validation function name and use camelCase throughout
* refactor: Validation function for source data
* refactor: Create different type for menuItems and configureMenuItems and reuse them property config
* feat: refactor: move get items to widget instead of component
* pref: Visible items to be calculated when menu button is clicked
* refactor: replace !("menuItemsSource" in child) with in migration
* refactor: Change controlType name from OPEN_NEXT_PANEL_WITH_BUTTON to OPEN_CONFIG_PANEL, use generic names inside OpenNextPanelWithButtonControl.tsx
* refactor: Minor cleanup at MenuButtonDynamicItemsControl.tsx
* refactor: Minor cleanup at MenuButtonDynamicItemsControl.tsx
* fix: Change constant used in migration to a static value
* test: Add tests for validations and helper for menu button
* test: Add more Cypress tests for dynamic-menu-items
* fix: Minor refactor at onclick handler and MenuButtonDynamicItemsControl
* refactor: Rename ARRAY_AND_ANY_PROPERTY to ARRAY_TYPE_OR_TYPE
* feat: Move initial source data and keys generation inside an update hook
* refactor: Rename ARRAY_TYPE_OR_TYPE to ARRAY_OF_TYPE_OR_TYPE
* refactor: Minor code refactor in MenuButtonWidget/widget/index.tsx
* refactor: Change OpenNextPanelWithButtonControl with OpenConfigPanelControl
* feat: Use traverseDSLAndMigrate for dynamic menu items migration
* style: Minor code hygiene changes here and there for dynamic menu items
* style: Minor code hygiene changes here and there for dynamic menu items
* style: remove any type for visible items inside dynamic menu items
* refactor: Change type MenuItems to MenuItem
* feat: Add support for dynamic menu items (menu button) inside list widget
* fix: updateMenuItemsSource hook not working when changing from DYNAMIC to STATIC menu items source
* fix: Avoid empty icon name from rendering inside button and menu item
* style: Fix a couple of code callouts
* fix: Update import from TernServer to CodemirrorTernService
* style: fix minor code callouts here and there
* fix: Add check for configureMenuItems.config
* fix: Add wait time after addOption click for DynamicHeight_Auto_Height_spec.js
* fix: Increase the wait time for DynamicHeight_Auto_Height_spec.js to 200ms
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
* In progress fixes for auto height perf
* Revert collapse logic
* Revert changes
* Remove console logs, and fix tests
* Fix scenario where container widgets don't collapse
* Bring back hidden widgets
* fix: Overlapping of widgets while reflowing other widgets (#18460)
* fix: api url z-index to show it above response panel (#18200)
* chore: Switched to sequential checks instead of a parallel one for RTS check (#18440)
fix: Switched to sequential checks instead of a parallel one
* chore: Added size limit check for the message before sending the data to segment (#18453)
* fix: Allowing multi form to json switching and eliminating json to form sw… (#18192)
* Allowing multi form to json switching and eliminating json to form switching unless form data is cleared
* Fix failing jest test case
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
* add missed width and height limits instead of incrementing depth by 1
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Nidhi <nidhi@appsmith.com>
Co-authored-by: Anagh Hegde <anagh@appsmith.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
* fix: auto height with limits deselect widget (#18455)
* fix: api url z-index to show it above response panel (#18200)
* chore: Switched to sequential checks instead of a parallel one for RTS check (#18440)
fix: Switched to sequential checks instead of a parallel one
* chore: Added size limit check for the message before sending the data to segment (#18453)
* fix: Allowing multi form to json switching and eliminating json to form sw… (#18192)
* Allowing multi form to json switching and eliminating json to form switching unless form data is cleared
* Fix failing jest test case
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
* refactor overlay and handles state into ui reducer and added a check for is limits changing in the widgets editor as well
* added helpful comments at relevant places
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Nidhi <nidhi@appsmith.com>
Co-authored-by: Anagh Hegde <anagh@appsmith.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* changes the label on limit handles collision to height
* fix: issues related to tabs widget in auto height (#18468)
* Fix issues related to tabs widget in auto height
* Fix issue where preview mode canvas did not scroll
* Fix scroll issues with fixed containers
* Fix issue where tabs widget computed the canvas height incorrectly
* Re-compute in case of tabs widget
* fix: widgets increase spacing (#18462)
* Change how the spacing works when widgets push or pull widgets below
* Fix type issues in test file
* Fix tests to reflect changes
* Add comment to describe why we're generating distanceToNearestAbove
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Nidhi <nidhi@appsmith.com>
Co-authored-by: Anagh Hegde <anagh@appsmith.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: ankurrsinghal <ankur@appsmith.com>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* removed block and added flex consistent in the alignment case of left and right
* fixed radio group which broke because of display block
* default enabled auto height for every widget
* added reivew changes
* reverted the switch group style changes and added the check for Text widget background in the AutoHeightContainer
* changed the scroll helper text for containers
* reverted the default enable for all the widgets
* test: fixed DH flaky test (#18415)
fixed DH flaky test
* fix: auto height container computations (#18408)
* Fix auto height container computations
* fix: Invisible Widgets Overlap while switching back and forth between edit and preview modes in rare cases (#18398)
sort Space based on original position if dynamic positions are equal while generating tree
* fix: group widgets label alignment. (#18360)
* fix: group widgets label alignment.
* fix: switch and radio fix transform styles for auto height.
* feat: disable auto height limits for modal (#18386)
* added multi select back
* (WIP): Complete the dynamc height update logic
* (WIP): Dynamic height logic
* (WIP): Container computation logic, Next steps: Prevent reflow when resize is disabled. Fix logic of widgets randomly changing positions (Debug)
* Fix logic in container computations
* Integrate for PoC
* fixed the no initial load dynamic height updates
* Stop vertical resize and reflow when dynamic height is enabled for a widget
* added another container in text widget
* enabled dynamic height for container widgets
* removed dynamic height feature from list widget
* Fixed Button and Input components height increase
* added an experiment to overflow the content if maxHEight is less
* removed the ref of Textwidget by mistake, added it back
* fixed text widget height overflow problem with a little hack
* added long labels with text
* fixed the table scroll issue
* overflow fixed for json form widget
* added extra 8px height for Switch, Rating and Checkbox Height
* (WIP): Resolve issues
* (WIP): Fix widget padding issue
* added overflow container for Radio and Switch group widgets
* (WIP): Have modals work with dynamic height
* added the overlay and the handles
* added dragging behavior to the dots
* fixed the overlapping with the selection tool
* (WIP): Fix issues reported
* now we can update the property pane values back from overlay handles
* now we can update the property pane values back from overlay handles
* (WIP): Fix table widget
* Fix package.json
* Remove unit tests temporarily
* Fix unit test
* (WIP): Fix modal resize. Fix cursors. Fix border issue on non-resizable widgets
* fetch component heights using the requestAnimationFrame callback
* behavioural changes
* (WIP): Fix issues on the platform
* Update main container size appropriately
* more behavioural changes
* overlay now only be visible when hovering over the dots
* grid showing and widget reselecting
* added onfocus and onblur events to property pane listeners
* added onfocus and onblur events to property pane listeners
* added a range slider for min and max
* added demarcations for slider values
* (WIP): Fix platform workflows for dynamic height
* Fix issues with widgets
* Fix removed import
* - Add missing cypress files
* set the limits
* limit increase on change
* Fix z-index of min max limit indicators. Fix unused-vars warnings
* Fix Table Widget and Text Widget issues
* Fix: all the bugs in the bug master list for DH (#16268)
* changed the zindex for the signifiers
* showing signifiers only when the widget is selected
* made changes suggested by Momcilo
* activate the dots when the fields are active
* created a new centered dot handle
* removed overlays on focus and made the border more like deisgn
* handles on top of other widgets
* hide the overlay when multiple widgets are selected
* added a white border
* added a white border
* bug #15509 resolved
* changed the minDynamicHeightLimit to 2 instead of 4 to fix the Bug #15527
* removed the height auto fix from BaseInputComponent to fix the Bug #15388
* removed the condition to not ccalculate dynamic height when the row difference is less than 2 to fix the bug 15353
* made fixes for the bug #16307
* made fixes for the bug #16308
* made fixes for bug 16310
* made fixes for the bug #16402
* removed some log statements
* made fixes for the bug #16407
* fixed label problem found in the issue #16543
* made fixes for the issue #16547
* made fixes for the bug #16492
* redeploy
* (WIP): Fix to make this branch functional
* imported LabelWithTooltip back from design system
* signifier is now centered
* filled the signifier with primary color
* overlay hidden while dragging
* made the signifier dashed border also draggable
* Fix issue #16590 (#16798)
* set the limits to 4 rows
* replaced the static 40 value
* added signifiers for modal widget
* added signifiers for modal widget
* tried solving the scroll issue for widgets when there are limits
* solved the height problem using ResizeObserver
* (WIP): Fix maxDynamicHeight issue with container widgets:
* made the changes as per the review
* fixed the issue for input widget when label gets out of border
* hide text widget overflow options if auto height is enabled
* (WIP): In view mode, invisible widgets now donot take space (#16920)
* (WIP): In view mode, invisible widgets now donot take space
* (WIP): Enable the feature where invisible widgets in view mode don't take space to all widgets irrespective of the dynamic height feature
* Remove Replay conditional
* removed the scroll container for container type widgets
* removed the scroll container for container type widgets
* updated the hook to set overflow none for text widget
* fixed the should dynamic height logic to respect the min height limit
* Modal widget adheres to dynamic height (#16995)
* Modal widget adheres to dynamic height
* WIP: POC: fix dynamic height issues (#16996)
Fix height less than 4 issue. Fix JSONForm adherence to min and max height
* POC: Dynamic height undo redo issue (#17085)
* Revert debouce timeout
* (WIP): Fix issue with undo-redo in dynamic height
* fix: Dynamic height issue fixes (#17153)
* Dynamic height issue fixes
==
- Fix issue where nested widgets did not ensure parent dynamic height updates
- Fix issue where Modal widget updates came in subsequent renders
- Fix issue where JSONForm collapses
- Fix performance issue for independent updates
* Use functions to get min and max dynamic height
* Fix issue where variable might have been undefined
* added the dynamic container into the deploy mode as well
* added overflow-x hidden when overflow-y is active in the dynamic height container
* fix: Dynamic height Issue fixes (#17204)
Fix preview mode invisible widgets. Fix Tabs widget dynamic height.
* removed a console.log statement
* removed the slider control file
* imported the LabelWithTooltip from the repo rather than ds
* word-break CSS rules added for Switch and Checkbox widget when Dynamic Height is enabled
* abstracted the check for dynamic height with limits enabled as isDynamicHeightWithLimitsEnabledForWidget
* abstracted the static value of 10 in dynamic height overlay to GridDefaults
* abstracted min and max dynamic height limits to getters
* fix: replaced all the refs for simpler widgets (#17353)
* replaced all the refs for simpler widgets
* removed the updateDynamicHeight from componentDidUpdate in BaseWidget
* added back lifecycle methods back to BaseWidget
* removed the contentRef from SwitchGroup and Table
* updating the height from the auto height with limits as well
* some hacks to make the limits work
* working solution
* used setTimeout to send an update to updateDynamicHeight from overlay update
* removed a log
* added requestanimationframe in settimeout
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* Fix issues caused during merge
* Remove unneeded derived property
* removed more unnecessary code which should have been removed after removing the ref dependency
* fixed the maxDynamicHeight issue
* Fix issue where property configs were not being sent
* fix: Auto Height Feature - add selectors for tests (#17687)
Add selectors for auto height cypress tests
* fix: removed height auto default theme (#17415)
removed height auto css rule from the default theme
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
* fix: Auto Height Feature - Resolve issues and restructure code (#17686)
* Fix issues in dynamic height. Restructure code and reduce abstraction leaks
* Fix typescript issues
* Update based on review comments. Comment migrations, as a cyclic import is causing the jest tests to fail.
* Remove unused imports
* Decrease code nesting
* added the base styles for the overlay like position and z-index in its styled component css
* used the isDynamicHeightEnabled prop to set the height of SwitchGroup and RadioGroup widgets from 32px to 100% in case of inline mode
* fix: Auto Height - Resolve issues (#17737)
* Fix Tabs Widget showTabs toggle based auto height. Revert removal of BaseWidget code. Remove box-intersect and use a bruteforce algorithm. Add base logic for having containers collapse due to hidden child widgets
* Hide scroll contents and overflow property pane controls when dynamic height is enabled
* Removed the class property expectedHeight from BaseWidget as it is not useful in the overlay logic after some changes
* fixed the left alignment issue of label in the rich text editor by adding some styles applied only when the dynamic height is enabled
* fixed the input field stretching issue in case of Dynamic height by adding some CSS styles when isDynamicHeight is true
* Fix failing modal widget cypress tests
* Fix issue with scrollContents and Tabs Widget defaulTab
* added a little bit padding of 4px to the right of scroll container of dynamic height with limit
* Add test locators for resize handles
* removed the dynamic height logic from the table widget
* fix: Auto-Height invisible widgets (#17849)
* Fix issue where invisible widgets were still taking space
* Make sure to collapse only if dynamic height is enabled
* Fix issues with reflow (not the invisible widgets)
* Fix container min height issues
* Fix reflow with original bottom and top values. Testing needed
* Fix invisible widgets
* fix: enabled dynamic height for stat box widget (#17971)
enabled dynamic height for stat box widget
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: added a min height to rich text editor so that it does not collapse (#17970)
added a min height to rich text editor so that it does not collapse
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* Fix issue with resizing auto height widget
* Add helper text to educate users regarding the scroll disconnect in WYSIWYG
* fix: Auto Height Fixes (#18111)
AUTO HEIGHT FIXES
- Fix JSONForm height discrepancy
- Fix issue where widgets moved below the other
- Fix droptarget height after parent container resize
* fix: sliced up the DynamicHeightOverlay component a little bit (#18100)
* sliced up the DynamicHeightOverlay component a little bit
* more refactoring
* more refactoring
* used release event emitter and refactored more
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: rich text editor center alignment issue (#18142)
* removed the center alignment from rich text editor
* dummy commit
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: old DSL container collapse (#18160)
* Fix issue where old containers from old DSLs used to collapse when auto height was enabled
* Fix issue where old containers don't allow new widgets to be added when auto height is enabled, this is because the shouldScrollContents is undefined
* fix: input widgets issue (#18172)
fixed the auto height not working issue
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: preview deploy mode (#18174)
fixed the preview and deploy mode
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height limits label intersection with handle dot (#18186)
fixed the position of the limits label to the right so that it will not intersect with the handle dot
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height limits rich text editor min height (#18187)
decrease the min height of the RTE so that it does not have the boundary issue with the max limit when auto height with limits is enabled
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: grammatical error in the help text (#18188)
changed react to reacts in the helpText of the dynamic height property in the proeprty pane
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height tabs double scroll (#18210)
solved the issue by disabling the scroll for the child canvas widget in the tabs widget
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height limits resizing (#18213)
* fixed the auto height limits resizing issue
* made the auto height overlay independent of isResizing and used its own property to show the grid
* some more refactoring
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* dummy commit
* fix: old apps container issue (#18255)
filtered out the widgets which are detached from layout
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: fixing auto height in childless containers. (#18263)
fixing auto height in childless containers.
* task: Dynamic height reflow fixes in Branch (#18244)
dynamic height reflow fixes
* fix: compact label issue and min and max limits numeric input (#18282)
fixed compact label issue and turned min and max limits to numeric input
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: LabelWithTooltip help icon fix
* fix: NaN and min limit for min and max (#18284)
* fixed compact label issue and turned min and max limits to numeric input
* fixed NaN and set min to be 4
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: validation issues for min max (#18286)
* fixed compact label issue and turned min and max limits to numeric input
* fixed NaN and set min to be 4
* validations start working min max
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* added a full stop to container scroll helper text
* validations start working min max
* dummy commit
* feat: stop resizing auto height widgets vertically because of Drag n Drop Reflow (#18267)
* reflow fixes
* stop resizing auto height widgets vertically because of Drag n Drop Reflow
* feat: Analytics for Dynamic height (#18279)
* Fix canvas min height issue and invisible widgets issue and remove logs and fix issue where widgets overlapped when coming back from preview mode to edit mode
* Fix issue with containers not respecting auto height and decreasing height
* Fix issue with modal widget not hugging contents, and container widgets never become visible after going invisible
* Fix issue where existing containers don't have correct min height for child canvas
* fix: canvasLevelsReducers test (#18301)
fixed the canvasLevelsReducers test
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: removed auto height min max config from widget features (#18316)
removed auto height min max config from widget features
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: Fixing Modal Height updates (#18317)
Fixing Modal Height updates
* fix: text widget background auto height (#18319)
added background color of Text widget back to the auto height container
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* test: cypress tests for auto height (#17676)
* Added tests for dynamic height
* updated tests for another usecase
* moved locators into commonfile
* updated common method
* added tests for some more widgets
* Added tests for jsonForm / Form widget
* Updated the test
* updated test for multiple text widgets
* updated test with few more usecases
* updated the dsl
* updated tests for text change
* updated tests based on new changes
* updated cypress test fixes
* fix: auto height container merge poc wrt release (#18334)
updated the poc wrt PR already merged in the release regarding the auto height container
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: renamed auto height overlay components and added some tests (#18333)
* renamed auto height overlay components and added some tests
* replaced the 10 value with GridDefaults
* avoiding event to reach drop target
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* updated tests
* Merge all code into one branch
* Fix failing AutoHeightcontainer test
* fix: Fix reflow computations which were causing widget overlap (#18300)
* Fix reflow computations which were causing widget overlap
* Fix issues with parent container height and overlapping widgets
* Remove console logs
* Revert comment
* Fix issues related to reflow of containers
* feat: Making getEffectedBoxes a Recursive function in autoHeight Reflow (#18336)
Making getEffectedBoxes a Recursive function in autoHeight Reflow
* Return null for invisible widgets from withWidgetProps
* Remove duplicate import
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
* Remove missed console log
* fix: Label position gets deselected on selecting already selected option (#18298)
* fix: Label position gets deselected on selecting the already selected value
* Added migration for Currency & Phone input widgets
* simplify migration function using a utility
* combine conditions
* Increments LATEST_PAGE_VERSION
* Update DynamicHeight_Visibility_spec.js
updated a check wrt auto height
* Handling Modals for canvas size calculations
* fix: migrate label position test failing issue (#18365)
fixed migrate label postition test failing issue
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* removed the two unwanted imports from DSLMigrations to fix client build
* fix: Auto height zero and limits issue (#18366)
fixed the auto height zero and limits issue
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: Auto height regression issues (#18367)
* Fix auto height regression issues #18367
* feat: auto height migrations (#18368)
Add auto height migrations
* Increase file caching size
* Use manual array for list of auto height enabled widgets
* Fix cypress test dsl versions
* Revert changes to shouldUpdateHeightDynamically
* Update test results based on code changes
* Marginally increase the workbox file size cache
* review comment incorporated for test spec
* Update container auto height property on drop
* Disable auto height with limits for modal
Co-authored-by: Ankur Singhal <ankur@appsmith.com>
Co-authored-by: rahulramesha <rahul@appsmith.com>
Co-authored-by: Abhinav Jha <zatanna@Abhinavs-iMac.lan>
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
Co-authored-by: Albin <albin@appsmith.com>
Co-authored-by: Aswath K <aswath.sana@gmail.com>
Co-authored-by: NandanAnantharamu <67676905+NandanAnantharamu@users.noreply.github.com>
Co-authored-by: Apple <nandan@thinkify.io>
* chore: Moved height property to General section (#18402)
* fix: Height property is moved to General section
* Logs an Error if section is not General
* fix: Cypress
* enabled auto height for all the widgets except json form
* removes accidentally committed files
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* disabled default auto height for input widgets and select widgets and datepicker widget
* feat: Disable auto height for widgets in List Widget (#18381)
* Remove auto height for container Inside List widget
* remove unneccessary changes
* disable feature at generalConfig instead of firstConfig
* add todo comment
* skipped the get min limit tests
* fixed AutoHeightLimitHandleDot tests
* Updated cypress tests for regression changes
* update visual tests for widget layout
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
Co-authored-by: NandanAnantharamu <67676905+NandanAnantharamu@users.noreply.github.com>
Co-authored-by: Abhinav Jha <abhinav@appsmith.com>
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
Co-authored-by: Arsalan Yaldram <arsalanyaldram0211@outlook.com>
Co-authored-by: rahulramesha <rahul@appsmith.com>
Co-authored-by: Abhinav Jha <zatanna@Abhinavs-iMac.lan>
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
Co-authored-by: Albin <albin@appsmith.com>
Co-authored-by: Aswath K <aswath.sana@gmail.com>
Co-authored-by: Apple <nandan@thinkify.io>
Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
* added multi select back
* (WIP): Complete the dynamc height update logic
* (WIP): Dynamic height logic
* (WIP): Container computation logic, Next steps: Prevent reflow when resize is disabled. Fix logic of widgets randomly changing positions (Debug)
* Fix logic in container computations
* Integrate for PoC
* fixed the no initial load dynamic height updates
* Stop vertical resize and reflow when dynamic height is enabled for a widget
* added another container in text widget
* enabled dynamic height for container widgets
* removed dynamic height feature from list widget
* Fixed Button and Input components height increase
* added an experiment to overflow the content if maxHEight is less
* removed the ref of Textwidget by mistake, added it back
* fixed text widget height overflow problem with a little hack
* added long labels with text
* fixed the table scroll issue
* overflow fixed for json form widget
* added extra 8px height for Switch, Rating and Checkbox Height
* (WIP): Resolve issues
* (WIP): Fix widget padding issue
* added overflow container for Radio and Switch group widgets
* (WIP): Have modals work with dynamic height
* added the overlay and the handles
* added dragging behavior to the dots
* fixed the overlapping with the selection tool
* (WIP): Fix issues reported
* now we can update the property pane values back from overlay handles
* now we can update the property pane values back from overlay handles
* (WIP): Fix table widget
* Fix package.json
* Remove unit tests temporarily
* Fix unit test
* (WIP): Fix modal resize. Fix cursors. Fix border issue on non-resizable widgets
* fetch component heights using the requestAnimationFrame callback
* behavioural changes
* (WIP): Fix issues on the platform
* Update main container size appropriately
* more behavioural changes
* overlay now only be visible when hovering over the dots
* grid showing and widget reselecting
* added onfocus and onblur events to property pane listeners
* added onfocus and onblur events to property pane listeners
* added a range slider for min and max
* added demarcations for slider values
* (WIP): Fix platform workflows for dynamic height
* Fix issues with widgets
* Fix removed import
* - Add missing cypress files
* set the limits
* limit increase on change
* Fix z-index of min max limit indicators. Fix unused-vars warnings
* Fix Table Widget and Text Widget issues
* Fix: all the bugs in the bug master list for DH (#16268)
* changed the zindex for the signifiers
* showing signifiers only when the widget is selected
* made changes suggested by Momcilo
* activate the dots when the fields are active
* created a new centered dot handle
* removed overlays on focus and made the border more like deisgn
* handles on top of other widgets
* hide the overlay when multiple widgets are selected
* added a white border
* added a white border
* bug #15509 resolved
* changed the minDynamicHeightLimit to 2 instead of 4 to fix the Bug #15527
* removed the height auto fix from BaseInputComponent to fix the Bug #15388
* removed the condition to not ccalculate dynamic height when the row difference is less than 2 to fix the bug 15353
* made fixes for the bug #16307
* made fixes for the bug #16308
* made fixes for bug 16310
* made fixes for the bug #16402
* removed some log statements
* made fixes for the bug #16407
* fixed label problem found in the issue #16543
* made fixes for the issue #16547
* made fixes for the bug #16492
* redeploy
* (WIP): Fix to make this branch functional
* imported LabelWithTooltip back from design system
* signifier is now centered
* filled the signifier with primary color
* overlay hidden while dragging
* made the signifier dashed border also draggable
* Fix issue #16590 (#16798)
* set the limits to 4 rows
* replaced the static 40 value
* added signifiers for modal widget
* added signifiers for modal widget
* tried solving the scroll issue for widgets when there are limits
* solved the height problem using ResizeObserver
* (WIP): Fix maxDynamicHeight issue with container widgets:
* made the changes as per the review
* fixed the issue for input widget when label gets out of border
* hide text widget overflow options if auto height is enabled
* (WIP): In view mode, invisible widgets now donot take space (#16920)
* (WIP): In view mode, invisible widgets now donot take space
* (WIP): Enable the feature where invisible widgets in view mode don't take space to all widgets irrespective of the dynamic height feature
* Remove Replay conditional
* removed the scroll container for container type widgets
* removed the scroll container for container type widgets
* updated the hook to set overflow none for text widget
* fixed the should dynamic height logic to respect the min height limit
* Modal widget adheres to dynamic height (#16995)
* Modal widget adheres to dynamic height
* WIP: POC: fix dynamic height issues (#16996)
Fix height less than 4 issue. Fix JSONForm adherence to min and max height
* POC: Dynamic height undo redo issue (#17085)
* Revert debouce timeout
* (WIP): Fix issue with undo-redo in dynamic height
* fix: Dynamic height issue fixes (#17153)
* Dynamic height issue fixes
==
- Fix issue where nested widgets did not ensure parent dynamic height updates
- Fix issue where Modal widget updates came in subsequent renders
- Fix issue where JSONForm collapses
- Fix performance issue for independent updates
* Use functions to get min and max dynamic height
* Fix issue where variable might have been undefined
* added the dynamic container into the deploy mode as well
* added overflow-x hidden when overflow-y is active in the dynamic height container
* fix: Dynamic height Issue fixes (#17204)
Fix preview mode invisible widgets. Fix Tabs widget dynamic height.
* removed a console.log statement
* removed the slider control file
* imported the LabelWithTooltip from the repo rather than ds
* word-break CSS rules added for Switch and Checkbox widget when Dynamic Height is enabled
* abstracted the check for dynamic height with limits enabled as isDynamicHeightWithLimitsEnabledForWidget
* abstracted the static value of 10 in dynamic height overlay to GridDefaults
* abstracted min and max dynamic height limits to getters
* fix: replaced all the refs for simpler widgets (#17353)
* replaced all the refs for simpler widgets
* removed the updateDynamicHeight from componentDidUpdate in BaseWidget
* added back lifecycle methods back to BaseWidget
* removed the contentRef from SwitchGroup and Table
* updating the height from the auto height with limits as well
* some hacks to make the limits work
* working solution
* used setTimeout to send an update to updateDynamicHeight from overlay update
* removed a log
* added requestanimationframe in settimeout
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* Fix issues caused during merge
* Remove unneeded derived property
* removed more unnecessary code which should have been removed after removing the ref dependency
* fixed the maxDynamicHeight issue
* Fix issue where property configs were not being sent
* fix: Auto Height Feature - add selectors for tests (#17687)
Add selectors for auto height cypress tests
* fix: removed height auto default theme (#17415)
removed height auto css rule from the default theme
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
* fix: Auto Height Feature - Resolve issues and restructure code (#17686)
* Fix issues in dynamic height. Restructure code and reduce abstraction leaks
* Fix typescript issues
* Update based on review comments. Comment migrations, as a cyclic import is causing the jest tests to fail.
* Remove unused imports
* Decrease code nesting
* added the base styles for the overlay like position and z-index in its styled component css
* used the isDynamicHeightEnabled prop to set the height of SwitchGroup and RadioGroup widgets from 32px to 100% in case of inline mode
* fix: Auto Height - Resolve issues (#17737)
* Fix Tabs Widget showTabs toggle based auto height. Revert removal of BaseWidget code. Remove box-intersect and use a bruteforce algorithm. Add base logic for having containers collapse due to hidden child widgets
* Hide scroll contents and overflow property pane controls when dynamic height is enabled
* Removed the class property expectedHeight from BaseWidget as it is not useful in the overlay logic after some changes
* fixed the left alignment issue of label in the rich text editor by adding some styles applied only when the dynamic height is enabled
* fixed the input field stretching issue in case of Dynamic height by adding some CSS styles when isDynamicHeight is true
* Fix failing modal widget cypress tests
* Fix issue with scrollContents and Tabs Widget defaulTab
* added a little bit padding of 4px to the right of scroll container of dynamic height with limit
* Add test locators for resize handles
* removed the dynamic height logic from the table widget
* fix: Auto-Height invisible widgets (#17849)
* Fix issue where invisible widgets were still taking space
* Make sure to collapse only if dynamic height is enabled
* Fix issues with reflow (not the invisible widgets)
* Fix container min height issues
* Fix reflow with original bottom and top values. Testing needed
* Fix invisible widgets
* fix: enabled dynamic height for stat box widget (#17971)
enabled dynamic height for stat box widget
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: added a min height to rich text editor so that it does not collapse (#17970)
added a min height to rich text editor so that it does not collapse
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* Fix issue with resizing auto height widget
* Add helper text to educate users regarding the scroll disconnect in WYSIWYG
* fix: Auto Height Fixes (#18111)
AUTO HEIGHT FIXES
- Fix JSONForm height discrepancy
- Fix issue where widgets moved below the other
- Fix droptarget height after parent container resize
* fix: sliced up the DynamicHeightOverlay component a little bit (#18100)
* sliced up the DynamicHeightOverlay component a little bit
* more refactoring
* more refactoring
* used release event emitter and refactored more
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: rich text editor center alignment issue (#18142)
* removed the center alignment from rich text editor
* dummy commit
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: old DSL container collapse (#18160)
* Fix issue where old containers from old DSLs used to collapse when auto height was enabled
* Fix issue where old containers don't allow new widgets to be added when auto height is enabled, this is because the shouldScrollContents is undefined
* fix: input widgets issue (#18172)
fixed the auto height not working issue
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: preview deploy mode (#18174)
fixed the preview and deploy mode
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height limits label intersection with handle dot (#18186)
fixed the position of the limits label to the right so that it will not intersect with the handle dot
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height limits rich text editor min height (#18187)
decrease the min height of the RTE so that it does not have the boundary issue with the max limit when auto height with limits is enabled
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: grammatical error in the help text (#18188)
changed react to reacts in the helpText of the dynamic height property in the proeprty pane
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height tabs double scroll (#18210)
solved the issue by disabling the scroll for the child canvas widget in the tabs widget
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: auto height limits resizing (#18213)
* fixed the auto height limits resizing issue
* made the auto height overlay independent of isResizing and used its own property to show the grid
* some more refactoring
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* dummy commit
* fix: old apps container issue (#18255)
filtered out the widgets which are detached from layout
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: fixing auto height in childless containers. (#18263)
fixing auto height in childless containers.
* task: Dynamic height reflow fixes in Branch (#18244)
dynamic height reflow fixes
* fix: compact label issue and min and max limits numeric input (#18282)
fixed compact label issue and turned min and max limits to numeric input
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: LabelWithTooltip help icon fix
* fix: NaN and min limit for min and max (#18284)
* fixed compact label issue and turned min and max limits to numeric input
* fixed NaN and set min to be 4
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: validation issues for min max (#18286)
* fixed compact label issue and turned min and max limits to numeric input
* fixed NaN and set min to be 4
* validations start working min max
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* added a full stop to container scroll helper text
* validations start working min max
* dummy commit
* feat: stop resizing auto height widgets vertically because of Drag n Drop Reflow (#18267)
* reflow fixes
* stop resizing auto height widgets vertically because of Drag n Drop Reflow
* feat: Analytics for Dynamic height (#18279)
* Fix canvas min height issue and invisible widgets issue and remove logs and fix issue where widgets overlapped when coming back from preview mode to edit mode
* Fix issue with containers not respecting auto height and decreasing height
* Fix issue with modal widget not hugging contents, and container widgets never become visible after going invisible
* Fix issue where existing containers don't have correct min height for child canvas
* fix: canvasLevelsReducers test (#18301)
fixed the canvasLevelsReducers test
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: removed auto height min max config from widget features (#18316)
removed auto height min max config from widget features
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: Fixing Modal Height updates (#18317)
Fixing Modal Height updates
* fix: text widget background auto height (#18319)
added background color of Text widget back to the auto height container
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* test: cypress tests for auto height (#17676)
* Added tests for dynamic height
* updated tests for another usecase
* moved locators into commonfile
* updated common method
* added tests for some more widgets
* Added tests for jsonForm / Form widget
* Updated the test
* updated test for multiple text widgets
* updated test with few more usecases
* updated the dsl
* updated tests for text change
* updated tests based on new changes
* updated cypress test fixes
* fix: auto height container merge poc wrt release (#18334)
updated the poc wrt PR already merged in the release regarding the auto height container
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: renamed auto height overlay components and added some tests (#18333)
* renamed auto height overlay components and added some tests
* replaced the 10 value with GridDefaults
* avoiding event to reach drop target
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* updated tests
* Merge all code into one branch
* Fix failing AutoHeightcontainer test
* fix: Fix reflow computations which were causing widget overlap (#18300)
* Fix reflow computations which were causing widget overlap
* Fix issues with parent container height and overlapping widgets
* Remove console logs
* Revert comment
* Fix issues related to reflow of containers
* feat: Making getEffectedBoxes a Recursive function in autoHeight Reflow (#18336)
Making getEffectedBoxes a Recursive function in autoHeight Reflow
* Return null for invisible widgets from withWidgetProps
* Remove duplicate import
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
* Remove missed console log
* fix: Label position gets deselected on selecting already selected option (#18298)
* fix: Label position gets deselected on selecting the already selected value
* Added migration for Currency & Phone input widgets
* simplify migration function using a utility
* combine conditions
* Increments LATEST_PAGE_VERSION
* Update DynamicHeight_Visibility_spec.js
updated a check wrt auto height
* Handling Modals for canvas size calculations
* fix: migrate label position test failing issue (#18365)
fixed migrate label postition test failing issue
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* removed the two unwanted imports from DSLMigrations to fix client build
* fix: Auto height zero and limits issue (#18366)
fixed the auto height zero and limits issue
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
* fix: Auto height regression issues (#18367)
* Fix auto height regression issues #18367
* feat: auto height migrations (#18368)
Add auto height migrations
* Increase file caching size
* Use manual array for list of auto height enabled widgets
* Fix cypress test dsl versions
* Revert changes to shouldUpdateHeightDynamically
* Update test results based on code changes
* Marginally increase the workbox file size cache
* review comment incorporated for test spec
* Update container auto height property on drop
* added small wait for validation
Co-authored-by: Ankur Singhal <ankur@appsmith.com>
Co-authored-by: rahulramesha <rahul@appsmith.com>
Co-authored-by: Abhinav Jha <zatanna@Abhinavs-iMac.lan>
Co-authored-by: Ankur Singhal <ankursinghal@Ankurs-MacBook-Pro-2.local>
Co-authored-by: Ankur Singhal <ankurrsinghal@gmail.com>
Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
Co-authored-by: rahulramesha <71900764+rahulramesha@users.noreply.github.com>
Co-authored-by: Albin <albin@appsmith.com>
Co-authored-by: Aswath K <aswath.sana@gmail.com>
Co-authored-by: NandanAnantharamu <67676905+NandanAnantharamu@users.noreply.github.com>
Co-authored-by: Apple <nandan@thinkify.io>
* feat: Add Scanner Variant - Click to scan and always on to code scanenr
* feat: Enhancements for code scanner's property pane - update help text, hide properties on always on
* feat: Add Image Mirror button to code scanner
* feat: Update code scanner video fit to contain
* feat: Add DSL migrations for Code Scanner
* feat: Make always on the default scanner layout, rename scannerVarient to scannerLayout
* feat: Stop scanning and detecting codes in background for code scanner widget
* test: Add Cypress tests for different scanner layouts for code scanner
* refactor: fix minor code callouts here and there
* refactor: Restructure cypress test suite
* feat: Increase code scanner delay to avoid unintended detections
* refactor: combine two different conditions into one ternary
* feat: Remove one cy test case
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
* add readonly prop + migrate disabled to readonly for rate widget
* add comment
* add check for dynamic value
* add readonly to dynamic property list in migration
* add tooltip in readonly state too
* fix jest tests
* dummy commit to fix git file name issue
* dummy commit to fix git file name issue
## Problem
**Why do we need validation dependency?**
- When on change of particular property value if other property needs revalidation then current evaluation architecture do not support such validation run.
https://www.notion.so/appsmith/Validation-Dependency-d7623a5625bd4aa187a3ae2372d3ac07
**Issues to resolve**
Fixes#15303Fixes#17159
Fixes https://github.com/appsmithorg/appsmith/issues/16170
## Solution
**New Validation Flow**
validate a property after its evaluation and check if there are other properties that need to revalidate on a change of this value.
- if yes run validation for those properties.
How does validation dependency get created?
- every widget’s property will keep static `dependencies` array in `validation` property like shown below.
```jsx
{
validation: {
type: ValidationTypes.FUNCTION,
params: {
fn: defaultOptionValueValidation,
expected: {
type: 'value1 or { "label": "label1", "value": "value1" }',
example: `value1 | { "label": "label1", "value": "value1" }`,
autocompleteDataType: AutocompleteDataType.STRING,
},
dependentPaths: ["serverSideFiltering", "options"],
},
dependencies: ["serverSideFiltering", "options"],
}
}
```
This `dependentPaths` array will be used to form validationDependencyMap.
#### Changes
- The code editor component wasn't re-rendering for a few cases. Due to this updates were not shown until the component state was changed.
- In CreateFirstTree, After evaluateTree we run `validateTree`. In `validateTree`, we validate all the properties in `validationPaths`. Here, if the errors were resolved on revalidation, it didn't reset the validation errors stored in data tree before. Now, this PR adds the reset logic.
- Created `validationDependencyMap` to re-validate properties on change of the property their validation depends upon.
- After each property evaluates in `updateDataTree`, we check if re-validation is needed, if yes then we re-validate dependent properties.
## Type of change
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
- jest test
**Test Plan**
https://github.com/appsmithorg/TestSmith/issues/2078
## Checklist:
- [x] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my feature works
- [x] New and existing unit tests pass locally with my changes