Skip to content

Commit 56d40ff

Browse files
committed
Merge branch 'master' of https://github.com/IgniteUI/igniteui-webcomponents into dmdimitrov/chat-ai-component
2 parents dc2f3bc + 4c3340d commit 56d40ff

File tree

12 files changed

+200
-324
lines changed

12 files changed

+200
-324
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ custom-elements.json
3030

3131
# Localization data
3232
i18nRepo
33+
34+
# Development environment
35+
.envrc
36+
.direnv

package-lock.json

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

package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
"prepare": "husky"
5151
},
5252
"dependencies": {
53-
"@floating-ui/dom": "^1.6.13",
53+
"@floating-ui/dom": "^1.7.0",
5454
"@lit-labs/virtualizer": "^2.1.0",
5555
"@lit/context": "^1.1.5",
5656
"lit": "^3.3.0"
@@ -60,10 +60,10 @@
6060
"@custom-elements-manifest/analyzer": "^0.10.4",
6161
"@igniteui/material-icons-extended": "^3.1.0",
6262
"@open-wc/testing": "^4.0.0",
63-
"@storybook/addon-a11y": "^9.0.0-beta.6",
64-
"@storybook/addon-docs": "^9.0.0-beta.6",
65-
"@storybook/addon-links": "^9.0.0-beta.6",
66-
"@storybook/web-components-vite": "^9.0.0-beta.6",
63+
"@storybook/addon-a11y": "^9.0.0-rc.0",
64+
"@storybook/addon-docs": "^9.0.0-rc.0",
65+
"@storybook/addon-links": "^9.0.0-rc.0",
66+
"@storybook/web-components-vite": "^9.0.0-rc.0",
6767
"@types/mocha": "^10.0.10",
6868
"@web/dev-server-esbuild": "^1.0.4",
6969
"@web/test-runner": "^0.20.1",
@@ -79,7 +79,7 @@
7979
"ig-typedoc-theme": "^6.0.0",
8080
"igniteui-theming": "^17.2.0",
8181
"keep-a-changelog": "^2.6.2",
82-
"lint-staged": "^15.5.1",
82+
"lint-staged": "^16.0.0",
8383
"lit-analyzer": "^2.0.3",
8484
"madge": "^8.0.0",
8585
"node-watch": "^0.7.4",
@@ -89,17 +89,17 @@
8989
"rimraf": "^6.0.1",
9090
"sass-embedded": "~1.78.0",
9191
"sinon": "^20.0.0",
92-
"storybook": "^9.0.0-beta.6",
92+
"storybook": "^9.0.0-rc.0",
9393
"stylelint": "^16.19.1",
94-
"stylelint-config-standard-scss": "^14.0.0",
94+
"stylelint-config-standard-scss": "^15.0.0",
9595
"stylelint-prettier": "^5.0.3",
96-
"stylelint-scss": "^6.11.1",
96+
"stylelint-scss": "^6.12.0",
9797
"ts-lit-plugin": "^2.0.2",
9898
"tslib": "^2.8.1",
9999
"typedoc": "~0.27.9",
100100
"typedoc-plugin-localization": "^3.0.6",
101101
"typescript": "^5.8.3",
102-
"vite": "^6.3.4"
102+
"vite": "^6.3.5"
103103
},
104104
"peerDependencies": {
105105
"marked": "^12.0.0"

src/components/chat/chat-input.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616

1717
/**
1818
*
19-
* @element igc-chat
19+
* @element igc-chat-input
2020
*
2121
*/
2222
export default class IgcChatInputComponent extends LitElement {

src/components/chat/chat.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
77
import IgcChatInputComponent from './chat-input.js';
88
import IgcChatMessageListComponent from './chat-message-list.js';
99
import { styles } from './themes/chat.base.css.js';
10-
import type { IgcMessage } from './types.js';
10+
import type { IgcMessage, IgcMessageAttachment } from './types.js';
1111

1212
export interface IgcChatComponentEventMap {
1313
igcMessageSend: CustomEvent<IgcMessage>;
14+
igcAttachmentClick: CustomEvent<IgcMessageAttachment>;
1415
}
1516

1617
/**
@@ -64,6 +65,10 @@ export default class IgcChatComponent extends EventEmitterMixin<
6465
'message-send',
6566
this.handleSendMessage as EventListener
6667
);
68+
this.addEventListener(
69+
'attachment-click',
70+
this.handleAttachmentClick as EventListener
71+
);
6772
}
6873

6974
public override disconnectedCallback() {
@@ -72,6 +77,10 @@ export default class IgcChatComponent extends EventEmitterMixin<
7277
'message-send',
7378
this.handleSendMessage as EventListener
7479
);
80+
this.removeEventListener(
81+
'attachment-click',
82+
this.handleAttachmentClick as EventListener
83+
);
7584
}
7685

7786
private handleSendMessage(e: CustomEvent) {
@@ -92,6 +101,11 @@ export default class IgcChatComponent extends EventEmitterMixin<
92101
this.emitEvent('igcMessageSend', { detail: newMessage });
93102
}
94103

104+
private handleAttachmentClick(e: CustomEvent) {
105+
const attachmentArgs = e.detail.attachment;
106+
this.emitEvent('igcAttachmentClick', { detail: attachmentArgs });
107+
}
108+
95109
protected override render() {
96110
return html`
97111
<div class="chat-container">
@@ -101,7 +115,7 @@ export default class IgcChatComponent extends EventEmitterMixin<
101115
<slot name="title" part="title">${this.headerText}</slot>
102116
</div>
103117
<slot name="actions" class="actions">
104-
<igc-button variant="flat"></igcbutton>
118+
<igc-button variant="flat"></igc-button>
105119
</slot>
106120
</div>
107121
<igc-chat-message-list

src/components/chat/message-attachments.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,21 @@ export class IgcMessageAttachmentsComponent extends LitElement {
6464
this.previewImage = '';
6565
}
6666

67-
private preventToggle(e: CustomEvent) {
67+
private handleToggle(e: CustomEvent, attachment: IgcMessageAttachment) {
68+
this.handleAttachmentClick(attachment);
6869
e.preventDefault();
6970
}
7071

72+
private handleAttachmentClick(attachment: IgcMessageAttachment) {
73+
this.dispatchEvent(
74+
new CustomEvent('attachment-click', {
75+
detail: { attachment },
76+
bubbles: true,
77+
composed: true,
78+
})
79+
);
80+
}
81+
7182
protected override render() {
7283
return html`
7384
<div class="attachments-container">
@@ -76,8 +87,10 @@ export class IgcMessageAttachmentsComponent extends LitElement {
7687
<igc-expansion-panel
7788
indicator-position="none"
7889
.open=${attachment.type === 'image'}
79-
@igcClosing=${this.preventToggle}
80-
@igcOpening=${this.preventToggle}
90+
@igcClosing=${(ev: CustomEvent) =>
91+
this.handleToggle(ev, attachment)}
92+
@igcOpening=${(ev: CustomEvent) =>
93+
this.handleToggle(ev, attachment)}
8194
>
8295
<div slot="title" class="attachment">
8396
<div class="details">

src/components/chat/themes/message.base.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
border-radius: 18px;
5454
background-color: #E5E5EA;
5555
color: black;
56-
word-break: break-word;
56+
word-break: break-all;
5757
font-weight: 400;
5858
line-height: 1.4;
5959
position: relative;

src/components/common/controllers/resize-observer.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import {
44
isServer,
55
} from 'lit';
66

7-
type ResizeControllerCallback = (
7+
type ResizeObserverControllerCallback = (
88
...args: Parameters<ResizeObserverCallback>
99
) => unknown;
1010

1111
/** Configuration for initializing a resize controller. */
12-
export interface ResizeControllerConfig {
12+
export interface ResizeObserverControllerConfig {
1313
/** The callback function to run when a resize mutation is triggered. */
14-
callback: ResizeControllerCallback;
14+
callback: ResizeObserverControllerCallback;
1515
/** Configuration options passed to the underlying ResizeObserver. */
1616
options?: ResizeObserverOptions;
1717
/**
@@ -23,15 +23,15 @@ export interface ResizeControllerConfig {
2323
target?: Element | null;
2424
}
2525

26-
class ResizeController implements ReactiveController {
26+
class ResizeObserverController implements ReactiveController {
2727
private readonly _host: ReactiveControllerHost & Element;
2828
private readonly _targets = new Set<Element>();
2929
private readonly _observer!: ResizeObserver;
30-
private readonly _config: ResizeControllerConfig;
30+
private readonly _config: ResizeObserverControllerConfig;
3131

3232
constructor(
3333
host: ReactiveControllerHost & Element,
34-
config: ResizeControllerConfig
34+
config: ResizeObserverControllerConfig
3535
) {
3636
this._host = host;
3737
this._config = config;
@@ -80,11 +80,11 @@ class ResizeController implements ReactiveController {
8080

8181
/**
8282
* Creates a new resize controller bound to the given `host`
83-
* with {@link ResizeControllerConfig | `config`}.
83+
* with {@link ResizeObserverControllerConfig | `config`}.
8484
*/
85-
export function createResizeController(
85+
export function createResizeObserverController(
8686
host: ReactiveControllerHost & Element,
87-
config: ResizeControllerConfig
88-
): ResizeController {
89-
return new ResizeController(host, config);
87+
config: ResizeObserverControllerConfig
88+
): ResizeObserverController {
89+
return new ResizeObserverController(host, config);
9090
}

src/components/tabs/tabs.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
type MutationControllerParams,
2323
createMutationController,
2424
} from '../common/controllers/mutation-observer.js';
25-
import { createResizeController } from '../common/controllers/resize-observer.js';
25+
import { createResizeObserverController } from '../common/controllers/resize-observer.js';
2626
import { watch } from '../common/decorators/watch.js';
2727
import { registerComponent } from '../common/definitions/register.js';
2828
import type { Constructor } from '../common/mixins/constructor.js';
@@ -86,7 +86,7 @@ export default class IgcTabsComponent extends EventEmitterMixin<
8686

8787
//#region Private state & properties
8888

89-
private readonly _resizeController = createResizeController(this, {
89+
private readonly _resizeController = createResizeObserverController(this, {
9090
callback: this._resizeCallback,
9191
options: { box: 'border-box' },
9292
target: null,

src/components/tabs/themes/tab.base.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
position: relative;
2222
z-index: map.get($tabs-z-index, 'header');
2323
grid-row: 1;
24-
word-break: break-word;
24+
overflow-wrap: anywhere;
2525
transition:
2626
background-color $transition,
2727
color $transition;

0 commit comments

Comments
 (0)