PromucFlow_constructor/app/client/src/pages/Editor/MainContainerWidthToggles.tsx
rahulramesha 0fd3345163
chore: Rename and cleanup of editor components (#26944)
## Description
This PR is aimed at Renaming and cleanup of editor components. The
changes include,
- Rename Editor components to reflect more of it's function as an editor
component
- Rename all references of the container to wrapper so as to avoid
confusion with Actual containers and canvases
- Pass down few instances of selected properties to children instead of
reselecting the same in the children
- Remove all instances of `isAutolayout`, instead use
`useLayoutSystemFeatures` to check if the particular feature is enabled
in the particular layout type.

P.S. please feel free to suggest better names that define the function
of the components.

#### PR fixes following issue(s)
Fixes #26571

#### Type of change
- Chore (housekeeping or task changes that don't impact user perception)

#### 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
- [ ] 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

---------

Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
2023-09-12 19:44:02 +05:30

112 lines
2.4 KiB
TypeScript

import React, { useCallback } from "react";
import styled from "styled-components";
import { useDispatch, useSelector } from "react-redux";
import { updateApplicationLayout } from "@appsmith/actions/applicationActions";
import type {
AppLayoutConfig,
SupportedLayouts,
} from "reducers/entityReducers/pageListReducer";
import {
getCurrentApplicationId,
getCurrentApplicationLayout,
} from "selectors/editorSelectors";
import { Icon, SegmentedControl, Tooltip } from "design-system";
const StyledSegmentedControl = styled(SegmentedControl)`
> .ads-v2-segmented-control__segments-container {
flex: 1 1 0%;
}
`;
interface AppsmithLayoutConfigOption {
name: string;
type: SupportedLayouts;
icon: string;
}
export const AppsmithDefaultLayout: AppLayoutConfig = {
type: "FLUID",
};
const AppsmithLayouts: AppsmithLayoutConfigOption[] = [
{
name: "Fluid width",
type: "FLUID",
icon: "fluid",
},
{
name: "Desktop",
type: "DESKTOP",
icon: "desktop",
},
{
name: "Tablet (Landscape)",
type: "TABLET_LARGE",
icon: "tabletLandscape",
},
{
name: "Tablet (Portrait)",
type: "TABLET",
icon: "tablet",
},
{
name: "Mobile device",
type: "MOBILE",
icon: "mobile",
},
];
const options = AppsmithLayouts.map((layout, index) => ({
label: (
<Tooltip
content={layout.name}
key={layout.name}
mouseEnterDelay={0}
placement={
index === AppsmithLayouts.length - 1 ? "bottomRight" : "bottom"
}
>
<Icon name={layout.icon} size="md" />
</Tooltip>
),
value: layout.type,
}));
/**
* OldName: MainContainerLayoutControl
*/
export function MainContainerWidthToggles() {
const dispatch = useDispatch();
const appId = useSelector(getCurrentApplicationId);
const appLayout = useSelector(getCurrentApplicationLayout);
/**
* updates the app layout
*
* @param layoutConfig
*/
const updateAppLayout = useCallback(
(type: string) => {
dispatch(
updateApplicationLayout(appId || "", {
appLayout: {
// @ts-expect-error: Type error
type,
},
}),
);
},
[dispatch, appLayout],
);
return (
<div className="pb-6 space-y-2 t--layout-control-wrapper">
<StyledSegmentedControl
defaultValue={appLayout.type}
onChange={updateAppLayout}
options={options}
/>
</div>
);
}