Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HOLD for payment 2025-02-04] Update the design of the More Features page in the Workspace editor #55390

Closed
shawnborton opened this issue Jan 17, 2025 · 27 comments
Assignees
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Daily KSv2 External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item.

Comments

@shawnborton
Copy link
Contributor

shawnborton commented Jan 17, 2025

Problem:
Our current design of the More features page causes the page to be quite long, which tucks valuable workspace features further down the page and out of sight. We think it may be harming engagement with this page.

Solution
Let's update the More features page to use a more compact design that brings more features into view, and removes some unnecessary copy.

We also want to move Integrate to be directly below Spend, and move Earn (invoices) to the bottom.

Image

cc @Expensify/design @JmillsExpensify @trjExpensify @anmurali @danielrvidal

Issue OwnerCurrent Issue Owner: @adelekennedy
@shawnborton shawnborton added External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item. labels Jan 17, 2025
@melvin-bot melvin-bot bot added the Help Wanted Apply this label when an issue is open to proposals by contributors label Jan 17, 2025
Copy link

melvin-bot bot commented Jan 17, 2025

Triggered auto assignment to Contributor-plus team member for initial proposal review - @jayeshmangwani (External)

@melvin-bot melvin-bot bot added the Daily KSv2 label Jan 17, 2025
Copy link

melvin-bot bot commented Jan 17, 2025

Triggered auto assignment to @adelekennedy (NewFeature), see https://stackoverflowteams.com/c/expensify/questions/14418#:~:text=BugZero%20process%20steps%20for%20feature%20requests for more details. Please add this Feature request to a GH project, as outlined in the SO.

@melvin-bot melvin-bot bot added Weekly KSv2 and removed Daily KSv2 labels Jan 17, 2025
@shawnborton shawnborton self-assigned this Jan 17, 2025
@JmillsExpensify
Copy link

Looks good to me! Also, porting over a comment from Slack, based on a comment from Shawn on the positioning of Integrate.

The majority of workspaces have some kind of connection once you get to even a couple of workspace members. It goes even higher with larger workspaces, so I think you're right, there is an argument that Integrate could go right below Spend - especially since it's a way to automatically configure the items in Organize.

@mkzie2
Copy link
Contributor

mkzie2 commented Jan 17, 2025

🚨 Edited by proposal-police: This proposal was edited at 2025-01-17 10:43:13 UTC.

Proposal

Please re-state the problem that we are trying to solve in this issue.

Update the design of the More Features page in the Workspace editor

What is the root cause of that problem?

New feature

What changes do you think we should make in order to solve the problem?

  1. Update the section max width so the section width covers full page by removing workspaceSection style (keep mobile):

https://github.com/Expensify/App/blob/main/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx#L382

<Text style={[styles.ph5, styles.mb4, styles.mt3, styles.textSupporting, shouldUseNarrowLayout ? styles.workspaceSectionMobile : styles.workspaceSection]}>

  1. Modify the section's containerStyles here to remove background color & spacing:

containerStyles={shouldUseNarrowLayout ? styles.p5 : styles.p8}

  1. Update the section's childrenStyles to layout the items (the feature toggle buttons) to grid:
{display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12}
  1. Apply background color & border radius to each of the feature items
  2. Remove the subtitle from Section & modify titleStyles
  3. For the new order of sections, we just need to modify it here:

const sections: SectionObject[] = [

For the detailed spacing, margin, padding, we need Figma to figure them out in details.

What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?

NA

What alternative solutions did you explore? (Optional)

NA

@melvin-bot melvin-bot bot added Daily KSv2 and removed Weekly KSv2 labels Jan 17, 2025
@shawnborton
Copy link
Contributor Author

Cool, I'll update the OP with a new mock and a note about reordering.

@misamikasa
Copy link

misamikasa commented Jan 17, 2025

Proposal

Please re-state the problem that we are trying to solve in this issue.

Update the design of the More Features page in the Workspace editor

What is the root cause of that problem?

New feature

What changes do you think we should make in order to solve the problem?

  1. Update this renderSection and renderItem styling base on the mockup
const renderItem = useCallback(
        (item: Item) => (
            <View
                key={item.titleTranslationKey}
                style={[styles.moreFeatureItem]}
            >
                <ToggleSettingOptionRow
                    icon={item.icon}
                    disabled={item.disabled}
                    disabledAction={item.disabledAction}
                    title={translate(item.titleTranslationKey)}
                    titleStyle={styles.textStrong}
                    subtitle={translate(item.subtitleTranslationKey)}
                    switchAccessibilityLabel={translate(item.subtitleTranslationKey)}
                    isActive={item.isActive}
                    pendingAction={item.pendingAction}
                    onToggle={item.action}
                    showLockIcon={item.disabled}
                    errors={item.errors}
                    onCloseError={item.onCloseError}
                />
            </View>
        ),
        [styles, translate],
    );

    const renderSection = useCallback(
        (section: SectionObject) => (
            <View
                key={section.titleTranslationKey}
                style={[styles.p5]}
            >
                <Text style={[styles.textLabelSupporting, styles.mb3]}>
                    {translate(section.titleTranslationKey)}
                </Text>

                <View
                    style={[styles.moreFeatureSection]}
                >
                    {section.items.map(renderItem)}
                </View>
            </View>
        ),
        [shouldUseNarrowLayout, styles, renderItem, translate],
    );

Add on styles/index.ts

        moreFeatureItem: {
            backgroundColor: theme.cardBG,
            borderRadius: variables.componentBorderRadiusMedium,
            padding: 16,
        },

        moreFeatureSection: {
            display: 'grid',
            gridTemplateColumns: 'repeat(2, 1fr)',
            gap: 12,
        },
  1. Reorder the section here base on the mockup

  2. Remove subtitleTranslationKey from sections const and also on its type, since no longer used

  3. Also remove the subtitle from en and es translation files as well

Image

What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?

n/a

What alternative solutions did you explore? (Optional)

n/a

@lionuncle
Copy link

Proposal

Please re-state the problem that we are trying to solve in this issue.

The current design of the "More Features" page in the Workspace editor is too long and causes valuable features to be tucked further down the page, resulting in reduced visibility and engagement.

What is the root cause of that problem?

The page layout lacks compactness, with features listed one below the other, requiring excessive scrolling. This layout is not optimized for mobile or tablet users, making the page look lengthy and overwhelming.

What changes do you think we should make in order to solve the problem?

To address this, we propose the following updates to src/pages/workspace/WorkspaceMoreFeaturesPage.tsx and src/styles/index.ts:

Grid Layout for Feature Toggles:

Implement a grid-based layout for feature toggles to display two toggles per row on desktop and one toggle per row on mobile and tablet.

Reorder Sections:

Update the order of sections by moving Integrate directly below Spend and placing Earn (Invoices) at the bottom of the page to prioritize higher-value features.

General Improvements:

Adjust margins, padding, and background colors for individual feature toggles to enhance the visual hierarchy.

What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?

Ensure the grid layout renders correctly across all screen sizes: desktop, tablet, and mobile.
Verify that all toggles remain functional after the design changes.
Confirm the reordering of sections persists across updates.
Validate that styles for margins, padding, and background color are applied consistently

What alternative solutions did you explore? (Optional)

Arcadian Dropdown for Mobile:

Introduce dropdowns for mobile views to group and categorize features under expandable sections. This will make the page shorter and help users quickly navigate to specific sections.
For example, the "Spend" and "Organize" categories could be collapsible, reducing visual clutter and improving usability

@parasharrajat
Copy link
Member

parasharrajat commented Jan 17, 2025

Proposal

Please re-state the problem that we are trying to solve in this issue.

Change layout for Workspace more features page.

What is the root cause of that problem?

New UI changes.

What changes do you think we should make in order to solve the problem?

I don't think we can use grid layout in react-native so using flexbox we can achieve it as follows.

  1. We will remove the section subtitle. ( I believe it looks good so we can keep this if needed).

    subtitle={translate(section.subtitleTranslationKey)}

  2. Add childrenstyles to Section. And adjust other containerStyles such as remove background and etc to achieve UI look.

childrenStyles={{flexDirection: 'row', flexWrap: 'wrap', columnGap: '2%', rowGap: 20, marginTop: 16}}
  1. Either remove the Section maxWidth on the Section container to take fluid width of available space or increase it if we want to limit the space where rows can stretch. (I believe we should use limited space as screen size can increase and thus the feature rows will extend which won't look good).
    style={[styles.mt3, shouldUseNarrowLayout ? styles.workspaceSectionMobile : styles.workspaceSection]}
Modify the styles.workspaceSection and update maxWidth for the same. On mobile, we will keep it for fluid space. 
  1. Now add styles to each feature as per the design which might follow this pattern.

					{
                        backgroundColor: theme.cardBG,
                        borderRadius: 16,
                        paddingHorizontal: 16,
                        paddingVertical: 20,
                        minWidth: 400, (prevent option from shrinking from less than this width and wrap to next line).
                        flexGrow: 1,
                        flexShrink: 0,
                        flexBasis: '49%',
                        maxWidth: shouldUseNarrowLayout? '100%' : '49%' (100% on mobile),
                        marginTop: 0
                    }

Actual style rules will be done as per mocks and these styles will be converted to styles objects in the styles file. This suggests the way to achieve the layout.

17.01.2025_21.28.10_REC.mp4

What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?

None UI changes.

What alternative solutions did you explore? (Optional)

@jayeshmangwani
Copy link
Contributor

I don't think we can use grid layout in react-native so using flexbox we can achieve it as follows.

@parasharrajat , I think we can use the layout grid in React Native Web, and it works perfectly here.

@parasharrajat
Copy link
Member

But not on native. We should also consult internally if we are ready to use grid layout or mix styles patterns based on platform.

@jayeshmangwani
Copy link
Contributor

But not on native

But on native, we don’t need to use it, as we have a different UI for native and web here. On native, we’ll use a column layout, so in my opinion, this won’t be an issue.

@jayeshmangwani
Copy link
Contributor

We should also consult internally if we are ready to use grid layout or mix styles patterns based on platform.

Though I don’t think it’s a major issue whether we use a grid or flexRow, I’ll leave this decision to the internal engineer.

@parasharrajat
Copy link
Member

Though I don’t think it’s a major issue whether we use a grid or flexRow, I’ll leave this decision to the internal engineer.

It is. It is about adopting new patterns and getting consensus. Just like Async await.... if you know, you know what I am saying. Are we comfortable adopting grid layout yet? I believe not yet. As react-native still not follows it and we don't want two many divergence in code base.

I would suggest you raise this on Slack and we start a discussion there before moving here.

@shubham1206agra
Copy link
Contributor

@jayeshmangwani Don't approve using something which is not supported on React Native since we will start supporting wide layout for tablets soon. I would personally prefer @parasharrajat advice here.

@jayeshmangwani
Copy link
Contributor

Don't approve using something which is not supported on React Native

@shubham1206agra We’re already using the web-specific display styling.

@jayeshmangwani
Copy link
Contributor

I would suggest you raise this on Slack and we start a discussion there before moving here.

Cool, I'll start a discussion on #expensify-open-source to get consensus

@jayeshmangwani
Copy link
Contributor

Let's proceed with @parasharrajat's Proposal. Based on the opinions shared on Slack, everyone agrees to use the flexRow layout instead of the grid layout

🎀 👀 🎀 C+ reviewed

Copy link

melvin-bot bot commented Jan 20, 2025

Triggered auto assignment to @carlosmiceli, see https://stackoverflow.com/c/expensify/questions/7972 for more details.

@melvin-bot melvin-bot bot removed the Help Wanted Apply this label when an issue is open to proposals by contributors label Jan 20, 2025
@melvin-bot melvin-bot bot added Reviewing Has a PR in review Weekly KSv2 Awaiting Payment Auto-added when associated PR is deployed to production and removed Daily KSv2 Weekly KSv2 labels Jan 21, 2025
@melvin-bot melvin-bot bot changed the title Update the design of the More Features page in the Workspace editor [HOLD for payment 2025-02-04] Update the design of the More Features page in the Workspace editor Jan 28, 2025
@melvin-bot melvin-bot bot removed the Reviewing Has a PR in review label Jan 28, 2025
Copy link

melvin-bot bot commented Jan 28, 2025

Reviewing label has been removed, please complete the "BugZero Checklist".

Copy link

melvin-bot bot commented Jan 28, 2025

The solution for this issue has been 🚀 deployed to production 🚀 in version 9.0.89-8 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

If no regressions arise, payment will be issued on 2025-02-04. 🎊

For reference, here are some details about the assignees on this issue:

Copy link

melvin-bot bot commented Jan 28, 2025

BugZero Checklist: The PR adding this new feature has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

@jayeshmangwani
Copy link
Contributor

Regression Test Proposal

  1. Login to an account that has a workspace.
  2. Navigate to Settings > Workspaces > Select Any Workspace > More Features
  3. Observe the design of the page.
    1. Verify that the "Integrate" section appears below the "Spend" section.
    2. Verify that the "Earn" section is positioned at the end of the page.
    3. On Web: Verify that two cards are displayed per row.
    4. On Mobile: Verify that only one card appears per row.

Do we agree 👍 or 👎

@melvin-bot melvin-bot bot added Daily KSv2 Overdue and removed Weekly KSv2 labels Feb 3, 2025
@carlosmiceli
Copy link
Contributor

@jayeshmangwani seems right!

Copy link

melvin-bot bot commented Feb 4, 2025

Payment Summary

Upwork Job

BugZero Checklist (@adelekennedy)

  • I have verified the correct assignees and roles are listed above and updated the neccesary manual offers
  • I have verified that there are no duplicate or incorrect contracts on Upwork for this job (https://www.upwork.com/ab/applicants//hired)
  • I have paid out the Upwork contracts or cancelled the ones that are incorrect
  • I have verified the payment summary above is correct

@adelekennedy
Copy link

Contributor: @parasharrajat paid $250 via Upwork
Contributor+: @jayeshmangwani  owed $250 via Upwork

@garrettmknight
Copy link
Contributor

$250 approved for @jayeshmangwani

@JmillsExpensify
Copy link

$250 approved for @parasharrajat

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Daily KSv2 External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item.
Projects
Development

No branches or pull requests