Conform to the naming policy - AppsContainer resizer (#11042)
* Add a snapshot to track AppTile in AppsDrawer * Conform to the naming policy - AppsContainer resizer * Nest 'mx_AppsContainer_resizer_container_handle' to enforce the style - mx_AppsContainer_resizer - mx_AppsContainer_resizer_container - mx_AppsContainer_resizer_container_handle * Rename "mx_AppsContainer_resizer" to "mx_AppsDrawer_resizer" PersistentVResizer is defined by mx_AppsDrawer (see const "classes")
This commit is contained in:
parent
7c9c818f06
commit
0ce3664434
5 changed files with 151 additions and 32 deletions
|
@ -102,7 +102,7 @@ describe("Widget Layout", () => {
|
||||||
it("manually resize the height of the top container layout", () => {
|
it("manually resize the height of the top container layout", () => {
|
||||||
cy.get('iframe[title="widget"]').invoke("height").should("be.lessThan", 250);
|
cy.get('iframe[title="widget"]').invoke("height").should("be.lessThan", 250);
|
||||||
|
|
||||||
cy.get(".mx_AppsContainer_resizerHandle")
|
cy.get(".mx_AppsDrawer_resizer_container_handle")
|
||||||
.trigger("mousedown")
|
.trigger("mousedown")
|
||||||
.trigger("mousemove", { clientX: 0, clientY: 550, force: true })
|
.trigger("mousemove", { clientX: 0, clientY: 550, force: true })
|
||||||
.trigger("mouseup", { clientX: 0, clientY: 550, force: true });
|
.trigger("mouseup", { clientX: 0, clientY: 550, force: true });
|
||||||
|
|
|
@ -32,43 +32,47 @@ limitations under the License.
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
|
||||||
.mx_AppsContainer_resizerHandleContainer {
|
.mx_AppsDrawer_resizer {
|
||||||
|
margin-bottom: var(--container-gap-width);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mx_AppsDrawer_resizer_container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
display: block;
|
display: block;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
|
||||||
|
|
||||||
.mx_AppsContainer_resizerHandle {
|
.mx_AppsDrawer_resizer_container_handle {
|
||||||
cursor: ns-resize;
|
cursor: ns-resize;
|
||||||
|
|
||||||
/* Override styles from library, making the whole area the target area */
|
/* Override styles from library, making the whole area the target area */
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|
||||||
/* This is positioned directly below frame */
|
/* This is positioned directly below frame */
|
||||||
position: absolute;
|
|
||||||
bottom: 50% !important; /* override from library */
|
|
||||||
|
|
||||||
/* We then render the pill handle in an ::after to keep it in the handle's */
|
|
||||||
/* area without being a massive line across the screen */
|
|
||||||
&::after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
border-radius: 3px;
|
bottom: 50% !important; /* override from library */
|
||||||
|
|
||||||
height: 4px;
|
/* We then render the pill handle in an ::after to keep it in the handle's */
|
||||||
bottom: 0;
|
/* area without being a massive line across the screen */
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
/* Together, these make the bar 64px wide */
|
height: 4px;
|
||||||
/* These are also overridden from the library */
|
bottom: 0;
|
||||||
left: calc(50% - 32px);
|
|
||||||
right: calc(50% - 32px);
|
/* Together, these make the bar 64px wide */
|
||||||
|
/* These are also overridden from the library */
|
||||||
|
left: calc(50% - 32px);
|
||||||
|
right: calc(50% - 32px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.mx_AppsContainer_resizerHandle::after {
|
.mx_AppsDrawer_resizer_container_handle::after {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
background: $primary-content;
|
background: $primary-content;
|
||||||
}
|
}
|
||||||
|
@ -123,10 +127,6 @@ limitations under the License.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.mx_AppsContainer_resizer {
|
|
||||||
margin-bottom: var(--container-gap-width);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mx_AppsContainer {
|
.mx_AppsContainer {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
|
|
@ -283,9 +283,9 @@ export default class AppsDrawer extends React.Component<IProps, IState> {
|
||||||
room={this.props.room}
|
room={this.props.room}
|
||||||
minHeight={100}
|
minHeight={100}
|
||||||
maxHeight={this.props.maxHeight - 50}
|
maxHeight={this.props.maxHeight - 50}
|
||||||
handleClass="mx_AppsContainer_resizerHandle"
|
className="mx_AppsDrawer_resizer"
|
||||||
handleWrapperClass="mx_AppsContainer_resizerHandleContainer"
|
handleWrapperClass="mx_AppsDrawer_resizer_container"
|
||||||
className="mx_AppsContainer_resizer"
|
handleClass="mx_AppsDrawer_resizer_container_handle"
|
||||||
resizeNotifier={this.props.resizeNotifier}
|
resizeNotifier={this.props.resizeNotifier}
|
||||||
>
|
>
|
||||||
{appContainers}
|
{appContainers}
|
||||||
|
@ -358,9 +358,9 @@ const PersistentVResizer: React.FC<IPersistentResizerProps> = ({
|
||||||
|
|
||||||
resizeNotifier.stopResizing();
|
resizeNotifier.stopResizing();
|
||||||
}}
|
}}
|
||||||
|
className={className}
|
||||||
handleWrapperClass={handleWrapperClass}
|
handleWrapperClass={handleWrapperClass}
|
||||||
handleClasses={{ bottom: handleClass }}
|
handleClasses={{ bottom: handleClass }}
|
||||||
className={className}
|
|
||||||
enable={{ bottom: true }}
|
enable={{ bottom: true }}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|
|
@ -327,6 +327,9 @@ describe("AppTile", () => {
|
||||||
expect(renderResult.getByText("Example 1")).toBeInTheDocument();
|
expect(renderResult.getByText("Example 1")).toBeInTheDocument();
|
||||||
expect(ActiveWidgetStore.instance.isLive("1", "r1")).toBe(true);
|
expect(ActiveWidgetStore.instance.isLive("1", "r1")).toBe(true);
|
||||||
|
|
||||||
|
const { asFragment } = renderResult;
|
||||||
|
expect(asFragment()).toMatchSnapshot(); // Take snapshot of AppsDrawer with AppTile
|
||||||
|
|
||||||
// We want to verify that as we move the widget to the center container,
|
// We want to verify that as we move the widget to the center container,
|
||||||
// the widget frame remains running.
|
// the widget frame remains running.
|
||||||
|
|
||||||
|
|
|
@ -162,3 +162,119 @@ exports[`AppTile for a pinned widget should render 1`] = `
|
||||||
</div>
|
</div>
|
||||||
</DocumentFragment>
|
</DocumentFragment>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`AppTile preserves non-persisted widget on container move 1`] = `
|
||||||
|
<DocumentFragment>
|
||||||
|
<div
|
||||||
|
class="mx_AppsDrawer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AppsDrawer_resizer"
|
||||||
|
style="position: relative; user-select: auto; width: auto; height: 280px; max-height: 576px; min-height: 100px; box-sizing: border-box; flex-shrink: 0;"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AppsContainer"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AppTileFullWidth"
|
||||||
|
id="1"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AppTileMenuBar"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="mx_AppTileMenuBar_title"
|
||||||
|
style="pointer-events: none;"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
<img
|
||||||
|
alt=""
|
||||||
|
class="mx_BaseAvatar mx_BaseAvatar_image mx_WidgetAvatar"
|
||||||
|
data-testid="avatar-img"
|
||||||
|
loading="lazy"
|
||||||
|
src="image-file-stub"
|
||||||
|
style="width: 20px; height: 20px;"
|
||||||
|
/>
|
||||||
|
<b>
|
||||||
|
Example 1
|
||||||
|
</b>
|
||||||
|
<span />
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
class="mx_AppTileMenuBar_widgets"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AccessibleButton mx_AppTileMenuBar_widgets_button"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
|
title="Maximise"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_Icon mx_Icon_12"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="mx_AccessibleButton mx_AppTileMenuBar_widgets_button"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
|
title="Minimise"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_Icon mx_Icon_12"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
aria-expanded="false"
|
||||||
|
aria-haspopup="true"
|
||||||
|
aria-label="Options"
|
||||||
|
class="mx_AccessibleButton mx_AppTileMenuBar_widgets_button"
|
||||||
|
role="button"
|
||||||
|
tabindex="0"
|
||||||
|
title="Options"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_Icon mx_Icon_12"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="mx_AppTileBody mx_AppTile_loading"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AppTileBody_fadeInSpinner"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_Spinner"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_Spinner_Msg"
|
||||||
|
>
|
||||||
|
Loading…
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
aria-label="Loading…"
|
||||||
|
class="mx_Spinner_icon"
|
||||||
|
data-testid="spinner"
|
||||||
|
role="progressbar"
|
||||||
|
style="width: 32px; height: 32px;"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="mx_AppsDrawer_resizer_container"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="mx_AppsDrawer_resizer_container_handle"
|
||||||
|
style="position: absolute; user-select: none; width: 100%; height: 10px; left: 0px; cursor: row-resize; bottom: -5px;"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</DocumentFragment>
|
||||||
|
`;
|
||||||
|
|
Loading…
Reference in a new issue