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

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions