diff --git a/.changeset/clever-weeks-grin.md b/.changeset/clever-weeks-grin.md new file mode 100644 index 00000000000..f11e5cfa9b5 --- /dev/null +++ b/.changeset/clever-weeks-grin.md @@ -0,0 +1,7 @@ +--- +"@siemens/ix-angular": minor +"@siemens/ix": minor +"@siemens/ix-vue": minor +--- + +feat(core/date-dropdown|date-picker|datetime-picker): add missing properties to picker components diff --git a/packages/angular/src/components.ts b/packages/angular/src/components.ts index 9eb6d100afe..13560587b85 100644 --- a/packages/angular/src/components.ts +++ b/packages/angular/src/components.ts @@ -488,7 +488,7 @@ export declare interface IxContentHeader extends Components.IxContentHeader { @ProxyCmp({ - inputs: ['customRangeAllowed', 'dateRangeId', 'dateRangeOptions', 'disabled', 'format', 'from', 'i18nCustomItem', 'i18nDone', 'i18nNoRange', 'maxDate', 'minDate', 'range', 'to'], + inputs: ['customRangeAllowed', 'dateRangeId', 'dateRangeOptions', 'disabled', 'format', 'from', 'i18nCustomItem', 'i18nDone', 'i18nNoRange', 'locale', 'maxDate', 'minDate', 'range', 'to', 'weekStartIndex'], methods: ['getDateRange'] }) @Component({ @@ -496,7 +496,7 @@ export declare interface IxContentHeader extends Components.IxContentHeader { changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['customRangeAllowed', 'dateRangeId', 'dateRangeOptions', 'disabled', 'format', 'from', 'i18nCustomItem', 'i18nDone', 'i18nNoRange', 'maxDate', 'minDate', 'range', 'to'], + inputs: ['customRangeAllowed', 'dateRangeId', 'dateRangeOptions', 'disabled', 'format', 'from', 'i18nCustomItem', 'i18nDone', 'i18nNoRange', 'locale', 'maxDate', 'minDate', 'range', 'to', 'weekStartIndex'], }) export class IxDateDropdown { protected el: HTMLElement; diff --git a/packages/core/component-doc.json b/packages/core/component-doc.json index 15c74bf5562..ad52a530aa9 100644 --- a/packages/core/component-doc.json +++ b/packages/core/component-doc.json @@ -3579,6 +3579,32 @@ "optional": false, "required": false }, + { + "name": "locale", + "type": "string", + "complexType": { + "original": "string", + "resolved": "string", + "references": {} + }, + "mutable": false, + "attr": "locale", + "reflectToAttr": false, + "docs": "Locale identifier (e.g. 'en' or 'de').", + "docsTags": [ + { + "name": "since", + "text": "2.6.0" + } + ], + "values": [ + { + "type": "string" + } + ], + "optional": true, + "required": false + }, { "name": "maxDate", "type": "string", @@ -3666,6 +3692,33 @@ ], "optional": false, "required": false + }, + { + "name": "weekStartIndex", + "type": "number", + "complexType": { + "original": "number", + "resolved": "number", + "references": {} + }, + "mutable": false, + "attr": "week-start-index", + "reflectToAttr": false, + "docs": "The index of which day to start the week on, based on the Locale#weekdays array.\nE.g. if the locale is en-us, weekStartIndex = 1 results in starting the week on monday.", + "docsTags": [ + { + "name": "since", + "text": "2.6.0" + } + ], + "default": "0", + "values": [ + { + "type": "number" + } + ], + "optional": false, + "required": false } ], "methods": [ @@ -3954,7 +4007,7 @@ "mutable": false, "attr": "locale", "reflectToAttr": false, - "docs": "Format of time string\nSee {@link \"https://moment.github.io/luxon/#/formatting?id=table-of-tokens\"} for all available tokens.", + "docs": "Locale identifier (e.g. 'en' or 'de').", "docsTags": [ { "name": "since", @@ -17749,6 +17802,11 @@ "docstring": "", "path": "src/components/css-grid/css-grid.tsx" }, + "src/components/date-time-card/date-time-card.tsx::DateTimeCardCorners": { + "declaration": "export type DateTimeCardCorners = 'rounded' | 'left' | 'right' | 'straight';", + "docstring": "", + "path": "src/components/date-time-card/date-time-card.tsx" + }, "src/components/date-dropdown/date-dropdown.tsx::DateDropdownOption": { "declaration": "{\n id: string;\n label: string;\n from: string;\n to: string;\n}", "docstring": "", @@ -17759,11 +17817,6 @@ "docstring": "", "path": "src/components/date-dropdown/date-dropdown.tsx" }, - "src/components/date-time-card/date-time-card.tsx::DateTimeCardCorners": { - "declaration": "export type DateTimeCardCorners = 'rounded' | 'left' | 'right' | 'straight';", - "docstring": "", - "path": "src/components/date-time-card/date-time-card.tsx" - }, "src/components/date-picker/date-picker.tsx::DateChangeEvent": { "declaration": "{\n from: string;\n to: string;\n}", "docstring": "", @@ -17785,7 +17838,7 @@ "path": "src/components/dropdown-button/dropdown-button.tsx" }, "src/components/dropdown/placement.ts::AlignedPlacement": { - "declaration": "\"bottom-start\" | \"top-start\" | \"top-end\" | \"right-start\" | \"right-end\" | \"bottom-end\" | \"left-start\" | \"left-end\"", + "declaration": "\"bottom-start\" | \"left-start\" | \"left-end\" | \"right-start\" | \"right-end\" | \"top-start\" | \"top-end\" | \"bottom-end\"", "docstring": "", "path": "src/components/dropdown/placement.ts" }, diff --git a/packages/core/src/components.d.ts b/packages/core/src/components.d.ts index 00edf5ba082..588eb0da58b 100644 --- a/packages/core/src/components.d.ts +++ b/packages/core/src/components.d.ts @@ -576,6 +576,11 @@ export namespace Components { * Text for the done button. Will be used for translation. */ "i18nNoRange": string; + /** + * Locale identifier (e.g. 'en' or 'de'). + * @since 2.6.0 + */ + "locale"?: string; /** * The latest date that can be selected by the date picker. If not set there will be no restriction. */ @@ -593,6 +598,11 @@ export namespace Components { */ "to": string; "today": string; + /** + * The index of which day to start the week on, based on the Locale#weekdays array. E.g. if the locale is en-us, weekStartIndex = 1 results in starting the week on monday. + * @since 2.6.0 + */ + "weekStartIndex": number; } interface IxDatePicker { /** @@ -628,7 +638,7 @@ export namespace Components { */ "individual": boolean; /** - * Format of time string See {@link "https://moment.github.io/luxon/#/formatting?id=table-of-tokens"} for all available tokens. + * Locale identifier (e.g. 'en' or 'de'). * @since 2.1.0 */ "locale"?: string; @@ -4669,6 +4679,11 @@ declare namespace LocalJSX { * Text for the done button. Will be used for translation. */ "i18nNoRange"?: string; + /** + * Locale identifier (e.g. 'en' or 'de'). + * @since 2.6.0 + */ + "locale"?: string; /** * The latest date that can be selected by the date picker. If not set there will be no restriction. */ @@ -4690,6 +4705,11 @@ declare namespace LocalJSX { */ "to"?: string; "today"?: string; + /** + * The index of which day to start the week on, based on the Locale#weekdays array. E.g. if the locale is en-us, weekStartIndex = 1 results in starting the week on monday. + * @since 2.6.0 + */ + "weekStartIndex"?: number; } interface IxDatePicker { /** @@ -4721,7 +4741,7 @@ declare namespace LocalJSX { */ "individual"?: boolean; /** - * Format of time string See {@link "https://moment.github.io/luxon/#/formatting?id=table-of-tokens"} for all available tokens. + * Locale identifier (e.g. 'en' or 'de'). * @since 2.1.0 */ "locale"?: string; diff --git a/packages/core/src/components/date-dropdown/date-dropdown.tsx b/packages/core/src/components/date-dropdown/date-dropdown.tsx index 80a2a0f6f80..78def47fefb 100644 --- a/packages/core/src/components/date-dropdown/date-dropdown.tsx +++ b/packages/core/src/components/date-dropdown/date-dropdown.tsx @@ -21,6 +21,7 @@ import { Watch, } from '@stencil/core'; import { DateTime } from 'luxon'; +import { IxDatePickerComponent } from '../date-picker/date-picker-component'; import { makeRef } from '../utils/make-ref'; export type DateDropdownOption = { @@ -44,7 +45,7 @@ export type DateRangeChangeEvent = { styleUrl: 'date-dropdown.scss', shadow: true, }) -export class DateDropdown { +export class DateDropdown implements Omit { @Element() hostElement!: HTMLIxDateDropdownElement; /** @@ -144,6 +145,21 @@ export class DateDropdown { this.onDateRangeIdChange(); } + /** + * Locale identifier (e.g. 'en' or 'de'). + * + * @since 2.6.0 + */ + @Prop() locale?: string; + + /** + * The index of which day to start the week on, based on the Locale#weekdays array. + * E.g. if the locale is en-us, weekStartIndex = 1 results in starting the week on monday. + * + * @since 2.6.0 + */ + @Prop() weekStartIndex = 0; + /** * Text for custom dropdown item. Will be used for translation. */ @@ -365,6 +381,7 @@ export class DateDropdown { { e.stopPropagation(); this.currentRangeValue = { @@ -381,6 +398,7 @@ export class DateDropdown { minDate={this.minDate} maxDate={this.maxDate} today={this.today} + weekStartIndex={this.weekStartIndex} >
{this.dayNames.map((name) => (
- {name.slice(0, 3)} +
{name.slice(0, 3)}
))} {this.calendar.map((week) => { diff --git a/packages/core/src/components/datetime-picker/datetime-picker.tsx b/packages/core/src/components/datetime-picker/datetime-picker.tsx index 7324899a1f0..3c71b684ad4 100644 --- a/packages/core/src/components/datetime-picker/datetime-picker.tsx +++ b/packages/core/src/components/datetime-picker/datetime-picker.tsx @@ -9,6 +9,7 @@ import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core'; import type { DateChangeEvent } from '../date-picker/date-picker'; +import { IxDatePickerComponent } from '../date-picker/date-picker-component'; export type DateTimeSelectEvent = { from: string; @@ -25,7 +26,9 @@ export type DateTimeDateChangeEvent = styleUrl: 'datetime-picker.scss', shadow: true, }) -export class DatetimePicker { +export class DatetimePicker + implements Omit +{ /** * If true a date-range can be selected (from/to). */ @@ -241,7 +244,6 @@ export class DatetimePicker { (this.timePickerElement = ref)} - corners="right" standaloneAppearance={false} showHour={this.showHour} showMinutes={this.showMinutes} diff --git a/packages/core/src/tests/date-picker/date-picker.e2e.ts b/packages/core/src/tests/date-picker/date-picker.e2e.ts index 86ab0ad9beb..797d7b82b8c 100644 --- a/packages/core/src/tests/date-picker/date-picker.e2e.ts +++ b/packages/core/src/tests/date-picker/date-picker.e2e.ts @@ -13,15 +13,16 @@ import { regressionTest } from '@utils/test'; regressionTest.describe('date picker', () => { regressionTest('basic', async ({ page }) => { await page.goto('date-picker/basic'); - expect(await page.screenshot({ fullPage: true })).toMatchSnapshot({ - maxDiffPixels: 4, - }); + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); }); regressionTest('range', async ({ page }) => { await page.goto('date-picker/range'); - expect(await page.screenshot({ fullPage: true })).toMatchSnapshot({ - maxDiffPixels: 4, - }); + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); + }); + + regressionTest('locales', async ({ page }) => { + await page.goto('date-picker/i18n'); + expect(await page.screenshot({ fullPage: true })).toMatchSnapshot(); }); }); diff --git a/packages/core/src/tests/date-picker/date-picker.e2e.ts-snapshots/date-picker-locales-1-chromium---theme-classic-dark-linux.png b/packages/core/src/tests/date-picker/date-picker.e2e.ts-snapshots/date-picker-locales-1-chromium---theme-classic-dark-linux.png new file mode 100644 index 00000000000..6bcd5de2f07 Binary files /dev/null and b/packages/core/src/tests/date-picker/date-picker.e2e.ts-snapshots/date-picker-locales-1-chromium---theme-classic-dark-linux.png differ diff --git a/packages/core/src/tests/date-picker/date-picker.e2e.ts-snapshots/date-picker-locales-1-chromium---theme-classic-light-linux.png b/packages/core/src/tests/date-picker/date-picker.e2e.ts-snapshots/date-picker-locales-1-chromium---theme-classic-light-linux.png new file mode 100644 index 00000000000..9e51e94c957 Binary files /dev/null and b/packages/core/src/tests/date-picker/date-picker.e2e.ts-snapshots/date-picker-locales-1-chromium---theme-classic-light-linux.png differ diff --git a/packages/core/src/tests/date-picker/i18n/index.html b/packages/core/src/tests/date-picker/i18n/index.html new file mode 100644 index 00000000000..8c00b845498 --- /dev/null +++ b/packages/core/src/tests/date-picker/i18n/index.html @@ -0,0 +1,43 @@ + + + + + + + + Stencil Component Starter + + +
+ + +
+ + + diff --git a/packages/vue/src/components.ts b/packages/vue/src/components.ts index 1ea941c4d8b..7c74b6097b8 100644 --- a/packages/vue/src/components.ts +++ b/packages/vue/src/components.ts @@ -285,6 +285,8 @@ export const IxDateDropdown = /*@__PURE__*/ defineContainer( 'dateRangeId', 'customRangeAllowed', 'dateRangeOptions', + 'locale', + 'weekStartIndex', 'i18nCustomItem', 'i18nDone', 'i18nNoRange',