mirror of
https://github.com/supabase/supabase.git
synced 2026-10-17 23:29:08 +03:00
* feat: sql-to-rest poc * feat: sql-to-supabase-js poc * chore: upgrade to libpg-query@15 * feat: sql-to-rest docs tool * docs(sql-to-rest): add introduction * docs: wording improvements * fix: theme * chore: tailwind placeholder * feat(sql-to-rest): limit, offset, and range * feat(sql-to-rest): sort by * fix(sql-to-rest): ui theme * feat(sql-to-rest): casts * feat(sql-to-rest): dynamic faqs in ui * feat(sql-to-rest): improve ui responsiveness * feat(sql-to-rest): more advanced faqs in ui * feat(sql-to-rest): http and curl syntax highlighting * feat(sql-to-rest): baseUrl in http/curl rendering * docs(sql-to-rest): clarification on curl flags * feat(sql-to-rest): more faqs * refactor(sql-to-rest): split faqs into own file * refactor(sql-to-rest): move formatters to sql-to-rest package * docs(sql-to-rest): move page to new tools section * feat(sql-to-rest): joins and resource embeddings * chore(sql-to-rest): rename 'convert' to 'translate' * feat(sql-to-rest): add faqs * feat(sql-to-rest): ui improvements * feat(sql-to-rest): faq title adjustment * feat(sql-to-rest): link to client lib docs * feat(sql-to-rest): assumptions * feat(sql-to-rest): friendly 'not supported yet' errors * feat(sql-to-rest): json columns * feat(sql-to-rest): remove curl -G flag if unused * feat(sql-to-rest): better error handling * chore: revert accidental rls ai work * fix: build errors * fix(sql-to-rest): theme * feat(sql-to-rest): change base url * feat(sql-to-rest): basic aggregate poc * feat(sql-to-rest): group by * feat(sql-to-rest): more group by checks * feat(sql-to-rest): count(*) special case * fix(sql-to-rest): tests * feat(sql-to-rest): faq on 'and' operator * fix(sql-to-rest): error messages * fix(sql-to-rest): multiple filters on same column * refactor(sql-to-rest): error hints * feat(sql-to-rest): match and imatch * feat(sql-to-rest): in operator * feat(sql-to-rest): parsing error hints * feat(sql-to-rest): default language to curl * feat(sql-to-rest): format on cmd+s * feat(sql-to-rest): format initial value * fix(sql-to-rest): turn off tab query group * feat(sql-to-rest): improve wording in error messages * feat(sql-to-rest): animated code blocks * feat(sql-to-rest): more error hints * fix(sql-to-rest): strip primary relation prefix from columns * feat(sql-to-rest): json column in order by clause * feat(sql-to-rest): validate all referenced relations exist in from clause * refactor(sql-to-rest): split core sql-to-rest lib into separate repo * feat(sql-to-rest): upgrade to v0.1.1 * feat(sql-to-rest): upgrade to v0.1.2 * feat(sql-to-rest): upgrade to v0.1.4 * chore: upgrade libpg-query * feat: update 'create a pr' link * fix: app builds * fix: prettier * fix: typecheck * fix: studio tests * chore: remove console.log Co-authored-by: Charis <26616127+charislam@users.noreply.github.com> * docs(sql-to-rest): remove broken link to client libraries --------- Co-authored-by: Charis <26616127+charislam@users.noreply.github.com>
77 lines
2.1 KiB
TypeScript
77 lines
2.1 KiB
TypeScript
import { useState } from 'react'
|
|
import { Alert } from 'ui/src/components/shadcn/ui/alert'
|
|
import { Button } from 'ui/src/components/shadcn/ui/button'
|
|
import {
|
|
Dialog,
|
|
DialogContent,
|
|
DialogDescription,
|
|
DialogFooter,
|
|
DialogHeader,
|
|
DialogTitle,
|
|
} from 'ui/src/components/shadcn/ui/dialog'
|
|
import { Input } from '../DataInputs/Input'
|
|
|
|
export type BaseUrlDialogProps = {
|
|
defaultValue?: string
|
|
onChange?: (value: string) => void
|
|
open?: boolean
|
|
onOpenChange?: (open: boolean) => void
|
|
}
|
|
|
|
export function BaseUrlDialog({ open, onOpenChange, defaultValue, onChange }: BaseUrlDialogProps) {
|
|
const [value, setValue] = useState(defaultValue ?? '')
|
|
const [error, setError] = useState<Error>()
|
|
|
|
return (
|
|
<Dialog
|
|
open={open}
|
|
onOpenChange={(open) => {
|
|
onOpenChange?.(open)
|
|
}}
|
|
>
|
|
<DialogContent className="sm:max-w-[425px]">
|
|
<DialogHeader className="pb-0">
|
|
<DialogTitle>Change base URL</DialogTitle>
|
|
<DialogDescription>
|
|
Change the base URL shown in the generated snippets.
|
|
</DialogDescription>
|
|
</DialogHeader>
|
|
<form
|
|
className="flex flex-col gap-4"
|
|
onSubmit={(e) => {
|
|
e.preventDefault()
|
|
|
|
try {
|
|
const baseUrl = new URL(value)
|
|
const newValue = (baseUrl.origin + baseUrl.pathname).replace(/\/+$/, '')
|
|
|
|
setValue(newValue)
|
|
onChange?.(newValue)
|
|
onOpenChange?.(false)
|
|
setError(undefined)
|
|
} catch (err) {
|
|
setError(new Error('Invalid URL'))
|
|
}
|
|
}}
|
|
>
|
|
<div className="px-7 flex flex-col gap-4">
|
|
<Input
|
|
value={value}
|
|
placeholder="https://example.com"
|
|
onChange={(e) => {
|
|
setValue(e.target.value)
|
|
}}
|
|
/>
|
|
{error && <Alert className="text-red-900">{error.message}</Alert>}
|
|
</div>
|
|
<DialogFooter>
|
|
<Button variant="outline" type="submit">
|
|
Change
|
|
</Button>
|
|
</DialogFooter>
|
|
</form>
|
|
</DialogContent>
|
|
</Dialog>
|
|
)
|
|
}
|