diff --git a/apps/scandic-web/components/TempDesignSystem/Form/Country/CountryCombobox.tsx b/apps/scandic-web/components/TempDesignSystem/Form/Country/CountryCombobox.tsx
index 962468be9..dc57b7b8e 100644
--- a/apps/scandic-web/components/TempDesignSystem/Form/Country/CountryCombobox.tsx
+++ b/apps/scandic-web/components/TempDesignSystem/Form/Country/CountryCombobox.tsx
@@ -29,7 +29,7 @@ import type { CountryProps } from "./country"
const prioCountryCode = ["DE", "DK", "FI", "NO", "SE"]
-export default function CountrySelect({
+export default function CountryCombobox({
// hack used since chrome does not respect autocomplete="off"
autoComplete = "nope",
className = "",
diff --git a/apps/scandic-web/components/TempDesignSystem/Form/Country/CountrySelect.tsx b/apps/scandic-web/components/TempDesignSystem/Form/Country/CountrySelect.tsx
new file mode 100644
index 000000000..ab376647e
--- /dev/null
+++ b/apps/scandic-web/components/TempDesignSystem/Form/Country/CountrySelect.tsx
@@ -0,0 +1,75 @@
+"use client"
+
+import { useMemo } from "react"
+import { useController } from "react-hook-form"
+import { useIntl } from "react-intl"
+
+import { Select } from "@scandic-hotels/design-system/Select"
+
+import { countries } from "@/constants/countries"
+
+import useLang from "@/hooks/useLang"
+
+import ErrorMessage from "../ErrorMessage"
+
+import type { CountryProps } from "./country"
+
+const prioCountryCode = ["DE", "DK", "FI", "NO", "SE"]
+
+export default function CountrySelect({
+ className = "",
+ label,
+ name = "country",
+ readOnly = false,
+ registerOptions = {},
+}: CountryProps) {
+ const lang = useLang()
+ const intl = useIntl()
+
+ const { field, formState, fieldState } = useController({
+ name,
+ rules: registerOptions,
+ })
+
+ const items = useMemo(() => {
+ function mapCountry(country: (typeof countries)[number]) {
+ return {
+ value: country.code,
+ label:
+ intl.formatDisplayName(country.code, { type: "region" }) ||
+ country.name,
+ }
+ }
+
+ const collator = new Intl.Collator(lang)
+ const prioCountries = countries
+ .filter((c) => prioCountryCode.includes(c.code))
+ .map(mapCountry)
+ .sort((a, b) => collator.compare(a.label, b.label))
+
+ const restCountries = countries
+ .filter((c) => !prioCountryCode.includes(c.code))
+ .map(mapCountry)
+ .sort((a, b) => collator.compare(a.label, b.label))
+
+ return [...prioCountries, ...restCountries]
+ }, [intl, lang])
+
+ return (
+
+
+ )
+}
diff --git a/apps/scandic-web/components/TempDesignSystem/Form/Country/index.tsx b/apps/scandic-web/components/TempDesignSystem/Form/Country/index.tsx
index ab376647e..21c534d2c 100644
--- a/apps/scandic-web/components/TempDesignSystem/Form/Country/index.tsx
+++ b/apps/scandic-web/components/TempDesignSystem/Form/Country/index.tsx
@@ -1,75 +1,20 @@
"use client"
-import { useMemo } from "react"
-import { useController } from "react-hook-form"
-import { useIntl } from "react-intl"
+import { useMediaQuery } from "usehooks-ts"
-import { Select } from "@scandic-hotels/design-system/Select"
-
-import { countries } from "@/constants/countries"
-
-import useLang from "@/hooks/useLang"
-
-import ErrorMessage from "../ErrorMessage"
+import CountryCombobox from "./CountryCombobox"
+import CountrySelect from "./CountrySelect"
import type { CountryProps } from "./country"
-const prioCountryCode = ["DE", "DK", "FI", "NO", "SE"]
-
-export default function CountrySelect({
- className = "",
- label,
- name = "country",
- readOnly = false,
- registerOptions = {},
-}: CountryProps) {
- const lang = useLang()
- const intl = useIntl()
-
- const { field, formState, fieldState } = useController({
- name,
- rules: registerOptions,
+export default function Country(props: CountryProps) {
+ const isDesktop = useMediaQuery("(min-width: 768px)", {
+ initializeWithValue: false,
})
- const items = useMemo(() => {
- function mapCountry(country: (typeof countries)[number]) {
- return {
- value: country.code,
- label:
- intl.formatDisplayName(country.code, { type: "region" }) ||
- country.name,
- }
- }
-
- const collator = new Intl.Collator(lang)
- const prioCountries = countries
- .filter((c) => prioCountryCode.includes(c.code))
- .map(mapCountry)
- .sort((a, b) => collator.compare(a.label, b.label))
-
- const restCountries = countries
- .filter((c) => !prioCountryCode.includes(c.code))
- .map(mapCountry)
- .sort((a, b) => collator.compare(a.label, b.label))
-
- return [...prioCountries, ...restCountries]
- }, [intl, lang])
-
- return (
-
-
+ return isDesktop ? (
+
+ ) : (
+
)
}
diff --git a/apps/scandic-web/components/TempDesignSystem/Form/Date/index.tsx b/apps/scandic-web/components/TempDesignSystem/Form/Date/index.tsx
index 26758a70e..5d57c889e 100644
--- a/apps/scandic-web/components/TempDesignSystem/Form/Date/index.tsx
+++ b/apps/scandic-web/components/TempDesignSystem/Form/Date/index.tsx
@@ -3,6 +3,7 @@ import { parseDate } from "@internationalized/date"
import { useEffect } from "react"
import { useController, useFormContext, useWatch } from "react-hook-form"
import { useIntl } from "react-intl"
+import { useMediaQuery } from "usehooks-ts"
import { Select } from "@scandic-hotels/design-system/Select"
@@ -20,6 +21,9 @@ import styles from "./date.module.css"
export default function DateSelect({ name, registerOptions = {} }: DateProps) {
const intl = useIntl()
const lang = useLang()
+ const isDesktop = useMediaQuery("(min-width: 768px)", {
+ initializeWithValue: false,
+ })
const { control, setValue, formState, watch } = useFormContext()
const { field, fieldState } = useController({
@@ -126,6 +130,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
name={DateName.day}
onSelectionChange={(key) => setValue(DateName.day, Number(key))}
isRequired
+ enableFiltering={isDesktop}
isInvalid={fieldState.invalid}
onBlur={field.onBlur}
defaultSelectedKey={dateValue?.day}
@@ -141,6 +146,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
name={DateName.month}
onSelectionChange={(key) => setValue(DateName.month, Number(key))}
isRequired
+ enableFiltering={isDesktop}
isInvalid={fieldState.invalid}
onBlur={field.onBlur}
defaultSelectedKey={dateValue?.month}
@@ -156,6 +162,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
name={DateName.year}
onSelectionChange={(key) => setValue(DateName.year, Number(key))}
isRequired
+ enableFiltering={isDesktop}
isInvalid={fieldState.invalid}
onBlur={field.onBlur}
defaultSelectedKey={dateValue?.year}
diff --git a/packages/design-system/lib/components/Select/Select.tsx b/packages/design-system/lib/components/Select/Select.tsx
index deb37342a..409b6d9de 100644
--- a/packages/design-system/lib/components/Select/Select.tsx
+++ b/packages/design-system/lib/components/Select/Select.tsx
@@ -28,7 +28,7 @@ export function Select({
}: SelectProps | SelectFilterProps) {
const [isOpen, setIsOpen] = useState(false)
- if ('enableFiltering' in props) {
+ if (props.enableFiltering) {
return (
{
name: string
label: string
onSelectionChange?: (key: Key | null) => void
+ enableFiltering?: false
}
export interface SelectItemProps extends ComponentProps {
@@ -32,5 +33,5 @@ export interface SelectFilterProps extends ComponentProps {
name: string
label: string
onSelectionChange?: (key: Key | null) => void
- enableFiltering: boolean
+ enableFiltering: true
}