@hmcts/ccd-case-ui-toolkit 7.2.23-srt-rc2 → 7.2.23-srt-rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/form/date-input/date-input.component.mjs +19 -56
- package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +1 -1
- package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +2 -6
- package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +4 -4
- package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +10 -41
- package/esm2022/lib/shared/components/search-result/search-result.component.mjs +1 -1
- package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +3 -38
- package/esm2022/lib/shared/services/form/form-value.service.mjs +1 -24
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +33 -163
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/components/form/date-input/date-input.component.d.ts +0 -4
- package/lib/components/form/date-input/date-input.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
- package/lib/shared/components/palette/date/read-date-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts +0 -2
- package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -1
- package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
- package/lib/shared/services/form/field-type-sanitiser.d.ts +0 -5
- package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
- package/lib/shared/services/form/form-value.service.d.ts +0 -1
- package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -17,7 +17,6 @@ import { Type, Exclude, Expose, plainToClassFromExist, plainToClass } from 'clas
|
|
|
17
17
|
import moment from 'moment';
|
|
18
18
|
import { __decorate, __metadata } from 'tslib';
|
|
19
19
|
import * as _ from 'underscore';
|
|
20
|
-
import { isEqual } from 'underscore';
|
|
21
20
|
import 'reflect-metadata';
|
|
22
21
|
import { generate } from 'pegjs';
|
|
23
22
|
import { StateMachine } from '@edium/fsm';
|
|
@@ -499,40 +498,20 @@ class DateInputComponent {
|
|
|
499
498
|
writeValue(obj) {
|
|
500
499
|
if (obj) {
|
|
501
500
|
this.rawValue = this.removeMilliseconds(obj);
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
this.second = this.displaySecond = '';
|
|
515
|
-
return;
|
|
516
|
-
}
|
|
517
|
-
const localDate = this.getOffsetDate(date);
|
|
518
|
-
this.year = this.displayYear = String(localDate.getFullYear());
|
|
519
|
-
this.month = this.displayMonth = this.padZero(localDate.getMonth() + 1);
|
|
520
|
-
this.day = this.displayDay = this.padZero(localDate.getDate());
|
|
521
|
-
if (dateInput.includes('T')) {
|
|
522
|
-
this.hour = this.displayHour = this.padZero(localDate.getHours());
|
|
523
|
-
this.minute = this.displayMinute = this.padZero(localDate.getMinutes());
|
|
524
|
-
this.second = this.displaySecond = this.padZero(localDate.getSeconds());
|
|
525
|
-
}
|
|
526
|
-
else {
|
|
527
|
-
this.hour = this.displayHour = '';
|
|
528
|
-
this.minute = this.displayMinute = '';
|
|
529
|
-
this.second = this.displaySecond = '';
|
|
501
|
+
// needs to handle also partial dates, e.g. -05-2016 (missing day)
|
|
502
|
+
const [datePart, timePart] = this.rawValue.split('T');
|
|
503
|
+
const dateValues = datePart.split('-');
|
|
504
|
+
this.year = this.displayYear = dateValues[0] || '';
|
|
505
|
+
this.month = this.displayMonth = dateValues[1] || '';
|
|
506
|
+
this.day = this.displayDay = dateValues[2] || '';
|
|
507
|
+
if (timePart) {
|
|
508
|
+
const timeParts = timePart.split(':');
|
|
509
|
+
this.hour = this.displayHour = timeParts[0] || '';
|
|
510
|
+
this.minute = this.displayMinute = timeParts[1] || '';
|
|
511
|
+
this.second = this.displaySecond = timeParts[2] || '';
|
|
512
|
+
}
|
|
530
513
|
}
|
|
531
514
|
}
|
|
532
|
-
getOffsetDate(date) {
|
|
533
|
-
const localOffset = -date.getTimezoneOffset() / 60;
|
|
534
|
-
return new Date(date.getTime() + localOffset * 3600 * 1000);
|
|
535
|
-
}
|
|
536
515
|
validate(control) {
|
|
537
516
|
if (this.mandatory && !this.viewValue()) {
|
|
538
517
|
return {
|
|
@@ -560,42 +539,42 @@ class DateInputComponent {
|
|
|
560
539
|
dayChange(value) {
|
|
561
540
|
// get value from input
|
|
562
541
|
this.day = value;
|
|
563
|
-
this.rawValue = this.
|
|
542
|
+
this.rawValue = this.viewValue();
|
|
564
543
|
// update the form
|
|
565
544
|
this.propagateChange(this.rawValue);
|
|
566
545
|
}
|
|
567
546
|
monthChange(value) {
|
|
568
547
|
// get value from input
|
|
569
548
|
this.month = value;
|
|
570
|
-
this.rawValue = this.
|
|
549
|
+
this.rawValue = this.viewValue();
|
|
571
550
|
// update the form
|
|
572
551
|
this.propagateChange(this.rawValue);
|
|
573
552
|
}
|
|
574
553
|
yearChange(value) {
|
|
575
554
|
// get value from input
|
|
576
555
|
this.year = value;
|
|
577
|
-
this.rawValue = this.
|
|
556
|
+
this.rawValue = this.viewValue();
|
|
578
557
|
// update the form
|
|
579
558
|
this.propagateChange(this.rawValue);
|
|
580
559
|
}
|
|
581
560
|
hourChange(value) {
|
|
582
561
|
// get value from input
|
|
583
562
|
this.hour = value;
|
|
584
|
-
this.rawValue = this.
|
|
563
|
+
this.rawValue = this.viewValue();
|
|
585
564
|
// update the form
|
|
586
565
|
this.propagateChange(this.rawValue);
|
|
587
566
|
}
|
|
588
567
|
minuteChange(value) {
|
|
589
568
|
// get value from input
|
|
590
569
|
this.minute = value;
|
|
591
|
-
this.rawValue = this.
|
|
570
|
+
this.rawValue = this.viewValue();
|
|
592
571
|
// update the form
|
|
593
572
|
this.propagateChange(this.rawValue);
|
|
594
573
|
}
|
|
595
574
|
secondChange(value) {
|
|
596
575
|
// get value from input
|
|
597
576
|
this.second = value;
|
|
598
|
-
this.rawValue = this.
|
|
577
|
+
this.rawValue = this.viewValue();
|
|
599
578
|
// update the form
|
|
600
579
|
this.propagateChange(this.rawValue);
|
|
601
580
|
}
|
|
@@ -630,23 +609,6 @@ class DateInputComponent {
|
|
|
630
609
|
secondId() {
|
|
631
610
|
return this.id + '-second';
|
|
632
611
|
}
|
|
633
|
-
// convert the dates to UTC before sending to the backend
|
|
634
|
-
convertToUTC(input) {
|
|
635
|
-
if (!input)
|
|
636
|
-
return null;
|
|
637
|
-
const date = new Date(input);
|
|
638
|
-
const year = date.getUTCFullYear();
|
|
639
|
-
const month = this.padZero(date.getUTCMonth() + 1);
|
|
640
|
-
const day = this.padZero(date.getUTCDate());
|
|
641
|
-
const hour = this.padZero(date.getUTCHours());
|
|
642
|
-
const minute = this.padZero(date.getUTCMinutes());
|
|
643
|
-
const second = this.padZero(date.getUTCSeconds());
|
|
644
|
-
const ms = date.getUTCMilliseconds().toString().padStart(3, '0');
|
|
645
|
-
return `${year}-${month}-${day}T${hour}:${minute}:${second}.${ms}`;
|
|
646
|
-
}
|
|
647
|
-
padZero(value) {
|
|
648
|
-
return value.toString().padStart(2, '0');
|
|
649
|
-
}
|
|
650
612
|
viewValue() {
|
|
651
613
|
if (this.day || this.month || this.year || this.hour || this.minute || this.second) {
|
|
652
614
|
const date = [
|
|
@@ -5761,7 +5723,6 @@ class FieldTypeSanitiser {
|
|
|
5761
5723
|
static FIELD_TYPE_DYNAMIC_RADIO_LIST = 'DynamicRadioList';
|
|
5762
5724
|
static FIELD_TYPE_DYNAMIC_MULTISELECT_LIST = 'DynamicMultiSelectList';
|
|
5763
5725
|
static DYNAMIC_LIST_TYPE = ['DynamicList', 'DynamicRadioList', 'DynamicMultiSelectList'];
|
|
5764
|
-
static DATE_FORMAT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/;
|
|
5765
5726
|
/**
|
|
5766
5727
|
* This method finds dynamiclists in a form and replaces their string
|
|
5767
5728
|
* values, with a JSON object, as below:
|
|
@@ -5795,7 +5756,6 @@ class FieldTypeSanitiser {
|
|
|
5795
5756
|
this.sanitiseLists(caseField.field_type.complex_fields, data[caseField.id]);
|
|
5796
5757
|
break;
|
|
5797
5758
|
case FieldTypeSanitiser.FIELD_TYPE_COLLECTION:
|
|
5798
|
-
this.synchronizeCasefieldWithData(caseField, data);
|
|
5799
5759
|
if (Array.isArray(data[caseField.id])) {
|
|
5800
5760
|
data[caseField.id].forEach((formElement) => {
|
|
5801
5761
|
this.sanitiseLists(caseField.field_type.collection_field_type.complex_fields, formElement.value);
|
|
@@ -5805,38 +5765,6 @@ class FieldTypeSanitiser {
|
|
|
5805
5765
|
}
|
|
5806
5766
|
});
|
|
5807
5767
|
}
|
|
5808
|
-
synchronizeCasefieldWithData(caseField, data) {
|
|
5809
|
-
for (const field in caseField._value) {
|
|
5810
|
-
for (const id in data[caseField.id]) {
|
|
5811
|
-
if (caseField._value[field]?.id === data[caseField.id][id]?.id) {
|
|
5812
|
-
this.updateFieldValues(caseField._value[field].value, data[caseField.id][id]?.value);
|
|
5813
|
-
}
|
|
5814
|
-
}
|
|
5815
|
-
}
|
|
5816
|
-
}
|
|
5817
|
-
updateFieldValues(caseFieldValue, dataValue) {
|
|
5818
|
-
for (const key in dataValue) {
|
|
5819
|
-
if ((typeof caseFieldValue[key] === 'object')) {
|
|
5820
|
-
if (!isEqual(caseFieldValue[key], dataValue[key])) {
|
|
5821
|
-
this.updateObjectValue(caseFieldValue[key], dataValue[key]);
|
|
5822
|
-
}
|
|
5823
|
-
}
|
|
5824
|
-
else {
|
|
5825
|
-
this.updatePrimitiveValue(caseFieldValue, key, dataValue[key]);
|
|
5826
|
-
}
|
|
5827
|
-
}
|
|
5828
|
-
}
|
|
5829
|
-
updateObjectValue(formattedObject, dataObject) {
|
|
5830
|
-
// we only want to update the value if there is a list_items property
|
|
5831
|
-
if ((formattedObject?.value !== dataObject) && (formattedObject.list_items)) {
|
|
5832
|
-
formattedObject.value = dataObject;
|
|
5833
|
-
}
|
|
5834
|
-
}
|
|
5835
|
-
updatePrimitiveValue(caseFieldValue, key, dataValue) {
|
|
5836
|
-
if ((!caseFieldValue[key]) || (caseFieldValue[key] !== dataValue)) {
|
|
5837
|
-
caseFieldValue[key] = dataValue;
|
|
5838
|
-
}
|
|
5839
|
-
}
|
|
5840
5768
|
ensureDynamicMultiSelectListPopulated(caseFields) {
|
|
5841
5769
|
return caseFields.map((field) => {
|
|
5842
5770
|
if (field.field_type.type !== 'Complex') {
|
|
@@ -5877,7 +5805,7 @@ class FieldTypeSanitiser {
|
|
|
5877
5805
|
const values = data[field.id];
|
|
5878
5806
|
if (Array.isArray(values)) {
|
|
5879
5807
|
const listItems = this.getListItems(field);
|
|
5880
|
-
const matches = listItems.filter(
|
|
5808
|
+
const matches = listItems.filter(item => values.map(v => v.code).indexOf(item.code) !== -1);
|
|
5881
5809
|
data[field.id] = {
|
|
5882
5810
|
value: matches,
|
|
5883
5811
|
list_items: listItems
|
|
@@ -5888,7 +5816,7 @@ class FieldTypeSanitiser {
|
|
|
5888
5816
|
const stringValue = data[field.id];
|
|
5889
5817
|
if (typeof stringValue === 'string') {
|
|
5890
5818
|
const listItems = this.getListItems(field);
|
|
5891
|
-
const matches = listItems.filter(
|
|
5819
|
+
const matches = listItems.filter(value => value?.code === stringValue);
|
|
5892
5820
|
if (matches && matches.length > 0) {
|
|
5893
5821
|
data[field.id] = {
|
|
5894
5822
|
value: matches[0],
|
|
@@ -6182,9 +6110,6 @@ class FormValueService {
|
|
|
6182
6110
|
if (Array.isArray(rawValue)) {
|
|
6183
6111
|
return this.sanitiseArray(rawValue);
|
|
6184
6112
|
}
|
|
6185
|
-
if (FieldTypeSanitiser.DATE_FORMAT.test(rawValue)) {
|
|
6186
|
-
return rawValue.replace(/Z$/, '');
|
|
6187
|
-
}
|
|
6188
6113
|
switch (typeof rawValue) {
|
|
6189
6114
|
case 'object':
|
|
6190
6115
|
return this.sanitiseObject(rawValue);
|
|
@@ -6203,26 +6128,6 @@ class FormValueService {
|
|
|
6203
6128
|
}
|
|
6204
6129
|
}
|
|
6205
6130
|
}
|
|
6206
|
-
checkValuesSetInCollection(caseField, data) {
|
|
6207
|
-
for (const field in data) {
|
|
6208
|
-
const fieldId = data[field].id;
|
|
6209
|
-
if (Array.isArray(caseField.data[fieldId])) {
|
|
6210
|
-
for (const subField in caseField.data[fieldId]) {
|
|
6211
|
-
if (data[field]?._value &&
|
|
6212
|
-
typeof data[field]._value[subField] === 'object' &&
|
|
6213
|
-
Object.keys(caseField.data[fieldId][subField] ?? {}).every((key) => key in data[field]._value[subField])) {
|
|
6214
|
-
if (caseField.data[fieldId][subField] !== data[field]?._value[subField]) {
|
|
6215
|
-
caseField.data[fieldId][subField] = data[field]._value[subField];
|
|
6216
|
-
}
|
|
6217
|
-
}
|
|
6218
|
-
}
|
|
6219
|
-
}
|
|
6220
|
-
else if ((data[field]._value) && (caseField.data[fieldId] !== data[field]._value)) {
|
|
6221
|
-
caseField.data[fieldId] = data[field]._value;
|
|
6222
|
-
}
|
|
6223
|
-
}
|
|
6224
|
-
return caseField;
|
|
6225
|
-
}
|
|
6226
6131
|
// TODO refactor so that this and remove unnecessary fields have a common iterator that applies functions to each node visited
|
|
6227
6132
|
removeNullLabels(data, caseFields) {
|
|
6228
6133
|
if (data && caseFields && caseFields.length > 0) {
|
|
@@ -11732,13 +11637,9 @@ class CaseEditPageComponent {
|
|
|
11732
11637
|
*/
|
|
11733
11638
|
getFilteredCaseEventData(caseFields, formValue, clearEmpty = false, clearNonCase = false, fromPreviousPage = false) {
|
|
11734
11639
|
// Get the data for the fields specified.
|
|
11735
|
-
|
|
11640
|
+
const formFields = this.formValueService.filterCurrentPageFields(caseFields, formValue);
|
|
11736
11641
|
// Sort out the dynamic lists.
|
|
11737
11642
|
this.formValueService.sanitiseDynamicLists(caseFields, formFields);
|
|
11738
|
-
// we only want to ensure this when the field_type is a collection of complex fields
|
|
11739
|
-
if (caseFields.some((field) => field.field_type?.type === 'Collection' && field.field_type?.collection_field_type?.type === 'Complex')) {
|
|
11740
|
-
formFields = this.formValueService.checkValuesSetInCollection(formFields, caseFields);
|
|
11741
|
-
}
|
|
11742
11643
|
// Get hold of the CaseEventData.
|
|
11743
11644
|
const caseEventData = this.formValueService.sanitise(formFields);
|
|
11744
11645
|
// delete fields which are not part of the case event journey wizard pages case fields
|
|
@@ -15137,7 +15038,7 @@ class ReadComplexFieldComponent extends AbstractFieldReadComponent {
|
|
|
15137
15038
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadComplexFieldComponent, { className: "ReadComplexFieldComponent", filePath: "lib/shared/components/palette/complex/read-complex-field.component.ts", lineNumber: 10 }); })();
|
|
15138
15039
|
|
|
15139
15040
|
class ReadDateFieldComponent extends AbstractFieldReadComponent {
|
|
15140
|
-
timeZone = '
|
|
15041
|
+
timeZone = 'utc';
|
|
15141
15042
|
static ɵfac = /*@__PURE__*/ (() => { let ɵReadDateFieldComponent_BaseFactory; return function ReadDateFieldComponent_Factory(__ngFactoryType__) { return (ɵReadDateFieldComponent_BaseFactory || (ɵReadDateFieldComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ReadDateFieldComponent)))(__ngFactoryType__ || ReadDateFieldComponent); }; })();
|
|
15142
15043
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReadDateFieldComponent, selectors: [["ccd-read-date-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 5, consts: [[1, "text-16"]], template: function ReadDateFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
15143
15044
|
i0.ɵɵelementStart(0, "span", 0);
|
|
@@ -15146,14 +15047,14 @@ class ReadDateFieldComponent extends AbstractFieldReadComponent {
|
|
|
15146
15047
|
i0.ɵɵelementEnd();
|
|
15147
15048
|
} if (rf & 2) {
|
|
15148
15049
|
i0.ɵɵadvance();
|
|
15149
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, ctx.caseField.value, "
|
|
15050
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind3(2, 1, ctx.caseField.value, "utc", ctx.caseField.dateTimeDisplayFormat));
|
|
15150
15051
|
} }, dependencies: [DatePipe], encapsulation: 2 });
|
|
15151
15052
|
}
|
|
15152
15053
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReadDateFieldComponent, [{
|
|
15153
15054
|
type: Component,
|
|
15154
15055
|
args: [{
|
|
15155
15056
|
selector: 'ccd-read-date-field',
|
|
15156
|
-
template: `<span class="text-16">{{caseField.value | ccdDate:'
|
|
15057
|
+
template: `<span class="text-16">{{caseField.value | ccdDate:'utc':caseField.dateTimeDisplayFormat}}</span>`
|
|
15157
15058
|
}]
|
|
15158
15059
|
}], null, null); })();
|
|
15159
15060
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReadDateFieldComponent, { className: "ReadDateFieldComponent", filePath: "lib/shared/components/palette/date/read-date-field.component.ts", lineNumber: 8 }); })();
|
|
@@ -29374,7 +29275,6 @@ class DatetimePickerComponent extends AbstractFormFieldComponent {
|
|
|
29374
29275
|
minError = false;
|
|
29375
29276
|
maxError = false;
|
|
29376
29277
|
dateTimeEntryFormat;
|
|
29377
|
-
isUpdating = false;
|
|
29378
29278
|
datetimePicker;
|
|
29379
29279
|
inputElement;
|
|
29380
29280
|
dateControl = new FormControl(new Date());
|
|
@@ -29397,7 +29297,7 @@ class DatetimePickerComponent extends AbstractFormFieldComponent {
|
|
|
29397
29297
|
// otherwise the last format given will be how the text shown will be displayed
|
|
29398
29298
|
setTimeout(() => {
|
|
29399
29299
|
this.setDateTimeFormat();
|
|
29400
|
-
this.
|
|
29300
|
+
this.formatValueAndSetErrors();
|
|
29401
29301
|
}, 1000);
|
|
29402
29302
|
// when the status changes check that the maximum/minimum date has not been exceeded
|
|
29403
29303
|
this.dateControl.statusChanges.subscribe(() => {
|
|
@@ -29499,54 +29399,24 @@ class DatetimePickerComponent extends AbstractFormFieldComponent {
|
|
|
29499
29399
|
this.valueChanged();
|
|
29500
29400
|
}
|
|
29501
29401
|
}
|
|
29502
|
-
loadValue() {
|
|
29503
|
-
if (this.inputElement.nativeElement.value) {
|
|
29504
|
-
const inputValue = this.inputElement.nativeElement.value;
|
|
29505
|
-
const formValue = moment(inputValue, this.dateTimeEntryFormat).format(this.momentFormat);
|
|
29506
|
-
if (formValue !== 'Invalid date') {
|
|
29507
|
-
const localMoment = moment.utc(formValue).local();
|
|
29508
|
-
this.dateControl.setValue(moment(formValue).format(this.momentFormat));
|
|
29509
|
-
this.inputElement.nativeElement.value = localMoment.format(this.dateTimeEntryFormat);
|
|
29510
|
-
if (this.datetimePicker) {
|
|
29511
|
-
this.datetimePicker.select(localMoment);
|
|
29512
|
-
}
|
|
29513
|
-
}
|
|
29514
|
-
else {
|
|
29515
|
-
// If invalid, just show the raw value
|
|
29516
|
-
this.inputElement.nativeElement.value = this.dateControl.value;
|
|
29517
|
-
}
|
|
29518
|
-
}
|
|
29519
|
-
else {
|
|
29520
|
-
this.inputElement.nativeElement.value = '';
|
|
29521
|
-
}
|
|
29522
|
-
}
|
|
29523
29402
|
formatValueAndSetErrors() {
|
|
29524
|
-
if (this.isUpdating)
|
|
29525
|
-
return;
|
|
29526
|
-
this.isUpdating = true;
|
|
29527
29403
|
if (this.inputElement.nativeElement.value) {
|
|
29528
|
-
|
|
29529
|
-
|
|
29530
|
-
const localMoment = moment(inputValue, this.dateTimeEntryFormat, true);
|
|
29404
|
+
let formValue = this.inputElement.nativeElement.value;
|
|
29405
|
+
formValue = moment(formValue, this.dateTimeEntryFormat).format(this.momentFormat);
|
|
29531
29406
|
if (formValue !== 'Invalid date') {
|
|
29532
|
-
|
|
29533
|
-
this.dateControl.setValue(
|
|
29534
|
-
this.inputElement.nativeElement.value = localMoment.format(this.dateTimeEntryFormat);
|
|
29535
|
-
if (this.datetimePicker) {
|
|
29536
|
-
this.datetimePicker.select(localMoment); // guarded from recursion
|
|
29537
|
-
}
|
|
29538
|
-
this.isUpdating = false;
|
|
29407
|
+
// if not invalid set the value as the formatted value
|
|
29408
|
+
this.dateControl.setValue(formValue);
|
|
29539
29409
|
}
|
|
29540
29410
|
else {
|
|
29411
|
+
// ensure that the datepicker picks up the invalid error
|
|
29541
29412
|
const keepErrorText = this.inputElement.nativeElement.value;
|
|
29542
29413
|
this.dateControl.setValue(keepErrorText);
|
|
29543
29414
|
this.inputElement.nativeElement.value = keepErrorText;
|
|
29544
|
-
this.isUpdating = false;
|
|
29545
29415
|
}
|
|
29546
29416
|
}
|
|
29547
29417
|
else {
|
|
29418
|
+
// ensure required errors are picked up if relevant
|
|
29548
29419
|
this.dateControl.setValue('');
|
|
29549
|
-
this.isUpdating = false;
|
|
29550
29420
|
}
|
|
29551
29421
|
}
|
|
29552
29422
|
static ɵfac = function DatetimePickerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DatetimePickerComponent)(i0.ɵɵdirectiveInject(FormatTranslatorService), i0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS)); };
|
|
@@ -29565,7 +29435,7 @@ class DatetimePickerComponent extends AbstractFormFieldComponent {
|
|
|
29565
29435
|
deps: [MAT_LEGACY_DATE_LOCALE, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
|
|
29566
29436
|
},
|
|
29567
29437
|
{ provide: NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
|
|
29568
|
-
]), i0.ɵɵInheritDefinitionFeature], decls: 17, vars: 27, consts: [["input", ""], ["picker", ""], [1, "govuk-form-group", "bottom-30", 3, "id", "ngClass"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "datepicker-container"], ["
|
|
29438
|
+
]), i0.ɵɵInheritDefinitionFeature], decls: 17, vars: 27, consts: [["input", ""], ["picker", ""], [1, "govuk-form-group", "bottom-30", 3, "id", "ngClass"], ["class", "form-label", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "datepicker-container"], ["ng-model-options", "{timezone:'utc'}", 1, "govuk-input", 3, "focusin", "focusout", "dateChange", "min", "max", "formControl", "ngxMatDatetimePicker"], ["matSuffix", "", "id", "pickerOpener", 3, "for"], [3, "yearSelected", "monthSelected", "opened", "color", "touchUi", "hideTime", "startView", "stepHour", "stepSecond", "stepMinute", "showSeconds", "showSpinners", "disableMinute", "enableMeridian"], ["mat-raised-button", "", "color", "primary", "ngxMatDatepickerApply", ""], [1, "form-label"], [1, "form-hint"], [1, "error-message"]], template: function DatetimePickerComponent_Template(rf, ctx) { if (rf & 1) {
|
|
29569
29439
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
29570
29440
|
i0.ɵɵelementStart(0, "div", 2)(1, "fieldset")(2, "legend");
|
|
29571
29441
|
i0.ɵɵtemplate(3, DatetimePickerComponent_span_3_Template, 3, 3, "span", 3)(4, DatetimePickerComponent_span_4_Template, 3, 3, "span", 4)(5, DatetimePickerComponent_span_5_Template, 3, 4, "span", 5)(6, DatetimePickerComponent_span_6_Template, 3, 3, "span", 5)(7, DatetimePickerComponent_span_7_Template, 3, 3, "span", 5);
|
|
@@ -29611,7 +29481,7 @@ class DatetimePickerComponent extends AbstractFormFieldComponent {
|
|
|
29611
29481
|
deps: [MAT_LEGACY_DATE_LOCALE, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS]
|
|
29612
29482
|
},
|
|
29613
29483
|
{ provide: NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }
|
|
29614
|
-
], template: "<div class=\"govuk-form-group bottom-30\" [id]=\"caseField.id\"\n [ngClass]=\"{'form-group-error': dateControl && !dateControl.valid && dateControl.dirty}\">\n <fieldset>\n <legend>\n <span class=\"form-label\" *ngIf=\"caseField.label\">{{(caseField | ccdFieldLabel)}}</span>\n <span class=\"form-hint\" *ngIf=\"caseField.hint_text\">{{caseField.hint_text | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.errors && dateControl.dirty && !(minError || maxError)\">{{(dateControl.errors | ccdFirstError:caseField.label)}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && minError\">{{'This date is older than the minimum date allowed' | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && maxError\">{{'This date is later than the maximum date allowed' | rpxTranslate}}</span>\n </legend>\n <div class=\"datepicker-container\">\n <input readonly \n class=\"govuk-input\"\n #input\n attr.aria-label=\"Please enter a date and time in the format | rpxTranslate {{dateTimeEntryFormat}}\"\n [min]=\"minDate(caseField)\"\n [max]=\"maxDate(caseField)\"\n [formControl]=\"dateControl\"\n [ngxMatDatetimePicker]=\"picker\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut()\"\n (dateChange)=\"valueChanged()\"\n style=\"pointer-events: none;\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\" id=\"pickerOpener\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #picker\n [color]=\"color\"\n [touchUi]=\"touchUi\"\n [hideTime]=\"hideTime\"\n [startView]=\"startView\"\n [stepHour]=\"stepHour\"\n [stepSecond]=\"stepSecond\"\n [stepMinute]=\"stepMinute\"\n [showSeconds]=\"showSeconds\"\n [showSpinners]=\"showSpinners\"\n [disableMinute]=\"disableMinute\"\n [enableMeridian]=\"enableMeridian\"\n (yearSelected)=\"yearSelected($event)\"\n (monthSelected)=\"monthSelected($event)\"\n (opened)=\"toggleClick()\"\n >\n <ngx-mat-datepicker-actions>\n <button mat-raised-button color=\"primary\" ngxMatDatepickerApply>Confirm</button>\n </ngx-mat-datepicker-actions>\n </ngx-mat-datetime-picker>\n </div>\n </fieldset>\n</div>\n", styles: ["@charset \"UTF-8\";.datepicker-container{display:inline-block;position:relative;min-width:298px}.datepicker-container .govuk-input{height:35px;min-width:298px;width:auto;padding-right:40px;border:1px solid #000}.datepicker-container .govuk-input:focus{outline:1px solid #ffdd00;border:1px solid black}.datepicker-container .govuk-input::-ms-clear{display:none}.datepicker-container .datepicker-wrapper-input{position:relative;display:inline-block;top:-20%;border:0}.datepicker-container .datepicker-wrapper-input:focus{border:0;outline:none}.datepicker-container .mat-icon-button{height:32px;width:32px}.datepicker-container .mat-icon-button:focus{outline:1px solid #ffdd00}.datepicker-container .mat-icon-button .mat-datepicker-toggle-default-icon{position:relative;top:-5px}.datepicker-container .mat-datepicker-toggle{position:absolute;right:0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base{width:32px;height:32px;padding:5px 0 0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base:focus{outline:1px solid #fd0}.cdk-overlay-container .mat-datepicker-content{border:1px solid black;border-radius:0;max-width:295px;background:#fff}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table{width:calc(100% - 1px);table-layout:fixed}.cdk-overlay-container .mat-datepicker-content .mat-calendar-header{height:34px;border-bottom:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button{left:14%;min-width:125px;border-right:1px ridge #bfc1c3;border-left:1px ridge #bfc1c3;border-radius:0;top:-20px;width:200%}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button .mat-button-wrapper{text-align:center;font-weight:700}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button:focus{border:2px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button{left:-73%;top:-20px;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:after{border-left-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button{top:-20px;left:1%;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:after{border-right-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-button-wrapper{text-transform:capitalize!important}.cdk-overlay-container .mat-datepicker-content .mat-calendar{border-bottom:1px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider{padding:0;border-bottom:none}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider:after{height:0px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-content{padding:0}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header{color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header th.ng-star-inserted{font-weight:700;font-size:15px;padding-top:2%;padding-bottom:2%;column-width:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th{visibility:hidden}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:after{visibility:visible;color:#000;position:relative;left:-15px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(1):after{content:\"MON\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(2):after{left:-12px;content:\"TUE\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(3):after{left:-18px;content:\"WED\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(4):after{left:-14px;content:\"THU\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(5):after{left:-10px;content:\"FRI\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(6):after{content:\"SAT\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(7):after{content:\"SUN\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-label{font-weight:700;font-size:large;color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-selected{border:none;background-color:transparent;color:#fff}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active .mat-calendar-body-today{border:none;box-shadow:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell{border:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-selected=true],.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-pressed=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px;z-index:1}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table{border-collapse:separate;border-spacing:10px}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table{border-collapse:separate;border-spacing:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table tr:nth-of-type(1){visibility:collapse}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px}.cdk-overlay-container .mat-datepicker-content .time-container{height:80px;padding-top:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table{margin-left:0!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tbody{position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button .mat-button-wrapper{width:auto;height:auto}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button:focus{outline:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child{position:absolute;left:49px;top:15px;z-index:2}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:first-child [aria-label=\"expand_less icon\"]{position:absolute;left:-2px;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(3) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:82px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(5) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:169px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(1) [aria-label=\"expand_less icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(2) [aria-label=\"expand_less icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2){display:flex;padding:20px 0 20px 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field{width:50px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field:before{color:#000;content:\"Hours\";position:relative;top:-5px;left:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-child(3) .mat-form-field:before{color:#000;content:\"Minutes\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:last-child{text-align:left;left:-15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .mat-form-field-disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-of-type(5) .mat-form-field:before{color:#000;content:\"Seconds\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian{border-bottom:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button{height:30px;top:21px;border-radius:0;color:#000;border-color:#000;background-color:#dee0e2;display:flex;justify-content:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button .mat-button-wrapper{position:relative;top:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4){display:flex;padding:2rem 0 2rem 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td:last-child{text-align:left}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child{position:absolute;left:49px;top:40px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:first-child [aria-label=\"expand_more icon\"]{position:absolute;top:15px;left:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(3) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;left:82px!important;top:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(5) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;top:15px;left:169px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1) [aria-label=\"expand_more icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1).ng-star-inserted [aria-label=\"expand_more icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr td{padding:0;border-bottom:0;position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .spacer{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon{visibility:hidden;display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-button-wrapper{display:block;width:15px;height:8px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-wrapper{padding-bottom:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field{width:auto;max-width:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_less icon\"].mat-icon-button .mat-button-wrapper:after{content:\" \\25b2\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_more icon\"].mat-icon-button .mat-button-wrapper:after{content:\"\\25bc\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex .mat-form-field-infix{border:1px solid black;height:20px;width:37px;display:flex;justify-content:center;align-items:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-underline{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input{height:33px;width:37px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .actions{padding-bottom:20px;margin-top:20px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .actions .mat-button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:focus{outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:hover{background-color:#006400}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-icon{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-button-wrapper:before{color:#fff;content:\"Confirm\";position:relative;font-size:15px;left:-3px}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions{margin-top:120px;padding:8px 8px 28px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}\n"] }]
|
|
29484
|
+
], template: "<div class=\"govuk-form-group bottom-30\" [id]=\"caseField.id\"\n [ngClass]=\"{'form-group-error': dateControl && !dateControl.valid && dateControl.dirty}\">\n <fieldset>\n <legend>\n <span class=\"form-label\" *ngIf=\"caseField.label\">{{(caseField | ccdFieldLabel)}}</span>\n <span class=\"form-hint\" *ngIf=\"caseField.hint_text\">{{caseField.hint_text | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.errors && dateControl.dirty && !(minError || maxError)\">{{(dateControl.errors | ccdFirstError:caseField.label)}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && minError\">{{'This date is older than the minimum date allowed' | rpxTranslate}}</span>\n <span class=\"error-message\"\n *ngIf=\"dateControl && dateControl.dirty && maxError\">{{'This date is later than the maximum date allowed' | rpxTranslate}}</span>\n </legend>\n <div class=\"datepicker-container\">\n <input class=\"govuk-input\"\n #input\n attr.aria-label=\"Please enter a date and time in the format | rpxTranslate {{dateTimeEntryFormat}}\"\n [min]=\"minDate(caseField)\"\n [max]=\"maxDate(caseField)\"\n [formControl]=\"dateControl\"\n [ngxMatDatetimePicker]=\"picker\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut()\"\n (dateChange)=\"valueChanged()\"\n ng-model-options=\"{timezone:'utc'}\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\" id=\"pickerOpener\"></mat-datepicker-toggle>\n <ngx-mat-datetime-picker #picker\n [color]=\"color\"\n [touchUi]=\"touchUi\"\n [hideTime]=\"hideTime\"\n [startView]=\"startView\"\n [stepHour]=\"stepHour\"\n [stepSecond]=\"stepSecond\"\n [stepMinute]=\"stepMinute\"\n [showSeconds]=\"showSeconds\"\n [showSpinners]=\"showSpinners\"\n [disableMinute]=\"disableMinute\"\n [enableMeridian]=\"enableMeridian\"\n (yearSelected)=\"yearSelected($event)\"\n (monthSelected)=\"monthSelected($event)\"\n (opened)=\"toggleClick()\"\n >\n <ngx-mat-datepicker-actions>\n <button mat-raised-button color=\"primary\" ngxMatDatepickerApply>Confirm</button>\n </ngx-mat-datepicker-actions>\n </ngx-mat-datetime-picker>\n </div>\n </fieldset>\n</div>\n", styles: ["@charset \"UTF-8\";.datepicker-container{display:inline-block;position:relative;min-width:298px}.datepicker-container .govuk-input{height:35px;min-width:298px;width:auto;padding-right:40px;border:1px solid #000}.datepicker-container .govuk-input:focus{outline:1px solid #ffdd00;border:1px solid black}.datepicker-container .govuk-input::-ms-clear{display:none}.datepicker-container .datepicker-wrapper-input{position:relative;display:inline-block;top:-20%;border:0}.datepicker-container .datepicker-wrapper-input:focus{border:0;outline:none}.datepicker-container .mat-icon-button{height:32px;width:32px}.datepicker-container .mat-icon-button:focus{outline:1px solid #ffdd00}.datepicker-container .mat-icon-button .mat-datepicker-toggle-default-icon{position:relative;top:-5px}.datepicker-container .mat-datepicker-toggle{position:absolute;right:0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base{width:32px;height:32px;padding:5px 0 0}.datepicker-container .mat-mdc-icon-button.mat-mdc-button-base:focus{outline:1px solid #fd0}.cdk-overlay-container .mat-datepicker-content{border:1px solid black;border-radius:0;max-width:295px;background:#fff}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table{width:calc(100% - 1px);table-layout:fixed}.cdk-overlay-container .mat-datepicker-content .mat-calendar-header{height:34px;border-bottom:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button{left:14%;min-width:125px;border-right:1px ridge #bfc1c3;border-left:1px ridge #bfc1c3;border-radius:0;top:-20px;width:200%}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button .mat-button-wrapper{text-align:center;font-weight:700}.cdk-overlay-container .mat-datepicker-content .mat-calendar-period-button:focus{border:2px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button{left:-73%;top:-20px;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-previous-button:after{border-left-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button{top:-20px;left:1%;border:2px solid transparent;border-radius:0}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .mat-calendar-next-button:after{border-right-width:5px;border-top-width:5px;color:#000;padding:4px;top:-2px;left:-2px}.cdk-overlay-container .mat-datepicker-content .mat-button-wrapper{text-transform:capitalize!important}.cdk-overlay-container .mat-datepicker-content .mat-calendar{border-bottom:1px solid black}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider{padding:0;border-bottom:none}.cdk-overlay-container .mat-datepicker-content .mat-calendar-table-header-divider:after{height:0px}.cdk-overlay-container .mat-datepicker-content .mat-calendar-content{padding:0}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header{color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header th.ng-star-inserted{font-weight:700;font-size:15px;padding-top:2%;padding-bottom:2%;column-width:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th{visibility:hidden}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:after{visibility:visible;color:#000;position:relative;left:-15px}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(1):after{content:\"MON\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(2):after{left:-12px;content:\"TUE\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(3):after{left:-18px;content:\"WED\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(4):after{left:-14px;content:\"THU\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(5):after{left:-10px;content:\"FRI\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(6):after{content:\"SAT\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-table-header tr:nth-of-type(1) th:nth-of-type(7):after{content:\"SUN\"}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-label{font-weight:700;font-size:large;color:#000}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-selected{border:none;background-color:transparent;color:#fff}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-active .mat-calendar-body-today{border:none;box-shadow:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell{border:1px ridge #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-selected=true],.cdk-overlay-container .mat-datepicker-content ngx-mat-month-view .mat-calendar-body-cell[aria-pressed=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px;z-index:1}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table{border-collapse:separate;border-spacing:10px}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-multi-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table{border-collapse:separate;border-spacing:20px}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table tr:nth-of-type(1){visibility:collapse}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-active{background-color:#5694ca}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell{border:1px solid #bfc1c3}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-cell-content{border:none}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell .mat-calendar-body-selected{border:none;box-shadow:none;background-color:transparent}.cdk-overlay-container .mat-datepicker-content ngx-mat-year-view .mat-calendar-table .mat-calendar-body-cell[aria-selected=true]{background-color:#1d70b8;outline:3px solid #ffdd00;border:2px solid black;outline-offset:1px}.cdk-overlay-container .mat-datepicker-content .time-container{height:80px;padding-top:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table{margin-left:0!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tbody{position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button .mat-button-wrapper{width:auto;height:auto}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr mdc-icon-button mat-mdc-icon-button mat-unthemed mat-mdc-button-base .mat-icon-button:focus{outline:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child{position:absolute;left:49px;top:15px;z-index:2}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:first-child [aria-label=\"expand_less icon\"]{position:absolute;left:-2px;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(3) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:82px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-child(5) [aria-label=\"expand_less icon\"].mat-icon-button{position:absolute;left:169px!important;top:25px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(1) [aria-label=\"expand_less icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:first-child td:nth-last-child(2) [aria-label=\"expand_less icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2){display:flex;padding:20px 0 20px 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field{width:50px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:first-child .mat-form-field:before{color:#000;content:\"Hours\";position:relative;top:-5px;left:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-child(3) .mat-form-field:before{color:#000;content:\"Minutes\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:last-child{text-align:left;left:-15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .mat-form-field-disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) td:nth-of-type(5) .mat-form-field:before{color:#000;content:\"Seconds\";position:relative;top:-5px;font-size:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian{border-bottom:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button{height:30px;top:21px;border-radius:0;color:#000;border-color:#000;background-color:#dee0e2;display:flex;justify-content:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(2) .meridian .mat-button .mat-button-wrapper{position:relative;top:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4){display:flex;padding:2rem 0 2rem 15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td{margin-right:30px;text-align:right}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:nth-child(4) td:last-child{text-align:left}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child{position:absolute;left:49px;top:40px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child button:disabled{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:first-child [aria-label=\"expand_more icon\"]{position:absolute;top:15px;left:-2px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(3) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;left:82px!important;top:15px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-child(5) [aria-label=\"expand_more icon\"].mat-icon-button{position:absolute;top:15px;left:169px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1) [aria-label=\"expand_more icon\"].mat-icon-button{left:65px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr:last-child td:nth-last-child(1).ng-star-inserted [aria-label=\"expand_more icon\"].mat-icon-button{left:153px!important}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr td{padding:0;border-bottom:0;position:relative}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .spacer{display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-icon{visibility:hidden;display:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-button-wrapper{display:block;width:15px;height:8px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-wrapper{padding-bottom:0}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field{width:auto;max-width:none}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_less icon\"].mat-icon-button .mat-button-wrapper:after{content:\" \\25b2\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr [aria-label=\"expand_more icon\"].mat-icon-button .mat-button-wrapper:after{content:\"\\25bc\"}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex{width:100%}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-flex .mat-form-field-infix{border:1px solid black;height:20px;width:37px;display:flex;justify-content:center;align-items:center}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr .mat-form-field-underline{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input{height:33px;width:37px}.cdk-overlay-container .mat-datepicker-content .time-container .ngx-mat-timepicker .table tr input:focus{border-color:#000}.cdk-overlay-container .mat-datepicker-content .actions{padding-bottom:20px;margin-top:20px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .actions .mat-button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:focus{outline:2px solid #ffdd00}.cdk-overlay-container .mat-datepicker-content .actions .mat-button:hover{background-color:#006400}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-icon{visibility:hidden}.cdk-overlay-container .mat-datepicker-content .actions .mat-button .mat-button-wrapper:before{color:#fff;content:\"Confirm\";position:relative;font-size:15px;left:-3px}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions{margin-top:120px;padding:8px 8px 28px;justify-content:flex-start}.cdk-overlay-container .mat-datepicker-content .mat-datepicker-actions button{background-color:#00823b;position:relative;display:-moz-inline-stack;display:inline-block;padding:.526315em .789473em .263157em;border:none;border-radius:0;outline:1px solid transparent;outline-offset:-1px;-webkit-appearance:none;box-shadow:0 2px #003618;font-size:1em;line-height:1.25;text-decoration:none;-webkit-font-smoothing:antialiased;color:#fff;box-sizing:border-box;vertical-align:top;width:80px;cursor:pointer}\n"] }]
|
|
29615
29485
|
}], () => [{ type: FormatTranslatorService }, { type: undefined, decorators: [{
|
|
29616
29486
|
type: Inject,
|
|
29617
29487
|
args: [NGX_MAT_DATE_FORMATS]
|