diff --git a/src/components-examples/material/datepicker/date-range-picker-comparison/date-range-picker-comparison-example.html b/src/components-examples/material/datepicker/date-range-picker-comparison/date-range-picker-comparison-example.html
index 8b44b056077c..7693d8151cef 100644
--- a/src/components-examples/material/datepicker/date-range-picker-comparison/date-range-picker-comparison-example.html
+++ b/src/components-examples/material/datepicker/date-range-picker-comparison/date-range-picker-comparison-example.html
@@ -5,8 +5,8 @@
[rangePicker]="campaignOnePicker"
[comparisonStart]="campaignTwo.value.start"
[comparisonEnd]="campaignTwo.value.end">
-
-
+
+
@@ -19,8 +19,8 @@
[rangePicker]="campaignTwoPicker"
[comparisonStart]="campaignOne.value.start"
[comparisonEnd]="campaignOne.value.end">
-
-
+
+
diff --git a/src/components-examples/material/datepicker/date-range-picker-forms/date-range-picker-forms-example.html b/src/components-examples/material/datepicker/date-range-picker-forms/date-range-picker-forms-example.html
index a1eab434607f..33cf221f4143 100644
--- a/src/components-examples/material/datepicker/date-range-picker-forms/date-range-picker-forms-example.html
+++ b/src/components-examples/material/datepicker/date-range-picker-forms/date-range-picker-forms-example.html
@@ -1,8 +1,8 @@
Enter a date range
-
-
+
+
diff --git a/src/components-examples/material/datepicker/date-range-picker-overview/date-range-picker-overview-example.html b/src/components-examples/material/datepicker/date-range-picker-overview/date-range-picker-overview-example.html
index 777f02010ea7..91188643e4ba 100644
--- a/src/components-examples/material/datepicker/date-range-picker-overview/date-range-picker-overview-example.html
+++ b/src/components-examples/material/datepicker/date-range-picker-overview/date-range-picker-overview-example.html
@@ -1,8 +1,8 @@
Enter a date range
-
-
+
+
diff --git a/src/components-examples/material/datepicker/date-range-picker-selection-strategy/date-range-picker-selection-strategy-example.html b/src/components-examples/material/datepicker/date-range-picker-selection-strategy/date-range-picker-selection-strategy-example.html
index 777f02010ea7..91188643e4ba 100644
--- a/src/components-examples/material/datepicker/date-range-picker-selection-strategy/date-range-picker-selection-strategy-example.html
+++ b/src/components-examples/material/datepicker/date-range-picker-selection-strategy/date-range-picker-selection-strategy-example.html
@@ -1,8 +1,8 @@
Enter a date range
-
-
+
+
diff --git a/src/dev-app/datepicker/datepicker-demo.html b/src/dev-app/datepicker/datepicker-demo.html
index ff7b15a6b8a2..4593f1038d0d 100644
--- a/src/dev-app/datepicker/datepicker-demo.html
+++ b/src/dev-app/datepicker/datepicker-demo.html
@@ -173,8 +173,7 @@
Datepicker with custom header extending the default header
Range picker
-
- Enter a date range
+ Range picker
[comparisonStart]="comparisonStart"
[comparisonEnd]="comparisonEnd"
[dateFilter]="filterOdd ? dateFilter : undefined">
-
-
+
+
return this._elementRef.nativeElement.value.length === 0;
}
+ /** Gets the placeholder of the input. */
+ _getPlaceholder() {
+ return this._elementRef.nativeElement.placeholder;
+ }
+
/** Focuses the input. */
focus(): void {
this._elementRef.nativeElement.focus();
diff --git a/src/material/datepicker/date-range-input.html b/src/material/datepicker/date-range-input.html
index 1187d2feeb90..dcdc918ef9da 100644
--- a/src/material/datepicker/date-range-input.html
+++ b/src/material/datepicker/date-range-input.html
@@ -9,7 +9,9 @@
aria-hidden="true">{{_getInputMirrorValue()}}
- {{separator}}
+ {{separator}}
diff --git a/src/material/datepicker/date-range-input.scss b/src/material/datepicker/date-range-input.scss
index d16cd04ed084..a907ff762873 100644
--- a/src/material/datepicker/date-range-input.scss
+++ b/src/material/datepicker/date-range-input.scss
@@ -22,14 +22,14 @@ $mat-date-range-input-placeholder-transition:
.mat-date-range-input-separator {
margin: 0 $mat-date-range-input-separator-spacing;
transition: $mat-date-range-input-placeholder-transition;
+}
- .mat-form-field-hide-placeholder & {
- // Disable text selection, because the user can click
- // through the main label when the input is disabled.
- @include user-select(none);
- color: transparent;
- transition: none;
- }
+.mat-date-range-input-separator-hidden {
+ // Disable text selection, because the user can click
+ // through the main label when the input is disabled.
+ @include user-select(none);
+ color: transparent;
+ transition: none;
}
// Underlying input inside the range input.
diff --git a/src/material/datepicker/date-range-input.spec.ts b/src/material/datepicker/date-range-input.spec.ts
index e6ef835d498c..687b99f0eb8d 100644
--- a/src/material/datepicker/date-range-input.spec.ts
+++ b/src/material/datepicker/date-range-input.spec.ts
@@ -503,6 +503,12 @@ describe('MatDateRangeInput', () => {
expect(start.nativeElement.focus).not.toHaveBeenCalled();
});
+ it('should be able to get the input placeholder', () => {
+ const fixture = createComponent(StandardRangePicker);
+ fixture.detectChanges();
+ expect(fixture.componentInstance.rangeInput.placeholder).toBe('Start date – End date');
+ });
+
});
@Component({
diff --git a/src/material/datepicker/date-range-input.ts b/src/material/datepicker/date-range-input.ts
index 4be258c20868..0070bba47479 100644
--- a/src/material/datepicker/date-range-input.ts
+++ b/src/material/datepicker/date-range-input.ts
@@ -80,11 +80,15 @@ export class MatDateRangeInput implements MatFormFieldControl>,
controlType = 'mat-date-range-input';
/**
- * Implemented as a part of `MatFormFieldControl`, but not used.
+ * Implemented as a part of `MatFormFieldControl`.
* Set the placeholder attribute on `matStartDate` and `matEndDate`.
* @docs-private
*/
- placeholder: string;
+ get placeholder() {
+ const start = this._startInput?._getPlaceholder() || '';
+ const end = this._endInput?._getPlaceholder() || '';
+ return (start || end) ? `${start} ${this.separator} ${end}` : '';
+ }
/** The range picker that this input is associated with. */
@Input()
@@ -297,6 +301,11 @@ export class MatDateRangeInput implements MatFormFieldControl>,
}
}
+ /** Whether the separate text should be hidden. */
+ _shouldHideSeparator() {
+ return (!this._formField || this._formField._hideControlPlaceholder()) && this.empty;
+ }
+
/**
* @param obj The object to check.
* @returns The given object if it is both a date instance and valid, otherwise null.
diff --git a/src/material/datepicker/datepicker.md b/src/material/datepicker/datepicker.md
index ed4e560a42d9..b71e33833bac 100644
--- a/src/material/datepicker/datepicker.md
+++ b/src/material/datepicker/datepicker.md
@@ -11,7 +11,7 @@ property on the text input.
There is also an optional datepicker toggle button that gives the user an easy way to open the datepicker pop-up.
This works exactly the same with an input that is part of an `` and the toggle
@@ -36,8 +36,8 @@ respectively:
```html
-
-
+
+
```
@@ -52,8 +52,8 @@ Connect the range picker and range input using the `rangePicker` property:
```html
-
-
+
+
diff --git a/tools/public_api_guard/material/datepicker.d.ts b/tools/public_api_guard/material/datepicker.d.ts
index 7a4722c1251b..dee053dcb0c9 100644
--- a/tools/public_api_guard/material/datepicker.d.ts
+++ b/tools/public_api_guard/material/datepicker.d.ts
@@ -308,7 +308,7 @@ export declare class MatDateRangeInput implements MatFormFieldControl;
set rangePicker(rangePicker: MatDateRangePicker);
get required(): boolean;
@@ -322,6 +322,7 @@ export declare class MatDateRangeInput implements MatFormFieldControl