Skip to content

Proposal: PipsPager - UI to support glyph-based pagination #3464

Closed
@gabbybilka

Description

@gabbybilka

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:

PagerControl-related links:

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?

Metadata

Metadata

Assignees

Labels

area-DesignDiscussionItems for future design consideration, but not something we have immediate plans yetdiscussionGeneral discussionfeature proposalNew feature proposal

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions