Skip to content

feat: use fluent UI to theme the people-picker component#2132

Merged
musale merged 22 commits intofix/theme/personfrom
people-picker-theme
Mar 29, 2023
Merged

feat: use fluent UI to theme the people-picker component#2132
musale merged 22 commits intofix/theme/personfrom
people-picker-theme

Conversation

@musale
Copy link
Copy Markdown
Contributor

@musale musale commented Mar 13, 2023

Closes #2080

PR Type

  • Feature

Description of the changes

  • Updates the mgt-people-picker to use the fluent-text-field component.
  • Updates the tokens used to customize the people picker.
  • Updated the styling of the people picker.
  • Refactors the people picker code.

PR checklist

  • Project builds (yarn build) and changes have been tested in at least two supported browsers (Edge + non-Chromium based browser)
  • All public APIs (classes, methods, etc) have been documented following the jsdoc syntax
  • Stories have been added and existing stories have been tested
  • Added appropriate documentation. Docs PR:
  • License header has been added to all new source files (yarn setLicense)
  • Contains NO breaking changes

Other information

@ghost
Copy link
Copy Markdown

ghost commented Mar 13, 2023

Thank you for creating a Pull Request @musale.

This is a checklist for the PR reviewer(s) to complete before approving and merging this PR:

  • I have verified a documentation PR has been linked and is approved (or not applicable)
  • I have ran this PR locally and have tested the fix/feature
  • I have verified that stories have been added to storybook (or not applicable)
  • I have tested existing stories in storybook to verify no regression has occured
  • I have tested the solution in at least two browsers (Edge + 1 non-Chromium based browser)

@musale musale linked an issue Mar 13, 2023 that may be closed by this pull request
@musale musale added this to the 2023-03 milestone Mar 13, 2023
@musale musale changed the title feat: use fluent UI to theme the people-picker component WIP feat: use fluent UI to theme the people-picker component Mar 13, 2023
@musale musale changed the title WIP feat: use fluent UI to theme the people-picker component WIP: feat: use fluent UI to theme the people-picker component Mar 13, 2023
@musale musale changed the title WIP: feat: use fluent UI to theme the people-picker component feat: use fluent UI to theme the people-picker component Mar 14, 2023
@github-actions
Copy link
Copy Markdown

The updated storybook is available here

1 similar comment
@github-actions
Copy link
Copy Markdown

The updated storybook is available here

Copy link
Copy Markdown
Member

@gavinbarron gavinbarron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work on this!
Love the reduction of code, simplifications, and improved use of fluent elements!

Comment thread packages/mgt-components/src/components/mgt-people-picker/mgt-people-picker.ts Outdated
Comment thread packages/mgt-components/src/components/mgt-people-picker/mgt-people-picker.ts Outdated
Comment thread packages/mgt-components/src/components/mgt-people-picker/mgt-people-picker.ts Outdated
Comment thread packages/mgt-components/src/components/mgt-people-picker/mgt-people-picker.ts Outdated

if (event.code === 'Tab') {
this.hideFlyout();
// this.hideFlyout();
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does the flyout get hidden now when the user tabs away?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't. What I plan to do is this, you click on tab and the dropdown is focused, then you can navigate through it with arrow keys. When you press the tab after that, it closes the flyout.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to be careful here with the arrow/tab behavior. The current behavior is what we landed on when working with the Viva Pulse team. The suggestions list and input field work together like a combo box.

In short, when the input field is focused a query is run, either the zero input query or a query based on the input field. This populates the options in the list. A user can use the up/down arrows to move the pending selection and then the enter key will select the current item. The tab keystroke when the input field is selected should move to the next focusable/interactive item in the page beyond the selection list. AFAIK none of the items in the suggestions list should be focusable via tab stops.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gavinbarron now I see your point. So, when tabbing through the component, falling in the input element should trigger the empty/typed query and render the results in a flyout. Then clicking on the tab again, closes the flyout and onto the next focusable element. Otherwise, you can navigate through the flyout results with the arrow keys.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's the intended behavior

Comment thread packages/mgt-components/src/components/mgt-people-picker/mgt-people-picker.ts Outdated
@ghost ghost added the Needs: Author Feedback Issue needs response from issue author label Mar 14, 2023
@github-actions
Copy link
Copy Markdown

The updated storybook is available here

@ghost ghost removed the Needs: Author Feedback Issue needs response from issue author label Mar 16, 2023
@github-actions
Copy link
Copy Markdown

The updated storybook is available here

@github-actions
Copy link
Copy Markdown

The updated storybook is available here

Copy link
Copy Markdown
Member

@gavinbarron gavinbarron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks fantastic!
It will be worth reviewing this with respect to the VoiceOver defects that have been reported for 2.x but that shouldn't stop us merging what we have here as I think it correctly addresses the styling concerns.

@musale musale merged commit ee9f16c into fix/theme/person Mar 29, 2023
@musale musale deleted the people-picker-theme branch March 29, 2023 07:34
musale added a commit that referenced this pull request Apr 25, 2023
* feat: use devcontainer for development

* wip: add new tokens and style person

* wip: re-arrange style class order

* wip: view all lines for testing

* fix: add the css for person component

* fix: update the stories for person component

* chore: remove deprecated code and generate react files

* fix: add the presence icons svgs

* fix: add anchor slot in flyout

* fix: add new tokens and refactor component rendering

* ci: setup pipeline for preview release (#2062)

* ci setup pipeline for preview release

* altering setVersion script to ensure four part numeric version in package-solution.json

* adding picker to the generated React code

* fixing setversion logic and adding theme toggle

* chore: fix prettier issues in SCSS files

* chore: fix build by adding temp variable

* fix: align details to flex-start and make bg transparent

* fix: remove margin on flyout

- Remove tabindex on the person component

* chore: add a CI build for PRs into fix/theme/person

* chore: add building storybook to fix/theme/person

* chore: set border-radius to 50%

* chore: run pr builds and storybook on all branches

* feat: use fluent ui to theme the people component (#2121)

* feat: upgrade to fluentui theming tokens

* feat: update the people story with new tokens

* feat: update the login component to fluentui theming (#2110)

* chore: use margin-inline-start

* wip: update the sign in/out button

* wip: update the sign in/out button

* fix: update the CSS styling and theming

* chore: add more accounts, use strings, fix svg color

* fix: update the structure and custom tokens

* fix: add a hover bg for the accounts list

* fix: check the userDetails are not null

Co-authored-by: Nickii Miaro <[email protected]>

* fix: remove margin on flyout

- Remove tabindex on the person component

* chore: add changelog (#2098)

adding a changelog for ease of automating release notes in future

* chore: adding preview tag to preview release workflow (#2097)

* chore: add a CI build for PRs into fix/theme/person

* chore: change the button content template name

Co-authored-by: Gavin Barron <[email protected]>

* chore: fix failing build

* refactor: use typesafe Boolean

* fix: close the component tag

Co-authored-by: Gavin Barron <[email protected]>

* chore: remove optional chaining

* chore: fix documentation strings, add types

Signed-off-by: Musale Martin <[email protected]>

---------

Signed-off-by: Musale Martin <[email protected]>
Co-authored-by: Nickii Miaro <[email protected]>
Co-authored-by: Gavin Barron <[email protected]>

* feat: use fluent UI to theme the people-picker component (#2132)

* fix: update the yarn lock file

* fix: set svg icon color to currentColor

* fix: use named slot to for anchor in mgt-flyout

* fix: use currentColor on close svg

* feat: update the picker to use fluent-text-field

* fix: style the picker to use fluent UI components

* wip: handle copy/cut and paste

* fix: update copy/cut and paste

Ensure select all, select/deselect with arrow keys works

* fix: show/hide the search icon on de/selection

* fix: style the loading and no results components

* chore: remove all commented out code blocks

* fix: set default values for arrays

- move the keydown event to the fluent card for better aesthetics

* fix: update the component with new custom CSS tokens

* chore: document the new CSS tokens

* chore: fix scss formatting

* fix: review fixes and updates

* fix: remove tabbing on the flyout

* feat: use fluentui tokens to theme mgt-agenda (#2152)

* add fluent theming tokens

* fix location icon

* update agenda stories to reflect new custom properties

* Use variable for border-radius

Signed-off-by: Musale Martin <[email protected]>

* Remove commented out code

Signed-off-by: Musale Martin <[email protected]>

* Add missing imports

* feat: use fluent UI tokens to theme the person-card component (#2136)

* fix person-card hover state styling

* update: person card theming changes

* add new person-card customization tokens

* theme chat input, include new css props

* theme the chat input border

* chore: fix location icon color and refactor code

* Update packages/mgt-components/src/utils/SvgHelper.ts

* fix hover styles

* fix perosn-card file-list section color

* fix file-list item z-index issue

* refactor fluent-tabs activeIndicator style padding

* use hidden svgs to fix the hover fill persistence issue

* Fix section nav border z-index issue

* Fix section nav border z-index issue

* update fluent-button aria labels and divider color

* update profile section tokens

* update fluent-button aria-labels

* fix build

* Fix build, remove fullView styles

* fix eslint

* use similar view for files compact and fullView, remove logging

* fix additional eslint errors

---------

Co-authored-by: Martin Musale <[email protected]>

* Fix icon position when you have initials or contact icon only

Signed-off-by: Musale Martin <[email protected]>

* Revert to only 3 branches for pr and storybook workflows

Signed-off-by: Musale Martin <[email protected]>

* Fix tokens that are missing from story

Signed-off-by: Musale Martin <[email protected]>

* Use person border radius token

Signed-off-by: Musale Martin <[email protected]>

---------

Signed-off-by: Musale Martin <[email protected]>
Co-authored-by: Gavin Barron <[email protected]>
Co-authored-by: Nickii Miaro <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

Update theming for mgt-people-picker

2 participants