Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump jquery-ui from 1.10 to 1.12.1 #11718

Merged
merged 1 commit into from
Dec 4, 2018

Conversation

ChristophWurst
Copy link
Member

@ChristophWurst ChristophWurst commented Oct 9, 2018

Full jquery-ui 0.12 changelog: https://jqueryui.com/changelog/1.12.0/

Motivation for updating this: our ancient jQuery version and the numerous warnings from jquery-migrate which many originate from jquery-ui 0.10.

@MorrisJobke
Copy link
Member

Wasn't the main idea to drop jquery-ui? Wasn't it only the LDAP wizard that used it?

@ChristophWurst
Copy link
Member Author

Aren't modals (file picker for example) also jq-ui?

If it really is just the LDAP app then we could move the dependency out of server.

@ChristophWurst
Copy link
Member Author

Loading the files app without jquery-ui.min.js 🙈
bildschirmfoto von 2018-10-09 15-20-56

@MorrisJobke
Copy link
Member

Loading the files app without jquery-ui.min.js 🙈

🙈

@MorrisJobke
Copy link
Member

Problem with this is, that we highly tweaked the file :/

@ChristophWurst
Copy link
Member Author

Problem with this is, that we highly tweaked the file :/

Is this in any way reproducible? Do we have patches?

I just don't want to ditch the idea of keeping these libraries up to date again.

@MorrisJobke
Copy link
Member

Is this in any way reproducible? Do we have patches?

Not that I'm aware of. I could also be wrong here :/ Browsing the history of that folder it looks like I did an extraction of the changes back in 2014 🙈

@ChristophWurst
Copy link
Member Author

Are you talking about https://github.com/nextcloud/server/blob/master/core/js/jquery-ui-fixes.js?

Anyway, I quickly tested the server UI with this branch and I couldn't spot any obvious regressions.

@rullzer
Copy link
Member

rullzer commented Oct 9, 2018

@ChristophWurst could you creata an issue with the places we still us jquery-ui? Then maybe we can work towards dropping it case by case?

@ChristophWurst
Copy link
Member Author

Easier said than done, but I'll try my best to build such a list 👍

@ChristophWurst
Copy link
Member Author

Gave this a quick go and ran some rg queries.

These are jus the very obvious usages, but it gives an idea of how much jquery UI we still use:

$.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

./core/js/sharedialoglinkshareview.js
458: this.$el.find('.datepicker').datepicker({dateFormat : 'dd-mm-yy'});
619: $(expirationDatePicker).datepicker({
625: $(expirationDatePicker).datepicker('show');

./core/js/sharedialogshareelistview.js
530: $(expirationDatePicker).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
125: this.$el.find('.shareWithField').autocomplete("search");
400: .autocomplete("option", "autoFocus", true);
514: .autocomplete('search', $(e.target).val());
544: $shareWithField.autocomplete('close');
545: $shareWithField.autocomplete('disable');
570: $shareWithField.autocomplete('enable');
583: $shareWithField.autocomplete('enable');
596: $shareWithField.autocomplete('enable');
602: $shareWithField.autocomplete('enable');
614: $shareWithField.autocomplete('enable');
673: $shareField.autocomplete({

$.progressbar

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

$.datepicker

./core/js/sharedialoglinkshareview.js
458: this.$el.find('.datepicker').datepicker({dateFormat : 'dd-mm-yy'});
619: $(expirationDatePicker).datepicker({
625: $(expirationDatePicker).datepicker('show');

./core/js/sharedialogshareelistview.js
530: $(expirationDatePicker).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/workflowengine/js/requesttimeplugin.js
75: .tooltip({
86: .tooltip({

./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/workflowengine/js/requesturlplugin.js
55: .tooltip({

./apps/workflowengine/js/filenameplugin.js
65: .tooltip({

./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/workflowengine/js/requestuseragentplugin.js
55: .tooltip({

./apps/workflowengine/js/filemimetypeplugin.js
59: .tooltip({

./apps/workflowengine/js/filesizeplugin.js
49: .tooltip({

./apps/workflowengine/js/requestremoteaddressplugin.js
64: .tooltip({

./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/sharedialoglinkshareview.js
105: $menu.tooltip('hide')
107: .tooltip('fixTitle')
108: .tooltip({placement: 'bottom', trigger: 'manual'})
109: .tooltip('show');
111: $menu.tooltip('hide');
112: $menu.tooltip('destroy');
131: $input.tooltip('hide')
133: .tooltip('fixTitle')
134: .tooltip({placement: 'bottom', trigger: 'manual'})
135: .tooltip('show');
137: $input.tooltip('hide');
139: .tooltip('fixTitle');
238: $input.tooltip('destroy');
241: $input.tooltip({placement: 'bottom', trigger: 'manual'});
242: $input.tooltip('show');
575: $(event.currentTarget).tooltip('hide');

./core/js/sharedialogview.js
119: $el.removeClass('error').tooltip('hide');
366: .tooltip('hide')
367: .tooltip({
371: .tooltip('fixTitle')
372: .tooltip('show');
383: .tooltip('hide');
418: .tooltip('hide')
419: .tooltip({
423: .tooltip('fixTitle')
424: .tooltip('show');
695: this.$el.find('.hasTooltip').tooltip();

./core/js/share.js
323: action.find('span[title]').tooltip({placement: 'top'});

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

./core/js/sharedialogshareelistview.js
291: this.$('.has-tooltip').tooltip({
560: passwordField.tooltip('hide');
600: passwordByTalkField.tooltip('hide');
668: passwordField.tooltip('destroy');
672: passwordField.tooltip({placement: 'bottom', trigger: 'manual'});
673: passwordField.tooltip('show');

./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" :

@MorrisJobke
Copy link
Member

These are jus the very obvious usages, but it gives an idea of how much jquery UI we still use:

Okay ... didn't expected that. But also testing this will be very interesting :/

@ChristophWurst
Copy link
Member Author

Okay ... didn't expected that. But also testing this will be very interesting :/

If you look at the jquery UI changelogs, there is very little that was removed. I think the APIs haven't changed much, so almost everything should just work 🤞

@rullzer
Copy link
Member

rullzer commented Oct 10, 2018

Rebase time

@ChristophWurst
Copy link
Member Author

If you look at the jquery UI changelogs, there is very little that was removed. I think the APIs haven't changed much, so almost everything should just work crossed_fingers

MorrisJobke reacted with laugh emoji

Because I jinxed it? :D

@ChristophWurst ChristophWurst force-pushed the dependachristoph/bower/jquery-ui-1.12.1 branch from a808a79 to 159e5c4 Compare October 10, 2018 19:29
@ChristophWurst
Copy link
Member Author

CI failed because https://drone.nextcloud.com/nextcloud/server/11355/251 timed out

@blizzz
Copy link
Member

blizzz commented Oct 31, 2018

sharing auto-completion seems broken (and why do we expose the user id!?):

sharing

Otherwise file upload, filepicker, datepicker, LDAP looked fine to me.

@juliusknorr
Copy link
Member

and why do we expose the user id

@blizzz Does this happen on master as well? Might be a bug from #11899, I haven't tested it with LDAP yet.

@blizzz
Copy link
Member

blizzz commented Oct 31, 2018

@blizzz Does this happen on master as well? Might be a bug from #11899, I haven't tested it with LDAP yet.

Yes, I opened a separate issue: #12164

@MorrisJobke MorrisJobke mentioned this pull request Nov 7, 2018
29 tasks
@MorrisJobke
Copy link
Member

Let's do this in 16.

@MorrisJobke MorrisJobke modified the milestones: Nextcloud 15, Nextcloud 16 Nov 7, 2018
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
@ChristophWurst ChristophWurst force-pushed the dependachristoph/bower/jquery-ui-1.12.1 branch from 159e5c4 to ec93cf7 Compare November 26, 2018 20:06
@ChristophWurst
Copy link
Member Author

Let's do this in 16.

Wanna do this now? Better have this earlier than later, then we will notice any breakage more likely.

@MorrisJobke MorrisJobke changed the title Bump jquery-ui from 0.10 to 1.12.1 Bump jquery-ui from 1.10 to 1.12.1 Dec 4, 2018
Copy link
Member

@MorrisJobke MorrisJobke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine with me 👍

Copy link
Member

@juliusknorr juliusknorr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's do this. 👍

@juliusknorr juliusknorr merged commit 388f5dd into master Dec 4, 2018
@juliusknorr juliusknorr deleted the dependachristoph/bower/jquery-ui-1.12.1 branch December 4, 2018 09:20
@ChristophWurst
Copy link
Member Author

Thank you 🎆

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants