2022-02-16 18:43:15 +01:00
|
|
|
/**
|
|
|
|
* EGroupware eTemplate2 - Date+Time widget (WebComponent)
|
|
|
|
*
|
|
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
|
|
* @package etemplate
|
|
|
|
* @subpackage api
|
|
|
|
* @link https://www.egroupware.org
|
|
|
|
* @author Nathan Gray
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
import {Et2DateTime} from "./Et2DateTime";
|
|
|
|
|
|
|
|
|
|
|
|
export class Et2DateTimeOnly extends Et2DateTime
|
|
|
|
{
|
|
|
|
static get styles()
|
|
|
|
{
|
|
|
|
return [
|
|
|
|
...super.styles,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
static get properties()
|
|
|
|
{
|
|
|
|
return {
|
|
|
|
...super.properties
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
constructor()
|
|
|
|
{
|
|
|
|
super();
|
|
|
|
|
|
|
|
// Configure flatpickr
|
2022-02-22 19:23:54 +01:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Override some flatpickr defaults to get things how we like it
|
|
|
|
*
|
|
|
|
* @see https://flatpickr.js.org/options/
|
|
|
|
* @returns {any}
|
|
|
|
*/
|
|
|
|
protected getOptions()
|
|
|
|
{
|
|
|
|
let options = super.getOptions();
|
2022-02-16 18:43:15 +01:00
|
|
|
let timeFormat = ((<string>window.egw.preference("timeformat") || "24") == "24" ? "H:i" : "h:i K");
|
2022-02-22 19:23:54 +01:00
|
|
|
options.altFormat = timeFormat;
|
|
|
|
options.noCalendar = true;
|
|
|
|
options.dateFormat = "1970-01-01TH:i:00\\Z";
|
|
|
|
|
2022-02-23 18:43:39 +01:00
|
|
|
// Time only does not have year & month, which scrollPlugin blindly tries to use
|
|
|
|
// This causes an error and interrupts the initialization
|
|
|
|
options.plugins.push(instance =>
|
|
|
|
{
|
|
|
|
return {
|
|
|
|
onReady: function()
|
|
|
|
{
|
|
|
|
this.yearElements = []
|
|
|
|
this.monthElements = []
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2022-02-22 19:23:54 +01:00
|
|
|
return options;
|
2022-02-16 18:43:15 +01:00
|
|
|
}
|
|
|
|
|
2022-11-01 17:34:52 +01:00
|
|
|
/**
|
|
|
|
* For mobile, we use a plain input of the proper type
|
|
|
|
* @returns {string}
|
|
|
|
*/
|
|
|
|
_mobileInputType() : string
|
|
|
|
{
|
|
|
|
return "time";
|
|
|
|
}
|
|
|
|
|
2022-02-16 18:43:15 +01:00
|
|
|
set_value(value)
|
|
|
|
{
|
2022-02-17 18:30:35 +01:00
|
|
|
let adjustedValue : Date | string = '';
|
2022-02-16 18:43:15 +01:00
|
|
|
if(!value || value == 0 || value == "0")
|
|
|
|
{
|
|
|
|
value = '';
|
|
|
|
}
|
|
|
|
// Handle timezone offset, flatpickr uses local time
|
2022-02-17 18:30:35 +01:00
|
|
|
if(value)
|
|
|
|
{
|
|
|
|
let date = new Date(value);
|
|
|
|
adjustedValue = new Date(date.valueOf() + date.getTimezoneOffset() * 60 * 1000);
|
|
|
|
adjustedValue.setDate(1);
|
|
|
|
adjustedValue.setMonth(0)
|
|
|
|
adjustedValue.setFullYear(1970);
|
|
|
|
}
|
2022-02-16 18:43:15 +01:00
|
|
|
if(!this._instance)
|
|
|
|
{
|
2022-02-17 18:30:35 +01:00
|
|
|
this.defaultDate = adjustedValue;
|
2022-02-16 18:43:15 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2022-02-17 18:30:35 +01:00
|
|
|
this.setDate(adjustedValue);
|
2022-02-16 18:43:15 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// @ts-ignore TypeScript is not recognizing that this is a LitElement
|
|
|
|
customElements.define("et2-date-timeonly", Et2DateTimeOnly);
|