diff --git a/app/qml/form/components/MMCalendarDrawer.qml b/app/qml/form/components/MMCalendarDrawer.qml index 5e804dfae..f83b76fda 100644 --- a/app/qml/form/components/MMCalendarDrawer.qml +++ b/app/qml/form/components/MMCalendarDrawer.qml @@ -22,12 +22,27 @@ MMComponents.MMDrawer { property alias hasDatePicker: dateTimePicker.hasDatePicker property alias hasTimePicker: dateTimePicker.hasTimePicker property bool showSeconds: false + property bool showClearButton: false signal primaryButtonClicked + signal clearButtonClicked dim: true drawerHeader.title: root.title + drawerHeader.topLeftItem.visible: root.showClearButton + drawerHeader.topLeftItemContent: + MMComponents.MMButton { + text: qsTr("Clear") + type: MMButton.Types.Tertiary + fontColor: __style.darkGreyColor + fontColorHover: __style.nightColor + + onClicked: { + root.clearButtonClicked() + root.close() + } + } drawerContent: Item { width: parent.width diff --git a/app/qml/form/editors/MMFormCalendarEditor.qml b/app/qml/form/editors/MMFormCalendarEditor.qml index 12632ac49..e53065d1e 100644 --- a/app/qml/form/editors/MMFormCalendarEditor.qml +++ b/app/qml/form/editors/MMFormCalendarEditor.qml @@ -96,15 +96,20 @@ MMPrivateComponents.MMBaseSingleLineInput { id: dateTimeDrawer title: root._fieldTitle - dateTime: root._fieldValueIsNull || root._fieldHasMixedValues ? new Date() : dateTransformer.toJsDate( root._fieldValue ) + dateTime: root.hasInvalidFieldValue() ? new Date() : dateTransformer.toJsDate( root._fieldValue ) hasDatePicker: root.includesDate hasTimePicker: root.includesTime showSeconds: root.showSeconds + showClearButton: !root._fieldValueIsNull onPrimaryButtonClicked: { root.newDateSelected( dateTime ) } + onClearButtonClicked: { + root.editorValueChanged( null, true ) + } + onClosed: dateTimeDrawerLoader.active = false Component.onCompleted: open() @@ -114,12 +119,14 @@ MMPrivateComponents.MMBaseSingleLineInput { function openCalendar() { forceActiveFocus() - if (root._fieldValueIsNull || _fieldHasMixedValues) { - root.openPicker( new Date() ) - } - else { - root.openPicker( dateTransformer.toJsDate(root._fieldValue) ) - } + dateTimeDrawerLoader.active = true + dateTimeDrawerLoader.focus = true + } + + function hasInvalidFieldValue() { + return root._fieldValueIsNull + || root._fieldHasMixedValues + || (root._fieldValue ?? true) } QtObject { @@ -186,9 +193,4 @@ MMPrivateComponents.MMBaseSingleLineInput { return Qt.formatDateTime(jsDate, root._fieldConfig['display_format']) } } - - function openPicker(requestedDate) { - dateTimeDrawerLoader.active = true - dateTimeDrawerLoader.focus = true - } }