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

Research solution for popovers #745

Open
MisRob opened this issue Aug 22, 2024 · 3 comments
Open

Research solution for popovers #745

MisRob opened this issue Aug 22, 2024 · 3 comments
Labels
TODO: needs decisions Further discussion and planning necessary TODO: Needs investigation

Comments

@MisRob
Copy link
Member

MisRob commented Aug 22, 2024

Summary

Currently, to achieve popover-like elements

  • we use "popper.js": "1.16.1" under the hood of KTooltip
  • some of the long-time-ago-forked Keen UI components utilize "tippy.js": "4.2.1"

These are quite old versions that blocked some refactoring and proved to be hard to upgrade. We need to either upgrade or replace by another library or native platform APIs, depending on when when we work on this. On that opportunity, it’d be ideal to move towards using a single solution.

This issue tracks current and future use-cases and their requirements, and collects related libraries and native platform APIs. Its goal is to research and decide on next steps.

Use-cases

Requirements

The following are must-haves directly motivated by our use-cases.

  • Satisfies our browserlist
  • a11y-first
  • Performant
  • Can be teleported to a chosen element
  • Integrates well with Vue Composition API
  • Not limited to plain text only, can receive rich HTML content via slot or similar
    • To support Kolibri onboarding flow (Slack thread)
    • Crucial requirement for scalability
  • Can adjust its size and position cleverly
    • For example when rendered close to page’s edges

Related

Libraries

(not evaluated against the requirements yet)

Native APIs

@LianaHarris360
Copy link
Member

Current Kolibri Browser Support List:

  • 'Android > 4.4.3',
  • 'Chrome >= 49',
  • 'ChromeAndroid >= 49',
  • 'Edge >= 18',
  • 'Firefox >= 52',
  • 'FirefoxAndroid >= 68',
  • 'iOS >= 9.3',
  • 'Opera >= 67',
  • 'QQAndroid >= 10.4',
  • 'Safari >= 11.1',
  • 'Samsung >= 4',
  • 'UCAndroid >= 12.12',

Floating-UI Browser Support List:

  • Chrome >= 73
  • Firefox >= 78
  • Edge >= 79
  • Safari >= 12.0
  • iOS >= 12.0
  • Opera >= 53

Floating-vue (powered by Floating-UI) Browser Support List:

This package has been renamed from v-tooltip to floating-vue and now uses floating-ui instead of popperjs.

  • Chrome >= 73
  • Firefox >= 78
  • Edge >= 79
  • Safari >= 12.0
  • iOS >= 12.0
  • Opera >= 53

VueTippy (powered by Tippy.js) Browser Support List:

This package is a Vue.js 3 wrapper for Tippy.js
All modern browsers are supported. Proxy mobile browsers like Opera Mini are not supported.

@MisRob
Copy link
Member Author

MisRob commented Sep 16, 2024

Thank you @LianaHarris360, very helpful.

@MisRob
Copy link
Member Author

MisRob commented Sep 16, 2024

Leaving a note here from the meeting with @LianaHarris360 @marcellamaki @AlexVelezLl regarding on of the use-cases (Kolibri onboarding tutorial) that could be eventually related to this broader issue: Regarding the browsers support, we may go with the progressive enhancement approach for some features or compromise some of the other requirements. More to come as we keep exploring this area in the upcoming months :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
TODO: needs decisions Further discussion and planning necessary TODO: Needs investigation
Projects
None yet
Development

No branches or pull requests

2 participants