Search updates
This commit is contained in:
@@ -21,8 +21,8 @@ export function Homepage() {
|
|||||||
} = useQueryAPI({
|
} = useQueryAPI({
|
||||||
endpoint: 'api/messages',
|
endpoint: 'api/messages',
|
||||||
});
|
});
|
||||||
const [personalData, setPersonalData] = useState<any>([]);
|
const [personalData, setPersonalData] = useState<any>(null);
|
||||||
const [messages, setMessages] = useState<any>([]);
|
const [messages, setMessages] = useState<any>(null);
|
||||||
const [displayedGreeting, setDisplayedGreeting] = useState('');
|
const [displayedGreeting, setDisplayedGreeting] = useState('');
|
||||||
const [weatherModalOpened, { open: openWeatherModal, close: closeWeatherModal }] =
|
const [weatherModalOpened, { open: openWeatherModal, close: closeWeatherModal }] =
|
||||||
useDisclosure(false);
|
useDisclosure(false);
|
||||||
|
|||||||
@@ -83,8 +83,8 @@ function Header({
|
|||||||
{greet
|
{greet
|
||||||
.replace('$firstName', currentUser.firstName)
|
.replace('$firstName', currentUser.firstName)
|
||||||
.replace('$lastName', currentUser.lastName)
|
.replace('$lastName', currentUser.lastName)
|
||||||
.replace('$firstName!', currentUser.firstName.toUpperCase())
|
.replace('$firstName^', currentUser.firstName.toUpperCase())
|
||||||
.replace('$lastName!', currentUser.lastName.toUpperCase())}
|
.replace('$lastName^', currentUser.lastName.toUpperCase())}
|
||||||
</Text>
|
</Text>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Stack
|
<Stack
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ export default function Search({
|
|||||||
endpoint: 'api/providers',
|
endpoint: 'api/providers',
|
||||||
});
|
});
|
||||||
const [providerData, setProviderData] = useState<any>([]);
|
const [providerData, setProviderData] = useState<any>([]);
|
||||||
|
const { data: apps, isFetching: isAppsFetching } = useQueryAPI({
|
||||||
|
endpoint: 'api/apps',
|
||||||
|
});
|
||||||
|
const [applicationData, setApplicationData] = useState<any>([]);
|
||||||
const [providerModalOpened, { open: openProviderModal, close: closeProviderModal }] =
|
const [providerModalOpened, { open: openProviderModal, close: closeProviderModal }] =
|
||||||
useDisclosure(false);
|
useDisclosure(false);
|
||||||
const {
|
const {
|
||||||
@@ -30,6 +34,7 @@ export default function Search({
|
|||||||
const handleKeyPress = (item: any) => {
|
const handleKeyPress = (item: any) => {
|
||||||
let option = '';
|
let option = '';
|
||||||
let subtext = '';
|
let subtext = '';
|
||||||
|
|
||||||
const urlPattern = new RegExp(
|
const urlPattern = new RegExp(
|
||||||
'^(https?:\\/\\/)?' + // protocol
|
'^(https?:\\/\\/)?' + // protocol
|
||||||
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
|
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
|
||||||
@@ -58,6 +63,11 @@ export default function Search({
|
|||||||
open(`${providerURL}${subtext}`, '_self');
|
open(`${providerURL}${subtext}`, '_self');
|
||||||
} else if (providerLabel === 'Show weather') {
|
} else if (providerLabel === 'Show weather') {
|
||||||
openWeatherModal();
|
openWeatherModal();
|
||||||
|
} else if (providerLabel.startsWith('Launch')) {
|
||||||
|
open(
|
||||||
|
`${applicationData?.find((app: any) => app.baseUrl.substr(1).toLowerCase() === item.target.value.substr(1)).url}`,
|
||||||
|
'_self',
|
||||||
|
);
|
||||||
} else if (urlPattern.test(item.target.value)) {
|
} else if (urlPattern.test(item.target.value)) {
|
||||||
if (/^(https?:\/\/).*/i.test(item.target.value))
|
if (/^(https?:\/\/).*/i.test(item.target.value))
|
||||||
window.location = item.target.value;
|
window.location = item.target.value;
|
||||||
@@ -74,6 +84,11 @@ export default function Search({
|
|||||||
}
|
}
|
||||||
}, [providers, providersIsFetched]);
|
}, [providers, providersIsFetched]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (apps && !isAppsFetching) {
|
||||||
|
setApplicationData(apps);
|
||||||
|
}
|
||||||
|
}, [apps, isAppsFetching]);
|
||||||
return (
|
return (
|
||||||
<Stack
|
<Stack
|
||||||
style={{
|
style={{
|
||||||
@@ -99,7 +114,9 @@ export default function Search({
|
|||||||
if (
|
if (
|
||||||
item.target.value === '/?' ||
|
item.target.value === '/?' ||
|
||||||
item.target.value === '!help' ||
|
item.target.value === '!help' ||
|
||||||
item.target.value === '!h'
|
item.target.value === '/help' ||
|
||||||
|
item.target.value === '!h' ||
|
||||||
|
item.target.value === '/h'
|
||||||
) {
|
) {
|
||||||
setProviderLabel('Show help');
|
setProviderLabel('Show help');
|
||||||
} else if (item.target.value.startsWith('/')) {
|
} else if (item.target.value.startsWith('/')) {
|
||||||
@@ -111,6 +128,15 @@ export default function Search({
|
|||||||
} else if (item.target.value.startsWith('!')) {
|
} else if (item.target.value.startsWith('!')) {
|
||||||
if (item.target.value === '!w' || item.target.value === '!weather') {
|
if (item.target.value === '!w' || item.target.value === '!weather') {
|
||||||
setProviderLabel('Show weather');
|
setProviderLabel('Show weather');
|
||||||
|
} else if (
|
||||||
|
applicationData?.find(
|
||||||
|
(app: any) =>
|
||||||
|
app.baseUrl.substr(1).toLowerCase() === item.target.value.substr(1),
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
setProviderLabel(`Launch ${item.target.value.substr(1)}`);
|
||||||
|
} else {
|
||||||
|
setProviderLabel('Invalid function');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setProviderLabel('Google Search');
|
setProviderLabel('Google Search');
|
||||||
@@ -118,7 +144,11 @@ export default function Search({
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onKeyUp={(item: any) => {
|
onKeyUp={(item: any) => {
|
||||||
if (providerLabel !== 'Invalid Search') {
|
if (item.code === 'Escape') {
|
||||||
|
setSearchValue('');
|
||||||
|
setProviderLabel('Google Search');
|
||||||
|
}
|
||||||
|
if (!providerLabel.startsWith('Invalid')) {
|
||||||
handleKeyPress(item);
|
handleKeyPress(item);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -38,6 +38,21 @@
|
|||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
padding-right: 1em;
|
padding-right: 1em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
&[data-active="true"]{
|
||||||
|
background-color: color-mix(in srgb,var(--color-search-background), transparent 50%);
|
||||||
|
border-color: var(--color-border);
|
||||||
|
outline: none;
|
||||||
|
color: var(--color-text-pri);
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 1.2em;
|
||||||
|
letter-spacing: .2em;
|
||||||
|
width:100%;
|
||||||
|
border-top-left-radius: .25em;
|
||||||
|
border-top-right-radius: .25em;
|
||||||
|
border-bottom-left-radius: .25em;
|
||||||
|
border-bottom-right-radius: .25em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.section{
|
.section{
|
||||||
transition: opacity 0.1s 0s ease;
|
transition: opacity 0.1s 0s ease;
|
||||||
@@ -52,7 +67,7 @@
|
|||||||
background-color: var(--color-search-background);
|
background-color: var(--color-search-background);
|
||||||
border-color: var(--color-border);
|
border-color: var(--color-border);
|
||||||
outline: none;
|
outline: none;
|
||||||
color: var(--color-text-acc);
|
color: var(--color-text-pri);
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
@@ -62,6 +77,21 @@
|
|||||||
border-top-right-radius: .25em;
|
border-top-right-radius: .25em;
|
||||||
border-bottom-left-radius: .25em;
|
border-bottom-left-radius: .25em;
|
||||||
border-bottom-right-radius: .25em;
|
border-bottom-right-radius: .25em;
|
||||||
|
&[data-active="true"]{
|
||||||
|
background-color: var(--color-search-background);
|
||||||
|
border-color: var(--color-border);
|
||||||
|
outline: none;
|
||||||
|
color: var(--color-text-pri);
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 1.2em;
|
||||||
|
letter-spacing: .2em;
|
||||||
|
width:100%;
|
||||||
|
border-top-left-radius: .25em;
|
||||||
|
border-top-right-radius: .25em;
|
||||||
|
border-bottom-left-radius: .25em;
|
||||||
|
border-bottom-right-radius: .25em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.section{
|
.section{
|
||||||
transition: opacity 0.4s 0.4s ease;
|
transition: opacity 0.4s 0.4s ease;
|
||||||
@@ -71,20 +101,5 @@
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.input[data-active="true"]{
|
|
||||||
background-color: var(--color-search-background);
|
|
||||||
border-color: var(--color-border);
|
|
||||||
outline: none;
|
|
||||||
color: var(--color-text-acc);
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 1.2em;
|
|
||||||
letter-spacing: .2em;
|
|
||||||
width:100%;
|
|
||||||
border-top-left-radius: .25em;
|
|
||||||
border-top-right-radius: .25em;
|
|
||||||
border-bottom-left-radius: .25em;
|
|
||||||
border-bottom-right-radius: .25em;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user