Ensure datepicker input is cleared (#15338)

This commit is contained in:
Bjarne Fyrstenborg
2024-01-05 16:23:57 +01:00
committed by GitHub
parent 6c725dbd67
commit 425023f83b
2 changed files with 28 additions and 24 deletions

View File

@@ -1,5 +1,10 @@
function dateTimePickerController($scope, angularHelper, dateHelper, validationMessageService) {
const vm = this;
vm.clearDatePicker = clearDatePicker;
vm.inputChanged = inputChanged;
let flatPickr = null;
function onInit() {
@@ -71,10 +76,19 @@ function dateTimePickerController($scope, angularHelper, dateHelper, validationM
});
}
function clearDatePicker(event) {
event.preventDefault();
event.stopPropagation();
$scope.clearDate();
}
$scope.clearDate = function () {
$scope.hasDatetimePickerValue = false;
if ($scope.model) {
$scope.model.datetimePickerValue = null;
$scope.model.datetimePickerInputValue = null;
$scope.model.value = null;
}
if ($scope.datePickerForm && $scope.datePickerForm.datepicker) {
@@ -92,7 +106,7 @@ function dateTimePickerController($scope, angularHelper, dateHelper, validationM
setDatePickerVal();
};
$scope.inputChanged = function () {
function inputChanged() {
if ($scope.model.datetimePickerValue === "" && $scope.hasDatetimePickerValue) {
// $scope.hasDatetimePickerValue indicates that we had a value before the input was changed,
// but now the input is empty.

View File

@@ -1,34 +1,29 @@
<div
class="umb-property-editor umb-datepicker"
ng-controller="Umbraco.PropertyEditors.DatepickerController"
>
<div class="umb-property-editor umb-datepicker" ng-controller="Umbraco.PropertyEditors.DatepickerController as vm">
<ng-form name="datePickerForm">
<div id="datepicker{{model.alias}}">
<umb-date-time-picker
ng-model="model.datetimePickerValue"
options="datePickerConfig"
on-setup="datePickerSetup(fpItem)"
on-change="datePickerChange(dateStr)"
>
on-change="datePickerChange(dateStr)">
<div class="input-append">
<input
type="text"
name="datepicker"
id="{{model.alias}}"
ng-model="model.datetimePickerInputValue"
ng-blur="inputChanged()"
ng-blur="vm.inputChanged()"
ng-required="model.validation.mandatory"
val-server="value"
class="datepickerinput"
ng-readonly="readonly"
/>
ng-readonly="readonly" />
<button
ng-if="!readonly"
type="button"
class="btn-clear"
ng-click="clearDate()"
ng-show="hasDatetimePickerValue === true || datePickerForm.datepicker.$error.pickerError === true"
>
ng-click="vm.clearDatePicker($event)"
ng-show="hasDatetimePickerValue === true || datePickerForm.datepicker.$error.pickerError === true">
<umb-icon icon="icon-delete"></umb-icon>
<span class="sr-only">
<localize key="content_removeDate">Clear date</localize>
@@ -36,8 +31,8 @@
</button>
<span ng-if="!readonly" class="add-on">
<umb-icon
icon="icon-{{ datePickerConfig.noCalendar ? 'time' : 'calendar' }}"
></umb-icon>
icon="icon-{{ datePickerConfig.noCalendar ? 'time' : 'calendar' }}">
</umb-icon>
</span>
</div>
</umb-date-time-picker>
@@ -45,8 +40,7 @@
<div
ng-messages="datePickerForm.datepicker.$error"
show-validation-on-submit
>
show-validation-on-submit>
<p class="help-inline" ng-message="required">{{mandatoryMessage}}</p>
<p class="help-inline" ng-message="valServer">
{{datePickerForm.datepicker.errorMsg}}
@@ -58,18 +52,14 @@
<p
ng-if="model.config.offsetTime === '1' && serverTimeNeedsOffsetting && model.value"
class="muted"
>
class="muted">
<small>
<localize key="content_scheduledPublishServerTime"
>This translates to the following time on the server:
</localize>
{{serverTime}} </small
><br />
{{serverTime}} </small><br />
<small>
<localize key="content_scheduledPublishDocumentation"
>What does this mean?</localize
>
<localize key="content_scheduledPublishDocumentation">What does this mean?</localize>
</small>
</p>
</ng-form>