igniteui-webcomponents 6.3.0-beta.0 → 6.3.0-beta.1
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.
- package/components/accordion/accordion.js +3 -4
- package/components/accordion/accordion.js.map +1 -1
- package/components/avatar/avatar.js +3 -4
- package/components/avatar/avatar.js.map +1 -1
- package/components/badge/badge.js +3 -4
- package/components/badge/badge.js.map +1 -1
- package/components/banner/banner.js +3 -4
- package/components/banner/banner.js.map +1 -1
- package/components/button/button-base.js +1 -1
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.js +3 -4
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.js +3 -4
- package/components/button/icon-button.js.map +1 -1
- package/components/button-group/button-group.js +3 -4
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/toggle-button.js +4 -3
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/calendar.js +3 -4
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.js +4 -3
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/months-view/months-view.js +4 -3
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/years-view/years-view.js +4 -3
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +3 -4
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.js +3 -4
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.header.js +3 -4
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +3 -4
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.js +3 -4
- package/components/card/card.media.js.map +1 -1
- package/components/carousel/carousel-indicator-container.js +3 -4
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel-indicator.js +3 -4
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.js +3 -4
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.js +3 -4
- package/components/carousel/carousel.js.map +1 -1
- package/components/chat/chat-input.d.ts +3 -3
- package/components/chat/chat-input.js +38 -38
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +3 -18
- package/components/chat/chat-message.js +28 -30
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +5 -8
- package/components/chat/chat-state.js +20 -22
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +4 -6
- package/components/chat/chat.js +44 -32
- package/components/chat/chat.js.map +1 -1
- package/components/chat/extras/markdown-renderer.d.ts +4 -1
- package/components/chat/extras/markdown-renderer.js +14 -14
- package/components/chat/extras/markdown-renderer.js.map +1 -1
- package/components/chat/message-attachments.d.ts +3 -3
- package/components/chat/message-attachments.js +35 -32
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/themes/input.base.css.js +1 -1
- package/components/chat/themes/input.base.css.js.map +1 -1
- package/components/chat/themes/message.base.css.js +1 -1
- package/components/chat/themes/message.base.css.js.map +1 -1
- package/components/chat/themes/shared/chat.bootstrap.css.js +1 -1
- package/components/chat/themes/shared/chat.bootstrap.css.js.map +1 -1
- package/components/chat/themes/shared/chat.fluent.css.js +1 -1
- package/components/chat/themes/shared/chat.fluent.css.js.map +1 -1
- package/components/chat/themes/shared/chat.indigo.css.js +1 -1
- package/components/chat/themes/shared/chat.indigo.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.bootstrap.css.js +1 -1
- package/components/chat/themes/shared/input/input.bootstrap.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.fluent.css.js +1 -1
- package/components/chat/themes/shared/input/input.fluent.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.indigo.css.js +1 -1
- package/components/chat/themes/shared/input/input.indigo.css.js.map +1 -1
- package/components/chat/types.d.ts +32 -21
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +1 -0
- package/components/chat/utils.js +9 -1
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox.js +3 -4
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +3 -4
- package/components/checkbox/switch.js.map +1 -1
- package/components/chip/chip.js +3 -4
- package/components/chip/chip.js.map +1 -1
- package/components/combo/combo-header.js +3 -4
- package/components/combo/combo-header.js.map +1 -1
- package/components/combo/combo-item.js +3 -4
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo-list.js +2 -3
- package/components/combo/combo-list.js.map +1 -1
- package/components/combo/combo.js +4 -3
- package/components/combo/combo.js.map +1 -1
- package/components/common/controllers/focus-ring.js +5 -5
- package/components/common/controllers/focus-ring.js.map +1 -1
- package/components/common/controllers/key-bindings.js +4 -4
- package/components/common/controllers/key-bindings.js.map +1 -1
- package/components/common/mixins/forms/associated.js +1 -1
- package/components/common/mixins/forms/associated.js.map +1 -1
- package/components/common/mixins/forms/form-value.js +1 -1
- package/components/common/mixins/forms/form-value.js.map +1 -1
- package/components/common/part-map.d.ts +1 -1
- package/components/date-picker/date-picker.js +5 -4
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-range-picker/date-range-picker.js +5 -4
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.js +3 -4
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-time-input/date-time-input.js +2 -3
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/date-util.js +11 -11
- package/components/date-time-input/date-util.js.map +1 -1
- package/components/dialog/dialog.js +3 -4
- package/components/dialog/dialog.js.map +1 -1
- package/components/divider/divider.js +3 -4
- package/components/divider/divider.js.map +1 -1
- package/components/dropdown/dropdown-group.js +3 -4
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.js +3 -4
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown-item.js +3 -4
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.js +4 -3
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/expansion-panel/expansion-panel.js +3 -4
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/file-input/file-input.js +3 -4
- package/components/file-input/file-input.js.map +1 -1
- package/components/focus-trap/focus-trap.js +7 -8
- package/components/focus-trap/focus-trap.js.map +1 -1
- package/components/icon/icon-references.js +78 -0
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/icon-state.broadcast.js +1 -1
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.js +3 -4
- package/components/icon/icon.js.map +1 -1
- package/components/icon/internal-icons-lib.js +39 -0
- package/components/icon/internal-icons-lib.js.map +1 -1
- package/components/input/input-base.js +4 -3
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.js +2 -3
- package/components/input/input.js.map +1 -1
- package/components/list/list-header.js +3 -4
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.js +3 -4
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.js +3 -4
- package/components/list/list.js.map +1 -1
- package/components/mask-input/mask-input.js +2 -3
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +3 -4
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.js +3 -4
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.js +3 -4
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/navbar/navbar.js +3 -4
- package/components/navbar/navbar.js.map +1 -1
- package/components/popover/popover.js +9 -10
- package/components/popover/popover.js.map +1 -1
- package/components/progress/circular-gradient.js +2 -3
- package/components/progress/circular-gradient.js.map +1 -1
- package/components/progress/circular-progress.js +3 -4
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.js +3 -4
- package/components/progress/linear-progress.js.map +1 -1
- package/components/radio/radio.js +3 -4
- package/components/radio/radio.js.map +1 -1
- package/components/radio-group/radio-group.js +3 -4
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating-symbol.js +3 -4
- package/components/rating/rating-symbol.js.map +1 -1
- package/components/rating/rating.js +3 -4
- package/components/rating/rating.js.map +1 -1
- package/components/resize-container/resize-container.js +3 -4
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/ripple/ripple.js +3 -4
- package/components/ripple/ripple.js.map +1 -1
- package/components/select/select-group.js +3 -4
- package/components/select/select-group.js.map +1 -1
- package/components/select/select-header.js +3 -4
- package/components/select/select-header.js.map +1 -1
- package/components/select/select-item.js +3 -4
- package/components/select/select-item.js.map +1 -1
- package/components/select/select.js +4 -3
- package/components/select/select.js.map +1 -1
- package/components/slider/range-slider.js +2 -3
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +1 -1
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider-label.js +7 -8
- package/components/slider/slider-label.js.map +1 -1
- package/components/slider/slider.js +2 -3
- package/components/slider/slider.js.map +1 -1
- package/components/snackbar/snackbar.js +3 -4
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/stepper/step.js +3 -4
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.js +3 -4
- package/components/stepper/stepper.js.map +1 -1
- package/components/tabs/tab-dom.js +1 -1
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/tab.js +4 -5
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.js +3 -4
- package/components/tabs/tabs.js.map +1 -1
- package/components/textarea/textarea.js +4 -3
- package/components/textarea/textarea.js.map +1 -1
- package/components/tile-manager/tile-manager.js +4 -3
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.js +3 -4
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/toast.js +3 -4
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.js +4 -4
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/tooltip.js +3 -4
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.js +3 -4
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.js +4 -3
- package/components/tree/tree.js.map +1 -1
- package/components/validation-container/validation-container.js +3 -4
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +131 -83
- package/package.json +1 -1
|
@@ -7,42 +7,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { consume } from '@lit/context';
|
|
8
8
|
import { html, LitElement, nothing } from 'lit';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
|
+
import { cache } from 'lit/directives/cache.js';
|
|
11
|
+
import { repeat } from 'lit/directives/repeat.js';
|
|
10
12
|
import { until } from 'lit/directives/until.js';
|
|
11
13
|
import { addThemingController } from '../../theming/theming-controller.js';
|
|
12
14
|
import IgcIconButtonComponent from '../button/icon-button.js';
|
|
13
15
|
import { chatContext } from '../common/context.js';
|
|
14
16
|
import { registerComponent } from '../common/definitions/register.js';
|
|
15
17
|
import { partMap } from '../common/part-map.js';
|
|
16
|
-
import IgcExpansionPanelComponent from '../expansion-panel/expansion-panel.js';
|
|
17
18
|
import IgcIconComponent from '../icon/icon.js';
|
|
18
19
|
import { all } from './themes/attachments.js';
|
|
19
20
|
import { styles } from './themes/message-attachments.base.css.js';
|
|
20
21
|
import { styles as shared } from './themes/shared/message-attachments/message-attachments.common.css.js';
|
|
21
|
-
import { ChatFileTypeIcons, createAttachmentURL, getFileExtension, } from './utils.js';
|
|
22
|
-
class IgcMessageAttachmentsComponent extends LitElement {
|
|
22
|
+
import { ChatFileTypeIcons, createAttachmentURL, getFileExtension, isImageAttachment, } from './utils.js';
|
|
23
|
+
export default class IgcMessageAttachmentsComponent extends LitElement {
|
|
24
|
+
static { this.tagName = 'igc-message-attachments'; }
|
|
25
|
+
static { this.styles = [styles, shared]; }
|
|
23
26
|
static register() {
|
|
24
|
-
registerComponent(IgcMessageAttachmentsComponent, IgcIconComponent, IgcIconButtonComponent
|
|
27
|
+
registerComponent(IgcMessageAttachmentsComponent, IgcIconComponent, IgcIconButtonComponent);
|
|
25
28
|
}
|
|
26
29
|
constructor() {
|
|
27
30
|
super();
|
|
28
31
|
this._defaults = Object.freeze({
|
|
29
|
-
attachment: (ctx) => this._renderAttachment(ctx.
|
|
30
|
-
attachmentHeader: (ctx) => this.renderHeader(ctx.
|
|
31
|
-
attachmentContent: (ctx) => this._renderContent(ctx.
|
|
32
|
+
attachment: (ctx) => this._renderAttachment(ctx.attachment),
|
|
33
|
+
attachmentHeader: (ctx) => this.renderHeader(ctx.attachment),
|
|
34
|
+
attachmentContent: (ctx) => this._renderContent(ctx.attachment),
|
|
32
35
|
});
|
|
33
36
|
this._handleHeaderClick = (attachment) => {
|
|
34
37
|
this._state.emitEvent('igcAttachmentClick', { detail: attachment });
|
|
35
38
|
};
|
|
36
39
|
addThemingController(this, all);
|
|
37
40
|
}
|
|
38
|
-
|
|
41
|
+
_getRenderer(name) {
|
|
39
42
|
return this._state.options?.renderers
|
|
40
43
|
? (this._state.options.renderers[name] ?? this._defaults[name])
|
|
41
44
|
: this._defaults[name];
|
|
42
45
|
}
|
|
43
46
|
renderHeader(attachment) {
|
|
44
47
|
const isCurrentUser = this._state.isCurrentUserMessage(this.message);
|
|
45
|
-
const iconName = attachment
|
|
48
|
+
const iconName = isImageAttachment(attachment)
|
|
46
49
|
? 'attach_image'
|
|
47
50
|
: 'document_thumbnail';
|
|
48
51
|
return html `
|
|
@@ -53,10 +56,9 @@ class IgcMessageAttachmentsComponent extends LitElement {
|
|
|
53
56
|
`;
|
|
54
57
|
}
|
|
55
58
|
_renderContent(attachment) {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return isImage
|
|
59
|
+
const iconName = ChatFileTypeIcons.get(getFileExtension(attachment.name)) ??
|
|
60
|
+
ChatFileTypeIcons.get('default');
|
|
61
|
+
return isImageAttachment(attachment)
|
|
60
62
|
? html `
|
|
61
63
|
<img
|
|
62
64
|
part="image-attachment"
|
|
@@ -81,12 +83,13 @@ class IgcMessageAttachmentsComponent extends LitElement {
|
|
|
81
83
|
sent: isCurrentUser,
|
|
82
84
|
};
|
|
83
85
|
const ctx = {
|
|
84
|
-
|
|
86
|
+
attachment,
|
|
87
|
+
message: this.message,
|
|
85
88
|
defaults: this._defaults,
|
|
86
|
-
|
|
89
|
+
instance: this._state.host,
|
|
87
90
|
};
|
|
88
91
|
const content = html `<div part=${partMap(contentParts)}>
|
|
89
|
-
${until(this.
|
|
92
|
+
${until(this._getRenderer('attachmentContent')(ctx))}
|
|
90
93
|
</div>`;
|
|
91
94
|
const header = html ` <div
|
|
92
95
|
part=${partMap(headerParts)}
|
|
@@ -94,7 +97,7 @@ class IgcMessageAttachmentsComponent extends LitElement {
|
|
|
94
97
|
@click=${() => this._handleHeaderClick(attachment)}
|
|
95
98
|
>
|
|
96
99
|
<div part="details">
|
|
97
|
-
${until(this.
|
|
100
|
+
${until(this._getRenderer('attachmentHeader')(ctx))}
|
|
98
101
|
</div>
|
|
99
102
|
</div>`;
|
|
100
103
|
return html `
|
|
@@ -105,23 +108,23 @@ class IgcMessageAttachmentsComponent extends LitElement {
|
|
|
105
108
|
`;
|
|
106
109
|
}
|
|
107
110
|
render() {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
111
|
+
const attachments = this.message?.attachments ?? [];
|
|
112
|
+
return html `${cache(this.message
|
|
113
|
+
? html `
|
|
114
|
+
<div part="attachments-container">
|
|
115
|
+
${repeat(attachments, (attachment) => attachment.id, (attachment) => html `
|
|
116
|
+
${until(this._getRenderer('attachment')({
|
|
117
|
+
attachment,
|
|
118
|
+
message: this.message,
|
|
119
|
+
defaults: this._defaults,
|
|
120
|
+
instance: this._state.host,
|
|
121
|
+
}))}
|
|
122
|
+
`)}
|
|
123
|
+
</div>
|
|
124
|
+
`
|
|
125
|
+
: nothing)}`;
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
|
-
IgcMessageAttachmentsComponent.tagName = 'igc-message-attachments';
|
|
123
|
-
IgcMessageAttachmentsComponent.styles = [styles, shared];
|
|
124
|
-
export default IgcMessageAttachmentsComponent;
|
|
125
128
|
__decorate([
|
|
126
129
|
consume({ context: chatContext, subscribe: true })
|
|
127
130
|
], IgcMessageAttachmentsComponent.prototype, "_state", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-attachments.js","sourceRoot":"","sources":["../../../src/components/chat/message-attachments.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcExpansionPanelComponent from '../expansion-panel/expansion-panel.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type { ChatState } from './chat-state.js';\nimport { all } from './themes/attachments.js';\nimport { styles } from './themes/message-attachments.base.css.js';\nimport { styles as shared } from './themes/shared/message-attachments/message-attachments.common.css.js';\nimport type {\n ChatTemplateRenderer,\n IgcMessage,\n IgcMessageAttachment,\n} from './types.js';\nimport {\n ChatFileTypeIcons,\n createAttachmentURL,\n getFileExtension,\n} from './utils.js';\n\ntype DefaultAttachmentRenderers = {\n attachment: ChatTemplateRenderer<IgcMessageAttachment>;\n attachmentHeader: ChatTemplateRenderer<IgcMessageAttachment>;\n attachmentContent: ChatTemplateRenderer<IgcMessageAttachment>;\n};\n\n/**\n * A component that renders message attachments within a chat.\n *\n * Displays attachments such as images or files, supporting custom templates\n * and default rendering using expansion panels.\n *\n * @element igc-message-attachments\n *\n * @csspart attachments-container - Container wrapping all attachments.\n * @csspart attachment - Wrapper for a single attachment.\n * @csspart attachment-header - Wrapper for a single attachment header.\n * @csspart attachments-content - Part representing the attachment preview.\n * @csspart attachment-icon - Icon part representing the attachment type.\n * @csspart file-name - Part representing the attachment's file name.\n * @csspart actions - Container for header action buttons.\n * @csspart image-attachment - Part for the image element inside an image attachment.\n *\n * @fires igcAttachmentClick - Fired when an attachment header is toggled (clicked).\n */\nexport default class IgcMessageAttachmentsComponent extends LitElement {\n public static readonly tagName = 'igc-message-attachments';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcMessageAttachmentsComponent,\n IgcIconComponent,\n IgcIconButtonComponent,\n IgcExpansionPanelComponent\n );\n }\n\n private readonly _defaults: Readonly<DefaultAttachmentRenderers> =\n Object.freeze<DefaultAttachmentRenderers>({\n attachment: (ctx) => this._renderAttachment(ctx.param),\n attachmentHeader: (ctx) => this.renderHeader(ctx.param),\n attachmentContent: (ctx) => this._renderContent(ctx.param),\n });\n\n @consume({ context: chatContext, subscribe: true })\n private readonly _state!: ChatState;\n\n /**\n * The array of attachments to render.\n */\n @property({ attribute: false })\n public message?: IgcMessage;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n private _getRenderers(name: keyof DefaultAttachmentRenderers) {\n return this._state.options?.renderers\n ? (this._state.options.renderers[name] ?? this._defaults[name])\n : this._defaults[name];\n }\n\n private _handleHeaderClick = (attachment: IgcMessageAttachment) => {\n this._state.emitEvent('igcAttachmentClick', { detail: attachment });\n };\n /**\n * Default attachment header template used when no custom template is provided.\n * Renders the attachment icon and name.\n * @param attachment The message attachment to render\n * @returns TemplateResult containing the rendered attachment header\n */\n private renderHeader(attachment: IgcMessageAttachment) {\n const isCurrentUser = this._state.isCurrentUserMessage(this.message);\n const iconName =\n attachment.type === 'image' || attachment.file?.type.startsWith('image/')\n ? 'attach_image'\n : 'document_thumbnail';\n\n return html`\n ${!isCurrentUser\n ? html`<igc-icon name=${iconName} part=\"attachment-icon\"></igc-icon>`\n : nothing}\n <span part=\"file-name\">${attachment.name}</span>\n `;\n }\n\n /**\n * Default attachment content template used when no custom template is provided.\n * Renders the attachment content based on its type.\n * @param attachment The message attachment to render\n * @returns TemplateResult containing the rendered attachment content\n */\n private _renderContent(attachment: IgcMessageAttachment) {\n const ext = getFileExtension(attachment.name);\n const isImage = this._state.isImageAttachment(attachment);\n const iconName =\n ChatFileTypeIcons.get(ext) ?? ChatFileTypeIcons.get('default')!;\n\n return isImage\n ? html`\n <img\n part=\"image-attachment\"\n src=${createAttachmentURL(attachment)}\n alt=${attachment.name}\n />\n `\n : html`<igc-icon part=\"file-attachment\" name=${iconName}></igc-icon>`;\n }\n\n private _renderAttachment(attachment: IgcMessageAttachment) {\n const isCurrentUser = this._state.isCurrentUserMessage(this.message);\n const attachmentParts = {\n attachment: true,\n sent: isCurrentUser,\n };\n const contentParts = {\n 'attachment-content': true,\n sent: isCurrentUser,\n };\n const headerParts = {\n 'attachment-header': true,\n sent: isCurrentUser,\n };\n\n const ctx = {\n param: attachment,\n defaults: this._defaults,\n options: this._state.options,\n };\n\n const content = html`<div part=${partMap(contentParts)}>\n ${until(this._getRenderers('attachmentContent')(ctx))}\n </div>`;\n const header = html` <div\n part=${partMap(headerParts)}\n role=\"button\"\n @click=${() => this._handleHeaderClick(attachment)}\n >\n <div part=\"details\">\n ${until(this._getRenderers('attachmentHeader')(ctx))}\n </div>\n </div>`;\n\n return html`\n <div part=${partMap(attachmentParts)}>\n ${isCurrentUser ? content : nothing} ${header}\n ${!isCurrentUser ? content : nothing}\n </div>\n `;\n }\n\n protected override render() {\n if (!this.message) {\n return nothing;\n }\n\n return html`\n <div part=\"attachments-container\">\n ${(this.message.attachments ?? []).map(\n (attachment) =>\n html`${until(\n this._getRenderers('attachment')({\n param: attachment,\n defaults: this._defaults,\n options: this._state.options,\n }) || nothing\n )}`\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-message-attachments': IgcMessageAttachmentsComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"message-attachments.js","sourceRoot":"","sources":["../../../src/components/chat/message-attachments.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,uEAAuE,CAAC;AAOzG,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AA2BpB,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,UAAU;aAC7C,YAAO,GAAG,yBAAyB,AAA5B,CAA6B;aACpC,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,8BAA8B,EAC9B,gBAAgB,EAChB,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAkBD;QACE,KAAK,EAAE,CAAC;QAjBO,cAAS,GACxB,MAAM,CAAC,MAAM,CAA6B;YACxC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;YAC3D,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;YAC5D,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;SAChE,CAAC,CAAC;QAsBG,uBAAkB,GAAG,CAAC,UAAgC,EAAE,EAAE;YAChE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC;QAXA,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEO,YAAY,CAAC,IAAsC;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS;YACnC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAWO,YAAY,CAAC,UAAgC;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC;YAC5C,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,oBAAoB,CAAC;QAEzB,OAAO,IAAI,CAAA;QACP,CAAC,aAAa;YACd,CAAC,CAAC,IAAI,CAAA,kBAAkB,QAAQ,qCAAqC;YACrE,CAAC,CAAC,OAAO;+BACc,UAAU,CAAC,IAAI;KACzC,CAAC;IACJ,CAAC;IAQO,cAAc,CAAC,UAAgC;QACrD,MAAM,QAAQ,GACZ,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxD,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAEpC,OAAO,iBAAiB,CAAC,UAAU,CAAC;YAClC,CAAC,CAAC,IAAI,CAAA;;;kBAGM,mBAAmB,CAAC,UAAU,CAAC;kBAC/B,UAAU,CAAC,IAAI;;SAExB;YACH,CAAC,CAAC,IAAI,CAAA,yCAAyC,QAAQ,cAAc,CAAC;IAC1E,CAAC;IAEO,iBAAiB,CAAC,UAAgC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG;YACtB,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,aAAa;SACpB,CAAC;QACF,MAAM,YAAY,GAAG;YACnB,oBAAoB,EAAE,IAAI;YAC1B,IAAI,EAAE,aAAa;SACpB,CAAC;QACF,MAAM,WAAW,GAAG;YAClB,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,aAAa;SACpB,CAAC;QAEF,MAAM,GAAG,GAA8B;YACrC,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,OAAQ;YACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SAC3B,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAA,aAAa,OAAO,CAAC,YAAY,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC;WAC/C,CAAC;QACR,MAAM,MAAM,GAAG,IAAI,CAAA;aACV,OAAO,CAAC,WAAW,CAAC;;eAElB,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;;;UAG9C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;;WAEhD,CAAC;QAER,OAAO,IAAI,CAAA;kBACG,OAAO,CAAC,eAAe,CAAC;UAChC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,MAAM;UAC3C,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;;KAEvC,CAAC;IACJ,CAAC;IAEkB,MAAM;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;QAEpD,OAAO,IAAI,CAAA,GAAG,KAAK,CACjB,IAAI,CAAC,OAAO;YACV,CAAC,CAAC,IAAI,CAAA;;gBAEE,MAAM,CACN,WAAW,EACX,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAA;oBAChB,KAAK,CACL,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC9B,UAAU;gBACV,OAAO,EAAE,IAAI,CAAC,OAAQ;gBACtB,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;aAC3B,CAAC,CACH;iBACF,CACF;;WAEJ;YACH,CAAC,CAAC,OAAO,CACZ,EAAE,CAAC;IACN,CAAC;;AApIgB;IADhB,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;8DACf;AAM7B;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+DACH","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type { ChatState } from './chat-state.js';\nimport { all } from './themes/attachments.js';\nimport { styles } from './themes/message-attachments.base.css.js';\nimport { styles as shared } from './themes/shared/message-attachments/message-attachments.common.css.js';\nimport type {\n AttachmentRendererContext,\n ChatTemplateRenderer,\n IgcMessage,\n IgcMessageAttachment,\n} from './types.js';\nimport {\n ChatFileTypeIcons,\n createAttachmentURL,\n getFileExtension,\n isImageAttachment,\n} from './utils.js';\n\ntype DefaultAttachmentRenderers = {\n attachment: ChatTemplateRenderer<AttachmentRendererContext>;\n attachmentHeader: ChatTemplateRenderer<AttachmentRendererContext>;\n attachmentContent: ChatTemplateRenderer<AttachmentRendererContext>;\n};\n\n/**\n * A component that renders message attachments within a chat.\n *\n * Displays attachments such as images or files, supporting custom templates\n * and default rendering using expansion panels.\n *\n * @element igc-message-attachments\n *\n * @csspart attachments-container - Container wrapping all attachments.\n * @csspart attachment - Wrapper for a single attachment.\n * @csspart attachment-header - Wrapper for a single attachment header.\n * @csspart attachments-content - Part representing the attachment preview.\n * @csspart attachment-icon - Icon part representing the attachment type.\n * @csspart file-name - Part representing the attachment's file name.\n * @csspart actions - Container for header action buttons.\n * @csspart image-attachment - Part for the image element inside an image attachment.\n *\n * @fires igcAttachmentClick - Fired when an attachment header is toggled (clicked).\n */\nexport default class IgcMessageAttachmentsComponent extends LitElement {\n public static readonly tagName = 'igc-message-attachments';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcMessageAttachmentsComponent,\n IgcIconComponent,\n IgcIconButtonComponent\n );\n }\n\n private readonly _defaults: Readonly<DefaultAttachmentRenderers> =\n Object.freeze<DefaultAttachmentRenderers>({\n attachment: (ctx) => this._renderAttachment(ctx.attachment),\n attachmentHeader: (ctx) => this.renderHeader(ctx.attachment),\n attachmentContent: (ctx) => this._renderContent(ctx.attachment),\n });\n\n @consume({ context: chatContext, subscribe: true })\n private readonly _state!: ChatState;\n\n /**\n * The array of attachments to render.\n */\n @property({ attribute: false })\n public message?: IgcMessage;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n private _getRenderer(name: keyof DefaultAttachmentRenderers) {\n return this._state.options?.renderers\n ? (this._state.options.renderers[name] ?? this._defaults[name])\n : this._defaults[name];\n }\n\n private _handleHeaderClick = (attachment: IgcMessageAttachment) => {\n this._state.emitEvent('igcAttachmentClick', { detail: attachment });\n };\n /**\n * Default attachment header template used when no custom template is provided.\n * Renders the attachment icon and name.\n * @param attachment The message attachment to render\n * @returns TemplateResult containing the rendered attachment header\n */\n private renderHeader(attachment: IgcMessageAttachment) {\n const isCurrentUser = this._state.isCurrentUserMessage(this.message);\n const iconName = isImageAttachment(attachment)\n ? 'attach_image'\n : 'document_thumbnail';\n\n return html`\n ${!isCurrentUser\n ? html`<igc-icon name=${iconName} part=\"attachment-icon\"></igc-icon>`\n : nothing}\n <span part=\"file-name\">${attachment.name}</span>\n `;\n }\n\n /**\n * Default attachment content template used when no custom template is provided.\n * Renders the attachment content based on its type.\n * @param attachment The message attachment to render\n * @returns TemplateResult containing the rendered attachment content\n */\n private _renderContent(attachment: IgcMessageAttachment) {\n const iconName =\n ChatFileTypeIcons.get(getFileExtension(attachment.name)) ??\n ChatFileTypeIcons.get('default')!;\n\n return isImageAttachment(attachment)\n ? html`\n <img\n part=\"image-attachment\"\n src=${createAttachmentURL(attachment)}\n alt=${attachment.name}\n />\n `\n : html`<igc-icon part=\"file-attachment\" name=${iconName}></igc-icon>`;\n }\n\n private _renderAttachment(attachment: IgcMessageAttachment) {\n const isCurrentUser = this._state.isCurrentUserMessage(this.message);\n const attachmentParts = {\n attachment: true,\n sent: isCurrentUser,\n };\n const contentParts = {\n 'attachment-content': true,\n sent: isCurrentUser,\n };\n const headerParts = {\n 'attachment-header': true,\n sent: isCurrentUser,\n };\n\n const ctx: AttachmentRendererContext = {\n attachment,\n message: this.message!,\n defaults: this._defaults,\n instance: this._state.host,\n };\n\n const content = html`<div part=${partMap(contentParts)}>\n ${until(this._getRenderer('attachmentContent')(ctx))}\n </div>`;\n const header = html` <div\n part=${partMap(headerParts)}\n role=\"button\"\n @click=${() => this._handleHeaderClick(attachment)}\n >\n <div part=\"details\">\n ${until(this._getRenderer('attachmentHeader')(ctx))}\n </div>\n </div>`;\n\n return html`\n <div part=${partMap(attachmentParts)}>\n ${isCurrentUser ? content : nothing} ${header}\n ${!isCurrentUser ? content : nothing}\n </div>\n `;\n }\n\n protected override render() {\n const attachments = this.message?.attachments ?? [];\n\n return html`${cache(\n this.message\n ? html`\n <div part=\"attachments-container\">\n ${repeat(\n attachments,\n (attachment) => attachment.id,\n (attachment) => html`\n ${until(\n this._getRenderer('attachment')({\n attachment,\n message: this.message!,\n defaults: this._defaults,\n instance: this._state.host,\n })\n )}\n `\n )}\n </div>\n `\n : nothing\n )}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-message-attachments': IgcMessageAttachmentsComponent;\n }\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;align-items:center;width:100%;padding-block:1rem;justify-content:center;grid-column:2/3}[part~=input-container]{display:flex;flex-direction:column;width:100%;margin-inline:1.5rem;border-radius:.25rem;padding:1rem;gap:.75rem}[part=buttons-container]{display:flex;align-items:center}[part=send-button]{margin-inline-start:auto}[part=upload-button]{position:relative;display:inline-block}[part=upload-button] input{position:absolute;width:0;aspect-ratio:1;inset:0;opacity:0}[part=attachments]{display:flex;flex-wrap:wrap;gap:.5rem}[part=attachment-wrapper]{min-width:5.625rem;max-width:-moz-fit-content;max-width:fit-content;flex:1 1}[part=attachment-wrapper] igc-chip{--ig-size: 2}igc-textarea::part(input){max-height:13.5rem;overflow-y:auto}igc-icon-button{--ig-size: 2}@container (max-width: 400px){[part~=input-container]{margin-inline:.75rem}}`;
|
|
2
|
+
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;align-items:center;width:100%;padding-block:1rem;justify-content:center;grid-column:2/3}[part~=input-container]{display:flex;flex-direction:column;width:100%;margin-inline:1.5rem;border-radius:.25rem;padding:1rem;gap:.75rem}[part=buttons-container]{display:flex;align-items:center}[part=send-button]{margin-inline-start:auto}[part=upload-button]{position:relative;display:inline-block}[part=upload-button] input{position:absolute;width:0;aspect-ratio:1;inset:0;opacity:0}[part=attachments]{display:flex;flex-wrap:wrap;gap:.5rem}[part=attachment-wrapper]{min-width:5.625rem;max-width:-moz-fit-content;max-width:fit-content;flex:1 1}[part=attachment-wrapper] igc-chip{--ig-size: 2}igc-textarea::part(input){max-height:13.5rem;overflow-y:auto}igc-icon-button,igc-textarea{--ig-size: 2}@container (max-width: 400px){[part~=input-container]{margin-inline:.75rem}}`;
|
|
3
3
|
//# sourceMappingURL=input.base.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.base.css.js","sourceRoot":"","sources":["../../../../src/components/chat/themes/input.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"input.base.css.js","sourceRoot":"","sources":["../../../../src/components/chat/themes/input.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,uzDAAuzD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;align-items:center;width:100%;padding-block:1rem;justify-content:center;grid-column:2/3}[part~=input-container]{display:flex;flex-direction:column;width:100%;margin-inline:1.5rem;border-radius:.25rem;padding:1rem;gap:.75rem}[part=buttons-container]{display:flex;align-items:center}[part=send-button]{margin-inline-start:auto}[part=upload-button]{position:relative;display:inline-block}[part=upload-button] input{position:absolute;width:0;aspect-ratio:1;inset:0;opacity:0}[part=attachments]{display:flex;flex-wrap:wrap;gap:.5rem}[part=attachment-wrapper]{min-width:5.625rem;max-width:-moz-fit-content;max-width:fit-content;flex:1 1}[part=attachment-wrapper] igc-chip{--ig-size: 2}igc-textarea::part(input){max-height:13.5rem;overflow-y:auto}igc-icon-button,igc-textarea{--ig-size: 2}@container (max-width: 400px){[part~=input-container]{margin-inline:.75rem}}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;flex-direction:column;width:100%}[part~=message-container]{font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0
|
|
2
|
+
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;flex-direction:column;width:100%}[part~=message-container],[part=plain-text]{font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0}[part~=message-container]{display:flex;margin-inline-end:auto;flex-direction:column;gap:1rem}[part~=message-container] p{margin:0;padding:0}[part~=message-container] a{overflow-wrap:anywhere;color:var(--ig-primary-500)}[part~=message-container] pre,[part~=message-container] code{white-space:pre-wrap;word-wrap:break-word;overflow-x:auto;margin-block:unset}[part~=sent]{margin-inline-start:auto;margin-inline-end:unset;padding:.75rem 1rem;border-radius:1.5rem 1.5rem 0;max-width:36rem;width:-moz-fit-content;width:fit-content}`;
|
|
3
3
|
//# sourceMappingURL=message.base.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.base.css.js","sourceRoot":"","sources":["../../../../src/components/chat/themes/message.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"message.base.css.js","sourceRoot":"","sources":["../../../../src/components/chat/themes/message.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,i9DAAi9D,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;flex-direction:column;width:100%}[part~=message-container],[part=plain-text]{font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0}[part~=message-container]{display:flex;margin-inline-end:auto;flex-direction:column;gap:1rem}[part~=message-container] p{margin:0;padding:0}[part~=message-container] a{overflow-wrap:anywhere;color:var(--ig-primary-500)}[part~=message-container] pre,[part~=message-container] code{white-space:pre-wrap;word-wrap:break-word;overflow-x:auto;margin-block:unset}[part~=sent]{margin-inline-start:auto;margin-inline-end:unset;padding:.75rem 1rem;border-radius:1.5rem 1.5rem 0;max-width:36rem;width:-moz-fit-content;width:fit-content}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host ::part(text-input){--textarea-height:
|
|
2
|
+
export const styles = css `:host ::part(text-input){--textarea-height: 2.375rem}[part=header]{box-shadow:none;border-block-end:.0625rem solid var(--header-border)}[part=title]{font-family:var(--ig-h5-font-family, var(--ig-font-family));font-size:var(--ig-h5-font-size);font-weight:var(--ig-h5-font-weight);font-style:var(--ig-h5-font-style);line-height:var(--ig-h5-line-height);letter-spacing:var(--ig-h5-letter-spacing);text-transform:var(--ig-h5-text-transform);margin-top:var(--ig-h5-margin-top);margin-bottom:var(--ig-h5-margin-bottom);margin:0}[part=prefix]{margin-inline-end:1rem}igc-list{border:none}`;
|
|
3
3
|
//# sourceMappingURL=chat.bootstrap.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.bootstrap.css.js","sourceRoot":"","sources":["../../../../../src/components/chat/themes/shared/chat.bootstrap.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"chat.bootstrap.css.js","sourceRoot":"","sources":["../../../../../src/components/chat/themes/shared/chat.bootstrap.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,skBAAskB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host ::part(text-input){--textarea-height: 2.375rem}[part=header]{box-shadow:none;border-block-end:.0625rem solid var(--header-border)}[part=title]{font-family:var(--ig-h5-font-family, var(--ig-font-family));font-size:var(--ig-h5-font-size);font-weight:var(--ig-h5-font-weight);font-style:var(--ig-h5-font-style);line-height:var(--ig-h5-line-height);letter-spacing:var(--ig-h5-letter-spacing);text-transform:var(--ig-h5-text-transform);margin-top:var(--ig-h5-margin-top);margin-bottom:var(--ig-h5-margin-bottom);margin:0}[part=prefix]{margin-inline-end:1rem}igc-list{border:none}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host ::part(text-input){--textarea-height:
|
|
2
|
+
export const styles = css `:host ::part(text-input){--textarea-height: 2.5rem}[part=title]{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);margin:0}[part=prefix]{margin-inline-end:1rem}`;
|
|
3
3
|
//# sourceMappingURL=chat.fluent.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.fluent.css.js","sourceRoot":"","sources":["../../../../../src/components/chat/themes/shared/chat.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"chat.fluent.css.js","sourceRoot":"","sources":["../../../../../src/components/chat/themes/shared/chat.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,oiBAAoiB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host ::part(text-input){--textarea-height: 2.5rem}[part=title]{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);margin:0}[part=prefix]{margin-inline-end:1rem}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host ::part(text-input){--textarea-height: 1.75rem}[part=header]{box-shadow:none;border-block-end:.0625rem solid var(--header-border)}[part=title]{font-family:var(--ig-h5-font-family, var(--ig-font-family));font-size:var(--ig-h5-font-size);font-weight:var(--ig-h5-font-weight);font-style:var(--ig-h5-font-style);line-height:var(--ig-h5-line-height);letter-spacing:var(--ig-h5-letter-spacing);text-transform:var(--ig-h5-text-transform);margin-top:var(--ig-h5-margin-top);margin-bottom:var(--ig-h5-margin-bottom);margin:0}igc-list{--ig-size: 2}`;
|
|
2
|
+
export const styles = css `:host ::part(text-input){--textarea-height: 1.75rem}[part=header]{box-shadow:none;border-block-end:.0625rem solid var(--header-border)}[part=title]{font-family:var(--ig-h5-font-family, var(--ig-font-family));font-size:var(--ig-h5-font-size);font-weight:var(--ig-h5-font-weight);font-style:var(--ig-h5-font-style);line-height:var(--ig-h5-line-height);letter-spacing:var(--ig-h5-letter-spacing);text-transform:var(--ig-h5-text-transform);margin-top:var(--ig-h5-margin-top);margin-bottom:var(--ig-h5-margin-bottom);margin:0}[part=prefix]{margin-inline-end:1rem}[part=actions]{gap:.5rem}igc-list{--ig-size: 2}`;
|
|
3
3
|
//# sourceMappingURL=chat.indigo.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.indigo.css.js","sourceRoot":"","sources":["../../../../../src/components/chat/themes/shared/chat.indigo.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"chat.indigo.css.js","sourceRoot":"","sources":["../../../../../src/components/chat/themes/shared/chat.indigo.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,+lBAA+lB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host ::part(text-input){--textarea-height: 1.75rem}[part=header]{box-shadow:none;border-block-end:.0625rem solid var(--header-border)}[part=title]{font-family:var(--ig-h5-font-family, var(--ig-font-family));font-size:var(--ig-h5-font-size);font-weight:var(--ig-h5-font-weight);font-style:var(--ig-h5-font-style);line-height:var(--ig-h5-line-height);letter-spacing:var(--ig-h5-letter-spacing);text-transform:var(--ig-h5-text-transform);margin-top:var(--ig-h5-margin-top);margin-bottom:var(--ig-h5-margin-bottom);margin:0}[part=prefix]{margin-inline-end:1rem}[part=actions]{gap:.5rem}igc-list{--ig-size: 2}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `igc-textarea::part(input){max-height:10.
|
|
2
|
+
export const styles = css `igc-textarea::part(input){max-height:10.625rem;padding-block:.5rem}[part~=dragging] igc-textarea::part(input){border:.0625rem solid var(--focused-border-color);box-shadow:0 0 0 .25rem var(--focused-secondary-color)}`;
|
|
3
3
|
//# sourceMappingURL=input.bootstrap.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.bootstrap.css.js","sourceRoot":"","sources":["../../../../../../src/components/chat/themes/shared/input/input.bootstrap.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"input.bootstrap.css.js","sourceRoot":"","sources":["../../../../../../src/components/chat/themes/shared/input/input.bootstrap.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,yNAAyN,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`igc-textarea::part(input){max-height:10.625rem;padding-block:.5rem}[part~=dragging] igc-textarea::part(input){border:.0625rem solid var(--focused-border-color);box-shadow:0 0 0 .25rem var(--focused-secondary-color)}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `igc-textarea::part(input){max-height:
|
|
2
|
+
export const styles = css `igc-textarea::part(input){max-height:9.375rem;padding-block:.6875rem}[part~=dragging] igc-textarea::part(container)::before{box-shadow:inset 0 0 0 .125rem var(--focused-border-color)}`;
|
|
3
3
|
//# sourceMappingURL=input.fluent.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.fluent.css.js","sourceRoot":"","sources":["../../../../../../src/components/chat/themes/shared/input/input.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"input.fluent.css.js","sourceRoot":"","sources":["../../../../../../src/components/chat/themes/shared/input/input.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,yLAAyL,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`igc-textarea::part(input){max-height:9.375rem;padding-block:.6875rem}[part~=dragging] igc-textarea::part(container)::before{box-shadow:inset 0 0 0 .125rem var(--focused-border-color)}`;\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `igc-textarea::part(input){max-height:8.75rem}[part~=dragging] igc-textarea::part(container){background:var(--box-background-hover)}[part~=dragging] igc-textarea::part(container)::after{border-block-end-color:var(--focused-bottom-line-color)}[part~=dragging] igc-textarea::part(input){color:var(--focused-text-color)}[part=attachment-wrapper] igc-chip{--ig-size: 1}`;
|
|
2
|
+
export const styles = css `igc-textarea::part(input){max-height:8.75rem}[part~=input-container]{border-radius:.8125rem}[part~=dragging] igc-textarea::part(container){background:var(--box-background-hover)}[part~=dragging] igc-textarea::part(container)::after{border-block-end-color:var(--focused-bottom-line-color)}[part~=dragging] igc-textarea::part(input){color:var(--focused-text-color)}[part=attachment-wrapper] igc-chip{--ig-size: 1}`;
|
|
3
3
|
//# sourceMappingURL=input.indigo.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.indigo.css.js","sourceRoot":"","sources":["../../../../../../src/components/chat/themes/shared/input/input.indigo.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"input.indigo.css.js","sourceRoot":"","sources":["../../../../../../src/components/chat/themes/shared/input/input.indigo.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,6ZAA6Z,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`igc-textarea::part(input){max-height:8.75rem}[part~=input-container]{border-radius:.8125rem}[part~=dragging] igc-textarea::part(container){background:var(--box-background-hover)}[part~=dragging] igc-textarea::part(container)::after{border-block-end-color:var(--focused-bottom-line-color)}[part~=dragging] igc-textarea::part(input){color:var(--focused-text-color)}[part=attachment-wrapper] igc-chip{--ig-size: 1}`;\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type IgcChatComponent from './chat.js';
|
|
1
2
|
/**
|
|
2
3
|
* Represents a single chat message in the conversation.
|
|
3
4
|
*/
|
|
@@ -17,7 +18,7 @@ export interface IgcMessage {
|
|
|
17
18
|
/**
|
|
18
19
|
* The timestamp indicating when the message was sent.
|
|
19
20
|
*/
|
|
20
|
-
timestamp
|
|
21
|
+
timestamp?: string;
|
|
21
22
|
/**
|
|
22
23
|
* Optional list of attachments associated with the message,
|
|
23
24
|
* such as images, files, or links.
|
|
@@ -114,24 +115,34 @@ export type IgcChatOptions = {
|
|
|
114
115
|
renderers?: Partial<ChatRenderers>;
|
|
115
116
|
};
|
|
116
117
|
export type ChatRenderers = {
|
|
117
|
-
attachment?: ChatTemplateRenderer<
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
118
|
+
attachment?: ChatTemplateRenderer<AttachmentRendererContext>;
|
|
119
|
+
attachmentContent?: ChatTemplateRenderer<AttachmentRendererContext>;
|
|
120
|
+
attachmentHeader?: ChatTemplateRenderer<AttachmentRendererContext>;
|
|
121
|
+
fileUploadButton?: ChatTemplateRenderer<ChatRendererContext>;
|
|
122
|
+
input?: ChatTemplateRenderer<InputRendererContext>;
|
|
123
|
+
inputActions?: ChatTemplateRenderer<ChatRendererContext>;
|
|
124
|
+
inputAttachments?: ChatTemplateRenderer<InputRendererContext>;
|
|
125
|
+
message?: ChatTemplateRenderer<MessageRendererContext>;
|
|
126
|
+
messageActions?: ChatTemplateRenderer<MessageRendererContext>;
|
|
127
|
+
messageAttachments?: ChatTemplateRenderer<MessageRendererContext>;
|
|
128
|
+
messageContent?: ChatTemplateRenderer<MessageRendererContext>;
|
|
129
|
+
messageHeader?: ChatTemplateRenderer<MessageRendererContext>;
|
|
130
|
+
typingIndicator?: ChatTemplateRenderer<ChatRendererContext>;
|
|
131
|
+
sendButton?: ChatTemplateRenderer<ChatRendererContext>;
|
|
132
|
+
suggestionPrefix?: ChatTemplateRenderer<ChatRendererContext>;
|
|
132
133
|
};
|
|
133
|
-
export type ChatTemplateRenderer<T> = (ctx:
|
|
134
|
-
|
|
135
|
-
defaults:
|
|
136
|
-
|
|
137
|
-
}
|
|
134
|
+
export type ChatTemplateRenderer<T> = (ctx: T) => unknown;
|
|
135
|
+
export interface ChatRendererContext {
|
|
136
|
+
defaults: ChatRenderers;
|
|
137
|
+
instance: IgcChatComponent;
|
|
138
|
+
}
|
|
139
|
+
export interface InputRendererContext extends ChatRendererContext {
|
|
140
|
+
attachments: IgcMessageAttachment[];
|
|
141
|
+
value: string;
|
|
142
|
+
}
|
|
143
|
+
export interface MessageRendererContext extends ChatRendererContext {
|
|
144
|
+
message: IgcMessage;
|
|
145
|
+
}
|
|
146
|
+
export interface AttachmentRendererContext extends MessageRendererContext {
|
|
147
|
+
attachment: IgcMessageAttachment;
|
|
148
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/chat/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Represents a single chat message in the conversation.\n */\nexport interface IgcMessage {\n /**\n * A unique identifier for the message.\n */\n id: string;\n\n /**\n * The textual content of the message.\n */\n text: string;\n\n /**\n * The identifier or name of the sender of the message.\n */\n sender: string;\n\n /**\n * The timestamp indicating when the message was sent.\n */\n timestamp
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/chat/types.ts"],"names":[],"mappings":"","sourcesContent":["import type IgcChatComponent from './chat.js';\n\n/**\n * Represents a single chat message in the conversation.\n */\nexport interface IgcMessage {\n /**\n * A unique identifier for the message.\n */\n id: string;\n\n /**\n * The textual content of the message.\n */\n text: string;\n\n /**\n * The identifier or name of the sender of the message.\n */\n sender: string;\n\n /**\n * The timestamp indicating when the message was sent.\n */\n timestamp?: string;\n\n /**\n * Optional list of attachments associated with the message,\n * such as images, files, or links.\n */\n attachments?: IgcMessageAttachment[];\n\n /**\n * Optional list of reactions associated with the message.\n */\n reactions?: string[];\n}\n\n/**\n * Represents an attachment associated with a chat message.\n */\nexport interface IgcMessageAttachment {\n /**\n * A unique identifier for the attachment.\n */\n id: string;\n\n /**\n * The display name of the attachment (e.g. file name).\n */\n name: string;\n\n /**\n * The URL from which the attachment can be downloaded or viewed.\n * Typically used for attachments stored on a server or CDN.\n */\n url?: string;\n\n /**\n * The actual File object, if the attachment was provided locally (e.g. via upload).\n */\n file?: File;\n\n /**\n * The MIME type or a custom type identifier for the attachment (e.g. \"image/png\", \"pdf\", \"audio\").\n */\n type?: string;\n\n /**\n * Optional URL to a thumbnail preview of the attachment (e.g. for images or videos).\n */\n thumbnail?: string;\n}\n\n/**\n * Configuration options for customizing the behavior and appearance of the chat component.\n */\nexport type IgcChatOptions = {\n /**\n * The ID of the current user. Used to differentiate between incoming and outgoing messages.\n */\n currentUserId?: string;\n /**\n * If `true`, prevents the chat from automatically scrolling to the latest message.\n */\n disableAutoScroll?: boolean;\n /**\n * If `true`, disables the ability to upload and send attachments.\n * Defaults to `false`.\n */\n disableInputAttachments?: boolean;\n /**\n * Indicates whether the other user is currently typing a message.\n */\n isTyping?: boolean;\n /**\n * The accepted files that could be attached.\n * Defines the file types as a list of comma-separated values (e.g. \"image/*,.pdf\") that the file input should accept.\n */\n acceptedFiles?: string;\n /**\n * Optional header text to display at the top of the chat component.\n */\n headerText?: string;\n /**\n * Optional placeholder text for the chat input area.\n * Provides a hint to the user about what they can type (e.g. \"Type a message...\").\n */\n inputPlaceholder?: string;\n /**\n * Suggested text snippets or quick replies that can be shown as user-selectable options.\n */\n suggestions?: string[];\n /**\n * Controls the position of the chat suggestions within the component layout.\n *\n * - `\"below-input\"`: Renders suggestions below the chat input area.\n * - `\"below-messages\"`: Renders suggestions below the chat messages area.\n *\n * Default is `\"below-messages\"`.\n */\n suggestionsPosition?: 'below-input' | 'below-messages';\n /**\n * Time in milliseconds to wait before dispatching a stop typing event.\n * Default is `3000`.\n */\n stopTypingDelay?: number;\n\n renderers?: Partial<ChatRenderers>;\n};\n\nexport type ChatRenderers = {\n attachment?: ChatTemplateRenderer<AttachmentRendererContext>;\n attachmentContent?: ChatTemplateRenderer<AttachmentRendererContext>;\n attachmentHeader?: ChatTemplateRenderer<AttachmentRendererContext>;\n fileUploadButton?: ChatTemplateRenderer<ChatRendererContext>;\n input?: ChatTemplateRenderer<InputRendererContext>;\n inputActions?: ChatTemplateRenderer<ChatRendererContext>;\n inputAttachments?: ChatTemplateRenderer<InputRendererContext>;\n message?: ChatTemplateRenderer<MessageRendererContext>;\n messageActions?: ChatTemplateRenderer<MessageRendererContext>;\n messageAttachments?: ChatTemplateRenderer<MessageRendererContext>;\n messageContent?: ChatTemplateRenderer<MessageRendererContext>;\n messageHeader?: ChatTemplateRenderer<MessageRendererContext>;\n typingIndicator?: ChatTemplateRenderer<ChatRendererContext>;\n sendButton?: ChatTemplateRenderer<ChatRendererContext>;\n suggestionPrefix?: ChatTemplateRenderer<ChatRendererContext>;\n};\n\nexport type ChatTemplateRenderer<T> = (ctx: T) => unknown;\n\nexport interface ChatRendererContext {\n defaults: ChatRenderers;\n instance: IgcChatComponent;\n}\n\nexport interface InputRendererContext extends ChatRendererContext {\n attachments: IgcMessageAttachment[];\n value: string;\n}\n\nexport interface MessageRendererContext extends ChatRendererContext {\n message: IgcMessage;\n}\n\nexport interface AttachmentRendererContext extends MessageRendererContext {\n attachment: IgcMessageAttachment;\n}\n"]}
|
|
@@ -12,5 +12,6 @@ export declare function getChatAcceptedFiles(event: DragEvent, accepted: ChatAcc
|
|
|
12
12
|
export declare function getIconName(fileType?: string): "attach_document" | "attach_image";
|
|
13
13
|
export declare function createAttachmentURL(attachment: IgcMessageAttachment): string;
|
|
14
14
|
export declare function getFileExtension(name: string): string;
|
|
15
|
+
export declare function isImageAttachment(attachment: IgcMessageAttachment | File): boolean;
|
|
15
16
|
export declare function showChatActionsTooltip(target: Element, message: string): void;
|
|
16
17
|
export declare function chatMessageAdoptPageStyles(message: IgcChatMessageComponent): void;
|
package/components/chat/utils.js
CHANGED
|
@@ -43,7 +43,9 @@ export function isAcceptedFileType(file, accepted) {
|
|
|
43
43
|
wildcardTypes.has(fileBaseType));
|
|
44
44
|
}
|
|
45
45
|
export function getChatAcceptedFiles(event, accepted) {
|
|
46
|
-
return Array.from(event.dataTransfer?.
|
|
46
|
+
return Array.from(event.dataTransfer?.items ?? [])
|
|
47
|
+
.filter((item) => item.kind === 'file' && isAcceptedFileType(item.getAsFile(), accepted))
|
|
48
|
+
.map((item) => item.getAsFile());
|
|
47
49
|
}
|
|
48
50
|
export function getIconName(fileType) {
|
|
49
51
|
return fileType?.startsWith('image') ? 'attach_image' : 'attach_document';
|
|
@@ -58,6 +60,12 @@ export function getFileExtension(name) {
|
|
|
58
60
|
const parts = name.split('.');
|
|
59
61
|
return parts.length > 1 ? last(parts) : '';
|
|
60
62
|
}
|
|
63
|
+
export function isImageAttachment(attachment) {
|
|
64
|
+
if (attachment instanceof File) {
|
|
65
|
+
return attachment.type.startsWith('image/');
|
|
66
|
+
}
|
|
67
|
+
return Boolean(attachment.type === 'image' || attachment.file?.type.startsWith('image/'));
|
|
68
|
+
}
|
|
61
69
|
export function showChatActionsTooltip(target, message) {
|
|
62
70
|
if (!actionsTooltip) {
|
|
63
71
|
actionsTooltip = document.createElement(IgcTooltipComponent.tagName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/chat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAIxD,IAAI,cAAmC,CAAC;AAQxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CACtC,MAAM,CAAC,OAAO,CAAC;IACb,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,UAAU;IACf,OAAO,EAAE,cAAc;CACxB,CAAC,CACH,CAAC;AAEF,MAAM,UAAU,sBAAsB,CACpC,SAAiB;IAEjB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5E,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,SAAS,EAAE,IAAI,GAAG,CAChB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC7D;QACD,aAAa,EAAE,IAAI,GAAG,CACpB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CACjE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,QAAsC;IAEtC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;IACtE,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE3C,OAAO,CACL,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAgB,EAChB,QAAsC;IAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/chat/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { adoptStyles, type LitElement } from 'lit';\nimport { last } from '../common/util.js';\nimport IgcTooltipComponent from '../tooltip/tooltip.js';\nimport type IgcChatMessageComponent from './chat-message.js';\nimport type { IgcMessageAttachment } from './types.js';\n\nlet actionsTooltip: IgcTooltipComponent;\n\nexport type ChatAcceptedFileTypes = {\n extensions: Set<string>;\n mimeTypes: Set<string>;\n wildcardTypes: Set<string>;\n};\n\nexport const ChatFileTypeIcons = new Map(\n Object.entries({\n css: 'file_css',\n csv: 'file_csv',\n doc: 'file_doc',\n docx: 'file_doc',\n htm: 'file_htm',\n html: 'file_html',\n js: 'file_js',\n json: 'file_json',\n pdf: 'file_pdf',\n rtf: 'file_rtf',\n svg: 'file_svg',\n txt: 'file_txt',\n url: 'file_link',\n xls: 'file_xls',\n xlsx: 'file_xls',\n xml: 'file_xml',\n zip: 'file_zip',\n default: 'file_generic',\n })\n);\n\nexport function parseAcceptedFileTypes(\n fileTypes: string\n): ChatAcceptedFileTypes {\n const types = fileTypes.split(',').map((each) => each.trim().toLowerCase());\n return {\n extensions: new Set(types.filter((t) => t.startsWith('.'))),\n mimeTypes: new Set(\n types.filter((t) => !t.startsWith('.') && !t.endsWith('/*'))\n ),\n wildcardTypes: new Set(\n types.filter((t) => t.endsWith('/*')).map((t) => t.slice(0, -2))\n ),\n };\n}\n\nexport function isAcceptedFileType(\n file: File,\n accepted: ChatAcceptedFileTypes | null\n): boolean {\n if (!(accepted && file)) {\n return true;\n }\n\n const { extensions, mimeTypes, wildcardTypes } = accepted;\n const fileType = file.type.toLowerCase();\n const fileExtension = `.${last(file.name.split('.'))?.toLowerCase()}`;\n const [fileBaseType] = fileType.split('/');\n\n return (\n extensions.has(fileExtension) ||\n mimeTypes.has(fileType) ||\n wildcardTypes.has(fileBaseType)\n );\n}\n\nexport function getChatAcceptedFiles(\n event: DragEvent,\n accepted: ChatAcceptedFileTypes | null\n): File[] {\n return Array.from(event.dataTransfer?.items ?? [])\n .filter(\n (item) =>\n item.kind === 'file' && isAcceptedFileType(item.getAsFile()!, accepted)\n )\n .map((item) => item.getAsFile()!);\n}\n\nexport function getIconName(fileType?: string) {\n return fileType?.startsWith('image') ? 'attach_image' : 'attach_document';\n}\n\nexport function createAttachmentURL(attachment: IgcMessageAttachment): string {\n if (attachment.file) {\n return URL.createObjectURL(attachment.file);\n }\n\n return attachment.url || '';\n}\n\nexport function getFileExtension(name: string): string {\n const parts = name.split('.');\n return parts.length > 1 ? last(parts) : '';\n}\n\nexport function isImageAttachment(\n attachment: IgcMessageAttachment | File\n): boolean {\n if (attachment instanceof File) {\n return attachment.type.startsWith('image/');\n }\n\n return Boolean(\n attachment.type === 'image' || attachment.file?.type.startsWith('image/')\n );\n}\n\nexport function showChatActionsTooltip(target: Element, message: string): void {\n if (!actionsTooltip) {\n actionsTooltip = document.createElement(IgcTooltipComponent.tagName);\n actionsTooltip.hideTriggers = 'pointerleave,click,blur';\n actionsTooltip.hideDelay = 100;\n document.body.appendChild(actionsTooltip);\n }\n actionsTooltip.message = message;\n actionsTooltip.show(target);\n}\n\n// REVIEW: Maybe put that behind a configuration flag as this is nasty.\nexport function chatMessageAdoptPageStyles(\n message: IgcChatMessageComponent\n): void {\n const sheets: CSSStyleSheet[] = [];\n\n for (const sheet of document.styleSheets) {\n try {\n const constructed = new CSSStyleSheet();\n for (const rule of sheet.cssRules) {\n constructed.insertRule(rule.cssText);\n }\n sheets.push(constructed);\n } catch {}\n }\n\n const ctor = message.constructor as typeof LitElement;\n adoptStyles(message.shadowRoot!, [...ctor.elementStyles, ...sheets]);\n}\n"]}
|
|
@@ -17,7 +17,7 @@ import { styles } from './themes/checkbox.base.css.js';
|
|
|
17
17
|
import { all } from './themes/checkbox-themes.js';
|
|
18
18
|
import { styles as shared } from './themes/shared/checkbox/checkbox.common.css.js';
|
|
19
19
|
let nextId = 1;
|
|
20
|
-
class IgcCheckboxComponent extends IgcCheckboxBaseComponent {
|
|
20
|
+
export default class IgcCheckboxComponent extends IgcCheckboxBaseComponent {
|
|
21
21
|
constructor() {
|
|
22
22
|
super(...arguments);
|
|
23
23
|
this._themes = addThemingController(this, all);
|
|
@@ -25,6 +25,8 @@ class IgcCheckboxComponent extends IgcCheckboxBaseComponent {
|
|
|
25
25
|
this._labelId = `checkbox-label-${this._inputId}`;
|
|
26
26
|
this.indeterminate = false;
|
|
27
27
|
}
|
|
28
|
+
static { this.tagName = 'igc-checkbox'; }
|
|
29
|
+
static { this.styles = [styles, shared]; }
|
|
28
30
|
static register() {
|
|
29
31
|
registerComponent(IgcCheckboxComponent, IgcValidationContainerComponent);
|
|
30
32
|
}
|
|
@@ -99,9 +101,6 @@ class IgcCheckboxComponent extends IgcCheckboxBaseComponent {
|
|
|
99
101
|
`;
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
|
-
IgcCheckboxComponent.tagName = 'igc-checkbox';
|
|
103
|
-
IgcCheckboxComponent.styles = [styles, shared];
|
|
104
|
-
export default IgcCheckboxComponent;
|
|
105
104
|
__decorate([
|
|
106
105
|
property({ type: Boolean, reflect: true })
|
|
107
106
|
], IgcCheckboxComponent.prototype, "indeterminate", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,+BAA+B,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iDAAiD,CAAC;AAEnF,IAAI,MAAM,GAAG,CAAC,CAAC;AAoBf,
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../src/components/checkbox/checkbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { IgcCheckboxBaseComponent } from './checkbox-base.js';\nimport { styles } from './themes/checkbox.base.css.js';\nimport { all } from './themes/checkbox-themes.js';\nimport { styles as shared } from './themes/shared/checkbox/checkbox.common.css.js';\n\nlet nextId = 1;\n\n/**\n * A check box allowing single values to be selected/deselected.\n *\n * @element igc-checkbox\n *\n * @slot - The checkbox label.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart base - The base wrapper of the checkbox.\n * @csspart control - The checkbox input element.\n * @csspart label - The checkbox label.\n * @csspart indicator - The checkbox indicator icon.\n */\nexport default class IgcCheckboxComponent extends IgcCheckboxBaseComponent {\n public static readonly tagName = 'igc-checkbox';\n protected static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCheckboxComponent, IgcValidationContainerComponent);\n }\n\n private readonly _themes = addThemingController(this, all);\n\n private readonly _inputId = `checkbox-${nextId++}`;\n private readonly _labelId = `checkbox-label-${this._inputId}`;\n\n /**\n * Draws the checkbox in indeterminate state.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public indeterminate = false;\n\n protected override _handleClick(event: PointerEvent): void {\n this.indeterminate = false;\n super._handleClick(event);\n }\n\n protected _renderValidatorContainer(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderStandard() {\n return html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path d=\"M4.1,12.7 9,17.6 20.3,6.3\" />\n </svg>\n `;\n }\n\n protected _renderIndigo() {\n return html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"18\" height=\"4\" x=\"3\" y=\"10\" rx=\"1.85\" />\n <path\n d=\"M19.033 5a1.966 1.966 0 0 0-1.418.586l-8.479 8.577-2.753-2.77a1.971 1.971 0 0 0-2.8 0 1.998 1.998 0 0 0 0 2.822l4.155 4.196a1.955 1.955 0 0 0 2.8 0l9.879-9.99a1.998 1.998 0 0 0 0-2.821 1.966 1.966 0 0 0-1.384-.6Z\"\n />\n </svg>\n `;\n }\n\n protected override render() {\n const labelledBy = this.getAttribute('aria-labelledby');\n const describedBy = this._slots.hasAssignedElements('helper-text')\n ? 'helper-text'\n : nothing;\n const checked = this.checked;\n\n return html`\n <label\n part=${partMap({\n base: true,\n checked,\n focused: this._focusRingManager.focused,\n })}\n for=${this._inputId}\n >\n <input\n id=${this._inputId}\n type=\"checkbox\"\n name=${ifDefined(this.name)}\n value=${ifDefined(this.value)}\n ?required=${this.required}\n ?disabled=${this.disabled}\n .checked=${live(checked)}\n .indeterminate=${live(this.indeterminate)}\n aria-labelledby=${labelledBy ? labelledBy : this._labelId}\n aria-describedby=${describedBy}\n @click=${this._handleClick}\n @blur=${this._handleBlur}\n />\n <span part=${partMap({ control: true, checked })}>\n <span part=${partMap({ indicator: true, checked })}>\n ${this._themes.theme === 'indigo'\n ? this._renderIndigo()\n : this._renderStandard()}\n </span>\n </span>\n <span\n id=${this._labelId}\n part=${partMap({ label: true, checked })}\n ?hidden=${this._hideLabel}\n ><slot></slot>\n </span>\n </label>\n ${this._renderValidatorContainer()}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-checkbox': IgcCheckboxComponent;\n }\n}\n"]}
|
|
@@ -9,7 +9,9 @@ import { styles as shared } from './themes/shared/switch/switch.common.css.js';
|
|
|
9
9
|
import { styles } from './themes/switch.base.css.js';
|
|
10
10
|
import { all } from './themes/switch-themes.js';
|
|
11
11
|
let nextId = 1;
|
|
12
|
-
class IgcSwitchComponent extends IgcCheckboxBaseComponent {
|
|
12
|
+
export default class IgcSwitchComponent extends IgcCheckboxBaseComponent {
|
|
13
|
+
static { this.tagName = 'igc-switch'; }
|
|
14
|
+
static { this.styles = [styles, shared]; }
|
|
13
15
|
static register() {
|
|
14
16
|
registerComponent(IgcSwitchComponent);
|
|
15
17
|
}
|
|
@@ -56,7 +58,4 @@ class IgcSwitchComponent extends IgcCheckboxBaseComponent {
|
|
|
56
58
|
`;
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
IgcSwitchComponent.tagName = 'igc-switch';
|
|
60
|
-
IgcSwitchComponent.styles = [styles, shared];
|
|
61
|
-
export default IgcSwitchComponent;
|
|
62
61
|
//# sourceMappingURL=switch.js.map
|