devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
147 lines (146 loc) • 5.42 kB
JavaScript
/**
* DevExtreme (ui/date_box/ui.date_box.strategy.date_view.js)
* Version: 18.1.3
* Build date: Tue May 15 2018
*
* Copyright (c) 2012 - 2018 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
var $ = require("../../core/renderer"),
window = require("../../core/utils/window").getWindow(),
DateView = require("./ui.date_view"),
DateBoxStrategy = require("./ui.date_box.strategy"),
support = require("../../core/utils/support"),
extend = require("../../core/utils/extend").extend,
themes = require("../themes"),
dateUtils = require("./ui.date_utils"),
messageLocalization = require("../../localization/message");
var DateViewStrategy = DateBoxStrategy.inherit({
NAME: "DateView",
getDefaultOptions: function() {
return extend(this.callBase(), {
openOnFieldClick: true,
applyButtonText: messageLocalization.format("Done")
})
},
getDisplayFormat: function(displayFormat) {
return displayFormat || dateUtils.FORMATS_MAP[this.dateBox.option("type")]
},
popupConfig: function() {
return {
showTitle: true,
toolbarItems: this.dateBox._popupToolbarItemsConfig(),
defaultOptionsRules: [{
device: function(_device) {
return "win" === _device.platform && _device.version && 8 === _device.version[0]
},
options: {
showNames: true
}
}, {
device: function(_device2) {
return "win" === _device2.platform && _device2.phone && _device2.version && 8 === _device2.version[0]
},
options: {
animation: null
}
}, {
device: function() {
var currentTheme = (themes.current() || "").split(".")[0];
return "win8" === currentTheme
},
options: {
fullScreen: true
}
}, {
device: {
platform: "android"
},
options: {
width: 333,
height: 331
}
}, {
device: function(_device3) {
var platform = _device3.platform,
version = _device3.version;
return "generic" === platform || "ios" === platform || "win" === platform && version && 10 === version[0]
},
options: {
width: "auto",
height: "auto"
}
}, {
device: function(_device4) {
var platform = _device4.platform,
phone = _device4.phone;
return "generic" === platform && phone
},
options: {
width: 333,
maxWidth: "100%",
maxHeight: "100%",
height: "auto",
position: {
collision: "flipfit flip"
}
}
}, {
device: function(_device5) {
var currentTheme = (themes.current() || "").split(".")[0];
return _device5.phone && "win10" === currentTheme
},
options: {
width: 333,
height: "auto"
}
}, {
device: {
platform: "ios",
phone: true
},
options: {
width: "100%",
position: {
my: "bottom",
at: "bottom",
of: window
}
}
}]
}
},
_renderWidget: function() {
if (support.inputType(this.dateBox.option("mode")) && this.dateBox._isNativeType() || this.dateBox.option("readOnly")) {
if (this._widget) {
this._widget.$element().remove();
this._widget = null
}
return
}
var popup = this._getPopup();
if (this._widget) {
this._widget.option(this._getWidgetOptions())
} else {
var element = $("<div>").appendTo(popup.$content());
this._widget = this._createWidget(element)
}
this._widget.$element().appendTo(this._getWidgetContainer())
},
_getWidgetName: function() {
return DateView
},
_getWidgetOptions: function() {
return {
value: this.dateBoxValue() || new Date,
type: this.dateBox.option("type"),
minDate: this.dateBox.dateOption("min") || new Date(1900, 1, 1),
maxDate: this.dateBox.dateOption("max") || new Date(Date.now() + 50 * dateUtils.ONE_YEAR),
onDisposing: function() {
this._widget = null
}.bind(this)
}
}
});
module.exports = DateViewStrategy;