PromucFlow_constructor/app/client/src/widgets
Ravi Kumar Prasad 6ac99037b0
feat: Action selector (#21582)
## Description
Replaces the old boring action selector dropdown with a much more
sophisticated UI that is capable of going above and beyond. Users with
an aversion to code can now build their more complex workflows with a
click of a few buttons.

Consider this code snippet 
```javascript
Api1.run(() => {
  showAlert("Hello");
  navigateTo('Page1', {}, 'SAME_WINDOW');
}, () => {
  removeValue("test");
});
```
|**Old action selector** |**New action selector**|
|:-:|:-:|
|<img width="250" alt="Screenshot 2023-03-29 at 16 54 14"
src="https://user-images.githubusercontent.com/32433245/228520661-a639b580-8986-4aec-a0f5-e2786d1a0f56.png">|
<img width="250" alt="Screenshot 2023-03-29 at 16 55 15"
src="https://user-images.githubusercontent.com/32433245/228521043-5025aa42-af95-4574-b586-bc4c721240bc.png">|

**Click on an action block to edit its parameters.**
<img width="500" alt="Screenshot 2023-03-29 at 17 01 18"
src="https://user-images.githubusercontent.com/32433245/228522479-493769d0-9d2c-4b67-b493-a79e3bb9c947.png">

**Switch to JS mode to get the raw code**
<img width="273" alt="Screenshot 2023-03-29 at 17 05 51"
src="https://user-images.githubusercontent.com/32433245/228523458-13bc0302-4c94-4176-b5aa-3ec208122f57.png">

### Code changes
**New UI components**
  - ActionCreator component splits the code into block statements.
  - Each block statement is represented by ActionTree.tsx UI component.
  - ActionTree.tsx represents an action and its chains.
- ActionCard.tsx is the block that represents the individual action on
the UI.
- ActionSelector.tsx component is popover that contains the form for
editing individual action.
- TabView, TextView, SelectorView, ActionSelectorView and KeyValueView
are components that represent configurable fields in ActionSelector
form.
  
**AST methods**
  - Added methods to get/set function names, expressions, arguments.
- Added methods to get/set then/catch blocks to allow chaining of
actions.
  - Added methods to check if code is convertible to UI.

Fixes #10160
Fixes #21588 
Fixes #21392
Fixes #21393
Fixes #7903
Fixes #15895
Fixes #17765
Fixes #14562

Depends on https://github.com/appsmithorg/design-system/pull/306

## Type of change
- New feature (non-breaking change which adds functionality)

## How Has This Been Tested?
- Manual
- Jest
- Cypress

### Test Plan
https://github.com/appsmithorg/TestSmith/issues/2296

### 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
- [ ] 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
- [x] Cypress test cases have been added and approved by either SDET or
manual QA
- [x] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [x] Added Test Plan Approved label after reveiwing all Cypress test

---------

Co-authored-by: Rimil Dey <rimil@appsmith.com>
Co-authored-by: arunvjn <arun@appsmith.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Parthvi Goswami <parthvigoswami@Parthvis-MacBook-Pro.local>
2023-04-06 22:19:12 +05:30
..
AudioRecorderWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
AudioWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
BaseInputWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ButtonGroupWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ButtonWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
CameraWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
CategorySliderWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ChartWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
CheckboxGroupWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
CheckboxWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
CircularProgressWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
CodeScannerWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
components chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
ContainerWidget [Community Contribution] fix: clean implementation of isAutoHeightEnabledForWidget (#21738) 2023-04-03 11:41:10 +05:30
CurrencyInputWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
DatePickerWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
DatePickerWidget2 feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
DividerWidget feat: Improved App Navigation (#19312) 2023-03-23 17:11:58 +05:30
DocumentViewerWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
DropdownWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
FilepickerWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
FilePickerWidgetV2 feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
FormButtonWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
FormWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
IconButtonWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
IconWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
IframeWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ImageWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
InputWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
InputWidgetV2 chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
JSONFormWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ListWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ListWidgetV2 feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
MapChartWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
MapWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
MenuButtonWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
ModalWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
MultiSelectTreeWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
MultiSelectWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
MultiSelectWidgetV2 feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
NumberSliderWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
PhoneInputWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
ProgressBarWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
ProgressWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
QRGeneratorWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
RadioGroupWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
RangeSliderWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
RateWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
RichTextEditorWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
SelectWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
SingleSelectTreeWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
StatboxWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
SwitchGroupWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
SwitchWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
TableWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
TableWidgetV2 feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
TabsMigrator feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
TabsWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
TextWidget chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
VideoWidget feat: Action selector (#21582) 2023-04-06 22:19:12 +05:30
BaseComponent.tsx chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
BaseWidget.tsx [Community Contribution] fix: clean implementation of isAutoHeightEnabledForWidget (#21738) 2023-04-03 11:41:10 +05:30
CanvasWidget.tsx chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
constants.ts chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
MetaHOC.tsx chore: Table performance improvement (#20983) 2023-03-30 10:24:29 +05:30
MetaWidgetContextProvider.tsx chore: Table performance improvement (#20983) 2023-03-30 10:24:29 +05:30
Skeleton.tsx perf: Widget re-rendering refactor (#14485) 2022-08-19 15:40:36 +05:30
SkeletonWidget.tsx chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
useDropdown.tsx chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
WidgetUtils.test.ts [Community Contribution] fix: clean implementation of isAutoHeightEnabledForWidget (#21738) 2023-04-03 11:41:10 +05:30
WidgetUtils.ts [Community Contribution] fix: clean implementation of isAutoHeightEnabledForWidget (#21738) 2023-04-03 11:41:10 +05:30
withLazyRender.tsx chore: upgrade to prettier v2 + enforce import types (#21013)Co-authored-by: Satish Gandham <hello@satishgandham.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> 2023-03-16 17:11:47 +05:30
withWidgetProps.tsx fix: Selected Widget Visibility (#21317) 2023-03-23 11:13:07 +05:30