Skip to content

Unify select mechanisms/widgets #1831

Description

@jancborchardt

Currently we use 4 different things:

  1. <select> – simplest from the browser directly
  2. select2 – allows for tag widgets for example
  3. jQuery autocomplete – used in sharing and Mail app autocomplete
  4. our core/js/multiselect.js – used mostly in user mgmt for group memberships because it allows you to add new elements (like for the Github labels and Milestones dropdown).

@nextcloud/javascript & @nextcloud/designers would it be possible to maybe decide on one or maximum two to use consistently?

Also cc @georgehrke @ChristophWurst @schiessle @Henni @icewind1991 because these things are heavily used in apps and user management.

Where are they used:

  • /apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js in the LDAP app:

bildschirmfoto 2018-06-25 um 11 23 14

  • select2 core:
    • files_external
    • systemtags
    • workflowengine
    • settings (group select)
  • select2 apps:
    • announcementcenter
    • bookmarks
    • circles
    • contacts
    • dicomviewer
    • files_automatedtagging
    • files_retention
    • richdocuments
    • sensorlogger
    • spreed

Activity

  1. skjnldsv commented on Oct 20, 2016

    @skjnldsv
    Member

    :D
    Clearly will help regroup the various styles we're using.
    See #1805 for all the fixes we got

  2. MorrisJobke commented on Oct 20, 2016

    @MorrisJobke
    Member

    @nextcloud/javascript & @nextcloud/designers would it be possible to maybe decide on one or maximum two to use consistently?

    I already tried to do so, but it sounds easier than it actually is. This is a really tough task, but we should do.

  3. skjnldsv commented on Mar 20, 2018

    @skjnldsv
    Member

    While the vuejs apps start rolling out, my choice has been into vue-multiselect. Which allows tagging, creation, multi and simple select. I implemented the new design into the vu settings migration here #8824 .
    capture d ecran_2018-03-20_10-50-52

    Looks very nice, supports array and objects, is highly supported... :)

  4. jancborchardt commented on Jun 23, 2018

    @jancborchardt
    MemberAuthor

    @skjnldsv good stuff! Do we still need to have this open for tracking, like do you have an overview where the old method of select is still used where it needs to be replaced?

  5. skjnldsv commented on Jun 23, 2018

    @skjnldsv
    Member

    Yes because we still have some old legacy stuff laying around! :)

  6. rullzer commented on Jun 23, 2018

    @rullzer
    Member

    @skjnldsv feel free to update the first comment to list all the remaining things that need to be cleaned up. So people can easily see/track/tackle/fix it ;)

  7. MorrisJobke commented on Jun 25, 2018

    @MorrisJobke
    Member

    @skjnldsv feel free to update the first comment to list all the remaining things that need to be cleaned up. So people can easily see/track/tackle/fix it ;)

    I added the stuff for select2 and core/js/multiselect

  8. skjnldsv commented on Jun 25, 2018

    @skjnldsv
    Member
  9. 2 remaining items

  10. skjnldsv commented on Mar 14, 2019

    @skjnldsv
    Member

    I guess this is just a matter of deprecating it so we can unship the libs in 3 versions :)

  11. MorrisJobke commented on Mar 14, 2019

    @MorrisJobke
    Member

    I guess this is just a matter of deprecating it so we can unship the libs in 3 versions :)

    In reality we also need to move our own stuff away from it. 😉 (that is the real major part after deprecating something)

  12. removed their assignment
    on Jul 5, 2021
  13. PVince81 commented on Sep 29, 2022

    @PVince81
    Member

    regarding select2 I just grepped the 25.0.0 beta6 tarball and found these usages:

    • files_external settings dropdowns => port the whole section to Vue
    • system tags:
      • files app sidebar selection logic (the one and only user of SystemTagsInputField class it seems) => maybe we replace all the systemtag*.js with an extension of NcMultiselect for selecting tags
      • admin settings page to manage system tags
    • groups selection in various settings (ex: excluding some from sharing) => might need a generic group selection vue component usable in all settings pages ?
    • circles file list filter field
  14. moved this from 🎉 Done to No status in 🖍 Design teamon Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions