## Description This PR primarily adds the modal widget to WDS. The following changes were made: 1. WidgetNameCanvas now listens to modal body scrolls to position widget name components correctly 2. Modal Widget is rendered as a detached widget that is outside of the layout flow of the main canvas 3. Main container resizer now has a higher z-index to show even if the modal is open in the preview mode 4. Widget selection flow in Anvil layout system has been modified to be handled in a central location (`AnvilMainCanvas`) 5. Modal widget's type in modal sagas are selected via a selector that checks for the feature flag. 6. Modal widget has its own preset that (at present) is similar to the Main container's layout preset #### PR fixes following issue(s) Fixes #28588 Fixes #28328 Fixes #27459 #### Media https://github.com/appsmithorg/appsmith/assets/103687/bf350be4-2202-49f3-a860-3e38681ab32e #### Type of change - New feature (non-breaking change which adds functionality) - This change requires a documentation update ## Testing > #### How Has This Been Tested? - [x] Manual - [ ] JUnit - [ ] Jest - [ ] Cypress ## 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: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [ ] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [ ] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Enhanced Modal components with additional styling and customization options. - Introduced a new event type for modal submission actions. - Added a `--on-canvas-ui-z-index` CSS variable for improved layering control. - Implemented a new method for widget focus management in the editor. - **Improvements** - Modal components now use context hooks for close actions. - Improved the handling of detached widgets in various layout systems. - Simplified the drag-and-drop state management for widgets. - Upgraded the visual presentation of the widget drop area. - Enhanced widget selection with new custom event dispatching. - Updated the modal widget configuration with default settings and property pane structure. - **Bug Fixes** - Fixed an issue with modal scrolling to behave consistently with the main container. - Addressed a problem where the `id` was not found during layout element position updates. - **Style** - Adjusted modal overlay positioning and content width with new CSS standards. - Updated zIndex references to use CSS variables for consistent styling. - **Refactor** - Reorganized the `Widgets` array into categorized groups for better clarity. - Simplified the `modalPreset` function's parameters and layout declaration. - **Documentation** - Added default values for feature flags in the documentation. - **Chores** - Altered feature flags to enable new functionalities by default. - **Tests** - No visible changes to end-users in this category. - **Revert** - No visible changes to end-users in this category. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Preet Sidhu <preetsidhu.bits@gmail.com> Co-authored-by: Valera Melnikov <valera@appsmith.com>
54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import { Colors } from "constants/Colors";
|
|
import type { CSSProperties } from "react";
|
|
|
|
export const WIDGET_NAME_CANVAS = "widget-name-canvas";
|
|
export const WIDGET_NAME_FONT_SIZE = 14;
|
|
export const WIDGET_NAME_LINE_HEIGHT = Math.floor(WIDGET_NAME_FONT_SIZE * 1.2);
|
|
export const WIDGET_NAME_VERTICAL_PADDING = 4;
|
|
export const WIDGET_NAME_HORIZONTAL_PADDING = 6;
|
|
export const WIDGET_OUTLINE_OFFSET = 1;
|
|
export const WIDGET_NAME_ICON_PADDING = 16;
|
|
|
|
export const DEFAULT_WIDGET_NAME_CANVAS_HEIGHT = 600;
|
|
export const WIDGET_NAME_CANVAS_PADDING = 20;
|
|
|
|
export const WIDGET_NAME_COMPONENT_BUFFER = 8;
|
|
|
|
export const WIDGET_NAME_HEIGHT = Math.floor(
|
|
WIDGET_NAME_LINE_HEIGHT + WIDGET_NAME_VERTICAL_PADDING * 1.5,
|
|
);
|
|
|
|
export const WIDGET_NAME_TEXT_COLOR = Colors.WHITE;
|
|
|
|
//Adding this here as Konva accepts this type of path for SVG
|
|
export const warningSVGPath =
|
|
"M 18 9 C 18 13.9706 13.9706 18 9 18 C 4.0294 18 0 13.9706 0 9 C 0 4.0294 4.0294 0 9 0 C 13.9706 0 18 4.0294 18 9 Z M 7.875 3.9375 V 10.125 H 10.125 V 3.9375 H 7.875 Z M 9 14.0625 C 9.6213 14.0625 10.125 13.5588 10.125 12.9375 C 10.125 12.3162 9.6213 11.8125 9 11.8125 C 8.3787 11.8125 7.875 12.3162 7.875 12.9375 C 7.875 13.5588 8.3787 14.0625 9 14.0625 Z";
|
|
|
|
//Indicates the state of widget name
|
|
export enum WidgetNameState {
|
|
SELECTED = "SELECTED",
|
|
ERROR = "ERROR",
|
|
FOCUSED = "FOCUSED",
|
|
}
|
|
|
|
//fill colors of widget name based on state
|
|
export const WIDGET_NAME_FILL_COLORS = {
|
|
[WidgetNameState.SELECTED]: Colors.JAFFA_DARK,
|
|
[WidgetNameState.FOCUSED]: Colors.WATUSI,
|
|
[WidgetNameState.ERROR]: Colors.DANGER_SOLID,
|
|
};
|
|
|
|
//CSS properties of the wrapper object of the html canvas
|
|
export const widgetNameWrapperStyle: CSSProperties = {
|
|
position: "absolute",
|
|
top: 0,
|
|
left: 0,
|
|
zIndex: "var(--on-canvas-ui-z-index)",
|
|
pointerEvents: "none",
|
|
display: "flex",
|
|
flexDirection: "column",
|
|
alignItems: "center",
|
|
width: "100%",
|
|
height: "100%",
|
|
};
|