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.
Details
From #11718 (comment)
@nextcloud/javascript if you want to standardize more and have cleanup legacy code. Baby steps is probably best.
$.widget
$.datepicker
$.ui.
$.autocomplete
$.progressbar
$.datepicker
$.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" 👍
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
OCP.AppConfig( refactor(core): migrate OCP.AppConfig from jQuery to axios #57584 )OCP.Comments( refactor(core): migrateOCP.Commentsaway from jQuery #57594 )OC.*QueryStringfrom jQuery #57587 )OC.msg( refactor(core): migrateOC.msgaway from jQuery #57592 )OC.EventSource( refactor(core): migrateOC.EventSourcefrom jQuery to native API #57644 )OCP.WhatsNew( chore: drop legacyWhatsNew#57583 )core/src/jquerycore/src/files/client.jsOC.Notification- deprecated use@nextcloud/dialogsinsteadOC.Dialogs- deprecated use@nextcloud/dialogsinsteadOC.Settings- deprecated use@nextcloud/vuecomponents insteadOC.Settings.UserSettings(refactor: consolidateOC.Settings#57355)security_password( chore(settings): remove dead legacy code #57565 )js/tosrc/#57502 )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$.ui.position && !$ .isEmptyObject(o.position) ){
562: if(
$.autocomplete
$.progressbar
1084: $('#uploadprogressbar').progressbar({value: 0});
1150: $('#uploadprogressbar').progressbar('value', progress);
$.datepicker
$.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" 👍