v1.14.0-djmaze5

This commit is contained in:
djmaze 2020-08-31 16:33:40 +02:00
parent dcdaf70601
commit 088945b636
5 changed files with 43 additions and 48 deletions

View file

@ -61,8 +61,14 @@ The result is faster and smaller download code (good for mobile networks).
Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill for array.flat(). Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill for array.flat().
* Added dev/prototype-*.js for some additional features
* Replaced jQuery with jQuery.slim * Replaced jQuery with jQuery.slim
* Replaced ProgressJS with simple native dropin * Replaced ProgressJS with simple native dropin
* Replaced Autolinker with simple https/email detection
* Replaced ifvisible.js with simple drop-in replacement
* Replaced momentToNode with proper HTML5 <time>
* Replaced resize listeners with ResizeObserver
* Replaced bootstrap.js with native drop-in replacement
* Removed pikaday * Removed pikaday
* Removed underscore * Removed underscore
* Removed polyfills * Removed polyfills
@ -73,38 +79,53 @@ Things might work in Edge 18, Firefox 50-62 and Chrome 54-68 due to one polyfill
* Removed matchmedia-polyfill * Removed matchmedia-polyfill
* Removed momentjs (localization still used) * Removed momentjs (localization still used)
* Removed opentip (use CSS) * Removed opentip (use CSS)
* Replaced Autolinker with simple https/email detection
* Replaced ifvisible.js with simple drop-in replacement
* Replaced momentToNode with proper HTML5 <time>
* Replaced resize listeners with ResizeObserver
* Removed non-community (aka Prem/Premium/License) code * Removed non-community (aka Prem/Premium/License) code
* Replaced bootstrap.js with native drop-in replacement
|js/* |1.14.0 |native | |js/* |1.14.0 |native |
|----------- |--------: |--------: | |----------- |--------: |--------: |
|admin.js |2.130.942 | 967.065 | |admin.js |2.130.942 | 963.702 |
|app.js |4.184.455 |2.630.967 | |app.js |4.184.455 |2.626.779 |
|boot.js | 671.522 | 43.824 | |boot.js | 671.522 | 43.824 |
|libs.js | 647.614 | 315.759 | |libs.js | 647.614 | 315.759 |
|polyfills.js | 325.834 | 0 | |polyfills.js | 325.834 | 0 |
|TOTAL |7.960.367 |3.957.615 | |TOTAL |7.960.367 |3.950.064 |
|js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli | |js/min/* |1.14.0 |native |gzip 1.14 |gzip |brotli |
|--------------- |--------: |--------: |--------: |--------: |--------: | |--------------- |--------: |--------: |--------: |--------: |--------: |
|admin.min.js | 252.147 | 131.409 | 73.657 | 38.016 | 32.576 | |admin.min.js | 252.147 | 130.802 | 73.657 | 37.916 | 32.474 |
|app.min.js | 511.202 | 355.295 |140.462 | 93.568 | 75.036 | |app.min.js | 511.202 | 354.515 |140.462 | 93.408 | 74.849 |
|boot.min.js | 66.007 | 5.560 | 22.567 | 2.341 | 2.004 | |boot.min.js | 66.007 | 5.564 | 22.567 | 2.327 | 1.989 |
|libs.min.js | 572.545 | 299.223 |176.720 | 92.519 | 81.725 | |libs.min.js | 572.545 | 299.283 |176.720 | 92.510 | 81.659 |
|polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 | |polyfills.min.js | 32.452 | 0 | 11.312 | 0 | 0 |
|TOTAL |1.434.353 | 791.487 |424.718 |226.444 |191.341 | |TOTAL |1.434.353 | 790.164 |424.718 |226.161 |190.971 |
641.922 bytes (197.980 gzip) is not much, but it feels faster. 644.189 bytes (198.557 gzip) is not much, but it feels faster.
### CSS changes
* Solve jQuery removed "features" with native css code.
* Removed html.no-css
* Removed dev/Styles/Cmd.less
* Removed dev/Styles/Scroll.less
* Removed Internet Explorer from normalize.css
* Removed node_modules/opentip/css/opentip.css
* Removed node_modules/pikaday/css/pikaday.css
* Removed vendors/bootstrap/less/breadcrumbs.less
* Removed vendors/bootstrap/less/navbar.less
* Removed vendors/bootstrap/less/popovers.less
* Removed vendors/bootstrap/less/progress-bars.less
* Removed vendors/bootstrap/less/scaffolding.less
* Removed vendors/bootstrap/less/sprites.less
* Removed vendors/bootstrap/less/tooltip.less
* Removed vendors/jquery-nanoscroller/nanoscroller.css
* Removed vendors/jquery-letterfx/jquery-letterfx.min.css
* Removed vendors/Progress.js/minified/progressjs.min.css
|css/* |1.14.0 |native | |css/* |1.14.0 |native |
|-------------- |--------: |--------: | |-------------- |--------: |--------: |
|app.css | 340.334 | 265.864 | |app.css | 340.334 | 265.871 |
|app.min.css | 274.791 | 211.468 | |app.min.css | 274.791 | 211.493 |
### PHP73 branch ### PHP73 branch

9
dev/External/ko.js vendored
View file

@ -628,15 +628,6 @@ ko.observable.fn.validateEmail = function() {
return this; return this;
}; };
ko.observable.fn.validateSimpleEmail = function() {
this.hasError = ko.observable(false);
this.subscribe(value => this.hasError(value && !/^.+@.+$/.test(value)));
this.valueHasMutated();
return this;
};
ko.observable.fn.deleteAccessHelper = function() { ko.observable.fn.deleteAccessHelper = function() {
this.extend({ falseTimeout: 3000 }).extend({ toggleSubscribeProperty: [this, 'deleteAccess'] }); this.extend({ falseTimeout: 3000 }).extend({ toggleSubscribeProperty: [this, 'deleteAccess'] });
return this; return this;

View file

@ -80,22 +80,6 @@ export function addSettingsViewModel(SettingsViewModelClass, template, labelName
VIEW_MODELS.settings.push(SettingsViewModelClass); VIEW_MODELS.settings.push(SettingsViewModelClass);
} }
/**
* @param {Function} SettingsViewModelClass
* @returns {void}
*/
export function removeSettingsViewModel(SettingsViewModelClass) {
VIEW_MODELS['settings-removed'].push(SettingsViewModelClass);
}
/**
* @param {Function} SettingsViewModelClass
* @returns {void}
*/
export function disableSettingsViewModel(SettingsViewModelClass) {
VIEW_MODELS['settings-disabled'].push(SettingsViewModelClass);
}
/** /**
* @returns {void} * @returns {void}
*/ */
@ -122,7 +106,7 @@ export function screen(screenName) {
* @param {Function} ViewModelClassToShow * @param {Function} ViewModelClassToShow
* @returns {Function|null} * @returns {Function|null}
*/ */
export function getScreenPopup(PopuViewModelClass) { function getScreenPopup(PopuViewModelClass) {
let result = null; let result = null;
if (PopuViewModelClass) { if (PopuViewModelClass) {
result = PopuViewModelClass; result = PopuViewModelClass;
@ -150,7 +134,7 @@ export function hideScreenPopup(ViewModelClassToHide) {
* @param {Object=} vmScreen * @param {Object=} vmScreen
* @returns {*} * @returns {*}
*/ */
export function buildViewModel(ViewModelClass, vmScreen) { function buildViewModel(ViewModelClass, vmScreen) {
if (ViewModelClass && !ViewModelClass.__builded) { if (ViewModelClass && !ViewModelClass.__builded) {
let vmDom = null; let vmDom = null;
const vm = new ViewModelClass(vmScreen), const vm = new ViewModelClass(vmScreen),
@ -276,7 +260,7 @@ export function isPopupVisible(ViewModelClassToShow) {
* @param {string} subPart * @param {string} subPart
* @returns {void} * @returns {void}
*/ */
export function screenOnRoute(screenName, subPart) { function screenOnRoute(screenName, subPart) {
let vmScreen = null, let vmScreen = null,
isSameScreen = false, isSameScreen = false,
cross = null; cross = null;
@ -531,7 +515,6 @@ export {
commandDecorator as command, commandDecorator as command,
viewDecorator, viewDecorator,
viewDecorator as view, viewDecorator as view,
viewDecorator as viewModel,
popupDecorator, popupDecorator,
popupDecorator as popup, popupDecorator as popup,
settingsMenuKeysHandler settingsMenuKeysHandler

View file

@ -27,9 +27,9 @@ class IdentityPopupView extends AbstractViewNext {
this.email = ko.observable('').validateEmail(); this.email = ko.observable('').validateEmail();
this.email.focused = ko.observable(false); this.email.focused = ko.observable(false);
this.name = ko.observable(''); this.name = ko.observable('');
this.replyTo = ko.observable('').validateSimpleEmail(); this.replyTo = ko.observable('').validateEmail();
this.replyTo.focused = ko.observable(false); this.replyTo.focused = ko.observable(false);
this.bcc = ko.observable('').validateSimpleEmail(); this.bcc = ko.observable('').validateEmail();
this.bcc.focused = ko.observable(false); this.bcc.focused = ko.observable(false);
this.signature = ko.observable(''); this.signature = ko.observable('');

View file

@ -3,7 +3,7 @@
"title": "RainLoop Webmail", "title": "RainLoop Webmail",
"description": "Simple, modern & fast web-based email client", "description": "Simple, modern & fast web-based email client",
"private": true, "private": true,
"version": "1.14.0-djmaze4", "version": "1.14.0-djmaze5",
"homepage": "https://www.rainloop.net", "homepage": "https://www.rainloop.net",
"author": { "author": {
"name": "RainLoop Team", "name": "RainLoop Team",