diff --git a/packages/bbui/src/Form/Core/BBDatePicker.svelte b/packages/bbui/src/Form/Core/BBDatePicker.svelte
deleted file mode 100644
index 92dbb7f18e..0000000000
--- a/packages/bbui/src/Form/Core/BBDatePicker.svelte
+++ /dev/null
@@ -1,493 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {#each DaysOfWeek as day}
-
-
- {day[0]}
-
- |
- {/each}
-
-
-
- {#each mondays as monday}
-
- {#each [0, 1, 2, 3, 4, 5, 6] as dayOffset}
- {@const date = monday.add(dayOffset, "days")}
- {@const outsideMonth = date.month() !== calendarDate.month()}
- handleDateChange(date)}
- >
-
- {date.date()}
-
- |
- {/each}
-
- {/each}
-
-
-
-
- {#if parsedValue && enableTime}
-
-
- :
-
-
- {/if}
-
-
-
diff --git a/packages/bbui/src/Form/Core/DateTimePicker/Calendar.svelte b/packages/bbui/src/Form/Core/DateTimePicker/Calendar.svelte
new file mode 100644
index 0000000000..f943a63254
--- /dev/null
+++ b/packages/bbui/src/Form/Core/DateTimePicker/Calendar.svelte
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+ {#each DaysOfWeek as day}
+
+
+ {day[0]}
+
+ |
+ {/each}
+
+
+
+ {#each mondays as monday}
+
+ {#each [0, 1, 2, 3, 4, 5, 6] as dayOffset}
+ {@const date = monday.add(dayOffset, "days")}
+ {@const outsideMonth = date.month() !== calendarDate.month()}
+ handleDateChange(date)}
+ >
+
+ {date.date()}
+
+ |
+ {/each}
+
+ {/each}
+
+
+
+
+
+
diff --git a/packages/bbui/src/Form/Core/DateTimePicker/DateTimeField.svelte b/packages/bbui/src/Form/Core/DateTimePicker/DateTimeField.svelte
new file mode 100644
index 0000000000..cf7d141109
--- /dev/null
+++ b/packages/bbui/src/Form/Core/DateTimePicker/DateTimeField.svelte
@@ -0,0 +1,98 @@
+
+
+
+
+
diff --git a/packages/bbui/src/Form/Core/DateTimePicker/DateTimePicker.svelte b/packages/bbui/src/Form/Core/DateTimePicker/DateTimePicker.svelte
new file mode 100644
index 0000000000..a0e51a38fb
--- /dev/null
+++ b/packages/bbui/src/Form/Core/DateTimePicker/DateTimePicker.svelte
@@ -0,0 +1,170 @@
+
+
+
+
+
+ {#if isOpen}
+
+ {#if showCalendar}
+
+ {/if}
+ {#if showCalendar && showTime}
+
+ {/if}
+ {#if showTime}
+
+ {/if}
+
+ {/if}
+
+
+
diff --git a/packages/bbui/src/Form/Core/DateTimePicker/TimePicker.svelte b/packages/bbui/src/Form/Core/DateTimePicker/TimePicker.svelte
new file mode 100644
index 0000000000..60e1f313dc
--- /dev/null
+++ b/packages/bbui/src/Form/Core/DateTimePicker/TimePicker.svelte
@@ -0,0 +1,65 @@
+
+
+
+
+ :
+
+
+
+
diff --git a/packages/bbui/src/Form/Core/DateTimePicker/utils.js b/packages/bbui/src/Form/Core/DateTimePicker/utils.js
new file mode 100644
index 0000000000..953c3eb6c0
--- /dev/null
+++ b/packages/bbui/src/Form/Core/DateTimePicker/utils.js
@@ -0,0 +1,14 @@
+export const cleanInput = ({ max, pad, fallback }) => {
+ return e => {
+ if (e.target.value) {
+ const value = parseInt(e.target.value)
+ if (isNaN(value)) {
+ e.target.value = fallback
+ } else {
+ e.target.value = Math.min(max, value).toString().padStart(pad, "0")
+ }
+ } else {
+ e.target.value = fallback
+ }
+ }
+}
diff --git a/packages/bbui/src/index.js b/packages/bbui/src/index.js
index 407a8c2cec..689cde05d7 100644
--- a/packages/bbui/src/index.js
+++ b/packages/bbui/src/index.js
@@ -54,7 +54,7 @@ export { default as Notification } from "./Notification/Notification.svelte"
export { default as SideNavigation } from "./SideNavigation/Navigation.svelte"
export { default as SideNavigationItem } from "./SideNavigation/Item.svelte"
export { default as DatePicker } from "./Form/DatePicker.svelte"
-export { default as BBDatePicker } from "./Form/Core/BBDatePicker.svelte"
+export { default as DateTimePicker } from "./Form/Core/DateTimePicker/DateTimePicker.svelte"
export { default as Multiselect } from "./Form/Multiselect.svelte"
export { default as Context } from "./context"
export { default as Table } from "./Table/Table.svelte"
diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte
index 5fca9fb189..dbe4b9626d 100644
--- a/packages/builder/src/pages/builder/portal/apps/index.svelte
+++ b/packages/builder/src/pages/builder/portal/apps/index.svelte
@@ -11,7 +11,7 @@
Body,
Search,
DatePicker,
- BBDatePicker,
+ DateTimePicker,
} from "@budibase/bbui"
import Spinner from "components/common/Spinner.svelte"
import CreateAppModal from "components/start/CreateAppModal.svelte"
@@ -212,7 +212,7 @@
Date only
- (foo = e.detail)}
@@ -220,17 +220,25 @@
Date time
- (foo = e.detail)} />
+ (foo = e.detail)}
+ />
Date time no timezone
- (foo = e.detail)}
/>
+
Time only
+
+ (foo = e.detail)} />
+