Skip to content

Move away from jQuery and jQuery UI #12980

@rullzer

Description

@rullzer

jQuery is deprecated for over 10 versions of Nextcloud, its time to remove jQuery and especially jQuery UI.
We use Vue for the UI nowadays.

To do

As of Nextcloud 33

Original request:

Details

From #11718 (comment)

@nextcloud/javascript if you want to standardize more and have cleanup legacy code. Baby steps is probably best.

$.widget

  • ./core/js/jquery.ocdialog.js
    2: $.widget('oc.ocdialog', {

  • ./apps/files/js/jquery.fileupload.js
    87: $.widget('blueimp.fileupload', {

  • ./core/vendor/core.js
    13:[Omitted long line with 24 matches]

  • ./apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js
    25:$.widget("ech.multiselect", {

$.datepicker

$.ui.

  • ./apps/files/js/jquery.fileupload.js
    21: 'jquery.ui.widget'
    27: require('./vendor/jquery.ui.widget')

  • ./core/js/jquery/ui-fixes.js
    5:jQuery.ui.autocomplete.prototype._resizeMenu = function () {

  • ./apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js
    562: if( $.ui.position && !$.isEmptyObject(o.position) ){

$.autocomplete

  • ./core/js/sharedialogview.js

$.progressbar

  • ./apps/files/js/file-upload.js
    1084: $('#uploadprogressbar').progressbar({value: 0});
    1150: $('#uploadprogressbar').progressbar('value', progress);

$.datepicker

  • ./core/js/sharedialoglinkshareview.js
  • ./core/js/sharedialogshareelistview.js

$.tooltip

./apps/updatenotification/js/updatenotification.js
1:[Omitted long line with 1 matches]

./apps/files_sharing/js/files_drop.js
68: $('[data-toggle="tooltip"]').tooltip();
76: $('[data-toggle="tooltip"]').tooltip();

./apps/files_sharing/js/sharedfilelist.js
124: .tooltip({placement: 'top'})

./apps/files/js/file-upload.js
992: $('#upload').tooltip('hide');
1091: $('#uploadprogressbar').tooltip({placement: 'bottom'});

./apps/files/js/app.js
130: $('#quota.has-tooltip').tooltip({

./apps/files/js/mainfileinfodetailview.js
73: $el.tooltip('hide')
75: .tooltip('fixTitle')
76: .tooltip({placement: 'bottom', trigger: 'manual'})
77: .tooltip('show');
79: $el.tooltip('hide');
81: .tooltip('fixTitle');
191: this.$el.find('[title]').tooltip({placement: 'bottom'});

./apps/files/js/newfilemenu.js
135: $input.tooltip({placement: 'right', trigger: 'manual', 'container': '.newFileMenu'});
136: $input.tooltip('fixTitle');
137: $input.tooltip('show');
146: $input.tooltip('hide');

./apps/files/js/files.js
317: $('#upload').tooltip({placement:'right'});

./apps/files/js/fileactions.js
433: $actionEl.tooltip({placement:'top'});

./apps/comments/js/commentstabview.js
115: this.$el.find('.has-tooltip').tooltip();
341: $el.find('.has-tooltip').tooltip();
481: $formRow.find('.has-tooltip').tooltip();
508: $field.tooltip('hide');
511: $field.tooltip({trigger: 'manual'});
512: $field.tooltip('show');

./apps/files/js/filelist.js
1369: nameSpan.tooltip({placement: 'top'});
1422: .tooltip({placement: 'top'})
2335: input.tooltip('hide');
2356: input.tooltip('hide');
2416: input.tooltip({placement: 'right', trigger: 'manual'});
2417: input.tooltip('fixTitle');
2418: input.tooltip('show');
2427: input.tooltip('hide');
2431: input.tooltip({placement: 'right', trigger: 'manual'});
2432: input.tooltip('fixTitle');
2433: input.tooltip('show');
3299: $newButton.tooltip({'placement': 'bottom'});
3310: this._newButton.tooltip('hide');

./apps/comments/js/filesplugin.js
105: context.$file.find('.action-comment').tooltip('hide');

./apps/updatenotification/js/updatenotification.js.map
1:[Omitted long line with 1 matches]

./core/js/contactsmenu.js
168: this.$('.top-action').tooltip({placement: 'left'});
170: this.$('.second-action').tooltip({placement: 'left'});

./core/js/backgroundjobs.js
26: $('.section .icon-info').tooltip({

./core/js/js.js
2413: this.tooltip(argument);

./apps/files_versions/js/versionstabview.js
145: $el.find('.has-tooltip').tooltip();
194: this.$el.find('.has-tooltip').tooltip();

./apps/files_external/js/settings.js
1265: $statusSpan.tooltip();
1267: $statusSpan.tooltip('destroy');

./apps/federatedfilesharing/js/settings-personal.js
24: $('#personal-settings-container .verify img').tooltip({placement: 'bottom', trigger: 'hover'});
26:[Omitted long line with 1 matches]
32: $input.tooltip('hide')
34: .tooltip('fixTitle')
35: .tooltip({placement: 'bottom', trigger: 'manual'})
36: .tooltip('show');
38: $input.tooltip('hide')
40: .tooltip('fixTitle');
54: $input.tooltip('hide')
56: .tooltip('fixTitle')
57: .tooltip({placement: 'bottom', trigger: 'manual'})
58: .tooltip('show');
60: $input.tooltip('hide')
62: .tooltip('fixTitle');
67: $('#fileSharingSettings .hasTooltip').tooltip({placement: 'right'});

./apps/theming/js/settings-admin.js
107: $('#theming [data-toggle="tooltip"]').tooltip();
165: $('#theming-name').tooltip({placement: 'top', trigger: 'manual'});
166: $('#theming-name').tooltip('fixTitle');
167: $('#theming-name').tooltip('show');
175: $('#theming-name').tooltip('hide');

./apps/user_ldap/js/wizard/view.js
357: $('#ldapSettings :input').tooltip({placement: "right", container: "body", trigger: "hover"});

./settings/js/certificates.js
16: $('#sslCertificate tr > td').tooltip({placement: 'bottom', container: 'body'});

./apps/updatenotification/src/components/root.vue
359: this._$el.find('.icon-info').tooltip({placement: 'right'});

./settings/js/authtoken_view.js
62: $html.find('.has-tooltip').tooltip({container: 'body'});
234:[Omitted long line with 1 matches]
240: $input.tooltip('hide')
242: .tooltip('fixTitle')
243: .tooltip({placement: 'bottom', trigger: 'manual'})
244: .tooltip('show');
246: $input.tooltip('hide')
248: .tooltip('fixTitle');
262: $input.tooltip('hide')
264: .tooltip('fixTitle')
265: .tooltip({placement: 'bottom', trigger: 'manual'})
266: .tooltip('show');
268: $input.tooltip('hide')
270: .tooltip('fixTitle');
381: $row.find('.icon-delete').tooltip('hide');

./settings/js/admin.js
18: $('#backgroundjobs span.crondate').tooltip({placement: 'top'});

./core/js/systemtags/systemtagsinputfield.js
121: $renameForm.find('[title]').tooltip({
162: $(ev.target).tooltip('hide');
359: this.$el.find('[title]').tooltip({placement: 'bottom'});

./core/vendor/strengthify/jquery.strengthify.js
157: ).tooltip({
160: }).tooltip(
162: ).tooltip(
167: $wrapper.tooltip(

$.position

./core/js/jquery.ocdialog.js
2: $.widget('oc.ocdialog', {

./apps/files/js/jquery.fileupload.js
87: $.widget('blueimp.fileupload', {

./core/vendor/core.js
13:[Omitted long line with 24 matches]

./apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js
25:$.widget("ech.multiselect", {
[christoph@christoph-workstation nextcloud]$ rg '.position(' . --ignore-vcs --max-columns 100
./core/js/multiselect.js
196: var pos=button.position();
269: list.css('top', list.position().top-li.outerHeight());
306: var pos=button.position();

./core/search/js/searchprovider.js
190: $searchResults.position() &&
191: $searchResults.position().top + summaryAndStatusHeight >

./core/vendor/core.js
4:[Omitted long line with 2 matches]
13:[Omitted long line with 10 matches]

./apps/user_ldap/vendor/ui-multiselect/src/jquery.multiselect.js
567: .position( o.position )

./apps/comments/js/vendor/Caret.js/dist/jquery.caret.min.js
2:[Omitted long line with 1 matches]

./core/vendor/jquery/dist/jquery.min.js
4:[Omitted long line with 2 matches]

./core/vendor/jquery/dist/jquery.js
8942: curPosition = curElem.position();
9096: jQuery( elem ).position()[ prop ] + "px" 👍

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions