PromucFlow_constructor/app/client/src/pages/Editor/MainContainerWidthToggles.tsx
Valera Melnikov 42debc6d11
chore: rename ADS package (#35583)
## Description
Rename `design-system` package to `@appsmith/ads`

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10319507327>
> Commit: 65d9664dd75b750496458a6e1652e0da858e1fc6
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10319507327&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Fri, 09 Aug 2024 13:47:50 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
2024-08-09 17:20:29 +03:00

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 "ee/actions/applicationActions";
import type {
AppLayoutConfig,
SupportedLayouts,
} from "reducers/entityReducers/pageListReducer";
import {
getCurrentApplicationId,
getCurrentApplicationLayout,
} from "selectors/editorSelectors";
import { Icon, SegmentedControl, Tooltip } from "@appsmith/ads";
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>
);
}