Description
Proposal: PipsPager - UI to support glyph-based pagination
Previously this issue was proposing to add a Pips DisplayMode to the PagerControl. We have since decided to create a new control for the Pips visualization as there is specific functionality and behavior unique to glyph-based pagination UI. More information about the plans for the current PagerControl is in the existing proposal.
Summary
In various types of media apps there is a common pattern to show content that is not explicitly ordered but paginated with glyph-based indicators instead of numbers. This concept of glyph-based representations of numbers can be noted as Pips.
We'd like to introduce a baseline set of features for this visualization currently and open up to further functionality after the initial foundational control. A PR has been opened for the in-progress priorities below. However we're interested in the community's feature needs for pip UI in general and want to open up conversation here to dive into your asks.
We've opened a new spec to begin defining this initial, foundational work.
We're interested in learning more about the scenarios where you would use "pips" UI and the corresponding functionality to help guide future pip UI work. I'll be updating the "general pip needs" table with your requests, the in-progress prioritization table will stay stable.
Shout-out to @chingucoding for all of his work done to complete the base PagerControl, thank you!
Rationale
Due to the current and potential feature asks and scenario differences between the existing PagerControl and what's required here we believe a new pager control for this visualization is required. The functionality to specify the max number of indicators shown, to customize the styling of the selected and default indicators, and the desired removal of the first/last buttons for the default experience motivated this separation. We still want to align this pagination UI with the existing PagerControl through a common interface, base class, or other solution and will share our intentions once defined.
Prioritization
For in-progress, committed work:
Capability | Priority |
---|---|
Glyphs to represent pages (pips) instead of numerics | Must |
Vertical and horizontal orientation for keyboard/touch interaction and glyphs | Must |
Additional button visibility option to only show navigation arrows on user hover | Must |
Scrolling behavior between pips if the max number of pips displayed is less than the number of pages in the layout view | Must |
Glyph customization to change default and selected pip styles | Should |
For general pip needs:
Capability | Priority |
---|---|
Common interface, base class, etc. to align with the PagerControl for easier integration with layout controls | Must |
Option for the pips to be indicators only, no ability to navigate to a page | Must |
Event to fire once the user attempts to navigate past the last page to enable looping behavior in the application (from last to first) | Should |
Long-press touch interaction to change pages | Should |
Awareness of pages visited and intended with styling customization | Could |
Display text with each pip that could be shown with the glyph itself or as a ToolTip | Could |
The Pip is customizable and can be re-templated independent of the PipPager itself | Could |
Related Links
Pip-related proposals:
- Proposal: Add Glyphic Index Display to FlipView #602: Add Glyphic Index Display to FlipView
PagerControl-related links:
- Feature Proposal: PagerControl #60: Feature Proposal: PagerControl
- #80: PagerControl spec PR
Open questions
- In your applications, where would you use this display mode? What scenarios? What layout views? Why would you orient it vertically or horizontally? What functionality would you require?
- Is there a different name other than PipsPager that make more sense to you? 😊
- Note: StepPager has been proposed by @mdtauk, thanks! Should the step functionality be grouped with the glyph indicator functionality and scenarios or as its own separate pager control?