-
Notifications
You must be signed in to change notification settings - Fork 336
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(sprint-poker): New Poker Scope UI (#6344)
* render list of gitlab issues * use usePaginationFragment * increase default value for usePaginationFragment * implement GitLabScopingSearchResultItem * add GitLabScopingSelectAllIssues * can add and remove gitlab issues in scope phase * add UpdatePokerScopeMutation gitlab optimistic updater * able to select all issues * clean up type errors * add projects name alias to rootSchema * include projectIds in search query * return iid from GitLabIssueId * sort projects by lastActivityAt * implement fetchGitLabProjects * implement gitlab issue menu * implement NewGitLabIssueMenuRoot instead of using useAllIntegrations * load next if projects dont have any issues * update comment * remove gitlab menu root and use defaultProjects query to populate menu * increase projectsFirst from 10 to 20 * query all gitlab projects * chore(comment): how to extend BaseTaskIntegration * able to create a new gitlab issue * use GitLabServerManager and implement parseWebPath * fix undefined baseUri * changed taskIntegrationGitLab and GitLabId to use providerId * lowercase gitlabRequest to be consistent with gh * add handle create gitlab issue * add info fragment and return data instead of data.issue * add serverBaseUrl * adjusted root schema and can now render projects in input menu again * clean up update poker scope and create task gitlab * fix ts errors * add gitlab query types * add fullPath to gitLab issue edge if exists * get nodes appearing on insert * get gitlab issue title in create task updater * include webUrl in createTask query so user can click on newly create issue url * add first and sort to allProjects query * rename GitLabRepo to GitLabProject * pass meetingId to issue input rather than querying it * add gitlab search query * filter by gitlab search query * refactor to hooks * query projects from project filter menu * remove __typename and resolveTypes * update UpdatePokerScopeMutation to fix selectAll bug * render projects in filter menu * use fullPath in gitlab menu and adjust max width * refactor gitlab search query from string to object with projectIds * selecting a project in the filter menu adds the item to selectedProjectsFullPath * selecting a project filters the results * add search icon * add search icon * remove searchQuery from scoping results query * clean-up return statement in fetchGitLabProjects * remove alias * make selectedProjectIds nullable * add search to issue args * include search string when adding new gitlab issue * refactor search query to a gql object * remove useLoadNextOnScrollBottom and increase default projects first * merge with master * fix selectedProjects type err * add search string to differentiate project menu query and include ids in project connection so we can add issues with a filter * use react-swipeable-views workaround * add _xGitLabProject resolver * merge with master * remove resolverTypes and gitlabTypes * map over tabs instead of contents * implement new scope search ui in gitlab * refactor gitlabSearchQuery from selectedProjectsIds to selectedProjects * selected projects showing up in current filters * truncate current filters * add new scope search to jira * show jira project names * improve current filters positioning * remove gitlab types * implement new scope search ui in parabol integration * implement new scope search bar ui in github * change filter var to status * query projects from GitLabIntegration and remove fullPath from gitlab search query * refactor scoping results query to usePagination and add alias to new issue query so it is not affected by parent query filtering * fix(gitlab): add proper client-side alias handling (#6361) * resolve to aliased fields * resolve to aliased fields * make poker input menu a dropdown and fix width * refactor baseTabs to include Component * create a single source of truth for gitlab issue args * add viewerMeetingMember check and remove selectedProjectsIds resolver * remove refetchable from gitlab scoping results query * make selectedProjectsIds null if empty array * use optional chaining rather than destructuring many vars * feat(sprint-poker): GitLab issue is visible in Estimate phase (#6355) * refactor PokerEstimateHeaderCard to make PokerEstimateHeaderCardContent reusable * adding commit to play by the gh title rules * use nullish coalescing instead of logical or * spread headerFields into PokerEstimateHeaderCardContent * use join method in currentFilters Co-authored-by: Matt Krick <[email protected]>
- Loading branch information
1 parent
5235acc
commit 81609b6
Showing
25 changed files
with
541 additions
and
279 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
83 changes: 83 additions & 0 deletions
83
packages/client/components/GitLabScopingSearchCurrentFilters.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
import styled from '@emotion/styled' | ||
import graphql from 'babel-plugin-relay/macro' | ||
import React from 'react' | ||
import {useFragment} from 'react-relay' | ||
import {PALETTE} from '../styles/paletteV3' | ||
import {GitLabScopingSearchCurrentFilters_meeting$key} from '../__generated__/GitLabScopingSearchCurrentFilters_meeting.graphql' | ||
|
||
const Wrapper = styled('div')({ | ||
width: '100%', | ||
display: 'flex', | ||
paddingLeft: '72px', | ||
paddingTop: '8px' | ||
}) | ||
|
||
const Description = styled('div')({ | ||
color: PALETTE.SLATE_600, | ||
fontSize: 16, | ||
fontWeight: 500, | ||
whiteSpace: 'nowrap' | ||
}) | ||
|
||
const Items = styled('div')({ | ||
color: PALETTE.SLATE_600, | ||
fontSize: 16, | ||
fontWeight: 600, | ||
fontStyle: 'italic', | ||
padding: '0px 24px 0px 4px', | ||
width: '100%', | ||
whiteSpace: 'nowrap', | ||
overflow: 'hidden', | ||
textOverflow: 'ellipsis' | ||
}) | ||
|
||
interface Props { | ||
meetingRef: GitLabScopingSearchCurrentFilters_meeting$key | ||
} | ||
|
||
const GitLabScopingSearchCurrentFilters = (props: Props) => { | ||
const {meetingRef} = props | ||
const meeting = useFragment( | ||
graphql` | ||
fragment GitLabScopingSearchCurrentFilters_meeting on PokerMeeting { | ||
gitlabSearchQuery { | ||
selectedProjectsIds | ||
} | ||
viewerMeetingMember { | ||
teamMember { | ||
integrations { | ||
gitlab { | ||
projects { | ||
... on _xGitLabProject { | ||
id | ||
fullPath | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
`, | ||
meetingRef | ||
) | ||
const {gitlabSearchQuery, viewerMeetingMember} = meeting | ||
const {selectedProjectsIds} = gitlabSearchQuery | ||
const projects = viewerMeetingMember?.teamMember.integrations.gitlab.projects | ||
|
||
const selectedProjectsPaths = [] as string[] | ||
selectedProjectsIds?.forEach((projectId) => { | ||
const selectedProjectPath = projects?.find((project) => project.id === projectId)?.fullPath | ||
if (selectedProjectPath) selectedProjectsPaths.push(selectedProjectPath) | ||
}) | ||
const currentFilters = selectedProjectsPaths.length ? selectedProjectsPaths.join(', ') : 'None' | ||
|
||
return ( | ||
<Wrapper> | ||
<Description>Current filters: </Description> | ||
<Items>{currentFilters}</Items> | ||
</Wrapper> | ||
) | ||
} | ||
|
||
export default GitLabScopingSearchCurrentFilters |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -77,6 +77,7 @@ const GitLabScopingSearchFilterMenu = (props: Props) => { | |
__typename | ||
id | ||
fullPath | ||
path | ||
} | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,56 @@ | ||
import styled from '@emotion/styled' | ||
import graphql from 'babel-plugin-relay/macro' | ||
import {createFragmentContainer} from 'react-relay' | ||
import {JiraScopingSearchBar_meeting} from '../__generated__/JiraScopingSearchBar_meeting.graphql' | ||
import React from 'react' | ||
import {useFragment} from 'react-relay' | ||
import {PALETTE} from '~/styles/paletteV3' | ||
import {JiraScopingSearchBar_meeting$key} from '../__generated__/JiraScopingSearchBar_meeting.graphql' | ||
import JiraScopingSearchCurrentFilters from './JiraScopingSearchCurrentFilters' | ||
import JiraScopingSearchFilterToggle from './JiraScopingSearchFilterToggle' | ||
import JiraScopingSearchHistoryToggle from './JiraScopingSearchHistoryToggle' | ||
import JiraScopingSearchInput from './JiraScopingSearchInput' | ||
import JiraScopingSearchFilterToggle from './JiraScopingSearchFilterToggle' | ||
import React from 'react' | ||
import styled from '@emotion/styled' | ||
|
||
const SearchBar = styled('div')({ | ||
padding: 16 | ||
}) | ||
|
||
const SearchBarWrapper = styled('div')({ | ||
alignItems: 'center', | ||
border: `1px solid ${PALETTE.SLATE_400}`, | ||
borderRadius: '40px', | ||
display: 'flex', | ||
padding: 16 | ||
height: 44, | ||
padding: '0 16px', | ||
width: '100%' | ||
}) | ||
interface Props { | ||
meeting: JiraScopingSearchBar_meeting | ||
meetingRef: JiraScopingSearchBar_meeting$key | ||
} | ||
|
||
const JiraScopingSearchBar = (props: Props) => { | ||
const {meeting} = props | ||
const {meetingRef} = props | ||
|
||
const meeting = useFragment( | ||
graphql` | ||
fragment JiraScopingSearchBar_meeting on PokerMeeting { | ||
...JiraScopingSearchHistoryToggle_meeting | ||
...JiraScopingSearchInput_meeting | ||
...JiraScopingSearchFilterToggle_meeting | ||
...JiraScopingSearchCurrentFilters_meeting | ||
} | ||
`, | ||
meetingRef | ||
) | ||
|
||
return ( | ||
<SearchBar> | ||
<JiraScopingSearchHistoryToggle meeting={meeting} /> | ||
<JiraScopingSearchInput meeting={meeting} /> | ||
<JiraScopingSearchFilterToggle meeting={meeting} /> | ||
<SearchBarWrapper> | ||
<JiraScopingSearchHistoryToggle meeting={meeting} /> | ||
<JiraScopingSearchInput meeting={meeting} /> | ||
<JiraScopingSearchFilterToggle meeting={meeting} /> | ||
</SearchBarWrapper> | ||
<JiraScopingSearchCurrentFilters meetingRef={meeting} /> | ||
</SearchBar> | ||
) | ||
} | ||
|
||
export default createFragmentContainer(JiraScopingSearchBar, { | ||
meeting: graphql` | ||
fragment JiraScopingSearchBar_meeting on PokerMeeting { | ||
...JiraScopingSearchHistoryToggle_meeting | ||
...JiraScopingSearchInput_meeting | ||
...JiraScopingSearchFilterToggle_meeting | ||
} | ||
` | ||
}) | ||
export default JiraScopingSearchBar |
Oops, something went wrong.