diff --git a/UI/Templates/ContactsUI/UIxContactFoldersView.wox b/UI/Templates/ContactsUI/UIxContactFoldersView.wox index 337fdeec3..d5e3aa355 100644 --- a/UI/Templates/ContactsUI/UIxContactFoldersView.wox +++ b/UI/Templates/ContactsUI/UIxContactFoldersView.wox @@ -304,68 +304,67 @@
-
- -
-

Contacts

-
- - - -
- -
- - - -
- -
-
-
-
{{currentCard.$preferredEmail(addressbook.selectedFolder.$query)}}
-
-
-
-
- - - add - - +
+ +
+

Contacts

+
+ + + +
+ + +
+ +
+ + + +
+ +
+
+
+
{{currentCard.$preferredEmail(addressbook.selectedFolder.$query)}}
+
+
+
+
+
+ + add + +
- -
- -
+
diff --git a/UI/Templates/ContactsUI/UIxContactViewTemplate.wox b/UI/Templates/ContactsUI/UIxContactViewTemplate.wox index a20febd34..d0fdcc7a6 100644 --- a/UI/Templates/ContactsUI/UIxContactViewTemplate.wox +++ b/UI/Templates/ContactsUI/UIxContactViewTemplate.wox @@ -5,11 +5,11 @@ xmlns:const="http://www.skyrix.com/od/constant" xmlns:label="OGo:label" > - + close + ng-click="toggleDetailView()">close
- + diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox index 2a1fef060..775793a6b 100644 --- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox @@ -2,62 +2,55 @@ -
- - - -
-

Messages

-
- - -
- -
- - - -
- -
{{currentMessage.$shortAddress('from')}}
-
{{currentMessage.subject}}
- -
-
- star - reply - forward - attach_file -
-
-
-
- - add - +
+ + +
+

Messages

+
+ + +
+ + +
+ +
+ +
{{currentMessage.$shortAddress('from')}}
+
{{currentMessage.subject}}
+ +
+
+ star + reply + forward + attach_file +
+
+
+
+
+ + add + +
- -
+
diff --git a/UI/Templates/MailerUI/UIxMailViewTemplate.wox b/UI/Templates/MailerUI/UIxMailViewTemplate.wox index 751d65a33..a394e7c7c 100644 --- a/UI/Templates/MailerUI/UIxMailViewTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailViewTemplate.wox @@ -7,10 +7,9 @@ xmlns:label="OGo:label" xmlns:uix="OGo:uix"> - - - close - + + close
diff --git a/UI/Templates/UIxPageFrame.wox b/UI/Templates/UIxPageFrame.wox index 5a612d202..c11e2d0f2 100644 --- a/UI/Templates/UIxPageFrame.wox +++ b/UI/Templates/UIxPageFrame.wox @@ -236,7 +236,6 @@ - diff --git a/UI/WebServerResources/Gruntfile.js b/UI/WebServerResources/Gruntfile.js index 73d428a40..4922a9a8d 100644 --- a/UI/WebServerResources/Gruntfile.js +++ b/UI/WebServerResources/Gruntfile.js @@ -106,7 +106,6 @@ module.exports = function(grunt) { '<%= src %>/angular-ui-router/release/angular-ui-router{,.min}.js', '<%= src %>/ui-router-extras/release/ct-ui-router-extras{,.min}.js', '<%= src %>/angular-recursion/angular-recursion{,.min}.js', - '<%= src %>/angular-vs-repeat/src/angular-vs-repeat{,.min}.js', '<%= src %>/angular-file-upload/angular-file-upload{,.min}.js{,map}', //'<%= src %>/ng-file-upload/ng-file-upload{,.min}.js{,map}', '<%= src %>/underscore/underscore-min.{js,map}' diff --git a/UI/WebServerResources/bower.json b/UI/WebServerResources/bower.json index 980a020e1..d67a92e98 100644 --- a/UI/WebServerResources/bower.json +++ b/UI/WebServerResources/bower.json @@ -8,7 +8,6 @@ "angular-ui-router": "latest", "ui-router-extras": "latest", "angular-recursion": "latest", - "angular-vs-repeat": "latest", "angular-file-upload": "latest", "angular-material": "master", "compass-mixins": "latest", diff --git a/UI/WebServerResources/js/Contacts.app.js b/UI/WebServerResources/js/Contacts.app.js index 5850f50d1..b36dd521c 100644 --- a/UI/WebServerResources/js/Contacts.app.js +++ b/UI/WebServerResources/js/Contacts.app.js @@ -6,7 +6,7 @@ angular.module('SOGo.Common', []); - angular.module('SOGo.ContactsUI', ['ngSanitize', 'ui.router', 'vs-repeat', 'SOGo.Common']) + angular.module('SOGo.ContactsUI', ['ngSanitize', 'ui.router', 'SOGo.Common']) .constant('sgSettings', { baseURL: ApplicationBaseURL, @@ -135,6 +135,7 @@ */ stateCard.$inject = ['$stateParams', 'stateAddressbook']; function stateCard($stateParams, stateAddressbook) { + stateAddressbook.selectedCard = $stateParams.cardId; return stateAddressbook.$getCard($stateParams.cardId); } diff --git a/UI/WebServerResources/js/Contacts/AddressBookController.js b/UI/WebServerResources/js/Contacts/AddressBookController.js index 3a85f8219..8c4376f2c 100644 --- a/UI/WebServerResources/js/Contacts/AddressBookController.js +++ b/UI/WebServerResources/js/Contacts/AddressBookController.js @@ -6,8 +6,8 @@ /** * @ngInject */ - AddressBookController.$inject = ['$state', '$scope', '$rootScope', '$stateParams', '$timeout', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'stateAddressbooks', 'stateAddressbook']; - function AddressBookController($state, $scope, $rootScope, $stateParams, $timeout, $mdDialog, focus, Card, AddressBook, Dialog, Settings, stateAddressbooks, stateAddressbook) { + AddressBookController.$inject = ['$state', '$mdDialog', 'sgFocus', 'Card', 'AddressBook', 'Dialog', 'sgSettings', 'stateAddressbooks', 'stateAddressbook']; + function AddressBookController($state, $mdDialog, focus, Card, AddressBook, Dialog, Settings, stateAddressbooks, stateAddressbook) { var vm = this; AddressBook.selectedFolder = stateAddressbook; @@ -63,7 +63,7 @@ } function notSelectedComponent(currentCard, type) { - return (currentCard.tag == type && !currentCard.selected); + return (currentCard && currentCard.tag == type && !currentCard.selected); } function unselectCards() { diff --git a/UI/WebServerResources/js/Mailer.app.js b/UI/WebServerResources/js/Mailer.app.js index 889c59483..be50a5e83 100644 --- a/UI/WebServerResources/js/Mailer.app.js +++ b/UI/WebServerResources/js/Mailer.app.js @@ -6,7 +6,7 @@ angular.module('SOGo.ContactsUI', []); - angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'vs-repeat', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'ngAnimate']) + angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'ck', 'angularFileUpload', 'SOGo.Common', 'SOGo.ContactsUI', 'ngAnimate']) .constant('sgSettings', { baseURL: ApplicationBaseURL, @@ -204,11 +204,14 @@ return messageObject.uid == $stateParams.messageId; }); - if (message) + if (message) { + stateMailbox.selectedMessage = $stateParams.messageId; return message.$reload(); - else + } + else { // Message not found $state.go('mail.account.mailbox', { accountId: stateMailbox.$account.id, mailboxId: encodeUriFilter(stateMailbox.path) }); + } } /** diff --git a/UI/WebServerResources/js/Mailer/MailboxController.js b/UI/WebServerResources/js/Mailer/MailboxController.js index fa44edf75..94d55986c 100644 --- a/UI/WebServerResources/js/Mailer/MailboxController.js +++ b/UI/WebServerResources/js/Mailer/MailboxController.js @@ -20,7 +20,7 @@ vm.confirmDeleteSelectedMessages = confirmDeleteSelectedMessages; vm.copySelectedMessages = copySelectedMessages; // vm.moveSelectedMessages = moveSelectedMessages; - + function selectMessage(message) { $state.go('mail.account.mailbox.message', {accountId: stateAccount.id, mailboxId: encodeUriFilter(stateMailbox.path), messageId: message.uid}); } diff --git a/UI/WebServerResources/js/Mailer/MailboxesController.js b/UI/WebServerResources/js/Mailer/MailboxesController.js index 985d7055b..069ea424c 100644 --- a/UI/WebServerResources/js/Mailer/MailboxesController.js +++ b/UI/WebServerResources/js/Mailer/MailboxesController.js @@ -6,8 +6,8 @@ /** * @ngInject */ - MailboxesController.$inject = ['$scope', '$rootScope', '$stateParams', '$state', '$timeout', '$mdDialog', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'User', 'stateAccounts']; - function MailboxesController($scope, $rootScope, $stateParams, $state, $timeout, $mdDialog, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, User, stateAccounts) { + MailboxesController.$inject = ['$state', '$timeout', '$mdDialog', 'sgFocus', 'encodeUriFilter', 'Dialog', 'sgSettings', 'Account', 'Mailbox', 'User', 'stateAccounts']; + function MailboxesController($state, $timeout, $mdDialog, focus, encodeUriFilter, Dialog, Settings, Account, Mailbox, User, stateAccounts) { var vm = this, account, mailbox; @@ -179,8 +179,8 @@ /** * @ngInject */ - MailboxACLController.$inject = ['$scope', '$mdDialog', 'usersWithACL', 'User', 'folder']; - function MailboxACLController($scope, $mdDialog, usersWithACL, User, folder) { + MailboxACLController.$inject = ['$mdDialog', 'usersWithACL', 'User', 'folder']; + function MailboxACLController($mdDialog, usersWithACL, User, folder) { var vm = this; vm.users = usersWithACL; // ACL users diff --git a/UI/WebServerResources/js/Scheduler.app.js b/UI/WebServerResources/js/Scheduler.app.js index c92ee3a4b..208a0d491 100644 --- a/UI/WebServerResources/js/Scheduler.app.js +++ b/UI/WebServerResources/js/Scheduler.app.js @@ -8,7 +8,7 @@ angular.module('SOGo.MailerUI', []); angular.module('SOGo.PreferencesUI', []); - angular.module('SOGo.SchedulerUI', ['ngSanitize', 'ui.router', 'ct.ui.router.extras.sticky', 'ct.ui.router.extras.previous', 'vs-repeat', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.MailerUI', 'SOGo.PreferencesUI']) + angular.module('SOGo.SchedulerUI', ['ngSanitize', 'ui.router', 'ct.ui.router.extras.sticky', 'ct.ui.router.extras.previous', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.MailerUI', 'SOGo.PreferencesUI']) .constant('sgSettings', { baseURL: ApplicationBaseURL, diff --git a/UI/WebServerResources/scss/components/autoScrollList/autoScrollList.scss b/UI/WebServerResources/scss/components/autoScrollList/autoScrollList.scss index 7eee52967..9c4f2390c 100644 --- a/UI/WebServerResources/scss/components/autoScrollList/autoScrollList.scss +++ b/UI/WebServerResources/scss/components/autoScrollList/autoScrollList.scss @@ -1,22 +1,10 @@ /// autoScrollList.scss -*- Mode: scss; indent-tabs-mode: nil; basic-offset: 2 -*- @import 'extends'; -// The only selector for vs-repeat lists is this id, we use attributes selector to -// avoid overspecifying -// todo: create new classes and refactor templates markup -// ---------------------------------------------------------------------------- -.vs-repeat-repeated-element { - width: 100%; -} - [id='messagesList'], [id='contactsList'] { border-top: 44px solid transparent; // padding for the header.subheader, - border-bottom: 2px solid transparent; //close to a hack - md-list-item { - // dirty fix for vs-repeat damages - position: absolute; - } + border-bottom: 2px solid transparent; // close to a hack md-list-item { transition: background-color $swift-ease-in-duration $swift-ease-in-timing-function, diff --git a/UI/WebServerResources/scss/components/virtualRepeat/_extends.scss b/UI/WebServerResources/scss/components/virtualRepeat/_extends.scss new file mode 100644 index 000000000..cf7fe997f --- /dev/null +++ b/UI/WebServerResources/scss/components/virtualRepeat/_extends.scss @@ -0,0 +1,2 @@ +/*! virtualRepeat/_extends.scss - */ +@import '../../../angular-material/src/components/virtualRepeat/virtualRepeater.scss'; \ No newline at end of file diff --git a/UI/WebServerResources/scss/components/virtualRepeat/virtualRepeat.scss b/UI/WebServerResources/scss/components/virtualRepeat/virtualRepeat.scss new file mode 100644 index 000000000..db1ad89bf --- /dev/null +++ b/UI/WebServerResources/scss/components/virtualRepeat/virtualRepeat.scss @@ -0,0 +1,9 @@ +/// virtualRepeater.scss -*- Mode: scss; indent-tabs-mode: nil; basic-offset: 2 -*- +@import 'extends'; + +// Override some md styles +.md-virtual-repeat-container { + .md-virtual-repeat-offsetter { + right: 0; // no need to keep space for the scrollbar + } +} \ No newline at end of file diff --git a/UI/WebServerResources/scss/styles.scss b/UI/WebServerResources/scss/styles.scss index 00ba68419..9dad212aa 100755 --- a/UI/WebServerResources/scss/styles.scss +++ b/UI/WebServerResources/scss/styles.scss @@ -26,6 +26,7 @@ // Original angular-material components // ------------------------------------------------------------------------------ @import 'components/autocomplete/autocomplete'; +@import 'components/autoScrollList/autoScrollList'; @import 'components/backdrop/backdrop'; @import 'components/bottomSheet/bottomSheet'; @import 'components/button/button'; @@ -35,13 +36,15 @@ @import 'components/content/content'; @import 'components/dialog/dialog'; @import 'components/divider/divider'; +//@import 'components/favActions/fabActions'; @import 'components/fabSpeedDial/fabSpeedDial'; +//@import 'components/fabToolbar/fabToolbar'; +//@import 'components/fabTrigger/fabTrigger'; @import 'components/gridList/gridList'; @import 'components/icon/icon'; @import 'components/input/input'; @import 'components/list/list'; @import 'components/menu/menu'; -@import 'components/autoScrollList/autoScrollList'; //@import 'components/progressCircular/progressCircular'; @import 'components/progressLinear/progressLinear'; @import 'components/radioButton/radio-button'; @@ -50,11 +53,13 @@ @import 'components/slider/slider'; @import 'components/sticky/sticky'; @import 'components/subheader/subheader'; +//@import 'components/swipe/swipe'; @import 'components/switch/switch'; @import 'components/tabs/tabs'; //@import 'components/toast/toast'; @import 'components/toolbar/toolbar'; @import 'components/tooltip/tooltip'; +@import 'components/virtualRepeat/virtualRepeat'; @import 'components/whiteframe/whiteframe'; // Theme diff --git a/UI/WebServerResources/scss/views/_view.scss b/UI/WebServerResources/scss/views/_view.scss index 3e7985441..3c3c8e0fb 100644 --- a/UI/WebServerResources/scss/views/_view.scss +++ b/UI/WebServerResources/scss/views/_view.scss @@ -52,7 +52,7 @@ $detailView-width: grid-step(8) !global; .view-detail { z-index: $z-index-view; overflow-x: hidden; - background-color: $background-base-color; + background-color: transparent; @include at(md) { @include flex-col(md, 9); margin: 0;