From cf18be5aa9d29dd2c79461269f30ccd1fadfc818 Mon Sep 17 00:00:00 2001 From: Istvan Halmen Date: Wed, 29 Jan 2020 11:22:48 +0200 Subject: [PATCH] Merge 4.10.2 changes --- .babelrc | 23 +- package.json | 2 +- packages/angular/package.json | 2 +- packages/angularjs/package.json | 2 +- packages/javascript/package.json | 2 +- packages/jquery/package.json | 2 +- packages/react/package.json | 2 +- src/js/classes/progress.js | 5 +- src/js/classes/scroller.js | 3 +- src/js/classes/scrollview-base.js | 3 +- src/js/classes/stepper.js | 12 +- src/js/core/core.js | 4 +- src/js/core/dom.js | 105 +++++---- src/js/forms.react.jsx | 2 +- src/js/frameworks/react.jsx | 5 + src/js/input.angular.ts | 13 +- src/js/themes/material.js | 6 +- src/js/util/dom.js | 50 ++++- src/js/util/platform.js | 6 +- src/js/util/resize-observer.js | 58 +++-- src/scss/core/base.scss | 88 ++++++++ src/scss/core/ios.scss | 203 ++++-------------- src/scss/core/material.ripple.scss | 6 +- src/scss/core/material.scss | 92 +++----- src/scss/core/mobiscroll.scss | 73 +++---- src/scss/core/windows.scss | 109 +++------- src/scss/forms/forms.ios.colors.scss | 156 ++++++++++++-- src/scss/forms/forms.ios.scss | 2 +- src/scss/forms/forms.material.colors.scss | 155 ++++++++++--- src/scss/forms/forms.material.scss | 2 +- src/scss/forms/forms.mobiscroll.colors.scss | 137 +++++++++--- src/scss/forms/forms.mobiscroll.scss | 78 +++---- src/scss/forms/forms.scss | 5 + src/scss/forms/forms.windows.colors.scss | 136 ++++++++++-- src/scss/forms/forms.windows.scss | 2 +- src/scss/frame/frame.ios.colors.scss | 105 +++++++-- src/scss/frame/frame.ios.scss | 2 +- src/scss/frame/frame.material.colors.scss | 56 ++++- src/scss/frame/frame.material.scss | 2 +- src/scss/frame/frame.mobiscroll.colors.scss | 49 ++++- src/scss/frame/frame.mobiscroll.scss | 2 +- src/scss/frame/frame.windows.colors.scss | 59 ++++- src/scss/frame/frame.windows.scss | 2 +- src/scss/input/input.ios.colors.scss | 65 +++++- src/scss/input/input.ios.scss | 2 +- src/scss/input/input.material.colors.scss | 73 ++++++- src/scss/input/input.material.scss | 2 +- src/scss/input/input.mobiscroll.colors.scss | 61 +++++- src/scss/input/input.mobiscroll.scss | 2 +- src/scss/input/input.windows.colors.scss | 70 +++++- src/scss/input/input.windows.scss | 2 +- .../notifications.windows.colors.scss | 15 +- src/scss/page/page.ios.colors.scss | 42 +++- src/scss/page/page.ios.scss | 2 +- src/scss/page/page.material.colors.scss | 36 +++- src/scss/page/page.material.scss | 2 +- src/scss/page/page.mobiscroll.colors.scss | 32 ++- src/scss/page/page.mobiscroll.scss | 2 +- src/scss/page/page.windows.colors.scss | 43 +++- src/scss/page/page.windows.scss | 2 +- .../progress/progress.mobiscroll.colors.scss | 20 +- src/scss/scroller/scroller.ios.colors.scss | 72 +++++-- src/scss/scroller/scroller.ios.scss | 6 +- .../scroller/scroller.material.colors.scss | 10 +- src/scss/scroller/scroller.material.scss | 2 +- .../scroller/scroller.mobiscroll.colors.scss | 14 +- src/scss/scroller/scroller.mobiscroll.scss | 2 +- src/scss/scroller/scroller.scss | 6 + .../scroller/scroller.windows.colors.scss | 33 ++- src/scss/scroller/scroller.windows.scss | 2 +- src/scss/slider/slider.windows.colors.scss | 23 +- 71 files changed, 1729 insertions(+), 742 deletions(-) create mode 100644 src/scss/core/base.scss diff --git a/.babelrc b/.babelrc index 53b7ff6d..d6644cfb 100644 --- a/.babelrc +++ b/.babelrc @@ -1,14 +1,15 @@ { - "presets": [ - "@babel/preset-react", - [ - "@babel/preset-env", - { - "modules": false - } + "presets": [ + "@babel/preset-react", + [ + "@babel/preset-env", + { + "loose": true, + "modules": false + } + ] + ], + "plugins": [ + "@babel/plugin-proposal-class-properties" ] - ], - "plugins": [ - "@babel/plugin-proposal-class-properties" - ] } \ No newline at end of file diff --git a/package.json b/package.json index 1eeb3504..6ca68690 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mobiscroll", - "version": "4.9.0", + "version": "4.10.2", "description": "Cross platform UI controls for progressive web an hybrid apps", "homepage": "https://mobiscroll.com/", "license": "Apache-2.0", diff --git a/packages/angular/package.json b/packages/angular/package.json index 9418c0f0..2d74ba35 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@mobiscroll/angular-lite", - "version": "4.9.0", + "version": "4.10.2", "description": "Angular UI library for progressive web and hybrid apps", "homepage": "https://mobiscroll.com/", "license": "Apache-2.0", diff --git a/packages/angularjs/package.json b/packages/angularjs/package.json index 27309e28..e456aba7 100644 --- a/packages/angularjs/package.json +++ b/packages/angularjs/package.json @@ -1,6 +1,6 @@ { "name": "@mobiscroll/angularjs-lite", - "version": "4.9.0", + "version": "4.10.2", "description": "AngularJS UI library for progressive web and hybrid apps", "homepage": "https://mobiscroll.com/", "license": "Apache-2.0", diff --git a/packages/javascript/package.json b/packages/javascript/package.json index 378e5d99..71f5c296 100644 --- a/packages/javascript/package.json +++ b/packages/javascript/package.json @@ -1,6 +1,6 @@ { "name": "@mobiscroll/javascript-lite", - "version": "4.9.0", + "version": "4.10.2", "description": "Framework agnostic UI library for progressive web and hybrid apps", "homepage": "https://mobiscroll.com/", "license": "Apache-2.0", diff --git a/packages/jquery/package.json b/packages/jquery/package.json index 12a14a82..01b599b5 100644 --- a/packages/jquery/package.json +++ b/packages/jquery/package.json @@ -1,6 +1,6 @@ { "name": "@mobiscroll/jquery-lite", - "version": "4.9.0", + "version": "4.10.2", "description": "jQuery and jQuery Mobile UI library for progressive web and hybrid apps", "homepage": "https://mobiscroll.com/", "license": "Apache-2.0", diff --git a/packages/react/package.json b/packages/react/package.json index 957fb667..c3f610cd 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@mobiscroll/react-lite", - "version": "4.9.0", + "version": "4.10.2", "description": "React UI library for progressive web and hybrid apps", "homepage": "https://mobiscroll.com/", "license": "Apache-2.0", diff --git a/src/js/classes/progress.js b/src/js/classes/progress.js index 038202f4..2e74ee11 100644 --- a/src/js/classes/progress.js +++ b/src/js/classes/progress.js @@ -1,6 +1,5 @@ -/* eslint-disable no-unused-vars */ +// eslint-disable-next-line no-unused-vars import { mobiscroll } from '../core/core'; // mobiscroll needed for trial -/* eslint-enable no-unused-vars */ import { $, classes, autoInit } from '../core/core'; import { ProgressBase } from './progress-base'; import { addIcon, wrapLabel } from './form-control'; @@ -210,4 +209,4 @@ Progress.prototype = { classes.Progress = Progress; // Init mbsc-progress elements on page load -autoInit('[mbsc-progress]', Progress); \ No newline at end of file +autoInit('[mbsc-progress]', Progress); diff --git a/src/js/classes/scroller.js b/src/js/classes/scroller.js index e7360578..d158c99c 100644 --- a/src/js/classes/scroller.js +++ b/src/js/classes/scroller.js @@ -1,6 +1,5 @@ -/* eslint-disable no-unused-vars */ +// eslint-disable-next-line no-unused-vars import { mobiscroll } from '../core/core'; // mobiscroll needed for trial -/* eslint-enable no-unused-vars */ import { $, extend, classes } from '../core/core'; import { cssPrefix, jsPrefix } from '../util/dom'; import { isNumeric, objectToArray } from '../util/misc'; diff --git a/src/js/classes/scrollview-base.js b/src/js/classes/scrollview-base.js index 066f4dd8..9fc5bcf3 100644 --- a/src/js/classes/scrollview-base.js +++ b/src/js/classes/scrollview-base.js @@ -1,6 +1,5 @@ -/* eslint-disable no-unused-vars */ +// eslint-disable-next-line no-unused-vars import { $, Base, mobiscroll } from '../core/core'; // mobiscroll needed for trial -/* eslint-enable no-unused-vars */ import { os, raf, rafc } from '../util/platform'; import { getCoord } from '../util/tap'; import { cssPrefix, jsPrefix, getPosition, testTouch } from '../util/dom'; diff --git a/src/js/classes/stepper.js b/src/js/classes/stepper.js index 38713ad4..ff48d94a 100644 --- a/src/js/classes/stepper.js +++ b/src/js/classes/stepper.js @@ -126,14 +126,16 @@ export const Stepper = function (control, settings) { } if (cssClass) { - $parent.removeClass(cssClass) - $parent.find('.mbsc-segmented').removeClass(cssClass); + $parent + .removeClass(cssClass) + .find('.mbsc-segmented').removeClass(cssClass); } cssClass = 'mbsc-' + s.theme + (theme.baseTheme ? ' mbsc-' + theme.baseTheme : '') + (s.rtl ? ' mbsc-rtl' : ' mbsc-ltr'); - $parent.addClass(cssClass) - $parent.find('.mbsc-segmented').addClass(cssClass); + $parent + .addClass(cssClass) + .find('.mbsc-segmented').addClass(cssClass); $btnMinus = $('.mbsc-stepper-minus', $parent); $btnPlus = $('.mbsc-stepper-plus', $parent); @@ -192,4 +194,4 @@ Stepper.prototype = { classes.Stepper = Stepper; // Init mbsc-stepper elements on page load -autoInit('[mbsc-stepper]', Stepper); \ No newline at end of file +autoInit('[mbsc-stepper]', Stepper); diff --git a/src/js/core/core.js b/src/js/core/core.js index c1630985..7488d708 100644 --- a/src/js/core/core.js +++ b/src/js/core/core.js @@ -1,5 +1,5 @@ /*! - * Mobiscroll v4.9.0 + * Mobiscroll v4.10.2 * http://mobiscroll.com * * @@ -104,7 +104,7 @@ extend(util, { ms = extend(mobiscroll, { $: $, - version: '4.9.0', + version: '4.10.2', autoTheme: 'mobiscroll', themes: { form: {}, diff --git a/src/js/core/dom.js b/src/js/core/dom.js index 1e3af715..7d7b8205 100644 --- a/src/js/core/dom.js +++ b/src/js/core/dom.js @@ -302,44 +302,41 @@ var Dom = (function () { }, //Events on: function (eventName, targetSelector, listener, capture) { - var events = eventName.split(' '), + var boundListener, + elm, + event, + events = eventName.split(' '), i, j; function handleLiveEvent(e) { - var k, - parents, - target = e.target; - - if ($(target).is(targetSelector)) { - listener.call(target, e); - } else { - parents = $(target).parents(); - for (k = 0; k < parents.length; k++) { - if ($(parents[k]).is(targetSelector)) { - listener.call(parents[k], e); - } + var target = e.target; + while (target) { + if ($(target).is(targetSelector)) { + listener.call(target, e); } + target = target !== this ? target.parentNode : null; } } - function handleNamespaces(elm, name, listener, capture) { + function handleNamespaces(el, name, listener, capture) { var namespace = name.split('.'); - if (!elm.DomNameSpaces) { - elm.DomNameSpaces = []; + if (!el.DomNameSpaces) { + el.DomNameSpaces = []; } - elm.DomNameSpaces.push({ + el.DomNameSpaces.push({ namespace: namespace[1], event: namespace[0], listener: listener, capture: capture }); - elm.addEventListener(namespace[0], listener, capture); + el.addEventListener(namespace[0], listener, capture); } for (i = 0; i < this.length; i++) { + elm = this[i]; if (isFunction(targetSelector) || targetSelector === false) { // Usual events if (isFunction(targetSelector)) { @@ -347,29 +344,33 @@ var Dom = (function () { listener = targetSelector; } for (j = 0; j < events.length; j++) { + event = events[j]; // check for namespaces - if (events[j].indexOf('.') != -1) { - handleNamespaces(this[i], events[j], listener, capture); + if (event.indexOf('.') != -1) { + handleNamespaces(elm, event, listener, capture); } else { - this[i].addEventListener(events[j], listener, capture); + elm.addEventListener(event, listener, capture); } } } else { // Live events + boundListener = handleLiveEvent.bind(elm); for (j = 0; j < events.length; j++) { - if (!this[i].DomLiveListeners) { - this[i].DomLiveListeners = []; + event = events[j]; + + if (!elm.DomLiveListeners) { + elm.DomLiveListeners = []; } - this[i].DomLiveListeners.push({ + elm.DomLiveListeners.push({ listener: listener, - liveListener: handleLiveEvent + liveListener: boundListener }); - if (events[j].indexOf('.') != -1) { - handleNamespaces(this[i], events[j], handleLiveEvent, capture); + if (event.indexOf('.') != -1) { + handleNamespaces(elm, event, boundListener, capture); } else { - this[i].addEventListener(events[j], handleLiveEvent, capture); + elm.addEventListener(event, boundListener, capture); } } } @@ -377,31 +378,37 @@ var Dom = (function () { return this; }, off: function (eventName, targetSelector, listener, capture) { - var events, + var elm, + event, + events, i, j, k, + liveListeners, that = this; function removeEvents(event) { - var i, j, + var el, + i, j, item, + nameSpaces, parts = event.split('.'), name = parts[0], ns = parts[1]; for (i = 0; i < that.length; ++i) { - if (that[i].DomNameSpaces) { - for (j = 0; j < that[i].DomNameSpaces.length; ++j) { - item = that[i].DomNameSpaces[j]; - + el = that[i]; + nameSpaces = el.DomNameSpaces; + if (nameSpaces) { + for (j = 0; j < nameSpaces.length; ++j) { + item = nameSpaces[j]; if (item.namespace == ns && (item.event == name || !name)) { - that[i].removeEventListener(item.event, item.listener, item.capture); + el.removeEventListener(item.event, item.listener, item.capture); item.removed = true; } } // remove the events from the DomNameSpaces array - for (j = that[i].DomNameSpaces.length - 1; j >= 0; --j) { - if (that[i].DomNameSpaces[j].removed) { - that[i].DomNameSpaces.splice(j, 1); + for (j = nameSpaces.length - 1; j >= 0; --j) { + if (nameSpaces[j].removed) { + nameSpaces.splice(j, 1); } } } @@ -411,7 +418,10 @@ var Dom = (function () { events = eventName.split(' '); for (i = 0; i < events.length; i++) { + event = events[i]; for (j = 0; j < this.length; j++) { + elm = this[j]; + liveListeners = elm.DomLiveListeners; if (isFunction(targetSelector) || targetSelector === false) { // Usual events if (isFunction(targetSelector)) { @@ -419,22 +429,22 @@ var Dom = (function () { listener = targetSelector; } - if (events[i].indexOf('.') === 0) { // remove namespace events - removeEvents(events[i].substr(1), listener, capture); + if (event.indexOf('.') === 0) { // remove namespace events + removeEvents(event.substr(1), listener, capture); } else { - this[j].removeEventListener(events[i], listener, capture); + elm.removeEventListener(event, listener, capture); } } else { // Live event - if (this[j].DomLiveListeners) { - for (k = 0; k < this[j].DomLiveListeners.length; k++) { - if (this[j].DomLiveListeners[k].listener === listener) { - this[j].removeEventListener(events[i], this[j].DomLiveListeners[k].liveListener, capture); + if (liveListeners) { + for (k = 0; k < liveListeners.length; k++) { + if (liveListeners[k].listener === listener) { + elm.removeEventListener(event, liveListeners[k].liveListener, capture); } } } - if (this[j].DomNameSpaces && this[j].DomNameSpaces.length && events[i]) { - removeEvents(events[i]); + if (elm.DomNameSpaces && elm.DomNameSpaces.length && event) { + removeEvents(event); } } } @@ -1072,6 +1082,7 @@ $.each = function (obj, callback) { } else { // Object for (prop in obj) { + // eslint-disable-next-line no-prototype-builtins if (obj.hasOwnProperty(prop) && prop !== 'length') { if (callback.call(obj[prop], prop, obj[prop]) === false) { break; diff --git a/src/js/forms.react.jsx b/src/js/forms.react.jsx index abcd78b7..2ce550c5 100644 --- a/src/js/forms.react.jsx +++ b/src/js/forms.react.jsx @@ -190,7 +190,7 @@ class MbscLabel extends React.Component { return cssClass; } - render = () => { + render() { /* eslint-disable no-unused-vars */ // justification: variable 'valid' and 'className' is declared due to object decomposition var { diff --git a/src/js/frameworks/react.jsx b/src/js/frameworks/react.jsx index a49b5e44..a751c65a 100644 --- a/src/js/frameworks/react.jsx +++ b/src/js/frameworks/react.jsx @@ -179,6 +179,8 @@ export const CalbasePropTypes = { moreEventsPluralText: stringType, moreEventsText: stringType, onTabChange: funcType, + onCellHoverIn: funcType, + onCellHoverOut: funcType, onDayChange: funcType, onLabelTap: funcType, onMonthChange: funcType, @@ -239,6 +241,7 @@ export function deepCompare(a, b) { return false; } + // eslint-disable-next-line no-prototype-builtins if (x.isPrototypeOf(y) || y.isPrototypeOf(x)) { return false; } @@ -259,6 +262,7 @@ export function deepCompare(a, b) { // Quick checking of one object beeing a subset of another. // todo: cache the structure of arguments[0] for performance for (p in y) { + // eslint-disable-next-line no-prototype-builtins if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { return false; } else if (typeof y[p] !== typeof x[p]) { @@ -275,6 +279,7 @@ export function deepCompare(a, b) { }; const props = reactElement ? elementProps : x; for (p in props) { + // eslint-disable-next-line no-prototype-builtins if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { return false; } else if (typeof y[p] !== typeof x[p]) { diff --git a/src/js/input.angular.ts b/src/js/input.angular.ts index 2f09c3cb..ccc846fa 100644 --- a/src/js/input.angular.ts +++ b/src/js/input.angular.ts @@ -261,9 +261,12 @@ export class MbscInputBase extends MbscFormValueBase { @Component({ selector: 'mbsc-input', - host: { '[class.mbsc-control-ng]': 'controlNg' }, + host: { + '[class.mbsc-control-ng]': 'controlNg', + '[class.mbsc-err]': 'error' + }, template: ` -