diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/js/calendar.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/js/calendar.phtml index eba3f88094471..cae13fc26cc69 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/js/calendar.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/js/calendar.phtml @@ -50,6 +50,7 @@ require([ showTime: false, showHour: false, showMinute: false, + serverTimezoneSeconds: getStoreTimestamp(); ?>, yearRange: 'getYearRange() ?>' } }); diff --git a/app/code/Magento/Backend/view/adminhtml/ui_component/design_config_form.xml b/app/code/Magento/Backend/view/adminhtml/ui_component/design_config_form.xml index 6cbada2179fc4..e1f79d4c8aaf8 100644 --- a/app/code/Magento/Backend/view/adminhtml/ui_component/design_config_form.xml +++ b/app/code/Magento/Backend/view/adminhtml/ui_component/design_config_form.xml @@ -74,7 +74,7 @@ - Magento\Framework\View\Design\Theme\Label + Magento\Theme\Model\Design\Theme\Label select text diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/bundle-proxy-button.js b/app/code/Magento/Catalog/view/adminhtml/web/js/bundle-proxy-button.js index d302f4385236f..60141a7138008 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/bundle-proxy-button.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/js/bundle-proxy-button.js @@ -54,6 +54,19 @@ define([ return this; }, + /** + * Calls 'destroy' of parent and + * clear listing provider source + * + * @returns {Object} Chainable. + */ + destroy: function () { + this._super(); + this.source.set(this.listingDataProvider, []); + + return this; + }, + /** * Call parent "action" method * and set new data to record and listing. diff --git a/app/code/Magento/Theme/Model/Design/Theme/Label.php b/app/code/Magento/Theme/Model/Design/Theme/Label.php new file mode 100644 index 0000000000000..c69ba75d5dd59 --- /dev/null +++ b/app/code/Magento/Theme/Model/Design/Theme/Label.php @@ -0,0 +1,24 @@ + 0, 'label' => $label]); + } + return $options; + } +} diff --git a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js index 7b2b734417644..37df101b208fb 100644 --- a/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js +++ b/app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js @@ -556,15 +556,6 @@ define([ this.setMaxPosition(); } - elems.forEach(function (record) { - _.where(record.elems(), - { - formElement: 'select' - }).forEach(function (elem) { - elem.value(undefined); - }); - }); - path = this.dataScope + '.' + this.index + '.' + (this.startIndex + idx); this.source.set(path, rec); }, this); diff --git a/lib/web/mage/calendar.js b/lib/web/mage/calendar.js index 02e3602f7fa58..0f86c83e7f8be 100644 --- a/lib/web/mage/calendar.js +++ b/lib/web/mage/calendar.js @@ -75,12 +75,15 @@ var self = this; /** - * overwrite jQuery UI datepicker function. + * Overwrite jQuery UI datepicker function. + * Reason: magento date could be set before calendar show + * but local date will be styled as current in original _generateHTML + * * @param {Object} inst - instance datepicker. * @return {String} html template */ $.datepicker.constructor.prototype._generateHTML = function (inst) { - var today = this._daylightSavingAdjust(self.getTimezoneDate()), + var today = self.getTimezoneDate(), isRTL = this._get(inst, 'isRTL'), showButtonPanel = this._get(inst, 'showButtonPanel'), hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext'), @@ -315,17 +318,20 @@ /** * If server timezone is defined then take to account server timezone shift - * @param {Object} date * @return {Object} date */ - getTimezoneDate: function (date) { - date = date || new Date(); + getTimezoneDate: function () { - if (this.options.serverTimezoneSeconds) { - date.setTime((this.options.serverTimezoneSeconds + date.getTimezoneOffset() * 60) * 1000); + // Get local time in ms + var ms = Date.now(); + + // Use store timestamp based on store timezone settings + if (typeof this.options.serverTimezoneSeconds !== 'undefined') { + //Adjust milliseconds according to client local timezone offset + ms = (this.options.serverTimezoneSeconds + new Date().getTimezoneOffset() * 60) * 1000; } - return date; + return new Date(ms); }, /** @@ -396,10 +402,7 @@ 'yy': 'yy' // Always long year format on frontend }, time: { - 'a': 'TT', - 'H': 'h', - 'MM': 'mm', - 'SS': 'ss' + 'a': 'TT' } }, @@ -518,9 +521,12 @@ * @param {Object} el */ $.datepicker._gotoToday = function (el) { - $.datepicker._gotoTodayOriginal.call(this, el); - $.datepicker._selectDate.call(this, el); - $(el).blur(); // To ensure that user can re-select date field without clicking outside it first. + var pickerObject = $(el); + + // Set date/time according to timezone offset + pickerObject.datepicker( "setDate", pickerObject.calendar("getTimezoneDate") ) + // To ensure that user can re-select date field without clicking outside it first. + .blur(); }; return {