Skip to content

Commit ac4c6ce

Browse files
committed
Merge branch 'master' into dmdimitrov/chat-ai-component
2 parents 580e916 + 9321753 commit ac4c6ce

35 files changed

+486
-272
lines changed

package-lock.json

Lines changed: 160 additions & 155 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,20 @@
5252
"prepare": "husky"
5353
},
5454
"dependencies": {
55-
"@floating-ui/dom": "^1.7.3",
55+
"@floating-ui/dom": "^1.7.4",
5656
"@lit-labs/virtualizer": "^2.1.1",
5757
"@lit/context": "^1.1.6",
5858
"lit": "^3.3.1"
5959
},
6060
"devDependencies": {
61-
"@biomejs/biome": "~2.1.3",
62-
"@custom-elements-manifest/analyzer": "^0.10.4",
61+
"@biomejs/biome": "~2.2.2",
62+
"@custom-elements-manifest/analyzer": "^0.10.5",
6363
"@igniteui/material-icons-extended": "^3.1.0",
6464
"@open-wc/testing": "^4.0.0",
65-
"@storybook/addon-a11y": "^9.1.1",
66-
"@storybook/addon-docs": "^9.1.1",
67-
"@storybook/addon-links": "^9.1.1",
68-
"@storybook/web-components-vite": "^9.1.1",
65+
"@storybook/addon-a11y": "^9.1.3",
66+
"@storybook/addon-docs": "^9.1.3",
67+
"@storybook/addon-links": "^9.1.3",
68+
"@storybook/web-components-vite": "^9.1.3",
6969
"@types/mocha": "^10.0.10",
7070
"@web/dev-server-esbuild": "^1.0.4",
7171
"@web/test-runner": "^0.20.2",
@@ -82,21 +82,21 @@
8282
"ig-typedoc-theme": "^6.2.3",
8383
"igniteui-theming": "^19.3.0-beta.4",
8484
"keep-a-changelog": "^2.6.2",
85-
"lint-staged": "^16.1.4",
85+
"lint-staged": "^16.1.5",
8686
"lit-analyzer": "^2.0.3",
8787
"madge": "^8.0.0",
8888
"marked": "^12.0.2",
8989
"marked-shiki": "^1.2.1",
9090
"node-watch": "^0.7.4",
91-
"playwright": "^1.54.2",
91+
"playwright": "^1.55.0",
9292
"postcss": "^8.5.6",
9393
"prettier": "^3.6.2",
9494
"rimraf": "^6.0.1",
9595
"sass-embedded": "~1.78.0",
9696
"shiki": "^3.10.0",
9797
"sinon": "^21.0.0",
98-
"storybook": "^9.1.1",
99-
"stylelint": "^16.23.0",
98+
"storybook": "^9.1.3",
99+
"stylelint": "^16.23.1",
100100
"stylelint-config-standard-scss": "^15.0.1",
101101
"stylelint-prettier": "^5.0.3",
102102
"stylelint-scss": "^6.12.1",
@@ -105,7 +105,7 @@
105105
"typedoc": "~0.27.9",
106106
"typedoc-plugin-localization": "^3.0.6",
107107
"typescript": "^5.8.3",
108-
"vite": "^7.1.0"
108+
"vite": "^7.1.3"
109109
},
110110
"peerDependencies": {
111111
"@google/genai": "^1.3.0",

src/components/combo/controllers/navigation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ export class NavigationController<T extends object>
234234
}
235235

236236
public navigateTo(item: T, container: IgcComboListComponent) {
237-
this.active = this.dataState.findIndex((i) => i === item);
237+
this.active = this.dataState.indexOf(item as ComboRecord<T>);
238238
this.scrollToActive(container, 'smooth');
239239
}
240240

src/components/combo/themes/shared/combo.bootstrap.scss

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ $dropdown-theme: dropdown-theme.$bootstrap;
1717
grid-auto-rows: minmax(rem(20px), auto);
1818
margin-block-start: rem(4px);
1919
}
20+
21+
::slotted([slot='suffix']),
22+
::slotted([slot='prefix']) {
23+
height: 100%;
24+
display: flex;
25+
align-items: center;
26+
}
2027
}
2128

2229
[part='list-wrapper'] {
@@ -128,4 +135,25 @@ $dropdown-theme: dropdown-theme.$bootstrap;
128135
color: inherit;
129136
}
130137
}
138+
139+
::slotted([slot='suffix']),
140+
[part|='toggle'] {
141+
border-inline-end: rem(1px) solid var(--disabled-border-color);
142+
}
143+
144+
::slotted([slot='prefix']) {
145+
border-inline-start: rem(1px) solid var(--disabled-border-color);
146+
}
131147
}
148+
149+
:host(:not([disabled])),
150+
:host(:not(:disabled)) {
151+
::slotted([slot='suffix']),
152+
[part|='toggle'] {
153+
border-inline-end: rem(1px) solid var(--border-color);
154+
}
155+
156+
::slotted([slot='prefix']) {
157+
border-inline-start: rem(1px) solid var(--border-color);
158+
}
159+
}

src/components/combo/themes/shared/combo.common.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,8 @@ $dropdown-theme: dropdown-theme.$material;
9494
}
9595
}
9696
}
97+
98+
::slotted([slot='suffix']),
99+
::slotted([slot='prefix']) {
100+
padding-inline: var(--affix-padding);
101+
}

src/components/date-picker/date-picker.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,31 @@ describe('Date picker', () => {
938938
expect(selectedMonths).lengthOf(1);
939939
});
940940

941+
it('should update the calendar view when typing, i.e. switch to other month', async () => {
942+
const eventSpy = spy(picker, 'emitEvent');
943+
const date = new CalendarDay({ year: 2025, month: 1, date: 1 });
944+
picker.value = date.native;
945+
picker.open = true;
946+
picker.inputFormat = 'MM/dd/yyyy';
947+
await elementUpdated(picker);
948+
949+
dateTimeInput.focus();
950+
dateTimeInput.setSelectionRange(0, 1);
951+
await elementUpdated(picker);
952+
953+
simulateKeyboard(dateTimeInput, arrowUp);
954+
simulateKeyboard(dateTimeInput, arrowUp);
955+
956+
await elementUpdated(picker);
957+
958+
expect(eventSpy).calledWith('igcInput');
959+
expect(eventSpy).not.calledWith('igcChange');
960+
961+
const expectedValue = new CalendarDay({ year: 2025, month: 3, date: 1 })
962+
.native;
963+
checkDatesEqual(calendar.activeDate, expectedValue);
964+
});
965+
941966
describe('Readonly state', () => {
942967
describe('Dropdown mode', () => {
943968
beforeEach(async () => {

src/components/date-picker/date-picker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ export default class IgcDatePickerComponent extends FormAssociatedRequiredMixin(
541541

542542
super.handleAnchorClick();
543543
await this.updateComplete;
544-
this._calendar[focusActiveDate]();
544+
this._calendar[focusActiveDate]({ preventScroll: true });
545545
}
546546

547547
protected _handleInputChangeEvent(event: CustomEvent<Date>): void {
@@ -583,6 +583,7 @@ export default class IgcDatePickerComponent extends FormAssociatedRequiredMixin(
583583
}
584584

585585
this.value = (event.target as IgcDateTimeInputComponent).value!;
586+
this._calendar.activeDate = this.value ?? this._calendar.activeDate;
586587
this.emitEvent('igcInput', { detail: this.value });
587588
}
588589

src/components/date-range-picker/themes/shared/date-range-picker.bootstrap.scss

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,29 @@ $theme: $bootstrap;
5959
[part='actions'] {
6060
min-height: #{sizable(rem(47px), rem(54px), rem(64px))};
6161
}
62+
63+
:host(:not([disabled])),
64+
:host(:not(:disabled)) {
65+
::slotted([slot^='prefix-']),
66+
[part|='calendar-icon'] {
67+
border-inline-start: rem(1px) solid var(--border-color);
68+
}
69+
70+
::slotted([slot^='suffix-']),
71+
[part|='clear-icon'] {
72+
border-inline-end: rem(1px) solid var(--border-color);
73+
}
74+
}
75+
76+
:host(:disabled),
77+
:host([disabled]) {
78+
::slotted([slot^='prefix-']),
79+
[part|='calendar-icon'] {
80+
border-inline-start: rem(1px) solid var(--disabled-border-color);
81+
}
82+
83+
::slotted([slot^='suffix-']),
84+
[part|='clear-icon'] {
85+
border-inline-end: rem(1px) solid var(--disabled-border-color);
86+
}
87+
}

src/components/date-range-picker/themes/shared/date-range-picker.common.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,8 @@ igc-icon,
129129
::slotted(igc-icon) {
130130
--component-size: var(--input-size);
131131
}
132+
133+
::slotted([slot|='suffix']),
134+
::slotted([slot|='prefix']) {
135+
padding-inline: var(--affix-padding);
136+
}

src/components/date-time-input/date-util.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ describe('Date Util', () => {
120120
[DateParts.Seconds, currentDate.getSeconds()],
121121
[
122122
DateParts.Year,
123-
Number.parseInt(currentDate.getFullYear().toString().slice(-2)),
123+
Number.parseInt(currentDate.getFullYear().toString().slice(-2), 10),
124124
],
125125
]);
126126

@@ -139,7 +139,9 @@ describe('Date Util', () => {
139139
const amPm = currentDate.getHours() >= 12 ? 'PM' : 'AM';
140140
expect(amPm).to.equal(targetValue);
141141
} else {
142-
expect(partsMap.get(part.type)).to.equal(Number.parseInt(targetValue));
142+
expect(partsMap.get(part.type)).to.equal(
143+
Number.parseInt(targetValue, 10)
144+
);
143145
}
144146
}
145147
});

0 commit comments

Comments
 (0)