mirror of
https://github.com/fastapi-admin/fastapi-admin.git
synced 2026-03-13 10:32:25 +08:00
feat: improve datetime and date input
This commit is contained in:
14
fastapi_admin/templates/widgets/inputs/date.html
Normal file
14
fastapi_admin/templates/widgets/inputs/date.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "widgets/inputs/datetime.html" %}
|
||||
{% block script %}
|
||||
<script>
|
||||
$(function () {
|
||||
$('input[name="{{ name }}"]').daterangepicker({
|
||||
singleDatePicker: true,
|
||||
showDropdowns: true,
|
||||
locale: {
|
||||
format: 'YYYY-MM-DD'
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
27
fastapi_admin/templates/widgets/inputs/datetime.html
Normal file
27
fastapi_admin/templates/widgets/inputs/datetime.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css"/>
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ label }}</label>
|
||||
<input {% if not null %}required{% endif %} type="{{ input_type }}" class="form-control" name="{{ name }}"
|
||||
placeholder="{{ placeholder }}" {% if disabled %}disabled{% endif %} value="{{ value }}">
|
||||
{% if help_text %}
|
||||
<small class="form-hint">
|
||||
{{ help_text }}
|
||||
</small>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% block script %}
|
||||
<script>
|
||||
$(function () {
|
||||
$('input[name="{{ name }}"]').daterangepicker({
|
||||
singleDatePicker: true,
|
||||
timePicker: true,
|
||||
showDropdowns: true,
|
||||
locale: {
|
||||
format: 'YYYY-MM-DD HH:mm:ss'
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -15,7 +15,7 @@ class Input(Widget):
|
||||
template = "widgets/inputs/input.html"
|
||||
|
||||
def __init__(
|
||||
self, help_text: Optional[str] = None, default: Any = None, null: bool = False, **context
|
||||
self, help_text: Optional[str] = None, default: Any = None, null: bool = False, **context
|
||||
):
|
||||
super().__init__(null=null, help_text=help_text, **context)
|
||||
self.default = default
|
||||
@@ -44,12 +44,12 @@ class Text(Input):
|
||||
input_type: Optional[str] = "text"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
help_text: Optional[str] = None,
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
placeholder: str = "",
|
||||
disabled: bool = False,
|
||||
self,
|
||||
help_text: Optional[str] = None,
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
placeholder: str = "",
|
||||
disabled: bool = False,
|
||||
):
|
||||
super().__init__(
|
||||
null=null,
|
||||
@@ -65,11 +65,11 @@ class Select(Input):
|
||||
template = "widgets/inputs/select.html"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
help_text: Optional[str] = None,
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
self,
|
||||
help_text: Optional[str] = None,
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
):
|
||||
super().__init__(help_text=help_text, null=null, default=default, disabled=disabled)
|
||||
|
||||
@@ -91,12 +91,12 @@ class Select(Input):
|
||||
|
||||
class ForeignKey(Select):
|
||||
def __init__(
|
||||
self,
|
||||
model: Type[Model],
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
self,
|
||||
model: Type[Model],
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
):
|
||||
super().__init__(help_text=help_text, default=default, null=null, disabled=disabled)
|
||||
self.model = model
|
||||
@@ -116,10 +116,10 @@ class ManyToMany(Select):
|
||||
template = "widgets/inputs/many_to_many.html"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
model: Type[Model],
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
self,
|
||||
model: Type[Model],
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
):
|
||||
super().__init__(help_text=help_text, disabled=disabled)
|
||||
self.model = model
|
||||
@@ -144,13 +144,13 @@ class ManyToMany(Select):
|
||||
|
||||
class Enum(Select):
|
||||
def __init__(
|
||||
self,
|
||||
enum: Type[EnumCLS],
|
||||
default: Any = None,
|
||||
enum_type: Type = int,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
self,
|
||||
enum: Type[EnumCLS],
|
||||
default: Any = None,
|
||||
enum_type: Type = int,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
):
|
||||
super().__init__(help_text=help_text, default=default, null=null, disabled=disabled)
|
||||
self.enum = enum
|
||||
@@ -174,10 +174,10 @@ class Json(Input):
|
||||
template = "widgets/inputs/json.html"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
help_text: Optional[str] = None,
|
||||
null: bool = False,
|
||||
options: Optional[dict] = None,
|
||||
self,
|
||||
help_text: Optional[str] = None,
|
||||
null: bool = False,
|
||||
options: Optional[dict] = None,
|
||||
):
|
||||
"""
|
||||
options config to jsoneditor, see https://github.com/josdejong/jsoneditor
|
||||
@@ -204,23 +204,23 @@ class Editor(Text):
|
||||
|
||||
|
||||
class DateTime(Text):
|
||||
input_type = "datetime"
|
||||
template = "widgets/inputs/datetime.html"
|
||||
|
||||
|
||||
class Date(Text):
|
||||
input_type = "date"
|
||||
template = "widgets/inputs/date.html"
|
||||
|
||||
|
||||
class File(Input):
|
||||
input_type = "file"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
upload: FileUpload,
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
self,
|
||||
upload: FileUpload,
|
||||
default: Any = None,
|
||||
null: bool = False,
|
||||
disabled: bool = False,
|
||||
help_text: Optional[str] = None,
|
||||
):
|
||||
super().__init__(
|
||||
null=null,
|
||||
@@ -246,11 +246,11 @@ class Radio(Select):
|
||||
template = "widgets/inputs/radio.html"
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
options: List[Tuple[str, Any]],
|
||||
help_text: Optional[str] = None,
|
||||
default: Any = None,
|
||||
disabled: bool = False,
|
||||
self,
|
||||
options: List[Tuple[str, Any]],
|
||||
help_text: Optional[str] = None,
|
||||
default: Any = None,
|
||||
disabled: bool = False,
|
||||
):
|
||||
super().__init__(default=default, disabled=disabled, help_text=help_text)
|
||||
self.options = options
|
||||
|
||||
Reference in New Issue
Block a user