{
+ handleMenuItemAction = (item: MenuItem | null, e: React.MouseEvent | React.KeyboardEvent) => {
this.onBlur();
- item.action();
+ if (item?.action) {
+ item.action(e);
+ }
}
- handleMenuItemClick = item => {
+ handleMenuItemClick = (item: MenuItem | null): React.MouseEventHandler => {
return e => {
e.preventDefault();
- this.handleMenuItemAction(item);
+ this.handleMenuItemAction(item, e);
};
}
@@ -241,23 +254,23 @@ export default class AutosuggestInput extends ImmutablePureComponent {
className={classNames('flex items-center space-x-2 px-4 py-2.5 text-sm text-gray-700 dark:text-gray-400 cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-700', { selected: suggestions.size - selectedSuggestion === i })}
href='#'
role='button'
- tabIndex='0'
+ tabIndex={0}
onMouseDown={this.handleMenuItemClick(item)}
key={i}
>
- {item.icon && (
+ {item?.icon && (
)}
-
{item.text}
+
{item?.text}
));
};
render() {
- const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, menu } = this.props;
+ const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, menu, resultsPosition } = this.props;
const { suggestionsHidden } = this.state;
- const style = { direction: 'ltr' };
+ const style: React.CSSProperties = { direction: 'ltr' };
const visible = !suggestionsHidden && (!suggestions.isEmpty() || (menu && value));
@@ -273,8 +286,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
type='text'
className={classNames({
'block w-full sm:text-sm dark:bg-slate-800 dark:text-white dark:placeholder:text-gray-500 focus:ring-indigo-500 focus:border-indigo-500': true,
- [className]: typeof className !== 'undefined',
- })}
+ }, className)}
ref={this.setInput}
disabled={disabled}
placeholder={placeholder}
@@ -293,7 +305,9 @@ export default class AutosuggestInput extends ImmutablePureComponent {
/>
>
)}
diff --git a/app/soapbox/features/compose/components/search.tsx b/app/soapbox/features/compose/components/search.tsx
index 401001fc9..d68f82bc2 100644
--- a/app/soapbox/features/compose/components/search.tsx
+++ b/app/soapbox/features/compose/components/search.tsx
@@ -21,7 +21,7 @@ const messages = defineMessages({
action: { id: 'search.action', defaultMessage: 'Search for “{query}”' },
});
-function redirectToAccount(accountId: number, routerHistory: any) {
+function redirectToAccount(accountId: string, routerHistory: any) {
return (_dispatch: any, getState: () => ImmutableMap
) => {
const acct = getState().getIn(['accounts', accountId, 'acct']);
@@ -97,7 +97,7 @@ const Search = (props: ISearch) => {
dispatch(showSearch());
};
- const handleSelected = (accountId: number) => {
+ const handleSelected = (accountId: string) => {
dispatch(clearSearch());
dispatch(redirectToAccount(accountId, history));
};
diff --git a/app/styles/basics.scss b/app/styles/basics.scss
index 33257bf2a..987a6d58d 100644
--- a/app/styles/basics.scss
+++ b/app/styles/basics.scss
@@ -100,18 +100,7 @@ noscript {
}
.floating-link {
- width: 100%;
- height: 100%;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- position: absolute;
- z-index: 201;
- background: transparent;
- border: 0;
- margin: 0;
- padding: 0;
+ @apply w-full h-full inset-0 absolute z-10;
}
.greentext {