@skyux/datetime 11.19.2 → 11.21.0

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.
@@ -1,5 +1,6 @@
1
1
  export { SkyDatepickerFixture } from './datepicker-fixture';
2
2
  export { SkyTimepickerFixture } from './timepicker-fixture';
3
+ export { SkyDateRangePickerHarness } from './date-range-picker/date-range-picker-harness';
3
4
  export { SkyDatepickerHarness } from './datepicker/datepicker-harness';
4
5
  export { SkyDatepickerCalendarHarness } from './datepicker/datepicker-calendar-harness';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS90ZXN0aW5nL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU2t5RGF0ZXBpY2tlckZpeHR1cmUgfSBmcm9tICcuL2RhdGVwaWNrZXItZml4dHVyZSc7XG5leHBvcnQgeyBTa3lUaW1lcGlja2VyRml4dHVyZSB9IGZyb20gJy4vdGltZXBpY2tlci1maXh0dXJlJztcblxuZXhwb3J0IHsgU2t5RGF0ZXBpY2tlckZpbHRlcnMgfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1oYXJuZXNzLmZpbHRlcnMnO1xuZXhwb3J0IHsgU2t5RGF0ZXBpY2tlckhhcm5lc3MgfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1oYXJuZXNzJztcbmV4cG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9kYXRlcGlja2VyL2RhdGVwaWNrZXItY2FsZW5kYXItaGFybmVzcy5maWx0ZXJzJztcbmV4cG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckhhcm5lc3MgfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1oYXJuZXNzJztcbiJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS90ZXN0aW5nL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRzFGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgU2t5RGF0ZXBpY2tlckZpeHR1cmUgfSBmcm9tICcuL2RhdGVwaWNrZXItZml4dHVyZSc7XG5leHBvcnQgeyBTa3lUaW1lcGlja2VyRml4dHVyZSB9IGZyb20gJy4vdGltZXBpY2tlci1maXh0dXJlJztcblxuZXhwb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyRmlsdGVycyB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXItaGFybmVzcy5maWx0ZXJzJztcbmV4cG9ydCB7IFNreURhdGVSYW5nZVBpY2tlckhhcm5lc3MgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLWhhcm5lc3MnO1xuXG5leHBvcnQgeyBTa3lEYXRlcGlja2VyRmlsdGVycyB9IGZyb20gJy4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhhcm5lc3MuZmlsdGVycyc7XG5leHBvcnQgeyBTa3lEYXRlcGlja2VySGFybmVzcyB9IGZyb20gJy4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhhcm5lc3MnO1xuZXhwb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1jYWxlbmRhci1oYXJuZXNzLmZpbHRlcnMnO1xuZXhwb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySGFybmVzcyB9IGZyb20gJy4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWNhbGVuZGFyLWhhcm5lc3MnO1xuIl19
@@ -1,6 +1,7 @@
1
1
  import { By } from '@angular/platform-browser';
2
2
  import { SkyAppTestUtility } from '@skyux-sdk/testing';
3
- import { SkyComponentHarness } from '@skyux/core/testing';
3
+ import { SkyComponentHarness, SkyInputHarness } from '@skyux/core/testing';
4
+ import { SkyInputBoxHarness } from '@skyux/forms/testing';
4
5
  import { HarnessPredicate } from '@angular/cdk/testing';
5
6
 
6
7
  /**
@@ -106,6 +107,146 @@ class SkyTimepickerFixture {
106
107
  }
107
108
  }
108
109
 
110
+ /**
111
+ * Harness for interacting with date range picker components in tests.
112
+ */
113
+ class SkyDateRangePickerHarness extends SkyComponentHarness {
114
+ /**
115
+ * @internal
116
+ */
117
+ static { this.hostSelector = 'sky-date-range-picker'; }
118
+ #getStartDateInputBoxHarness = this.locatorFor(SkyInputBoxHarness.with({
119
+ ancestor: '.sky-date-range-picker-start-date',
120
+ }));
121
+ #getEndDateInputBoxHarness = this.locatorFor(SkyInputBoxHarness.with({
122
+ ancestor: '.sky-date-range-picker-end-date',
123
+ }));
124
+ #getCalculatorIdInputBoxHarness = this.locatorFor(SkyInputBoxHarness.with({
125
+ ancestor: '.sky-date-range-picker-select-calculator',
126
+ }));
127
+ /**
128
+ * Gets a `HarnessPredicate` that can be used to search for a
129
+ * `SkyDateRangePickerHarness` that meets certain criteria.
130
+ */
131
+ static with(filters) {
132
+ return SkyDateRangePickerHarness.getDataSkyIdPredicate(filters);
133
+ }
134
+ /**
135
+ * Clicks the help inline button.
136
+ */
137
+ async clickHelpInline() {
138
+ await (await this.#getCalculatorIdInputBoxHarness()).clickHelpInline();
139
+ }
140
+ /**
141
+ * Gets the help popover content.
142
+ */
143
+ async getHelpPopoverContent() {
144
+ return (await (await this.#getCalculatorIdInputBoxHarness()).getHelpPopoverContent());
145
+ }
146
+ /**
147
+ * Gets the help inline popover title.
148
+ */
149
+ async getHelpPopoverTitle() {
150
+ return await (await this.#getCalculatorIdInputBoxHarness()).getHelpPopoverTitle();
151
+ }
152
+ /**
153
+ * Gets the hint text.
154
+ */
155
+ async getHintText() {
156
+ return await (await this.#getCalculatorIdInputBoxHarness()).getHintText();
157
+ }
158
+ /**
159
+ * Gets the label text.
160
+ */
161
+ async getLabelText() {
162
+ return await (await this.#getCalculatorIdInputBoxHarness()).getLabelText();
163
+ }
164
+ /**
165
+ * Whether date range picker end date before start date error is thrown.
166
+ */
167
+ async hasEndDateBeforeStartDateError() {
168
+ return await (await this.#getCalculatorIdInputBoxHarness()).hasCustomFormError('endDateBeforeStartDate');
169
+ }
170
+ /**
171
+ * Whether end date input has required error.
172
+ */
173
+ async hasEndDateRequiredError() {
174
+ return await (await this.#getEndDateInputBoxHarness()).hasRequiredError();
175
+ }
176
+ /**
177
+ * Whether a custom error has fired.
178
+ * @params errorName `errorName` property of the custom `sky-form-error`.
179
+ */
180
+ async hasError(errorName) {
181
+ return await (await this.#getCalculatorIdInputBoxHarness()).hasCustomFormError(errorName);
182
+ }
183
+ /**
184
+ * Whether start date input has required error.
185
+ */
186
+ async hasStartDateRequiredError() {
187
+ return await (await this.#getStartDateInputBoxHarness()).hasRequiredError();
188
+ }
189
+ /**
190
+ * Whether the date range picker component is disabled.
191
+ */
192
+ async isDisabled() {
193
+ return await (await this.#getCalculatorIdInputBoxHarness()).getDisabled();
194
+ }
195
+ /**
196
+ * Whether end date datepicker is visible.
197
+ */
198
+ async isEndDateVisible() {
199
+ return !(await (await this.locatorFor('.sky-date-range-picker-end-date')()).getProperty('hidden'));
200
+ }
201
+ /**
202
+ * Whether the date range picker has stacked enabled.
203
+ */
204
+ async isStacked() {
205
+ return await (await this.host()).hasClass('sky-form-field-stacked');
206
+ }
207
+ /**
208
+ * Whether start date datepicker is visible.
209
+ */
210
+ async isStartDateVisible() {
211
+ return !(await (await this.locatorFor('.sky-date-range-picker-start-date')()).getProperty('hidden'));
212
+ }
213
+ /**
214
+ * Selects the specified calculator.
215
+ */
216
+ async selectCalculator(calculatorId) {
217
+ const select = await this.locatorFor('select[FormControlName="calculatorId"')();
218
+ return await select.selectOptions(calculatorId);
219
+ }
220
+ /**
221
+ * Sets the end date.
222
+ * @param newDate date input as a formatted string.
223
+ */
224
+ async setEndDateValue(newDate) {
225
+ if (!(await this.isEndDateVisible())) {
226
+ throw new Error('Unable to set end date. End datepicker is not visible.');
227
+ }
228
+ const input = await (await this.#getEndDatepicker()).getControl();
229
+ await input.setValue(newDate);
230
+ }
231
+ /**
232
+ * Sets the start date.
233
+ * @param newDate date input as a formatted string.
234
+ */
235
+ async setStartDateValue(newDate) {
236
+ if (!(await this.isEndDateVisible())) {
237
+ throw new Error('Unable to set start date. Start datepicker is not visible.');
238
+ }
239
+ const input = await (await this.#getStartDatepicker()).getControl();
240
+ await input.setValue(newDate);
241
+ }
242
+ async #getEndDatepicker() {
243
+ return await (await this.#getEndDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
244
+ }
245
+ async #getStartDatepicker() {
246
+ return await (await this.#getStartDateInputBoxHarness()).queryHarness(SkyDatepickerHarness);
247
+ }
248
+ }
249
+
109
250
  /**
110
251
  * Harness for interacting with datepicker calendar in tests.
111
252
  */
@@ -192,6 +333,27 @@ class SkyDatepickerCalendarHarness extends SkyComponentHarness {
192
333
  }
193
334
  }
194
335
 
336
+ /**
337
+ * Harness to interact with the datepicker input harness.
338
+ */
339
+ class SkyDatepickerInputHarness extends SkyInputHarness {
340
+ /**
341
+ * @internal
342
+ */
343
+ static { this.hostSelector = '[skyDatepickerInput]'; }
344
+ /**
345
+ * Sets the value of the input.
346
+ */
347
+ async setValue(value) {
348
+ await super.setValue(value);
349
+ await (await this.host()).blur();
350
+ await (await this.host()).dispatchEvent('change');
351
+ }
352
+ }
353
+
354
+ /**
355
+ * Harness for interacting with datepicker components in tests.
356
+ */
195
357
  class SkyDatepickerHarness extends SkyComponentHarness {
196
358
  /**
197
359
  * @internal
@@ -215,7 +377,7 @@ class SkyDatepickerHarness extends SkyComponentHarness {
215
377
  * Clicks the calendar button.
216
378
  */
217
379
  async clickCalendarButton() {
218
- return (await this.#getCalendarButton()).click();
380
+ return await (await this.#getCalendarButton()).click();
219
381
  }
220
382
  /**
221
383
  * Gets the `SkyDatepickerCalendarHarness` for the calendar picker controlled by
@@ -228,6 +390,12 @@ class SkyDatepickerHarness extends SkyComponentHarness {
228
390
  }
229
391
  return await this.#documentRootLocator.locatorFor(SkyDatepickerCalendarHarness.with({ selector: `#${calendarId}` }))();
230
392
  }
393
+ /**
394
+ * Gets the datepicker input harness.
395
+ */
396
+ async getControl() {
397
+ return await this.locatorFor(SkyDatepickerInputHarness)();
398
+ }
231
399
  /**
232
400
  * Whether the datepicker calendar picker is open.
233
401
  */
@@ -235,7 +403,7 @@ class SkyDatepickerHarness extends SkyComponentHarness {
235
403
  return ((await (await this.#getCalendarButton()).getAttribute('aria-expanded')) === 'true');
236
404
  }
237
405
  async #getAriaControls() {
238
- return (await this.#getCalendarButton()).getAttribute('aria-controls');
406
+ return await (await this.#getCalendarButton()).getAttribute('aria-controls');
239
407
  }
240
408
  }
241
409
 
@@ -243,5 +411,5 @@ class SkyDatepickerHarness extends SkyComponentHarness {
243
411
  * Generated bundle index. Do not edit.
244
412
  */
245
413
 
246
- export { SkyDatepickerCalendarHarness, SkyDatepickerFixture, SkyDatepickerHarness, SkyTimepickerFixture };
414
+ export { SkyDateRangePickerHarness, SkyDatepickerCalendarHarness, SkyDatepickerFixture, SkyDatepickerHarness, SkyTimepickerFixture };
247
415
  //# sourceMappingURL=skyux-datetime-testing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-datetime-testing.mjs","sources":["../../../../../libs/components/datetime/testing/src/datepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/timepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/datepicker/datepicker-calendar-harness.ts","../../../../../libs/components/datetime/testing/src/datepicker/datepicker-harness.ts","../../../../../libs/components/datetime/testing/src/skyux-datetime-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX datepicker component.\n * @internal\n */\nexport class SkyDatepickerFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-datepicker',\n );\n }\n\n /**\n * The datepicker's currently selected date.\n */\n public get date(): string {\n return this.#getDatepickerInputEl().nativeElement.value;\n }\n\n /**\n * Flag indicating if datepicker input is disabled.\n */\n public get disabled(): boolean {\n return this.#getDatepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * The datepicker's calendar element.\n */\n public get calendarEl(): any {\n const button = this.#debugEl.query(\n By.css('.sky-datepicker .sky-input-group-datepicker-btn'),\n ).nativeElement;\n\n const calendarId = button.getAttribute('aria-controls');\n if (!calendarId) {\n return null;\n }\n\n return document.getElementById(calendarId);\n }\n\n /**\n * Click the calendar button to open or close calendar.\n */\n public clickDatepickerCalenderButtonEl(): void {\n this.#debugEl\n .query(By.css('.sky-datepicker .sky-input-group-datepicker-btn'))\n .nativeElement.click();\n }\n\n public clickDayEl(dayIndex: number): void {\n const dayEls = this.calendarEl.querySelectorAll('.sky-datepicker-btn-date');\n\n const dayEl = dayEls[dayIndex];\n\n if (!dayEl) {\n throw new Error(`No day exists at index ${dayIndex}.`);\n }\n\n dayEl.click();\n }\n\n #getDatepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-datepicker input'));\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX timepicker component.\n * @internal\n */\nexport class SkyTimepickerFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-timepicker',\n );\n }\n\n /**\n * The timepicker's currently selected time.\n */\n public get value(): string {\n return this.#getTimepickerInputEl().nativeElement.value;\n }\n\n /**\n * Set the timepicker's selected time.\n */\n public set value(value: string) {\n const timepickerInputEl = this.#getTimepickerInputEl().nativeElement;\n timepickerInputEl.value = value;\n this.#fixture.detectChanges();\n\n SkyAppTestUtility.fireDomEvent(timepickerInputEl, 'change');\n this.#fixture.detectChanges();\n }\n\n /**\n * Flag indicating if timepicker input is disabled.\n */\n public get isDisabled(): boolean {\n return this.#getTimepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * Set the timepicker's disabled value\n */\n public set isDisabled(value: boolean) {\n this.#getTimepickerInputEl().nativeElement.disabled = value;\n }\n\n /**\n * Flag indicating if timepicker input is valid.\n */\n public get isValid(): boolean {\n return !this.#getTimepickerInputEl().nativeElement.classList.contains(\n 'ng-invalid',\n );\n }\n\n #getTimepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-timepicker input'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarnessFilters } from './datepicker-calendar-harness.filters';\n\n/**\n * Harness for interacting with datepicker calendar in tests.\n */\nexport class SkyDatepickerCalendarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-datepicker-calendar-container';\n\n #getDaypicker = this.locatorForOptional('sky-daypicker');\n #getMonthpicker = this.locatorForOptional('sky-monthpicker');\n #getNextButton = this.locatorFor('.sky-datepicker-btn-next');\n #getPreviousButton = this.locatorFor('.sky-datepicker-btn-previous');\n #getSelected = this.locatorFor('.sky-datepicker-btn-selected');\n #getTitle = this.locatorFor('.sky-datepicker-calendar-title > strong');\n #getTitleButton = this.locatorFor('.sky-datepicker-calendar-title');\n\n /**\n * @internal\n */\n public static with(\n filters: SkyDatepickerCalendarHarnessFilters,\n ): HarnessPredicate<SkyDatepickerCalendarHarness> {\n return new HarnessPredicate(SkyDatepickerCalendarHarness, filters);\n }\n\n /**\n * Clicks the specified date, month or year.\n * @params the specified value to click, in the following format\n * day format: dddd, MMMM Do YYYY\n * month format: MMMM YYYY\n * year format: YYYY\n */\n public async clickDate(date: string): Promise<void> {\n try {\n return (await this.locatorFor(`[aria-label=\"${date}\"]`)()).click();\n } catch {\n throw new Error(\n `Unable to find date with label \"${date}\". Check that the format is correct and matches the current calendar mode.`,\n );\n }\n }\n\n /**\n * Clicks the 'next' button on the calendar header.\n */\n public async clickNextButton(): Promise<void> {\n return (await this.#getNextButton()).click();\n }\n\n /**\n * Clicks the 'previous' button on the calendar header.\n */\n public async clickPreviousButton(): Promise<void> {\n return (await this.#getPreviousButton()).click();\n }\n\n /**\n * Clicks the 'title' button on the calendar header.\n */\n public async clickTitleButton(): Promise<void> {\n const button = await this.#getTitleButton();\n\n if (await button.hasClass('sky-btn-disabled')) {\n throw new Error('Title button is disabled.');\n }\n\n return button.click();\n }\n\n /**\n * Gets the current calendar mode.\n */\n public async getCalendarMode(): Promise<string> {\n if (await this.#getDaypicker()) {\n return 'day';\n } else if (await this.#getMonthpicker()) {\n return 'month';\n } else {\n return 'year';\n }\n }\n\n /**\n * Gets the current title.\n */\n public async getCalendarTitle(): Promise<string> {\n return (await (await this.#getTitle()).text()).trim();\n }\n\n /**\n * Gets the value of the currently selected calendar item.\n */\n public async getSelectedValue(): Promise<string | null> {\n return (await this.#getSelected()).getAttribute('aria-label');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarness } from './datepicker-calendar-harness';\nimport { SkyDatepickerFilters } from './datepicker-harness.filters';\n\nexport class SkyDatepickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-datepicker, .sky-input-group';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getCalendarButton = this.locatorFor('.sky-input-group-datepicker-btn');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDatepickerHarness` that meets certain criteria.\n *\n * These filters only work for standalone datepickers. For datepickers\n * wrapped inside `sky-input-box`, place filters on the input box instead and\n * query the datepicker using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static with(\n filters: SkyDatepickerFilters,\n ): HarnessPredicate<SkyDatepickerHarness> {\n return SkyDatepickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the calendar button.\n */\n public async clickCalendarButton(): Promise<void> {\n return (await this.#getCalendarButton()).click();\n }\n\n /**\n * Gets the `SkyDatepickerCalendarHarness` for the calendar picker controlled by\n * the datepicker. Throws an error if the calendar picker is not open.\n */\n public async getDatepickerCalendar(): Promise<SkyDatepickerCalendarHarness> {\n const calendarId = await this.#getAriaControls();\n\n if (!calendarId) {\n throw new Error(\n 'Unable to get calendar picker because picker is closed.',\n );\n }\n\n return await this.#documentRootLocator.locatorFor(\n SkyDatepickerCalendarHarness.with({ selector: `#${calendarId}` }),\n )();\n }\n\n /**\n * Whether the datepicker calendar picker is open.\n */\n public async isDatepickerOpen(): Promise<boolean> {\n return (\n (await (\n await this.#getCalendarButton()\n ).getAttribute('aria-expanded')) === 'true'\n );\n }\n\n async #getAriaControls(): Promise<string | null> {\n return (await this.#getCalendarButton()).getAttribute('aria-controls');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skyux-datetime-testing.mjs","sources":["../../../../../libs/components/datetime/testing/src/datepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/timepicker-fixture.ts","../../../../../libs/components/datetime/testing/src/date-range-picker/date-range-picker-harness.ts","../../../../../libs/components/datetime/testing/src/datepicker/datepicker-calendar-harness.ts","../../../../../libs/components/datetime/testing/src/datepicker/datepicker-harness-input.ts","../../../../../libs/components/datetime/testing/src/datepicker/datepicker-harness.ts","../../../../../libs/components/datetime/testing/src/skyux-datetime-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX datepicker component.\n * @internal\n */\nexport class SkyDatepickerFixture {\n #debugEl: DebugElement;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-datepicker',\n );\n }\n\n /**\n * The datepicker's currently selected date.\n */\n public get date(): string {\n return this.#getDatepickerInputEl().nativeElement.value;\n }\n\n /**\n * Flag indicating if datepicker input is disabled.\n */\n public get disabled(): boolean {\n return this.#getDatepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * The datepicker's calendar element.\n */\n public get calendarEl(): any {\n const button = this.#debugEl.query(\n By.css('.sky-datepicker .sky-input-group-datepicker-btn'),\n ).nativeElement;\n\n const calendarId = button.getAttribute('aria-controls');\n if (!calendarId) {\n return null;\n }\n\n return document.getElementById(calendarId);\n }\n\n /**\n * Click the calendar button to open or close calendar.\n */\n public clickDatepickerCalenderButtonEl(): void {\n this.#debugEl\n .query(By.css('.sky-datepicker .sky-input-group-datepicker-btn'))\n .nativeElement.click();\n }\n\n public clickDayEl(dayIndex: number): void {\n const dayEls = this.calendarEl.querySelectorAll('.sky-datepicker-btn-date');\n\n const dayEl = dayEls[dayIndex];\n\n if (!dayEl) {\n throw new Error(`No day exists at index ${dayIndex}.`);\n }\n\n dayEl.click();\n }\n\n #getDatepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-datepicker input'));\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Allows interaction with a SKY UX timepicker component.\n * @internal\n */\nexport class SkyTimepickerFixture {\n #debugEl: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-timepicker',\n );\n }\n\n /**\n * The timepicker's currently selected time.\n */\n public get value(): string {\n return this.#getTimepickerInputEl().nativeElement.value;\n }\n\n /**\n * Set the timepicker's selected time.\n */\n public set value(value: string) {\n const timepickerInputEl = this.#getTimepickerInputEl().nativeElement;\n timepickerInputEl.value = value;\n this.#fixture.detectChanges();\n\n SkyAppTestUtility.fireDomEvent(timepickerInputEl, 'change');\n this.#fixture.detectChanges();\n }\n\n /**\n * Flag indicating if timepicker input is disabled.\n */\n public get isDisabled(): boolean {\n return this.#getTimepickerInputEl().nativeElement.disabled;\n }\n\n /**\n * Set the timepicker's disabled value\n */\n public set isDisabled(value: boolean) {\n this.#getTimepickerInputEl().nativeElement.disabled = value;\n }\n\n /**\n * Flag indicating if timepicker input is valid.\n */\n public get isValid(): boolean {\n return !this.#getTimepickerInputEl().nativeElement.classList.contains(\n 'ng-invalid',\n );\n }\n\n #getTimepickerInputEl(): DebugElement {\n return this.#debugEl.query(By.css('.sky-timepicker input'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { SkyDateRangeCalculatorId } from '@skyux/datetime';\nimport { SkyInputBoxHarness } from '@skyux/forms/testing';\n\nimport { SkyDatepickerHarness } from '../public-api';\n\nimport { SkyDateRangePickerFilters } from './date-range-picker-harness.filters';\n\n/**\n * Harness for interacting with date range picker components in tests.\n */\nexport class SkyDateRangePickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-date-range-picker';\n\n #getStartDateInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-start-date',\n }),\n );\n #getEndDateInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-end-date',\n }),\n );\n #getCalculatorIdInputBoxHarness = this.locatorFor(\n SkyInputBoxHarness.with({\n ancestor: '.sky-date-range-picker-select-calculator',\n }),\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDateRangePickerHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyDateRangePickerFilters,\n ): HarnessPredicate<SkyDateRangePickerHarness> {\n return SkyDateRangePickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the help inline button.\n */\n public async clickHelpInline(): Promise<void> {\n await (await this.#getCalculatorIdInputBoxHarness()).clickHelpInline();\n }\n\n /**\n * Gets the help popover content.\n */\n public async getHelpPopoverContent(): Promise<string | undefined> {\n return (await (\n await this.#getCalculatorIdInputBoxHarness()\n ).getHelpPopoverContent()) as string | undefined;\n }\n\n /**\n * Gets the help inline popover title.\n */\n public async getHelpPopoverTitle(): Promise<string | undefined> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).getHelpPopoverTitle();\n }\n\n /**\n * Gets the hint text.\n */\n public async getHintText(): Promise<string> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getHintText();\n }\n\n /**\n * Gets the label text.\n */\n public async getLabelText(): Promise<string> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getLabelText();\n }\n\n /**\n * Whether date range picker end date before start date error is thrown.\n */\n public async hasEndDateBeforeStartDateError(): Promise<boolean> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).hasCustomFormError('endDateBeforeStartDate');\n }\n\n /**\n * Whether end date input has required error.\n */\n public async hasEndDateRequiredError(): Promise<boolean> {\n return await (await this.#getEndDateInputBoxHarness()).hasRequiredError();\n }\n\n /**\n * Whether a custom error has fired.\n * @params errorName `errorName` property of the custom `sky-form-error`.\n */\n public async hasError(errorName: string): Promise<boolean> {\n return await (\n await this.#getCalculatorIdInputBoxHarness()\n ).hasCustomFormError(errorName);\n }\n\n /**\n * Whether start date input has required error.\n */\n public async hasStartDateRequiredError(): Promise<boolean> {\n return await (await this.#getStartDateInputBoxHarness()).hasRequiredError();\n }\n\n /**\n * Whether the date range picker component is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getCalculatorIdInputBoxHarness()).getDisabled();\n }\n\n /**\n * Whether end date datepicker is visible.\n */\n public async isEndDateVisible(): Promise<boolean> {\n return !(await (\n await this.locatorFor('.sky-date-range-picker-end-date')()\n ).getProperty('hidden'));\n }\n\n /**\n * Whether the date range picker has stacked enabled.\n */\n public async isStacked(): Promise<boolean> {\n return await (await this.host()).hasClass('sky-form-field-stacked');\n }\n\n /**\n * Whether start date datepicker is visible.\n */\n public async isStartDateVisible(): Promise<boolean> {\n return !(await (\n await this.locatorFor('.sky-date-range-picker-start-date')()\n ).getProperty('hidden'));\n }\n\n /**\n * Selects the specified calculator.\n */\n public async selectCalculator(\n calculatorId: SkyDateRangeCalculatorId,\n ): Promise<void> {\n const select = await this.locatorFor(\n 'select[FormControlName=\"calculatorId\"',\n )();\n return await select.selectOptions(calculatorId);\n }\n\n /**\n * Sets the end date.\n * @param newDate date input as a formatted string.\n */\n public async setEndDateValue(newDate: string): Promise<void> {\n if (!(await this.isEndDateVisible())) {\n throw new Error('Unable to set end date. End datepicker is not visible.');\n }\n const input = await (await this.#getEndDatepicker()).getControl();\n await input.setValue(newDate);\n }\n\n /**\n * Sets the start date.\n * @param newDate date input as a formatted string.\n */\n public async setStartDateValue(newDate: string): Promise<void> {\n if (!(await this.isEndDateVisible())) {\n throw new Error(\n 'Unable to set start date. Start datepicker is not visible.',\n );\n }\n const input = await (await this.#getStartDatepicker()).getControl();\n await input.setValue(newDate);\n }\n\n async #getEndDatepicker(): Promise<SkyDatepickerHarness> {\n return await (\n await this.#getEndDateInputBoxHarness()\n ).queryHarness(SkyDatepickerHarness);\n }\n\n async #getStartDatepicker(): Promise<SkyDatepickerHarness> {\n return await (\n await this.#getStartDateInputBoxHarness()\n ).queryHarness(SkyDatepickerHarness);\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarnessFilters } from './datepicker-calendar-harness.filters';\n\n/**\n * Harness for interacting with datepicker calendar in tests.\n */\nexport class SkyDatepickerCalendarHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-datepicker-calendar-container';\n\n #getDaypicker = this.locatorForOptional('sky-daypicker');\n #getMonthpicker = this.locatorForOptional('sky-monthpicker');\n #getNextButton = this.locatorFor('.sky-datepicker-btn-next');\n #getPreviousButton = this.locatorFor('.sky-datepicker-btn-previous');\n #getSelected = this.locatorFor('.sky-datepicker-btn-selected');\n #getTitle = this.locatorFor('.sky-datepicker-calendar-title > strong');\n #getTitleButton = this.locatorFor('.sky-datepicker-calendar-title');\n\n /**\n * @internal\n */\n public static with(\n filters: SkyDatepickerCalendarHarnessFilters,\n ): HarnessPredicate<SkyDatepickerCalendarHarness> {\n return new HarnessPredicate(SkyDatepickerCalendarHarness, filters);\n }\n\n /**\n * Clicks the specified date, month or year.\n * @params the specified value to click, in the following format\n * day format: dddd, MMMM Do YYYY\n * month format: MMMM YYYY\n * year format: YYYY\n */\n public async clickDate(date: string): Promise<void> {\n try {\n return (await this.locatorFor(`[aria-label=\"${date}\"]`)()).click();\n } catch {\n throw new Error(\n `Unable to find date with label \"${date}\". Check that the format is correct and matches the current calendar mode.`,\n );\n }\n }\n\n /**\n * Clicks the 'next' button on the calendar header.\n */\n public async clickNextButton(): Promise<void> {\n return (await this.#getNextButton()).click();\n }\n\n /**\n * Clicks the 'previous' button on the calendar header.\n */\n public async clickPreviousButton(): Promise<void> {\n return (await this.#getPreviousButton()).click();\n }\n\n /**\n * Clicks the 'title' button on the calendar header.\n */\n public async clickTitleButton(): Promise<void> {\n const button = await this.#getTitleButton();\n\n if (await button.hasClass('sky-btn-disabled')) {\n throw new Error('Title button is disabled.');\n }\n\n return button.click();\n }\n\n /**\n * Gets the current calendar mode.\n */\n public async getCalendarMode(): Promise<string> {\n if (await this.#getDaypicker()) {\n return 'day';\n } else if (await this.#getMonthpicker()) {\n return 'month';\n } else {\n return 'year';\n }\n }\n\n /**\n * Gets the current title.\n */\n public async getCalendarTitle(): Promise<string> {\n return (await (await this.#getTitle()).text()).trim();\n }\n\n /**\n * Gets the value of the currently selected calendar item.\n */\n public async getSelectedValue(): Promise<string | null> {\n return (await this.#getSelected()).getAttribute('aria-label');\n }\n}\n","import { SkyInputHarness } from '@skyux/core/testing';\n\n/**\n * Harness to interact with the datepicker input harness.\n */\nexport class SkyDatepickerInputHarness extends SkyInputHarness {\n /**\n * @internal\n */\n public static hostSelector = '[skyDatepickerInput]';\n\n /**\n * Sets the value of the input.\n */\n public override async setValue(value: string): Promise<void> {\n await super.setValue(value);\n\n await (await this.host()).blur();\n await (await this.host()).dispatchEvent('change');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyDatepickerCalendarHarness } from './datepicker-calendar-harness';\nimport { SkyDatepickerInputHarness } from './datepicker-harness-input';\nimport { SkyDatepickerFilters } from './datepicker-harness.filters';\n\n/**\n * Harness for interacting with datepicker components in tests.\n */\nexport class SkyDatepickerHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-datepicker, .sky-input-group';\n\n #documentRootLocator = this.documentRootLocatorFactory();\n\n #getCalendarButton = this.locatorFor('.sky-input-group-datepicker-btn');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDatepickerHarness` that meets certain criteria.\n *\n * These filters only work for standalone datepickers. For datepickers\n * wrapped inside `sky-input-box`, place filters on the input box instead and\n * query the datepicker using a `SkyInputBoxHarness`.\n * For the input box implementation, see the code example.\n */\n public static with(\n filters: SkyDatepickerFilters,\n ): HarnessPredicate<SkyDatepickerHarness> {\n return SkyDatepickerHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Clicks the calendar button.\n */\n public async clickCalendarButton(): Promise<void> {\n return await (await this.#getCalendarButton()).click();\n }\n\n /**\n * Gets the `SkyDatepickerCalendarHarness` for the calendar picker controlled by\n * the datepicker. Throws an error if the calendar picker is not open.\n */\n public async getDatepickerCalendar(): Promise<SkyDatepickerCalendarHarness> {\n const calendarId = await this.#getAriaControls();\n\n if (!calendarId) {\n throw new Error(\n 'Unable to get calendar picker because picker is closed.',\n );\n }\n\n return await this.#documentRootLocator.locatorFor(\n SkyDatepickerCalendarHarness.with({ selector: `#${calendarId}` }),\n )();\n }\n\n /**\n * Gets the datepicker input harness.\n */\n public async getControl(): Promise<SkyDatepickerInputHarness> {\n return await this.locatorFor(SkyDatepickerInputHarness)();\n }\n\n /**\n * Whether the datepicker calendar picker is open.\n */\n public async isDatepickerOpen(): Promise<boolean> {\n return (\n (await (\n await this.#getCalendarButton()\n ).getAttribute('aria-expanded')) === 'true'\n );\n }\n\n async #getAriaControls(): Promise<string | null> {\n return await (\n await this.#getCalendarButton()\n ).getAttribute('aria-controls');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -4396,7 +4396,7 @@ class SkyDateRangePickerComponent {
4396
4396
  multi: true,
4397
4397
  },
4398
4398
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
4399
- ], ngImport: i0, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n [errorName]=\"'endDateBeforeStartDate'\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <ng-content select=\"sky-form-error\" />\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SkyDatepickerModule }, { kind: "component", type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange", "calendarDateChange"] }, { kind: "directive", type: SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "startAtDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "pipe", type: SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }, { kind: "ngmodule", type: SkyDatetimeResourcesModule }, { kind: "pipe", type: i1.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i2$3.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i2$3.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "component", type: i2$3.λ22, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4399
+ ], ngImport: i0, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SkyDatepickerModule }, { kind: "component", type: SkyDatepickerComponent, selector: "sky-datepicker", inputs: ["pickerClass"], outputs: ["calendarDateRangeChange", "dateFormatChange", "openChange", "calendarDateChange"] }, { kind: "directive", type: SkyDatepickerInputDirective, selector: "[skyDatepickerInput]", inputs: ["dateFormat", "disabled", "maxDate", "minDate", "startAtDate", "skyDatepickerInput", "skyDatepickerNoValidate", "startingDay", "strict"] }, { kind: "pipe", type: SkyDateRangePickerEndDateResourceKeyPipe, name: "skyDateRangePickerEndDateResourceKey" }, { kind: "pipe", type: SkyDateRangePickerStartDateResourceKeyPipe, name: "skyDateRangePickerStartDateResourceKey" }, { kind: "ngmodule", type: SkyDatetimeResourcesModule }, { kind: "pipe", type: i1.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i2$3.λ10, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i2$3.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "component", type: i2$3.λ22, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "ngmodule", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4400
4400
  }
4401
4401
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{
4402
4402
  type: Component,
@@ -4422,7 +4422,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
4422
4422
  multi: true,
4423
4423
  },
4424
4424
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
4425
- ], selector: 'sky-date-range-picker', standalone: true, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n [errorName]=\"'endDateBeforeStartDate'\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <ng-content select=\"sky-form-error\" />\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"] }]
4425
+ ], selector: 'sky-date-range-picker', standalone: true, template: "<div class=\"sky-date-range-picker\" [formGroup]=\"formGroup\">\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n !showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"calculatorIdHasErrors()\"\n [helpKey]=\"helpKey\"\n [helpPopoverContent]=\"helpPopoverContent\"\n [helpPopoverTitle]=\"helpPopoverTitle\"\n [hintText]=\"hintText\"\n [labelText]=\"\n labelText ||\n label ||\n ('skyux_date_range_picker_default_label' | skyLibResources)\n \"\n >\n <select\n formControlName=\"calculatorId\"\n (blur)=\"onBlur()\"\n (change)=\"onCalculatorIdChange()\"\n >\n @for (calculator of calculators; track calculator.calculatorId) {\n <option [value]=\"calculator.calculatorId\">\n {{\n calculator._shortDescriptionResourceKey\n ? (calculator._shortDescriptionResourceKey | skyLibResources)\n : calculator.shortDescription\n }}\n </option>\n }\n </select>\n @if (\n hostControl?.errors?.['skyDateRange']?.errors?.[\n 'endDateBeforeStartDate'\n ] && labelText\n ) {\n <sky-form-error\n errorName=\"endDateBeforeStartDate\"\n [errorText]=\"\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\n | skyLibResources\n \"\n />\n }\n <span class=\"sky-input-box-descendent-form-error\">\n <ng-content select=\"sky-form-error\" />\n </span>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\"\n [hidden]=\"!showStartDatePicker()\"\n [ngClass]=\"{\n 'sky-date-range-picker-last-input':\n showStartDatePicker() && !showEndDatePicker()\n }\"\n >\n <sky-input-box\n [hasErrors]=\"startDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"startDate\"\n name=\"startDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerStartDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showStartDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n <div\n class=\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\"\n [hidden]=\"!showEndDatePicker()\"\n [ngClass]=\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\"\n >\n <sky-input-box\n [hasErrors]=\"endDateHasErrors()\"\n [labelText]=\"\n selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources\n \"\n >\n <sky-datepicker (calendarDateChange)=\"onDateChange()\">\n <input\n formControlName=\"endDate\"\n name=\"endDate\"\n skyDatepickerInput\n type=\"text\"\n [attr.aria-label]=\"\n labelText || label\n ? ('skyux_date_range_picker_default_aria_label'\n | skyLibResources\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n : (labelText ? labelText : label))\n : (selectedCalculator.type\n | skyDateRangePickerEndDateResourceKey\n | skyLibResources)\n \"\n [dateFormat]=\"dateFormat\"\n [required]=\"showEndDatePicker()\"\n (change)=\"onDateChange()\"\n />\n </sky-datepicker>\n </sky-input-box>\n </div>\n</div>\n", styles: [".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg );--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\n"] }]
4426
4426
  }], propDecorators: { calculatorIds: [{
4427
4427
  type: Input
4428
4428
  }], dateFormat: [{