Skip to content

Commit 34e4380

Browse files
committed
main - f750300 build: set up token extraction for the timepicker
1 parent 8bcc555 commit 34e4380

22 files changed

+2154
-9
lines changed

docs-content/api-docs/material-timepicker-testing.html

Lines changed: 1171 additions & 0 deletions
Large diffs are not rendered by default.

docs-content/api-docs/material-timepicker.html

Lines changed: 675 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<span class="hljs-keyword">export</span> {TimepickerOverviewExample} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;./timepicker-overview/timepicker-overview-example&#x27;</span>;
2+
<span class="hljs-keyword">export</span> {TimepickerHarnessExample} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;./timepicker-harness/timepicker-harness-example&#x27;</span>;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<span class="hljs-tag">&lt;<span class="hljs-name">input</span> [<span class="hljs-attr">matTimepicker</span>]=<span class="hljs-string">&quot;picker&quot;</span> [(<span class="hljs-attr">value</span>)]=<span class="hljs-string">&quot;date&quot;</span>/&gt;</span>
2+
<span class="hljs-tag">&lt;<span class="hljs-name">mat-timepicker</span> #<span class="hljs-attr">picker</span>/&gt;</span>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<span class="hljs-keyword">import</span> {ChangeDetectionStrategy, Component, Signal, signal} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/core&#x27;</span>;
2+
<span class="hljs-keyword">import</span> {provideNativeDateAdapter} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/core&#x27;</span>;
3+
<span class="hljs-keyword">import</span> {MatTimepickerModule} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/timepicker&#x27;</span>;
4+
5+
<span class="hljs-comment">/**
6+
* <span class="hljs-doctag">@title </span>Testing with MatTimepickerInputHarness
7+
*/</span>
8+
<span class="hljs-meta">@Component</span>({
9+
<span class="hljs-attr">selector</span>: <span class="hljs-string">&#x27;timepicker-harness-example&#x27;</span>,
10+
<span class="hljs-attr">templateUrl</span>: <span class="hljs-string">&#x27;timepicker-harness-example.html&#x27;</span>,
11+
<span class="hljs-attr">standalone</span>: <span class="hljs-literal">true</span>,
12+
<span class="hljs-attr">providers</span>: [provideNativeDateAdapter()],
13+
<span class="hljs-attr">imports</span>: [MatTimepickerModule],
14+
<span class="hljs-attr">changeDetection</span>: ChangeDetectionStrategy.OnPush,
15+
})
16+
<span class="hljs-keyword">export</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TimepickerHarnessExample</span> </span>{
17+
<span class="hljs-attr">date</span>: Signal&lt;<span class="hljs-built_in">Date</span> | <span class="hljs-literal">null</span>&gt;;
18+
19+
<span class="hljs-function"><span class="hljs-title">constructor</span>(<span class="hljs-params"></span>)</span> {
20+
<span class="hljs-keyword">const</span> today = <span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>();
21+
<span class="hljs-built_in">this</span>.date = signal(<span class="hljs-keyword">new</span> <span class="hljs-built_in">Date</span>(today.getFullYear(), today.getMonth(), today.getDate(), <span class="hljs-number">11</span>, <span class="hljs-number">45</span>));
22+
}
23+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<span class="hljs-keyword">import</span> {ComponentFixture, TestBed} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/core/testing&#x27;</span>;
2+
<span class="hljs-keyword">import</span> {TestbedHarnessEnvironment} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/cdk/testing/testbed&#x27;</span>;
3+
<span class="hljs-keyword">import</span> {MatTimepickerInputHarness} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/timepicker/testing&#x27;</span>;
4+
<span class="hljs-keyword">import</span> {HarnessLoader} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/cdk/testing&#x27;</span>;
5+
<span class="hljs-keyword">import</span> {TimepickerHarnessExample} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;./timepicker-harness-example&#x27;</span>;
6+
<span class="hljs-keyword">import</span> {NoopAnimationsModule} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/platform-browser/animations&#x27;</span>;
7+
<span class="hljs-keyword">import</span> {DateAdapter, MatNativeDateModule} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/core&#x27;</span>;
8+
9+
describe(<span class="hljs-string">&#x27;TimepickerHarnessExample&#x27;</span>, <span class="hljs-function">() =&gt;</span> {
10+
<span class="hljs-keyword">let</span> fixture: ComponentFixture&lt;TimepickerHarnessExample&gt;;
11+
<span class="hljs-keyword">let</span> loader: HarnessLoader;
12+
13+
beforeEach(<span class="hljs-function">() =&gt;</span> {
14+
TestBed.configureTestingModule({<span class="hljs-attr">imports</span>: [NoopAnimationsModule, MatNativeDateModule]});
15+
TestBed.inject(DateAdapter).setLocale(<span class="hljs-string">&#x27;en-US&#x27;</span>); <span class="hljs-comment">// Set the locale to en-US to guarantee consistent tests.</span>
16+
fixture = TestBed.createComponent(TimepickerHarnessExample);
17+
fixture.detectChanges();
18+
loader = TestbedHarnessEnvironment.loader(fixture);
19+
});
20+
21+
it(<span class="hljs-string">&#x27;should load all timepicker input harnesses&#x27;</span>, <span class="hljs-keyword">async</span> () =&gt; {
22+
<span class="hljs-keyword">const</span> inputs = <span class="hljs-keyword">await</span> loader.getAllHarnesses(MatTimepickerInputHarness);
23+
expect(inputs.length).toBe(<span class="hljs-number">1</span>);
24+
});
25+
26+
it(<span class="hljs-string">&#x27;should open and close a timepicker&#x27;</span>, <span class="hljs-keyword">async</span> () =&gt; {
27+
<span class="hljs-keyword">const</span> input = <span class="hljs-keyword">await</span> loader.getHarness(MatTimepickerInputHarness);
28+
expect(<span class="hljs-keyword">await</span> input.isTimepickerOpen()).toBe(<span class="hljs-literal">false</span>);
29+
30+
<span class="hljs-keyword">await</span> input.openTimepicker();
31+
expect(<span class="hljs-keyword">await</span> input.isTimepickerOpen()).toBe(<span class="hljs-literal">true</span>);
32+
});
33+
34+
it(<span class="hljs-string">&#x27;should set the input value&#x27;</span>, <span class="hljs-keyword">async</span> () =&gt; {
35+
<span class="hljs-keyword">const</span> input = <span class="hljs-keyword">await</span> loader.getHarness(MatTimepickerInputHarness);
36+
expect(<span class="hljs-keyword">await</span> input.getValue()).toBe(<span class="hljs-string">&#x27;11:45 AM&#x27;</span>);
37+
38+
<span class="hljs-keyword">await</span> input.setValue(<span class="hljs-string">&#x27;3:21 PM&#x27;</span>);
39+
expect(<span class="hljs-keyword">await</span> input.getValue()).toBe(<span class="hljs-string">&#x27;3:21 PM&#x27;</span>);
40+
});
41+
42+
it(<span class="hljs-string">&#x27;should select an option from the timepicker&#x27;</span>, <span class="hljs-keyword">async</span> () =&gt; {
43+
<span class="hljs-keyword">const</span> input = <span class="hljs-keyword">await</span> loader.getHarness(MatTimepickerInputHarness);
44+
<span class="hljs-keyword">const</span> timepicker = <span class="hljs-keyword">await</span> input.openTimepicker();
45+
expect(<span class="hljs-keyword">await</span> input.getValue()).toBe(<span class="hljs-string">&#x27;11:45 AM&#x27;</span>);
46+
47+
<span class="hljs-keyword">await</span> timepicker.selectOption({<span class="hljs-attr">text</span>: <span class="hljs-string">&#x27;1:00 PM&#x27;</span>});
48+
expect(<span class="hljs-keyword">await</span> input.getValue()).toBe(<span class="hljs-string">&#x27;1:00 PM&#x27;</span>);
49+
});
50+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<span class="hljs-tag">&lt;<span class="hljs-name">mat-form-field</span>&gt;</span>
2+
<span class="hljs-tag">&lt;<span class="hljs-name">mat-label</span>&gt;</span>Pick a time<span class="hljs-tag">&lt;/<span class="hljs-name">mat-label</span>&gt;</span>
3+
<span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">matInput</span> [<span class="hljs-attr">matTimepicker</span>]=<span class="hljs-string">&quot;picker&quot;</span>&gt;</span>
4+
<span class="hljs-tag">&lt;<span class="hljs-name">mat-timepicker-toggle</span> <span class="hljs-attr">matIconSuffix</span> [<span class="hljs-attr">for</span>]=<span class="hljs-string">&quot;picker&quot;</span>/&gt;</span>
5+
<span class="hljs-tag">&lt;<span class="hljs-name">mat-timepicker</span> #<span class="hljs-attr">picker</span>/&gt;</span>
6+
<span class="hljs-tag">&lt;/<span class="hljs-name">mat-form-field</span>&gt;</span>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<span class="hljs-keyword">import</span> {ChangeDetectionStrategy, Component} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/core&#x27;</span>;
2+
<span class="hljs-keyword">import</span> {MatTimepickerModule} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/timepicker&#x27;</span>;
3+
<span class="hljs-keyword">import</span> {MatInputModule} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/input&#x27;</span>;
4+
<span class="hljs-keyword">import</span> {MatFormFieldModule} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/form-field&#x27;</span>;
5+
<span class="hljs-keyword">import</span> {provideNativeDateAdapter} <span class="hljs-keyword">from</span> <span class="hljs-string">&#x27;@angular/material/core&#x27;</span>;
6+
7+
<span class="hljs-comment">/** <span class="hljs-doctag">@title </span>Basic timepicker */</span>
8+
<span class="hljs-meta">@Component</span>({
9+
<span class="hljs-attr">selector</span>: <span class="hljs-string">&#x27;timepicker-overview-example&#x27;</span>,
10+
<span class="hljs-attr">templateUrl</span>: <span class="hljs-string">&#x27;timepicker-overview-example.html&#x27;</span>,
11+
<span class="hljs-attr">standalone</span>: <span class="hljs-literal">true</span>,
12+
<span class="hljs-attr">providers</span>: [provideNativeDateAdapter()],
13+
<span class="hljs-attr">imports</span>: [MatFormFieldModule, MatInputModule, MatTimepickerModule],
14+
<span class="hljs-attr">changeDetection</span>: ChangeDetectionStrategy.OnPush,
15+
})
16+
<span class="hljs-keyword">export</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">TimepickerOverviewExample</span> </span>{}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export {TimepickerOverviewExample} from './timepicker-overview/timepicker-overview-example';
2+
export {TimepickerHarnessExample} from './timepicker-harness/timepicker-harness-example';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<input [matTimepicker]="picker" [(value)]="date"/>
2+
<mat-timepicker #picker/>

0 commit comments

Comments
 (0)