diff --git a/CHANGELOG.md b/CHANGELOG.md index c3d474171..5549628d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## v1.0.0-121 + + +### 🏡 Chore + +- Update config ([2de647e](https://github.com/undb-io/undb/commit/2de647e)) + +### ❤️ Contributors + +- Nichenqin ([@nichenqin](http://github.com/nichenqin)) + ## v1.0.0-120 diff --git a/apps/backend/src/modules/openapi/record.openapi.ts b/apps/backend/src/modules/openapi/record.openapi.ts index ef00a534b..76fd2c137 100644 --- a/apps/backend/src/modules/openapi/record.openapi.ts +++ b/apps/backend/src/modules/openapi/record.openapi.ts @@ -14,7 +14,12 @@ import { CommandBus, QueryBus } from "@undb/cqrs" import { inject, singleton } from "@undb/di" import { Option, type ICommandBus, type IQueryBus, type PaginatedDTO } from "@undb/domain" import { injectQueryBuilder, type IQueryBuilder } from "@undb/persistence" -import { GetPivotDataQuery, GetReadableRecordByIdQuery, GetReadableRecordsQuery } from "@undb/queries" +import { + GetAggregatesQuery, + GetPivotDataQuery, + GetReadableRecordByIdQuery, + GetReadableRecordsQuery, +} from "@undb/queries" import { RecordDO, type IRecordReadableValueDTO } from "@undb/table" import Elysia, { t } from "elysia" import { withTransaction } from "../../db" @@ -97,6 +102,33 @@ export class RecordOpenApi { }, }, ) + .get( + "/views/:viewName/records/aggregate", + async (ctx) => { + const baseName = decodeURIComponent(ctx.params.baseName) + const tableName = decodeURIComponent(ctx.params.tableName) + const viewName = decodeURIComponent(ctx.params.viewName) + + const result = await this.queryBus.execute( + new GetAggregatesQuery({ baseName, tableName, viewName, isReadable: true }), + ) + return { + data: result, + } + }, + { + params: t.Object({ + baseName: t.String(), + tableName: t.String(), + viewName: t.String(), + }), + detail: { + tags: ["Record", "Aggregate"], + summary: "Get record aggregate in view", + description: "Get record aggregate in view", + }, + }, + ) .get( "/views/:viewName/records/:recordId", async (ctx) => { diff --git a/apps/frontend/schema.graphql b/apps/frontend/schema.graphql index d4d905da9..88de5d169 100644 --- a/apps/frontend/schema.graphql +++ b/apps/frontend/schema.graphql @@ -21,6 +21,13 @@ type Base { type CalendarOption { field: String + timeScale: CalendarTimeScale +} + +enum CalendarTimeScale { + day + month + week } type Dashboard { diff --git a/apps/frontend/src/lib/components/blocks/aggregate/config/aggregate-config.svelte b/apps/frontend/src/lib/components/blocks/aggregate/config/aggregate-config.svelte index 548fe4def..0642aea4a 100644 --- a/apps/frontend/src/lib/components/blocks/aggregate/config/aggregate-config.svelte +++ b/apps/frontend/src/lib/components/blocks/aggregate/config/aggregate-config.svelte @@ -50,6 +50,10 @@ await tick() await client.invalidateQueries({ queryKey: ["aggregate", table.id.value, widget.id] }) } + if (isDashboard) { + await invalidate(`undb:dashboard:${$dashboard.id.value}`) + await tick() + } onSuccess() }, onError(error, variables, context) { @@ -61,7 +65,7 @@ mutationFn: trpc.dashboard.widget.update.mutate, async onSuccess(data, variables, context) { if (table) { - await invalidate(`dashboard:${$dashboard.id.value}`) + await invalidate(`undb:dashboard:${$dashboard.id.value}`) await tick() await client.invalidateQueries({ queryKey: ["aggregate", table.id.value, widget.id] }) } diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-date-remove-button.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-date-remove-button.svelte index e52032b07..8d00b569f 100644 --- a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-date-remove-button.svelte +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-date-remove-button.svelte @@ -8,7 +8,7 @@ import { createMutation } from "@tanstack/svelte-query" import { useQueryClient } from "@tanstack/svelte-query" import { cn } from "$lib/utils" - import { monthStore } from "$lib/store/calendar.store" + import { calendarStore } from "$lib/store/calendar.store" export let view: CalendarView @@ -69,6 +69,6 @@ } - diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-option-button.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-option-button.svelte index fc1bf20cc..e62c8ad2d 100644 --- a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-option-button.svelte +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-option-button.svelte @@ -18,12 +18,12 @@ - + + +

Select time scale

+
+ + + + + + No time scale found. + + {#each filtered as scale} + { + onSelect(value) + closeAndFocusTrigger(ids.trigger) + }} + > + + + {$LL.table.timeScales[scale]() ?? scale} + + + {/each} + + + + diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-day-timeline.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-day-timeline.svelte new file mode 100644 index 000000000..49f10d601 --- /dev/null +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-day-timeline.svelte @@ -0,0 +1,498 @@ + + +
+ {#each HOURS as hour} + {@const isSelected = getIsSelected(hour)} + + +
handleTimeSlotClick(hour)} + > + +
+ +
+ {/each} + +
+ + + {#if isToday($date) && now} +
+
+
+
+ {now?.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })} +
+
+
+
+ {/if} + + + {#if $store.records} + {@const eventPositions = calculateEventPositions( + Array.from($store.records.entries()), + aboutToDropRecord, + overHour !== undefined && overMinutes !== undefined ? { hour: overHour, minutes: overMinutes } : undefined, + )} + {#each eventPositions as position} + {@const displayValue = displayField + ? position.record.getValue(displayField.id).into(undefined)?.value || position.record.getDisplayValue($table) + : "Untitled"} + {@const colorSpec = color?.getSpec($table.schema).into(undefined)} + {@const isMatch = colorSpec ? position.record.match(colorSpec) : false} + {@const condition = isMatch ? color?.getMatchedFieldConditions($table, position.record)[0] : undefined} + {@const title = + field.type === "date" + ? `${position.start.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })}` + : `${position.start.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })} - ${position.end.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })}`} +
+ +
+ {/each} + {/if} +
+
diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-day.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-day.svelte new file mode 100644 index 000000000..03b003700 --- /dev/null +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-day.svelte @@ -0,0 +1,101 @@ + + +
+ +
+
+ + {#if days > 1} +
+ {#each $displayDates as date} +
+
{format(date, "EEE")}
+
{format(date, "MMM d")}
+
+ {/each} +
+ {/if} + + +
+ +
+ {#each HOURS as hour, index} +
+
+ {formatHour(hour)} +
+
+ {/each} +
+ + {#if $displayDates.length === 1} + + {:else} + {#each $displayDates as date (date.toISOString())} + {#key date.toISOString()} + + {/key} + {/each} + {/if} +
+
+
+ + +
+
+ +
+
+ +
+
+
diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-day.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-day.svelte new file mode 100644 index 000000000..365e5b892 --- /dev/null +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-day.svelte @@ -0,0 +1,63 @@ + + +
+
+ +
+ {format($calendarStore.selectedDate, "MMMM yyyy")} +
+ +
+ +
+ {#each weekDays as day} +
+ {day} +
+ {/each} +
+ +
+ {#each $calendarStore.dates as date} + {@const isDateSelected = $isSelected(date)} + {@const isCurrentMonth = $getIsSameMonth(date)} + {@const isCurrentDay = isToday(date)} + + {/each} +
+
diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month-control.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month-control.svelte index c5c84ad3e..13c712ee1 100644 --- a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month-control.svelte +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month-control.svelte @@ -1,25 +1,76 @@ - - + - + {#if timeScale === "day"} + + {:else if timeScale === "week"} + + {:else} + + {/if} - diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month.svelte index efd9ffcc1..e24ac64e3 100644 --- a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month.svelte +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-mini-month.svelte @@ -1,23 +1,25 @@
- {$currentYear} -
@@ -32,7 +34,10 @@ isCurrentMonth && "bg-gray-200 font-semibold", isNow && !isCurrentMonth && "font-semibold text-blue-500", )} - on:click={() => monthStore.setMonth(date)} + on:click={() => { + calendarStore.setMonth(date) + onChange(date) + }} > {format(date, "MMM")} diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date-record.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date-record.svelte index 88f994679..8b62138c0 100644 --- a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date-record.svelte +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date-record.svelte @@ -1,10 +1,13 @@ -
- - + + + +

{displayValue} · {value}

+
+ diff --git a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date.svelte b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date.svelte index 8ee03b404..2c86691e3 100644 --- a/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date.svelte +++ b/apps/frontend/src/lib/components/blocks/calendar-view/calendar-view-month-date.svelte @@ -4,7 +4,7 @@ import { DateIsSameDay, type RecordDO, type DateField, type DateRangeField, DateFieldValue } from "@undb/table" import { type Writable } from "svelte/store" import { onMount } from "svelte" - import { monthStore } from "$lib/store/calendar.store" + import { calendarStore } from "$lib/store/calendar.store" import CalendarViewMonthDateRecord from "./calendar-view-month-date-record.svelte" import { getDate } from "date-fns/getDate" import { isToday } from "date-fns/isToday" @@ -25,8 +25,15 @@ export let shareId: string | undefined = undefined export let viewId: Readable - const isSelected = monthStore.isSelected - const getIsSameMonth = monthStore.getIsSameMonth + const table = getTable() + const store = getRecordsStore() + + const records = store.records + + const isSelected = calendarStore.isSelected + const getIsSameMonth = calendarStore.getIsSameMonth + + $: color = $viewId ? $table.views.getViewById($viewId)?.color.into(undefined) : undefined $: day = getDate(date) $: today = isToday(date) @@ -35,11 +42,6 @@ $: selected = $isSelected(date) $: isSameMonth = $getIsSameMonth(date) - const table = getTable() - const store = getRecordsStore() - - const records = store.records - $: dateRecords = $records.filter((r) => { const spec = new DateIsSameDay(date, field.id) return spec.isSatisfiedBy(r) @@ -159,11 +161,11 @@
monthStore.select(date)} + on:click={() => calendarStore.select(date)} on:dblclick={() => onCreateRecord(date)} class={cn( "group relative h-full border-b border-r border-gray-200 bg-white p-2", - ($monthStore.dates.indexOf(date) + 1) % 7 === 0 && "border-r-0", + ($calendarStore.dates.indexOf(date) + 1) % 7 === 0 && "border-r-0", _isWeekend && "bg-gray-50", )} > @@ -206,18 +208,19 @@ record={aboutToDropRecord} {displayField} {field} + {color} class="opacity-50" /> {/if} {#each visibleRecords as record (record.id.value)} - + {/each}
{#if remainingCount > 0} + Clear +
diff --git a/apps/frontend/src/lib/components/blocks/field-control/date-range-control.svelte b/apps/frontend/src/lib/components/blocks/field-control/date-range-control.svelte index 1ccab299e..955581cad 100644 --- a/apps/frontend/src/lib/components/blocks/field-control/date-range-control.svelte +++ b/apps/frontend/src/lib/components/blocks/field-control/date-range-control.svelte @@ -1,21 +1,24 @@ @@ -82,19 +84,66 @@ initialFocus numberOfMonths={2} /> + {#if includeTime} +
+
+ { + if (!startDate) return + startDate = new Date(new Date(startDate).setHours(v.hour, v.minute, 0, 0)).toISOString() + value = [startDate, endDate] + onValueChange?.(value) + }} + /> +
+
+ { + if (!endDate) return + endDate = new Date(new Date(endDate).setHours(v.hour, v.minute, 0, 0)).toISOString() + value = [startDate, endDate] + onValueChange?.(value) + }} + /> +
+
+ {/if}
+ {#if includeTime} +
+ +
+ {/if} diff --git a/apps/frontend/src/lib/components/blocks/field-icon/field-icon.svelte b/apps/frontend/src/lib/components/blocks/field-icon/field-icon.svelte index 714924ed2..0c374188b 100644 --- a/apps/frontend/src/lib/components/blocks/field-icon/field-icon.svelte +++ b/apps/frontend/src/lib/components/blocks/field-icon/field-icon.svelte @@ -63,6 +63,8 @@ formula: SquareFunctionIcon, dateRange: CalendarRangeIcon, } + + $: component = map[type] - + diff --git a/apps/frontend/src/lib/components/blocks/field-options/date-field-option.svelte b/apps/frontend/src/lib/components/blocks/field-options/date-field-option.svelte index 567bf2f1a..7f5efc311 100644 --- a/apps/frontend/src/lib/components/blocks/field-options/date-field-option.svelte +++ b/apps/frontend/src/lib/components/blocks/field-options/date-field-option.svelte @@ -2,7 +2,12 @@ import { Checkbox } from "$lib/components/ui/checkbox" import { Label } from "$lib/components/ui/label/index.js" import { Separator } from "$lib/components/ui/separator" - import { isDateFieldMacro, type IDateFieldConstraint } from "@undb/table" + import { + DEFAULT_DATE_FIELD_OPTION, + type IDateFieldOption, + isDateFieldMacro, + type IDateFieldConstraint, + } from "@undb/table" import * as Popover from "$lib/components/ui/popover" import { Button } from "$lib/components/ui/button" import { cn } from "$lib/utils" @@ -12,6 +17,9 @@ import { Calendar } from "$lib/components/ui/calendar" import DateMacroPicker from "../date/date-macro-picker.svelte" import DateMacro from "../date/date-macro.svelte" + import DateFormatterPicker from "../date/date-formatter-picker.svelte" + import TimeFormatterPicker from "../date/time-formatter-picker.svelte" + import { Switch } from "$lib/components/ui/switch" const df = new DateFormatter("en-US", { dateStyle: "long", @@ -22,6 +30,7 @@ export let defaultValue: string | Date | undefined export let placeholder: string | undefined = "Default value..." export let disabled: boolean | undefined + export let option: IDateFieldOption = DEFAULT_DATE_FIELD_OPTION function parse(value: string) { try { @@ -94,6 +103,24 @@ + +
+ + +
+ +
+ + +
+ + {#if option.includeTime} +
+ + +
+ {/if} + {#if constraint}
diff --git a/apps/frontend/src/lib/components/blocks/field-options/date-range-field-option.svelte b/apps/frontend/src/lib/components/blocks/field-options/date-range-field-option.svelte index bcbd62e66..85d7363e3 100644 --- a/apps/frontend/src/lib/components/blocks/field-options/date-range-field-option.svelte +++ b/apps/frontend/src/lib/components/blocks/field-options/date-range-field-option.svelte @@ -1,9 +1,12 @@
diff --git a/apps/frontend/src/lib/components/blocks/field-value/field-value.svelte b/apps/frontend/src/lib/components/blocks/field-value/field-value.svelte index dc52c1af1..fc35c8aa7 100644 --- a/apps/frontend/src/lib/components/blocks/field-value/field-value.svelte +++ b/apps/frontend/src/lib/components/blocks/field-value/field-value.svelte @@ -61,10 +61,12 @@ button: ButtonControl, dateRange: DateRangeField, } + + $: component = map[type] {#if field && op} - {@const c = filterFieldInput[field.type]?.[op]} - {#if c} - + {#if component} + {/if} {/if} diff --git a/apps/frontend/src/lib/components/blocks/filters-editor/op-picker.svelte b/apps/frontend/src/lib/components/blocks/filters-editor/op-picker.svelte index c41383ff4..136a6685e 100644 --- a/apps/frontend/src/lib/components/blocks/filters-editor/op-picker.svelte +++ b/apps/frontend/src/lib/components/blocks/filters-editor/op-picker.svelte @@ -39,7 +39,7 @@ class={cn("justify-between", "rounded-r-none", $$restProps.class)} {...$$restProps} > - + {selectedValue ?? "op..."} @@ -52,6 +52,7 @@ {#each ops as framework} { value = currentValue diff --git a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte index 239f56d66..9ca8e9591 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-cell.svelte @@ -8,6 +8,7 @@ import * as Popover from "$lib/components/ui/popover" import { isString, isDate } from "radash" import { Button } from "$lib/components/ui/button" + import TimePicker from "$lib/components/blocks/date/time-picker.svelte" export let tableId: string export let field: DateField @@ -19,12 +20,24 @@ return undefined } } - let formatter = field.formatter + $: formatter = field.formatter + $: includeTime = field.includeTime $: internalDate = isString(value) ? parse(value) : isDate(value) ? parse(value.toISOString()) : undefined export let recordId: string export let isEditing: boolean export let onValueChange = (value: string | undefined) => {} + $: shouldConfirm = includeTime && value + + function save(value: string | Date | null) { + $updateCell.mutate({ + tableId, + id: recordId, + values: { [field.id.value]: value }, + }) + open = false + } + const updateCell = createMutation({ mutationKey: ["record", tableId, field.id.value, recordId], mutationFn: trpc.record.update.mutate, @@ -67,13 +80,29 @@ value = undefined } onValueChange(value) - $updateCell.mutate({ - tableId, - id: recordId, - values: { [field.id.value]: value }, - }) + if (!shouldConfirm) { + save(value) + } }} /> + {#if includeTime} +
+ { + if (!value) return + value = new Date(new Date(value).setHours(v.hour, v.minute, 0, 0)).toISOString() + onValueChange(value) + if (!shouldConfirm) { + save(value) + } + }} + /> +
+ {/if}
- + {#if !field.required} + + {/if}
+ {#if shouldConfirm} +
+ +
+ {/if} {:else if value} diff --git a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-range-cell.svelte b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-range-cell.svelte index 1901a0c52..a9621c2a0 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-range-cell.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/editable-cell/date-range-cell.svelte @@ -1,5 +1,5 @@
{#if isEditing} - - {#if internalValue && internalValue.start} - {#if internalValue.end} - {formatter(internalValue.start.toDate())} - {formatter(internalValue.end.toDate())} - {:else} - {formatter(internalValue.start.toDate())} + + + {#if internalValue && internalValue.start} + {#if internalValue.end} + {formatter(internalValue.start.toDate())} - {formatter(internalValue.end.toDate())} + {:else} + {formatter(internalValue.start.toDate())} + {/if} + {:else if value?.[0]} + {formatter(new Date(value[0]))} {/if} - {:else if value?.[0]} - {formatter(new Date(value[0]))} - {/if} + + {#if includeTime} +
+
+ { + if (!startDate) return + startDate = new Date(new Date(startDate).setHours(v.hour, v.minute, 0, 0)).toISOString() + value = [startDate, endDate] + onValueChange(value) + }} + /> +
+
+ { + if (!endDate) return + endDate = new Date(new Date(endDate).setHours(v.hour, v.minute, 0, 0)).toISOString() + value = [startDate, endDate] + onValueChange(value) + }} + /> +
+
+ {/if}
+ {#if includeTime} +
+ +
+ {/if}
- {:else if internalValue && internalValue.start} - {#if internalValue.end} - {formatter(internalValue.start.toDate())} - {formatter(internalValue.end.toDate())} - {:else} - {formatter(internalValue.start.toDate())} - {/if} - {:else if value?.[0]} - {formatter(new Date(value[0]))} + {:else} + + {#if internalValue && internalValue.start} + {#if internalValue.end} + {formatter(internalValue.start.toDate())} - {formatter(internalValue.end.toDate())} + {:else} + {formatter(internalValue.start.toDate())} + {/if} + {:else if value?.[0]} + {formatter(new Date(value[0]))} + {/if} + {/if}
diff --git a/apps/frontend/src/lib/components/blocks/grid-view/grid-view-cell.svelte b/apps/frontend/src/lib/components/blocks/grid-view/grid-view-cell.svelte index afa36639e..0248b7a21 100644 --- a/apps/frontend/src/lib/components/blocks/grid-view/grid-view-cell.svelte +++ b/apps/frontend/src/lib/components/blocks/grid-view/grid-view-cell.svelte @@ -74,10 +74,12 @@ formula: FormulaCell, dateRange: DateRangeCell, } + + $: component = map[field.type] = { black: "bg-black", - red: "bg-red-200/70", - green: "bg-green-200/70", - blue: "bg-blue-200/70", - yellow: "bg-yellow-200/70", - purple: "bg-purple-200/70", - gray: "bg-gray-200/70", - orange: "bg-orange-200/70", - pink: "bg-pink-200/70", - cyan: "bg-cyan-200/70", - teal: "bg-teal-200/70", - indigo: "bg-indigo-200/70", - lime: "bg-lime-200/70", - emerald: "bg-emerald-200/70", - sky: "bg-sky-200/70", - violet: "bg-violet-200/70", - rose: "bg-rose-200/70", + red: "bg-red-300/70", + green: "bg-green-300/70", + blue: "bg-blue-300/70", + yellow: "bg-yellow-300/70", + purple: "bg-purple-300/70", + gray: "bg-gray-300/70", + orange: "bg-orange-300/70", + pink: "bg-pink-300/70", + cyan: "bg-cyan-300/70", + teal: "bg-teal-300/70", + indigo: "bg-indigo-300/70", + lime: "bg-lime-300/70", + emerald: "bg-emerald-300/70", + sky: "bg-sky-300/70", + violet: "bg-violet-300/70", + rose: "bg-rose-300/70", } return map[color] } @@ -26,22 +26,22 @@ export function getBgColor(color: IColors): string { export function getTextColor(color: IColors): string { const map: Record = { black: "text-white", - red: "text-red-700", - green: "text-green-700", - blue: "text-blue-700", - yellow: "text-yellow-700", - purple: "text-purple-700", - gray: "text-gray-700", - orange: "text-orange-700", - pink: "text-pink-700", - cyan: "text-cyan-700", - teal: "text-teal-700", - indigo: "text-indigo-700", - lime: "text-lime-700", - emerald: "text-emerald-700", - sky: "text-sky-700", - violet: "text-violet-700", - rose: "text-rose-700", + red: "text-red-800", + green: "text-green-800", + blue: "text-blue-800", + yellow: "text-yellow-800", + purple: "text-purple-800", + gray: "text-gray-800", + orange: "text-orange-800", + pink: "text-pink-800", + cyan: "text-cyan-800", + teal: "text-teal-800", + indigo: "text-indigo-800", + lime: "text-lime-800", + emerald: "text-emerald-800", + sky: "text-sky-800", + violet: "text-violet-800", + rose: "text-rose-800", } return map[color] } diff --git a/apps/frontend/src/lib/components/blocks/kanban-view/select-kanban-lane.svelte b/apps/frontend/src/lib/components/blocks/kanban-view/select-kanban-lane.svelte index caee90faf..9794295c2 100644 --- a/apps/frontend/src/lib/components/blocks/kanban-view/select-kanban-lane.svelte +++ b/apps/frontend/src/lib/components/blocks/kanban-view/select-kanban-lane.svelte @@ -125,7 +125,7 @@ const updateRecord = createMutation({ mutationFn: trpc.record.update.mutate, onSuccess: (data, variables, context) => { - recordsStore.invalidateRecord($table, variables.id) + recordsStore?.invalidateRecord($table, variables.id) }, }) diff --git a/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte b/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte index a9cb506a2..7c401d884 100644 --- a/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte +++ b/apps/frontend/src/lib/components/blocks/record-detail/record-detail.svelte @@ -52,7 +52,7 @@ onSuccess() await client.invalidateQueries({ queryKey: [record.id.value, "get"] }) reset({}) - await recordsStore.invalidateRecord($table, record.id.value) + await recordsStore?.invalidateRecord($table, record.id.value) }, onError: (error) => { toast.error(error.message) diff --git a/apps/frontend/src/lib/components/blocks/reference/foreign-records-picker.svelte b/apps/frontend/src/lib/components/blocks/reference/foreign-records-picker.svelte index 7bbc9b1ba..15d18ca19 100644 --- a/apps/frontend/src/lib/components/blocks/reference/foreign-records-picker.svelte +++ b/apps/frontend/src/lib/components/blocks/reference/foreign-records-picker.svelte @@ -51,6 +51,7 @@ trpc.record.list.query({ tableId: $table.id.value, q: $q || undefined, + ignoreView: true, filters: $selected?.length ? { conjunction: "and", diff --git a/apps/frontend/src/lib/components/blocks/template/template-header.svelte b/apps/frontend/src/lib/components/blocks/template/template-header.svelte index 55b94d471..02df5bcdd 100644 --- a/apps/frontend/src/lib/components/blocks/template/template-header.svelte +++ b/apps/frontend/src/lib/components/blocks/template/template-header.svelte @@ -54,7 +54,7 @@ defaults( { id: template.id, - includeData: true, + includeData: false, spaceId: me?.member?.spaceId, }, zodClient(createFromTemplateCommand), diff --git a/apps/frontend/src/lib/components/blocks/view-color-editor/view-color-editor.svelte b/apps/frontend/src/lib/components/blocks/view-color-editor/view-color-editor.svelte index bf64b35b7..03020ef58 100644 --- a/apps/frontend/src/lib/components/blocks/view-color-editor/view-color-editor.svelte +++ b/apps/frontend/src/lib/components/blocks/view-color-editor/view-color-editor.svelte @@ -60,6 +60,7 @@ variant={count || open ? "secondary" : "ghost"} builders={[builder]} size="sm" + {...$$restProps} > Color diff --git a/apps/frontend/src/lib/components/blocks/view-filter-editor/view-filter-editor.svelte b/apps/frontend/src/lib/components/blocks/view-filter-editor/view-filter-editor.svelte index 7668cb25b..306d64184 100644 --- a/apps/frontend/src/lib/components/blocks/view-filter-editor/view-filter-editor.svelte +++ b/apps/frontend/src/lib/components/blocks/view-filter-editor/view-filter-editor.svelte @@ -84,7 +84,7 @@ bind:value={$value} table={$table} on:submit={(e) => handleSubmit(e.detail)} - filter={(field) => visibleFields.some((f) => f.id.value === field.id) && getIsFilterableFieldType(field.type)} + filter={(field) => getIsFilterableFieldType(field.type)} >