Skip to content

Commit cb3bddd

Browse files
when custom buttom is clicked the iput section is focused
1 parent 78c093d commit cb3bddd

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

component/src/views/chat/input/buttons/custom/customButton.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import {DropupMenuStyles, DropupStyles} from '../../../../../types/dropupStyles';
21
import {StatefulEvents} from '../../../../../utils/element/statefulEvents';
2+
import {DropupMenuStyles} from '../../../../../types/dropupStyles';
33
import {CUSTOM_ICON_STRING} from '../../../../../icons/customIcon';
44
import {StyleUtils} from '../../../../../utils/element/styleUtils';
55
import {HTMLUtils} from '../../../messages/html/htmlUtils';
66
import {ButtonAccessibility} from '../buttonAccessility';
77
import {ButtonStyles} from '../../../../../types/button';
88
import {DropupItem} from '../../dropup/dropupItem';
9+
import {DeepChat} from '../../../../../deepChat';
910
import {InputButton} from '../inputButton';
1011
import {ButtonUtils} from '../buttonUtils';
1112
import {ButtonCSS} from '../buttonCSS';
@@ -40,7 +41,7 @@ export class CustomButton extends InputButton<Styles> {
4041
private readonly _menuStyles?: DropupMenuStyles;
4142
override isCustom = true;
4243

43-
constructor(customButton: CustomButtonT, index: number, menuStyles?: DropupMenuStyles) {
44+
constructor(customButton: CustomButtonT, index: number, focusInput?: () => void, menuStyles?: DropupMenuStyles) {
4445
const dropupText = customButton?.styles?.button?.default?.text?.content || `Custom ${index}`;
4546
const svg = CUSTOM_ICON_STRING;
4647
super(CustomButton.createButtonElement(), svg, customButton?.position, customButton?.styles?.button, dropupText);
@@ -49,7 +50,7 @@ export class CustomButton extends InputButton<Styles> {
4950
this._onClick = customButton.onClick;
5051
this._dropupStyles = customButton.styles?.dropup;
5152
this.setSetState(customButton);
52-
this.addClickListener();
53+
this.addClickListener(focusInput);
5354
this.changeState(customButton.initialState, true);
5455
}
5556

@@ -77,9 +78,10 @@ export class CustomButton extends InputButton<Styles> {
7778
};
7879
}
7980

80-
private addClickListener() {
81+
private addClickListener(focusInput?: () => void) {
8182
this.elementRef.addEventListener('click', () => {
8283
const resultState = this._onClick?.(this._state);
84+
focusInput?.();
8385
if (resultState === 'default' || resultState === 'active' || resultState === 'disabled') {
8486
this.changeState(resultState);
8587
}
@@ -203,9 +205,10 @@ export class CustomButton extends InputButton<Styles> {
203205
}
204206
}
205207

206-
public static add(customButtons: CustomButtonT[], buttons: Buttons, dropupStyles?: DropupStyles) {
207-
customButtons.forEach((customButton, index) => {
208-
const button = {button: new CustomButton(customButton, index + 1, dropupStyles?.menu)};
208+
public static add(deepChat: DeepChat, buttons: Buttons) {
209+
const {customButtons, focusInput, dropupStyles} = deepChat;
210+
customButtons?.forEach((customButton, index) => {
211+
const button = {button: new CustomButton(customButton, index + 1, focusInput, dropupStyles?.menu)};
209212
buttons[`${CustomButton.INDICATOR_PREFIX}${index + 1}`] = button;
210213
});
211214
}

component/src/views/chat/input/input.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export class Input {
4343
ValidationHandler.attach(deepChat, serviceIO, textInput, fileAtts, submitButton);
4444
deepChat.submitUserMessage = submitButton.programmaticSubmit.bind(submitButton);
4545
buttons.submit = {button: submitButton};
46-
if (deepChat.customButtons) CustomButton.add(deepChat.customButtons, buttons, deepChat.dropupStyles);
46+
if (deepChat.customButtons) CustomButton.add(deepChat, buttons);
4747
Input.addElements(this.elementRef, textInput, buttons, containerElement, fileAtts, deepChat.dropupStyles);
4848
}
4949

0 commit comments

Comments
 (0)