![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/pub/static/frontend/Magento/luma/en_US/Magento_Ui/js/form/element/ |
/** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** * @api */ define([ 'moment', 'mageUtils', './abstract', 'moment-timezone-with-data' ], function (moment, utils, Abstract) { 'use strict'; return Abstract.extend({ defaults: { options: {}, storeTimeZone: 'UTC', validationParams: { dateFormat: '${ $.outputDateFormat }' }, /** * Format of date that comes from the * server (ICU Date Format). * * Used only in date picker mode * (this.options.showsTime == false). * * @type {String} */ inputDateFormat: 'y-MM-dd', /** * Format of date that should be sent to the * server (ICU Date Format). * * Used only in date picker mode * (this.options.showsTime == false). * * @type {String} */ outputDateFormat: 'MM/dd/y', /** * Date/time format that is used to display date in * the input field. * * @type {String} */ pickerDateTimeFormat: '', pickerDefaultDateFormat: 'MM/dd/y', // ICU Date Format pickerDefaultTimeFormat: 'h:mm a', // ICU Time Format elementTmpl: 'ui/form/element/date', /** * Format needed by moment timezone for conversion */ timezoneFormat: 'YYYY-MM-DD HH:mm', listens: { 'value': 'onValueChange', 'shiftedValue': 'onShiftedValueChange' }, /** * Date/time value shifted to corresponding timezone * according to this.storeTimeZone property. This value * will be sent to the server. * * @type {String} */ shiftedValue: '' }, /** * Initializes regular properties of instance. * * @returns {Object} Chainable. */ initConfig: function () { this._super(); if (!this.options.dateFormat) { this.options.dateFormat = this.pickerDefaultDateFormat; } if (!this.options.timeFormat) { this.options.timeFormat = this.pickerDefaultTimeFormat; } this.prepareDateTimeFormats(); return this; }, /** * @inheritdoc */ initObservable: function () { return this._super().observe(['shiftedValue']); }, /** * @inheritdoc */ getPreview: function () { return this.shiftedValue(); }, /** * Prepares and sets date/time value that will be displayed * in the input field. * * @param {String} value */ onValueChange: function (value) { var shiftedValue; if (value) { if (this.options.showsTime && !this.options.timeOnly) { shiftedValue = moment.tz(value, 'UTC').tz(this.storeTimeZone); } else { shiftedValue = moment(value, this.outputDateFormat, true); } if (!shiftedValue.isValid()) { shiftedValue = moment(value, this.inputDateFormat); } shiftedValue = shiftedValue.format(this.pickerDateTimeFormat); } else { shiftedValue = ''; } if (shiftedValue !== this.shiftedValue()) { this.shiftedValue(shiftedValue); } }, /** * Prepares and sets date/time value that will be sent * to the server. * * @param {String} shiftedValue */ onShiftedValueChange: function (shiftedValue) { var value, formattedValue, momentValue; if (shiftedValue) { momentValue = moment(shiftedValue, this.pickerDateTimeFormat); if (this.options.showsTime && !this.options.timeOnly) { formattedValue = moment(momentValue).format(this.timezoneFormat); value = moment.tz(formattedValue, this.storeTimeZone).tz('UTC').toISOString(); } else { value = momentValue.format(this.outputDateFormat); } } else { value = ''; } if (value !== this.value()) { this.value(value); } }, /** * Prepares and converts all date/time formats to be compatible * with moment.js library. */ prepareDateTimeFormats: function () { if (this.options.timeOnly) { this.pickerDateTimeFormat = this.options.timeFormat; } else { this.pickerDateTimeFormat = this.options.dateFormat; if (this.options.showsTime) { this.pickerDateTimeFormat += ' ' + this.options.timeFormat; } } this.pickerDateTimeFormat = utils.convertToMomentFormat(this.pickerDateTimeFormat); if (this.options.dateFormat) { this.outputDateFormat = this.options.dateFormat; } this.inputDateFormat = this.options.timeOnly ? utils.convertToMomentFormat(this.pickerDefaultTimeFormat) : utils.convertToMomentFormat(this.inputDateFormat); this.outputDateFormat = this.options.timeOnly ? utils.convertToMomentFormat(this.options.timeFormat) : utils.convertToMomentFormat(this.outputDateFormat); this.validationParams.dateFormat = this.outputDateFormat; } }); });