Page MenuHomePhabricator

Identify existing Vue components in MediaWiki projects
Closed, ResolvedPublic

Description

Several teams have built Vue versions of OOUI widgets (and some new components) that could form the basis of new shared components. This task covers identifying projects in or adjacent to MediaWiki that use Vue.js, and documenting existing reusable Vue component implementations, in the hopes of unifying these implementations in the long run.


MediaWiki Vue projects

ProjectLinksNotesDeliveryLoading
WikitCode, Storybook, feature exampleWMDE UI library, contains storybooks for docs and Vue componentsCompiled with vue-cli
Wikibase termboxCode, docsWMDE projectVue-cli, uses MW's VueWhen viewing an entity on Wikidata on mobile
Wikidata BridgeCode, docsWMDE projectVue-cli, loaded through RLArticles with embedded Wikidata info
Wikibase Tainted ReferencesCodeWMDE projectVue-cli, MW VueWhen viewing an entity on Wikidata
Wikibase Vue componentsCodeWMDE projectVue-cli
New searchbar/ WVUICode, Phab ticket, DocsComprises the existing WVUI libraryWVUI compiled with Webpack; Vector pulls in WVUI, uses full RLEvery page, on user interaction
MediaSearchCode, docs, featureThis code formerly existed in WikibaseMediaInfoFull RLSpecial:MediaSearch
MachineVisionCode, docs, featureFull RLSpecial:SuggestedTags
ContentTranslationCode, docs, feature (enwiki)Contains Storybook of componentsVue-cli, loaded through RL, ships its own copies of Vue, vue-router and VuexSpecial:ContentTranslation ; small RL-based component for post-edit
NearbyPagesCode, docs, feature (enwiki)Full RL, uses WVUISpecial:Nearby
GlobalWatchlistCode, docsFull RL, uses WVUISpecial:GlobalWatchlist
ToolhubCode, docsIn developmentVue-cli, not in MediaWiki
WikiLambdaCode, docs,In developmentFull RLWhen viewing/editing ZObjects

MediaWiki Vue components

The following is a list of existing reusable Vue component within MediaWiki projects. This list could become outdated quickly as developers continue to add new components, but this is just an initial list. We'll open a task for each component eventually, and in those tasks we'll do a fresh review of existing libraries to ensure we're capturing all existing implementations. In those tasks, the different implementations will be reviewed and discussed (see T278509 for an example).

ComponentImplementations
ButtonWikit, Bridge, WVUI, MediaSearch (styles), ContentTranslation
Button groupContentTranslation
CardContentTranslation, NearbyPages
CheckboxWikit, Termbox, MediaSearch (styles)
Collapsible wrapperGlobalWatchlist
Copy text layoutMediaSearch (styles)
Date inputWikit
DialogTermbox (modal), MediaSearch (styles), ContentTranslation
DividerContentTranslation
Dropdown/selectWikit, MediaSearch: Select (styles), SelectMenu (styles), ContentTranslation: Dropdown, Select
Extended number inputWikit
IconWikit (includes icon svgs), WVUI (icon data), MediaSearch (styles) (icon data, copied directly from WVUI) , ContentTranslation (icon data)
ImageMediaSearch (styles), ContentTranslation
InputWikit: Input, TextInput, InputWithExtender, WVUI, ContentTranslation
Language selectorContentTranslation
LayoutContentTranslation
LinkWikit
Loading indicatorWikit (bouncing dots), Wikibase vuejs components (progress bar), MediaSearch (styles) (spinner), ContentTranslation: ProgressBar, Spinner
LookupWikit: Lookup, LookupInput, WVUI (typeahear search), MediaSearch (styles)
Lookup menuWikit, MediaSearch (styles)
MessageWikit, Bridge, MediaSearch (styles), ContentTranslation
ObserverMediaSearch
OverlayTermbox
PlayerMediaSearch (styles)
PopoverWikit
Quantity inputWikit
Radio groupBridge, ContentTranslation (includes Radio)
RadioWikibase vuejs components, MediaSearch (styles)
SuggestionMachineVision
TabsMediaSearch: Tabs (styles), Tab (styles)
Text areaWikibase vuejs components
Toast notificationMachineVision
Toggle buttonWikit, GlobalWatchlist
Toggle button groupWikit
Toggle switchMachineVision
TransitionsMachineVision (fade in)
Typeahead suggestion titleWVUI
Typeahead suggestionWVUI
Validation messageWikit

Event Timeline

@AnneT you marked that the "Identifying all existing Vue components that could be useful" step was done - is the list of such components public?

Note: moved to task description so it can be better maintained

MediaWiki Vue projects

ProjectLinksNotesDeliveryLoading
WikitCode, Storybook, feature exampleWMDE UI library, contains storybooks for docs and Vue componentsCompiled with vue-cli
Wikibase termboxCode, docsWMDE projectVue-cli, uses MW's VueWhen viewing an entity on Wikidata on mobile
Wikidata BridgeCode, docsWMDE projectVue-cli, loaded through RLArticles with embedded Wikidata info
Wikibase Tainted ReferencesCodeWMDE projectVue-cli, MW VueWhen viewing an entity on Wikidata
Wikibase Vue componentsCodeWMDE projectVue-cli
New searchbar/ WVUICode, Phab ticket, DocsComprises the existing WVUI libraryWVUI compiled with Webpack; Vector pulls in WVUI, uses full RLEvery page, on user interaction
WikibaseMediaInfo's MediaSearchCode, docs, featureThis code will soon move to a new extension, MediaSearchFull RLSpecial:MediaSearch
MachineVisionCode, docs, featureFull RLSpecial:SuggestedTags
ContentTranslationCode, docs, feature (enwiki)Contains Storybook of componentsVue-cli, loaded through RL, ships its own copies of Vue, vue-router and VuexSpecial:ContentTranslation ; small RL-based component for post-edit
NearbyPagesCode, docs, feature (enwiki)Full RL, uses WVUISpecial:Nearby
GlobalWatchlistCode, docsFull RLSpecial:GlobalWatchlist
ToolhubCode, docsIn developmentVue-cli, not in MediaWiki
WikiLambdaCode, docs,In developmentFull RLWhen viewing/editing ZObjects

MediaWiki Vue components

The following is a list of existing reusable Vue component within MediaWiki projects. This list could become outdated quickly as developers continue to add new components, but this is just an initial list. We'll open a task for each component eventually, and in those tasks we'll do a fresh review of existing libraries to ensure we're capturing all existing implementations. In those tasks, the different implementations will be reviewed and discussed (see T278509 for an example).

ComponentImplementations
ButtonWikit, Bridge, WVUI, MediaSearch (styles), ContentTranslation
Button groupContentTranslation
CardContentTranslation, NearbyPages
CheckboxWikit, Termbox, MediaSearch (styles)
Collapsible wrapperGlobalWatchlist
Copy text layoutMediaSearch (styles)
Date inputWikit
DialogTermbox (modal), MediaSearch (styles), ContentTranslation
DividerContentTranslation
Dropdown/selectWikit, MediaSearch: Select (styles), SelectMenu (styles), ContentTranslation: Dropdown, Select
Extended number inputWikit
IconWikit (includes icon svgs), WVUI (icon data), MediaSearch (styles) (icon data, copied directly from WVUI) , ContentTranslation (icon data)
ImageMediaSearch (styles), ContentTranslation
InputWikit: Input, TextInput, InputWithExtender, WVUI, ContentTranslation
LabelGlobalWatchlist
Language selectorContentTranslation
LayoutContentTranslation
LinkWikit
Loading indicatorWikit (bouncing dots), Wikibase vuejs components (progress bar), MediaSearch (styles) (spinner), ContentTranslation: ProgressBar, Spinner, GlobalWatchlist (loading bar)
LookupWikit: Lookup, LookupInput, WVUI (typeahear search), MediaSearch (styles)
Lookup menuWikit, MediaSearch (styles)
MessageWikit, Bridge, MediaSearch (styles), ContentTranslation
ObserverMediaSearch
OverlayTermbox
PlayerMediaSearch (styles)
PopoverWikit
Quantity inputWikit
Radio groupBridge, ContentTranslation (includes Radio)
RadioWikibase vuejs components, MediaSearch (styles)
SuggestionMachineVision
TabsMediaSearch: Tabs (styles), Tab (styles)
Text areaWikibase vuejs components
Toast notificationMachineVision
Toggle buttonWikit, GlobalWatchlist
Toggle button groupWikit
Toggle switchMachineVision
TransitionsMachineVision (fade in)
Typeahead suggestion titleWVUI
Typeahead suggestionWVUI
Validation messageWikit

@DannyS712 Please see above, and let me know if you notice anything missing!

AnneT renamed this task from Identify existing Vue components in MediaWiki projects and outline process for upstreaming them into WVUI to Identify existing Vue components in MediaWiki projects.Apr 7 2021, 6:57 PM
AnneT updated the task description. (Show Details)

@DannyS712 Please see above, and let me know if you notice anything missing!

I haven't checked all of the libraries and repos, but for global watchlist everything you wrote above appears correct as of now
It may also be helpful to track places where the svg data for icons exists, separately from the icon component itself

@DannyS712 good call, I've added information on where icon data is located to the icon implementations listed here.

@DannyS712 good call, I've added information on where icon data is located to the icon implementations listed here.

Thanks. Also, for loading indicators the globalwatchlist loading bar is just the text "LOADING" pending a shared component being available to use, so it might not be worth listing. Maybe put the list of components you identified in the task description or a paste instead? To allow others to edit the list

@DannyS712 good call, I've added information on where icon data is located to the icon implementations listed here.

Thanks. Also, for loading indicators the globalwatchlist loading bar is just the text "LOADING" pending a shared component being available to use, so it might not be worth listing.

Cool, I'll remove it

Maybe put the list of components you identified in the task description or a paste instead? To allow others to edit the list

Oh yeah, I'll move it there!

@LZaman: Deprecated-Design-Systems-team-board got archived; which active project tag should this task have?

@LZaman: Deprecated-Design-Systems-team-board got archived; which active project tag should this task have?

There used to be a #vue (or maybe #vue.js) tag - not sure what happened to that, but this should be tagged as Vue separate from any work being done by the design systems team

Adding Design-System-Team because Design-Systems-team-20200324-20220422 got archived though this open task has no other active project tags associated, so it cannot be found on boards.

@AnneT this is extremely helpful, thank you. Is the list complete? It might be challenging to keep this updated on an ongoing basis with other teams' work, so we might want to close this out and keep it for reference when we revisit migrations.

@STHart I agree; this served a purpose when we were first organizing this work but now that we're building out a single shared library, we likely don't need to continue updating this task.