forked from extern/egroupware
Et2Date: Add placement property to control where calendar popup opens. "top", "bottom", or "auto"
This commit is contained in:
parent
00a857b2d7
commit
32dd160e35
@ -376,7 +376,14 @@ export class Et2Date extends Et2InputWidget(FormControlMixin(LitFlatpickr))
|
|||||||
* If false (default), it is impossible to have a time that is not a multiple of minuteIncrement.
|
* If false (default), it is impossible to have a time that is not a multiple of minuteIncrement.
|
||||||
* Does not affect scroll, which always goes to nearest multiple.
|
* Does not affect scroll, which always goes to nearest multiple.
|
||||||
*/
|
*/
|
||||||
freeMinuteEntry: {type: Boolean}
|
freeMinuteEntry: {type: Boolean},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The preferred placement of the calendar popup can be set with the placement attribute. The default
|
||||||
|
* is "auto". Note that the actual position may vary to ensure the calendar remains in the viewport.
|
||||||
|
* Valid placements are "top", "bottom" or "auto".
|
||||||
|
*/
|
||||||
|
placement: {type: String, noAccessor: true}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -506,6 +513,10 @@ export class Et2Date extends Et2InputWidget(FormControlMixin(LitFlatpickr))
|
|||||||
{
|
{
|
||||||
options.inline = this.inline;
|
options.inline = this.inline;
|
||||||
}
|
}
|
||||||
|
if(this.placement)
|
||||||
|
{
|
||||||
|
options.position = this._convert_placement(this.placement);
|
||||||
|
}
|
||||||
|
|
||||||
options.plugins = [
|
options.plugins = [
|
||||||
// Turn on scroll wheel support
|
// Turn on scroll wheel support
|
||||||
@ -844,6 +855,36 @@ export class Et2Date extends Et2InputWidget(FormControlMixin(LitFlatpickr))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private _convert_placement(position : "top" | "bottom" | "auto" | "") : "above" | "below" | "auto"
|
||||||
|
{
|
||||||
|
let placement = "auto";
|
||||||
|
switch(position)
|
||||||
|
{
|
||||||
|
case "top":
|
||||||
|
placement = "above";
|
||||||
|
break;
|
||||||
|
case "bottom":
|
||||||
|
placement = "below";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return placement;
|
||||||
|
}
|
||||||
|
|
||||||
|
get placement() : "top" | "bottom" | "auto"
|
||||||
|
{
|
||||||
|
return this.__placement;
|
||||||
|
}
|
||||||
|
|
||||||
|
set placement(new_placement : "top" | "bottom" | "auto")
|
||||||
|
{
|
||||||
|
if(this._instance)
|
||||||
|
{
|
||||||
|
this._instance.set("position", this._convert_placement(new_placement))
|
||||||
|
}
|
||||||
|
this.__placement = new_placement;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Override from flatpickr - This is the node we tell flatpickr to use
|
* Override from flatpickr - This is the node we tell flatpickr to use
|
||||||
* It must be an <input>, flatpickr doesn't understand anything else
|
* It must be an <input>, flatpickr doesn't understand anything else
|
||||||
|
Loading…
Reference in New Issue
Block a user