@niledatabase/react 3.0.0-alpha.9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +355 -0
- package/dist/index.d.ts +355 -11
- package/dist/index.js +3 -8
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +52 -32
- package/dist/GoogleLoginButton/GoogleLoginButton.d.ts +0 -10
- package/dist/GoogleLoginButton/GoogleLoginButton.stories.d.ts +0 -11
- package/dist/GoogleLoginButton/index.d.ts +0 -1
- package/dist/SignInForm/SignInForm.d.ts +0 -3
- package/dist/SignInForm/UserLoginForm.stories.d.ts +0 -5
- package/dist/SignInForm/index.d.ts +0 -1
- package/dist/SignInForm/types.d.ts +0 -16
- package/dist/SignUpForm/NewUserSignUp.stories.d.ts +0 -5
- package/dist/SignUpForm/SignUpForm.d.ts +0 -3
- package/dist/SignUpForm/index.d.ts +0 -1
- package/dist/SignUpForm/types.d.ts +0 -13
- package/dist/UserTenantList/CreateUser.d.ts +0 -8
- package/dist/UserTenantList/UserList.d.ts +0 -17
- package/dist/UserTenantList/UserList.stories.d.ts +0 -5
- package/dist/UserTenantList/UserModal.d.ts +0 -7
- package/dist/UserTenantList/index.d.ts +0 -1
- package/dist/UserTenantList/useDataParser.d.ts +0 -4
- package/dist/context/index.d.ts +0 -9
- package/dist/context/theme.d.ts +0 -7
- package/dist/context/types.d.ts +0 -22
- package/dist/hooks/useResults.d.ts +0 -22
- package/dist/hooks/useTextSizer.d.ts +0 -1
- package/dist/lib/SimpleForm/CheckGroup/index.d.ts +0 -10
- package/dist/lib/SimpleForm/index.d.ts +0 -11
- package/dist/lib/SimpleForm/types.d.ts +0 -37
- package/dist/react.cjs.development.js +0 -943
- package/dist/react.cjs.development.js.map +0 -1
- package/dist/react.cjs.production.min.js +0 -2
- package/dist/react.cjs.production.min.js.map +0 -1
- package/dist/react.esm.d.ts +0 -11
- package/dist/react.esm.js +0 -911
- package/dist/react.esm.js.map +0 -1
- package/dist/utils/getColumnSize.d.ts +0 -2
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.cjs.development.js","sources":["../src/context/theme.tsx","../src/context/index.tsx","../src/GoogleLoginButton/google.svg","../src/GoogleLoginButton/GoogleLoginButton.tsx","../src/lib/SimpleForm/CheckGroup/index.tsx","../src/lib/SimpleForm/types.ts","../src/lib/SimpleForm/index.tsx","../src/SignUpForm/SignUpForm.tsx","../src/SignInForm/SignInForm.tsx","../src/UserTenantList/UserModal.tsx","../src/UserTenantList/CreateUser.tsx","../src/utils/getColumnSize.ts","../src/hooks/useTextSizer.ts","../src/UserTenantList/useDataParser.ts","../src/UserTenantList/UserList.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React from 'react';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { Theme } from '@mui/joy/styles';\nimport { CssVarsProvider as JoyCssVarsProvider } from '@mui/joy/styles';\n\nexport default function Themer({\n theme,\n children,\n slotProps,\n}: {\n theme?: Theme;\n children: JSX.Element;\n slotProps?: Record<string, string>;\n}) {\n return (\n <JoyCssVarsProvider {...slotProps} theme={theme}>\n <CssBaseline enableColorScheme />\n {children}\n </JoyCssVarsProvider>\n );\n}\n","'use client';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React, { useMemo, createContext, useContext } from 'react';\nimport Browser from '@niledatabase/browser';\nimport { QueryClientProvider, QueryClient } from '@tanstack/react-query';\n\nimport ThemeProvider from './theme';\nimport { NileContext, NileProviderProps, NileReactConfig } from './types';\n\nconst queryClient = new QueryClient();\n\nconst defaultContext: NileContext = {\n api: new Browser({\n basePath: 'https://api.thenile.dev',\n credentials: 'include',\n }),\n apiUrl: '',\n};\n\nconst context = createContext<NileContext>(defaultContext);\n\nconst { Provider } = context;\n\nexport const BaseQueryProvider = ({\n children,\n}: {\n children: JSX.Element;\n}): JSX.Element => {\n return (\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n );\n};\n\nexport const NileProvider = (props: NileProviderProps) => {\n const {\n children,\n theme,\n slotProps,\n tenantId,\n QueryProvider = BaseQueryProvider,\n appUrl,\n apiUrl = 'https://api.thenile.dev',\n api,\n } = props;\n\n const values = useMemo<NileContext>((): NileContext => {\n return {\n api:\n api ??\n new Browser({\n basePath: appUrl,\n credentials: 'include',\n }),\n tenantId: String(tenantId),\n apiUrl,\n appUrl,\n };\n }, [api, apiUrl, appUrl, tenantId]);\n\n return (\n <QueryProvider>\n <ThemeProvider slotProps={slotProps?.provider} theme={theme}>\n <Provider value={values}>{children}</Provider>\n </ThemeProvider>\n </QueryProvider>\n );\n};\n\nconst useNileContext = (): NileContext => {\n return useContext(context);\n};\n\nexport const useNileConfig = (): NileReactConfig => {\n const { apiUrl, tenantId, appUrl } = useNileContext();\n return useMemo(\n () => ({\n tenantId,\n apiUrl,\n appUrl,\n }),\n [apiUrl, tenantId, appUrl]\n );\n};\n\nexport const useApi = (): Browser => {\n return useNileContext().api;\n};\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\">\n <g fill=\"#000\" fill-rule=\"evenodd\">\n <path d=\"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48z\" fill=\"#EA4335\" />\n <path d=\"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62z\" fill=\"#4285F4\" />\n <path d=\"M3.88 10.78A5.54 5.54 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9.008 9.008 0 0 0 0 9c0 1.45.35 2.82.96 4.04l2.92-2.26z\" fill=\"#FBBC05\" />\n <path d=\"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18z\" fill=\"#34A853\" />\n <path fill=\"none\" d=\"M0 0h18v18H0z\" />\n </g>\n</svg>","import React from 'react';\nimport Box from '@mui/joy/Box';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\nimport { signIn } from 'next-auth/react';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport GoogleLogo from './google.svg';\n\n/**\n * A component for a Google login button, according to their design language.\n * This works when an identity provider is configured in the admin dashboard.\n * @param props href: a string to override the URL provided by the context\n * @returns a JSX.Element to render\n */\nexport default function GoogleSSOButton(props: { callbackUrl?: string }) {\n const { callbackUrl } = props;\n\n return (\n <Box\n display=\"flex\"\n flex={1}\n sx={{ textDecoration: 'none' }}\n onClick={() => {\n signIn('google', { callbackUrl });\n }}\n >\n <Box>\n <Button\n sx={{ padding: 0, textTransform: 'initial', flex: 1 }}\n aria-label=\"log in with google\"\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n p={0}\n flex={1}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n display=\"inline-flex\"\n color=\"rgb(255 255, 255)\"\n boxShadow=\"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px\"\n borderRadius=\"4px\"\n border=\"1px solid transparent\"\n fontWeight=\"500\"\n sx={{\n backgroundColor: 'rgb(66 133, 244)',\n }}\n >\n <Box\n padding=\"11px\"\n display=\"flex\"\n border=\"1px solid rgb(66, 133, 244)\"\n borderRadius=\"4px\"\n sx={{\n background: 'rgb(255, 255, 255)',\n }}\n >\n <GoogleLogo aria-hidden=\"true\" />\n </Box>\n <Box padding=\"10px\" flex={1}>\n <Typography\n sx={{ color: 'white' }}\n fontWeight={700}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n height=\"20px\"\n >\n Continue with Google\n </Typography>\n </Box>\n </Stack>\n </Button>\n </Box>\n </Box>\n );\n}\n","import * as React from 'react';\nimport Box from '@mui/joy/Box';\nimport Checkbox from '@mui/joy/Checkbox';\nimport List from '@mui/joy/List';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport FormLabel from '@mui/joy/FormLabel';\nimport ListItem from '@mui/joy/ListItem';\nimport Typography from '@mui/joy/Typography';\n\nimport { Attribute, DisplayProps, Options } from '../types';\n\ntype Props = {\n attribute: Attribute;\n display: DisplayProps;\n options: Options;\n helperText: string;\n};\nexport default function CheckGroup(props: Props) {\n const { options, attribute, display, helperText } = props;\n const { watch, control } = useFormContext();\n const currentVals = watch(attribute.name);\n const checkProps: { color?: 'danger'; id?: string } = {};\n if (helperText) {\n checkProps.color = 'danger';\n }\n return (\n <Controller\n name={attribute.name}\n rules={{ required: Boolean(attribute.required) }}\n control={control}\n render={({ field }) => {\n return (\n <Stack>\n <FormLabel htmlFor={`${field.name}`}>{display.label}</FormLabel>\n <Box\n role=\"group\"\n aria-labelledby={attribute.name}\n sx={{\n borderRadius: 'var(--joy-radius-sm)',\n p: 0.5,\n border: helperText\n ? '1px solid var(--joy-palette-danger-outlinedBorder)'\n : 'none',\n }}\n >\n <List\n orientation=\"horizontal\"\n wrap\n sx={{\n '--List-gap': '8px',\n }}\n >\n {options.map((item) => {\n checkProps.id = String(item.value);\n return (\n <ListItem key={`${item.value}-${item.label}`}>\n <Checkbox\n overlay={options.length > 1}\n {...checkProps}\n checked={currentVals.includes(item.value)}\n disableIcon={options.length > 1}\n variant=\"soft\"\n label={item.label}\n onChange={(event) => {\n if (attribute.allowMultiple) {\n if (event.target.checked) {\n if (!currentVals) {\n field.onChange([item.value]);\n } else {\n field.onChange(currentVals.concat(item.value));\n }\n } else {\n const remaining = currentVals.filter(\n (val: string | number) => val !== item.value\n );\n if (remaining.length > 0) {\n field.onChange(remaining);\n } else {\n field.onChange('');\n }\n }\n } else {\n if (event.target.checked) {\n field.onChange(item.value);\n } else {\n field.onChange('');\n }\n }\n }}\n />\n </ListItem>\n );\n })}\n </List>\n </Box>\n <Typography\n sx={{ color: 'var(--joy-palette-danger-500)' }}\n level=\"body-sm\"\n >\n {helperText}\n </Typography>\n </Stack>\n );\n }}\n />\n );\n}\n","export enum AttributeType {\n Text = 'text',\n Email = 'email',\n Password = 'password',\n Select = 'select',\n Number = 'number',\n Float = 'float',\n Checkbox = 'checkbox',\n Switch = 'switch',\n}\ntype SimplePrimitive = number | string | boolean;\n\n// possibly no value for `<Switch/>`\nexport type Options = { label: string; value?: SimplePrimitive }[];\nexport type Attribute = {\n name: string;\n type?: AttributeType;\n defaultValue?: SimplePrimitive;\n options?: Options;\n allowMultiple?: boolean;\n label?: string;\n required?: boolean;\n placeholder?: string;\n helpText?: string;\n disabled?: boolean;\n};\n\nexport type DisplayProps = {\n key: string;\n id: string;\n label: string;\n placeholder: string;\n error?: boolean;\n color?: 'danger';\n disabled?: boolean;\n};\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport Input from '@mui/joy/Input';\nimport FormControl from '@mui/joy/FormControl';\nimport FormHelperText from '@mui/joy/FormHelperText';\nimport Error from '@mui/icons-material/Error';\nimport FormLabel from '@mui/joy/FormLabel';\nimport Select from '@mui/joy/Select';\nimport Option from '@mui/joy/Option';\nimport Box from '@mui/joy/Box';\nimport Tooltip from '@mui/joy/Tooltip';\nimport { Switch } from '@mui/joy';\n\nimport CheckGroup from './CheckGroup';\nimport { Attribute, AttributeType, DisplayProps } from './types';\n\ntype AttrMap = {\n [key: string]: string | number | boolean | string[] | number[];\n};\n\ntype FieldConfig = {\n required?: boolean;\n};\n\nexport const getAttributeDefault = (\n attribute: Attribute\n): string | number | boolean | string[] | number[] => {\n // have to look to see if it is an enum\n if (attribute.allowMultiple === true) {\n if (!Array.isArray(attribute.defaultValue) && attribute.defaultValue) {\n if (typeof attribute.defaultValue === 'number') {\n return [attribute.defaultValue];\n }\n return [String(attribute.defaultValue)];\n }\n }\n return attribute.defaultValue ?? '';\n};\n\nfunction Labler(props: { error?: string; attr: Attribute }) {\n const { error, attr } = props;\n if (error) {\n return (\n <Tooltip title={error} color=\"danger\" sx={{ cursor: 'pointer' }}>\n <FormLabel>\n {attr.label ?? attr.name}\n <Error sx={{ ml: 0.5, '--Icon-color': '#c41c1c' }} fontSize=\"small\" />\n </FormLabel>\n </Tooltip>\n );\n }\n return <FormLabel>{attr.label ?? attr.name}</FormLabel>;\n}\nexport default function SimpleForm(props: {\n buttonText: string;\n cancelButton?: React.ReactNode;\n attributes: Attribute[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mutation: any;\n loading?: boolean;\n successMessage?: JSX.Element;\n}) {\n const {\n mutation,\n buttonText,\n attributes,\n cancelButton,\n loading,\n successMessage,\n } = props;\n\n const defaultValues = React.useMemo(\n () =>\n attributes.reduce((accum: AttrMap, attr: Attribute) => {\n accum[attr.name] = getAttributeDefault(attr);\n return accum;\n }, {}),\n [attributes]\n );\n\n const methods = useForm({\n defaultValues,\n });\n\n const {\n register,\n control,\n handleSubmit,\n formState: { errors },\n } = methods;\n const onSubmit = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <FormProvider {...methods}>\n <Stack\n component=\"form\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSubmit={handleSubmit((data) => onSubmit(data as any))}\n spacing={2}\n >\n {attributes.map((attr: Attribute): React.ReactNode => {\n const fieldConfig: FieldConfig = {};\n const display: DisplayProps = {\n key: attr.name,\n label: attr.label ?? attr.name,\n id: attr.label ?? attr.name,\n placeholder: attr.placeholder ?? attr.label ?? attr.name,\n error: Boolean(errors[attr.name]),\n disabled: Boolean(attr.disabled),\n };\n const options = attr.options ?? [];\n const helperText = attr.helpText ?? '';\n let error = '';\n\n if (attr.required) {\n error = errors[attr.name]\n ? `${attr.label ?? attr.name} is required`\n : '';\n fieldConfig.required = true;\n }\n\n switch (attr.type) {\n case AttributeType.Switch:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n orientation=\"horizontal\"\n sx={{ alignItems: 'center' }}\n required={attr.required}\n >\n <Box>\n <Labler error={error} attr={attr} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Box>\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n return (\n <Switch\n id={`switch-field-${attr.name}`}\n {...color}\n {...field}\n checked={Boolean(field.value)}\n onChange={(event) => {\n field.onChange(event.target.checked);\n }}\n color={field.value ? 'success' : 'neutral'}\n endDecorator={\n field.value ? options[0].label : options[1].label\n }\n />\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Checkbox:\n return (\n <CheckGroup\n key={display.key}\n attribute={attr}\n display={display}\n options={options}\n helperText={helperText}\n />\n );\n case AttributeType.Select:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n const value = String(field.value);\n return (\n <Stack>\n <Select\n id={`select-field-${attr.name}`}\n placeholder={`${display.placeholder}...`}\n {...color}\n {...field}\n value={value}\n onChange={(_, newValue) => {\n field.onChange(newValue);\n }}\n >\n {options.map((option) => {\n return (\n <Option\n key={String(option.value ?? '')}\n value={option.value}\n >\n {option.label}\n </Option>\n );\n })}\n </Select>\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Stack>\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Password:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Password}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n case AttributeType.Number:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Number}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n\n case AttributeType.Text:\n default:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Input {...display} {...register(attr.name, fieldConfig)} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n }\n })}\n {cancelButton ? (\n <Stack spacing={2} direction=\"row\">\n {cancelButton}\n <Box>\n <Button type=\"submit\">{buttonText}</Button>\n </Box>\n </Stack>\n ) : (\n <Box>\n <Stack direction=\"row\" gap={2}>\n <Button type=\"submit\" loading={loading}>\n {buttonText}\n </Button>\n {successMessage}\n </Stack>\n </Box>\n )}\n </Stack>\n </FormProvider>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Stack from '@mui/joy/Stack';\nimport Alert from '@mui/joy/Alert';\n\nimport UserForm from '../lib/SimpleForm';\nimport { Attribute, AttributeType } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\n\nimport { Props, SignUpInfo } from './types';\n\nexport default function SignUpForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const {\n buttonText = 'Sign up',\n onSuccess,\n onError,\n attributes,\n beforeMutate,\n } = props;\n const api = useApi();\n const mutation = useMutation(\n async (_data: SignUpInfo) => {\n setError(undefined);\n const possibleData = beforeMutate && beforeMutate(_data);\n const data: SignUpInfo = { ..._data, ...possibleData };\n const {\n name,\n givenName,\n familyName,\n picture,\n email,\n password,\n newTenantName,\n ...metadata\n } = data;\n if (Object.keys(metadata).length > 0) {\n // eslint-disable-next-line no-console\n console.warn('additional metadata not supported yet.');\n }\n return await api.users.createUser({\n createBasicUserRequest: {\n email,\n password,\n name,\n familyName,\n picture,\n givenName,\n newTenantName,\n },\n });\n },\n {\n onSuccess,\n onError: (e: Error, vars) => {\n setError(e.message);\n onError && onError(e as Error, vars);\n },\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Email,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <UserForm\n mutation={mutation}\n buttonText={buttonText}\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Alert from '@mui/joy/Alert';\nimport Stack from '@mui/joy/Stack';\nimport { signIn } from 'next-auth/react';\n\nimport { Attribute } from '../lib/SimpleForm/types';\nimport SimpleForm from '../lib/SimpleForm';\nimport { AttributeType } from '../lib/SimpleForm/types';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function SignInForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const { attributes, onSuccess, onError, beforeMutate, callbackUrl } = props;\n\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n setError(undefined);\n const d = { ..._data, callbackUrl };\n const possibleData = beforeMutate && beforeMutate(d);\n const data = possibleData ?? d;\n signIn('credentials', data);\n },\n {\n onSuccess,\n onError,\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <SimpleForm\n mutation={mutation}\n buttonText=\"Log in\"\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport {\n Button,\n Stack,\n Typography,\n FormControl,\n FormLabel,\n Input,\n Modal,\n ModalDialog,\n} from '@mui/joy';\nimport { useForm } from 'react-hook-form';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useApi, useNileConfig } from '../context';\n\nexport type UserFormProps = {\n open: boolean;\n setOpen: (open: boolean) => void;\n refetch?: (user: any) => void;\n};\n\nexport default function AddUser(props: UserFormProps) {\n const { open, setOpen, refetch } = props;\n const { tenantId } = useNileConfig();\n const api = useApi();\n const [errorText, setErrorText] = React.useState<void | string>();\n const { watch, register, handleSubmit } = useForm<any>();\n const email = watch('email');\n\n React.useEffect(() => {\n if (errorText != null) {\n setErrorText();\n }\n // if email changes, no more error\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [email]);\n\n const mutation = useMutation(\n (data: any) =>\n api.users.createTenantUser({\n createBasicUserRequest: data,\n tenantId: String(tenantId),\n }),\n {\n onSuccess(data) {\n refetch && refetch(data);\n setOpen(false);\n },\n onError(e) {\n if (e instanceof Error) {\n setErrorText(e.message);\n }\n },\n }\n );\n\n const handleUpdate = React.useCallback(\n async (data: any) => {\n setErrorText('');\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <Modal open={open}>\n <ModalDialog>\n <Stack spacing={2}>\n <Typography level=\"h4\">Create user</Typography>\n <>\n {errorText && <Typography color=\"danger\">{errorText}</Typography>}\n </>\n <Stack\n component=\"form\"\n sx={{\n width: '40ch',\n }}\n spacing={1}\n onSubmit={handleSubmit((data) => handleUpdate(data as any))}\n >\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"email\">Email</FormLabel>\n <Input\n {...register('email')}\n fullWidth\n size=\"lg\"\n id=\"email\"\n name=\"email\"\n autoComplete=\"current-email\"\n required\n error={Boolean(errorText)}\n />\n </FormControl>\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"password\">Password</FormLabel>\n <Input\n {...register('password')}\n fullWidth\n size=\"lg\"\n id=\"password\"\n autoComplete=\"current-password\"\n type=\"password\"\n required\n />\n </FormControl>\n <Stack direction=\"row\" sx={{ pt: 2 }} spacing={2}>\n <Button onClick={() => setOpen(false)} variant=\"plain\">\n Cancel\n </Button>\n <Button type=\"submit\">Create</Button>\n </Stack>\n </Stack>\n </Stack>\n </ModalDialog>\n </Modal>\n );\n}\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport { useState } from 'react';\nimport Add from '@mui/icons-material/Add';\n\nimport UserModal from './UserModal';\n\ntype Props = {\n allowCreation: boolean;\n buttonText: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onUserCreateSuccess?: (user: any) => void;\n};\nexport default function CreateUser(props: Props) {\n const { allowCreation, buttonText, onUserCreateSuccess } = props;\n const [open, setOpen] = useState(false);\n if (!allowCreation) {\n return null;\n }\n\n return (\n <Stack alignItems=\"flex-end\" gap={1}>\n <UserModal open={open} setOpen={setOpen} refetch={onUserCreateSuccess} />\n <Button startDecorator={<Add />} size=\"sm\" onClick={() => setOpen(true)}>\n {buttonText}\n </Button>\n </Stack>\n );\n}\n","import { GridRowsProp } from '@mui/x-data-grid';\n\nexport default function getColumnSize(\n column: unknown,\n rows: GridRowsProp,\n canvasContext: void | CanvasRenderingContext2D\n) {\n const dataWidthReducer = (\n longest: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextRow: { [key: string]: any }\n ) => {\n let value = nextRow[String(column)];\n if (value == null) {\n value = '';\n }\n value = value?.toString();\n return longest.length > value.length ? longest : value;\n };\n\n let columnHeaderLen =\n canvasContext && column\n ? canvasContext.measureText(String(column)).width\n : 50;\n /* padding 12, icon-width 15 */\n columnHeaderLen += 15 + 12;\n\n let width = columnHeaderLen;\n width =\n 16 +\n Math.ceil(\n canvasContext\n ? canvasContext.measureText(rows.reduce(dataWidthReducer, '')).width\n : 50\n );\n if (width < columnHeaderLen) {\n width = columnHeaderLen;\n }\n /* Gracefull */\n width += 8;\n return width;\n}\n","import { useEffect, useState } from 'react';\n\nexport default function useTextSizer() {\n const [ctx, setCtx] = useState<CanvasRenderingContext2D>();\n useEffect(() => {\n const canvas = document.createElement('canvas');\n const canvasContext = canvas.getContext('2d');\n if (canvasContext) {\n canvasContext.font = '18px Roboto';\n setCtx(canvasContext);\n }\n }, []);\n return ctx;\n}\n","import { useMemo } from 'react';\nimport { GridColDef, GridRowsProp } from '@mui/x-data-grid';\nimport { User } from '@niledatabase/browser';\n\nimport getColumnSize from '../utils/getColumnSize';\nimport useTextSizer from '../hooks/useTextSizer';\n\nexport const internalRowId = '_nile_data_grid_identifier';\n\ntype Cleaned = { [key: string]: string | Set<string> };\n\nconst makeRenderable = (vals: User) => {\n return Object.keys(vals).reduce((cleaned: Cleaned, key) => {\n const val = (vals as Cleaned)[key];\n if (val instanceof Set) {\n cleaned[key] = Array.from(val).join(', ');\n } else if (Array.isArray(val)) {\n cleaned[key] = val.join(', ');\n } else {\n cleaned[key] = val;\n }\n return cleaned;\n }, {});\n};\n\nconst parseResults = (\n data: void | User[],\n ctx: CanvasRenderingContext2D | void,\n include: string[]\n): [GridColDef[], GridRowsProp] => {\n if (!data) {\n return [[], []];\n }\n const rows = data.map(makeRenderable);\n const fields = Object.keys(rows[0]);\n\n const existentCols: { [key: string]: number } = {};\n\n const mapCols = (col: string): GridColDef | void => {\n const width = getColumnSize(col, rows, ctx);\n const name = col.slice();\n if (include.includes(name)) {\n // add spaces to the end of column names so they are not duplicated in the UI\n if (existentCols[name] == null) {\n existentCols[name] = name.length;\n } else {\n existentCols[name] += 1;\n }\n return {\n field: name.padEnd(existentCols[name]),\n headerName: name.padEnd(existentCols[name]),\n width,\n };\n }\n };\n const cols = fields?.map(mapCols).filter(Boolean) ?? [];\n\n return [cols as GridColDef[], rows];\n};\n\nexport default function useDataParser(\n data: void | User[],\n include: string[]\n): [GridColDef[], GridRowsProp] {\n const ctx = useTextSizer();\n const [cols, rows] = useMemo(\n () => parseResults(data, ctx, include),\n [data, ctx, include]\n );\n return [cols, rows];\n}\n","import { DataGrid } from '@mui/x-data-grid';\nimport React from 'react';\nimport Stack from '@mui/joy/Stack';\nimport { SxProps } from '@mui/system/styleFunctionSx/styleFunctionSx';\nimport { Theme } from '@mui/system/createTheme';\nimport { User } from '@niledatabase/browser';\n\nimport CreateUser from './CreateUser';\nimport useDataParser from './useDataParser';\n\ntype ColumnNames = string;\n\ntype Props = {\n data: void | User[];\n allowCreation?: boolean;\n buttonText?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onUserCreateSuccess?: (user: any) => void;\n slots?: {\n dataGrid?: SxProps<Theme>;\n };\n // white list of columns to show\n include?: ColumnNames[];\n};\n\nexport default function UserList(props: Props) {\n const {\n data,\n allowCreation = true,\n buttonText = 'Add a user',\n onUserCreateSuccess,\n slots,\n include = ['email', 'preferredName'],\n } = props;\n\n const dataGridSx = {\n width: '100%',\n height: '100%',\n ...(slots?.dataGrid ?? {}),\n };\n\n const [columns, rows] = useDataParser(data, include);\n return (\n <Stack flex={1}>\n <CreateUser\n allowCreation={allowCreation}\n buttonText={buttonText}\n onUserCreateSuccess={onUserCreateSuccess}\n />\n <DataGrid\n sx={dataGridSx}\n rows={rows}\n columns={columns}\n hideFooter={true}\n />\n </Stack>\n );\n}\n"],"names":["Themer","theme","children","slotProps","React","JoyCssVarsProvider","createElement","CssBaseline","enableColorScheme","queryClient","QueryClient","defaultContext","api","Browser","basePath","credentials","apiUrl","context","createContext","Provider","BaseQueryProvider","QueryClientProvider","client","NileProvider","props","tenantId","QueryProvider","appUrl","values","useMemo","String","ThemeProvider","provider","value","useNileContext","useContext","useNileConfig","useApi","GoogleSSOButton","callbackUrl","Box","display","flex","sx","textDecoration","onClick","signIn","Button","padding","textTransform","Stack","direction","alignItems","p","fontFamily","fontSize","color","boxShadow","borderRadius","border","fontWeight","backgroundColor","background","GoogleLogo","Typography","height","CheckGroup","options","attribute","helperText","watch","control","useFormContext","currentVals","name","checkProps","Controller","rules","required","Boolean","render","field","FormLabel","htmlFor","label","role","List","orientation","wrap","map","item","id","ListItem","key","Checkbox","overlay","length","checked","includes","disableIcon","variant","onChange","event","allowMultiple","target","concat","remaining","filter","val","level","AttributeType","getAttributeDefault","Array","isArray","defaultValue","Labler","error","attr","Tooltip","title","cursor","Error","ml","SimpleForm","mutation","buttonText","attributes","cancelButton","loading","successMessage","defaultValues","reduce","accum","methods","useForm","register","handleSubmit","formState","errors","onSubmit","useCallback","data","mutate","FormProvider","component","spacing","fieldConfig","placeholder","disabled","helpText","type","Switch","FormControl","FormHelperText","endDecorator","Select","_","newValue","option","Option","Password","Input","Number","Text","gap","SignUpForm","setError","useState","onSuccess","onError","beforeMutate","useMutation","_data","undefined","possibleData","givenName","familyName","picture","email","password","newTenantName","metadata","Object","keys","console","warn","users","createUser","createBasicUserRequest","e","vars","message","completeAttributes","mainAttributes","Email","Alert","UserForm","SignInForm","d","AddUser","open","setOpen","refetch","errorText","setErrorText","useEffect","createTenantUser","handleUpdate","Modal","ModalDialog","Fragment","width","fullWidth","size","autoComplete","pt","CreateUser","allowCreation","onUserCreateSuccess","UserModal","startDecorator","Add","getColumnSize","column","rows","canvasContext","dataWidthReducer","longest","nextRow","toString","columnHeaderLen","measureText","Math","ceil","useTextSizer","ctx","setCtx","canvas","document","getContext","font","makeRenderable","vals","cleaned","Set","from","join","parseResults","include","fields","existentCols","mapCols","col","slice","padEnd","headerName","cols","useDataParser","UserList","slots","dataGridSx","dataGrid","columns","DataGrid","hideFooter"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@niledatabase/browser"),r=require("@tanstack/react-query"),a=require("@mui/material/CssBaseline"),n=require("@mui/joy/styles"),l=require("@mui/joy/Box"),o=require("@mui/joy/Button"),i=require("@mui/joy/Stack"),c=require("@mui/joy/Typography"),u=require("next-auth/react"),s=require("@mui/joy/Alert"),m=require("react-hook-form"),d=require("@mui/joy/Input"),p=require("@mui/joy/FormControl"),b=require("@mui/joy/FormHelperText"),E=require("@mui/icons-material/Error"),h=require("@mui/joy/FormLabel"),g=require("@mui/joy/Select"),y=require("@mui/joy/Option"),x=require("@mui/joy/Tooltip"),f=require("@mui/joy"),w=require("@mui/joy/Checkbox"),v=require("@mui/joy/List"),q=require("@mui/joy/ListItem"),C=require("@mui/x-data-grid"),k=require("@mui/icons-material/Add");function S(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,t}var T=S(e);function F({theme:t,children:r,slotProps:l}){return e.createElement(n.CssVarsProvider,{...l,theme:t},e.createElement(a,{enableColorScheme:!0}),r)}const j=new r.QueryClient,A=e.createContext({api:new t({basePath:"https://api.thenile.dev",credentials:"include"}),apiUrl:""}),{Provider:P}=A,M=({children:t})=>e.createElement(r.QueryClientProvider,{client:j},t),U=()=>e.useContext(A),O=()=>{const{apiUrl:t,tenantId:r,appUrl:a}=U();return e.useMemo((()=>({tenantId:r,apiUrl:t,appUrl:a})),[t,r,a])},B=()=>U().api;var I;function N(){return N=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},N.apply(this,arguments)}var V,$=function(e){return T.createElement("svg",N({xmlns:"http://www.w3.org/2000/svg",width:18,height:18},e),I||(I=T.createElement("g",{fillRule:"evenodd"},T.createElement("path",{fill:"#EA4335",d:"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48"}),T.createElement("path",{fill:"#4285F4",d:"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62"}),T.createElement("path",{fill:"#FBBC05",d:"M3.88 10.78A5.5 5.5 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9 9 0 0 0 0 9c0 1.45.35 2.82.96 4.04z"}),T.createElement("path",{fill:"#34A853",d:"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18"}),T.createElement("path",{fill:"none",d:"M0 0h18v18H0z"}))))};function z(e){const{options:t,attribute:r,display:a,helperText:n}=e,{watch:o,control:u}=m.useFormContext(),s=o(r.name),d={};return n&&(d.color="danger"),T.createElement(m.Controller,{name:r.name,rules:{required:Boolean(r.required)},control:u,render:({field:e})=>T.createElement(i,null,T.createElement(h,{htmlFor:`${e.name}`},a.label),T.createElement(l,{role:"group","aria-labelledby":r.name,sx:{borderRadius:"var(--joy-radius-sm)",p:.5,border:n?"1px solid var(--joy-palette-danger-outlinedBorder)":"none"}},T.createElement(v,{orientation:"horizontal",wrap:!0,sx:{"--List-gap":"8px"}},t.map((a=>(d.id=String(a.value),T.createElement(q,{key:`${a.value}-${a.label}`},T.createElement(w,{overlay:t.length>1,...d,checked:s.includes(a.value),disableIcon:t.length>1,variant:"soft",label:a.label,onChange:t=>{if(r.allowMultiple)if(t.target.checked)e.onChange(s?s.concat(a.value):[a.value]);else{const t=s.filter((e=>e!==a.value));e.onChange(t.length>0?t:"")}else e.onChange(t.target.checked?a.value:"")}}))))))),T.createElement(c,{sx:{color:"var(--joy-palette-danger-500)"},level:"body-sm"},n))})}function L(t){const{error:r,attr:a}=t;return r?e.createElement(x,{title:r,color:"danger",sx:{cursor:"pointer"}},e.createElement(h,null,a.label??a.name,e.createElement(E,{sx:{ml:.5,"--Icon-color":"#c41c1c"},fontSize:"small"}))):e.createElement(h,null,a.label??a.name)}function R(t){const{mutation:r,buttonText:a,attributes:n,cancelButton:c,loading:u,successMessage:s}=t,E=e.useMemo((()=>n.reduce(((e,t)=>{return e[t.name]=!0===(r=t).allowMultiple&&!Array.isArray(r.defaultValue)&&r.defaultValue?"number"==typeof r.defaultValue?[r.defaultValue]:[String(r.defaultValue)]:r.defaultValue??"",e;var r}),{})),[n]),h=m.useForm({defaultValues:E}),{register:x,control:w,handleSubmit:v,formState:{errors:q}}=h,C=e.useCallback((e=>{r.mutate(e)}),[r]);return e.createElement(m.FormProvider,{...h},e.createElement(i,{component:"form",onSubmit:v((e=>C(e))),spacing:2},n.map((t=>{const r={},a={key:t.name,label:t.label??t.name,id:t.label??t.name,placeholder:t.placeholder??t.label??t.name,error:Boolean(q[t.name]),disabled:Boolean(t.disabled)},n=t.options??[],o=t.helpText??"";let c="";switch(t.required&&(c=q[t.name]?`${t.label??t.name} is required`:"",r.required=!0),t.type){case exports.FormAttributeType.Switch:return e.createElement(p,{key:a.key,id:a.id,orientation:"horizontal",sx:{alignItems:"center"},required:t.required},e.createElement(l,null,e.createElement(L,{error:c,attr:t}),e.createElement(b,{id:`${t.name}-helper-text`},o)),e.createElement(m.Controller,{control:w,rules:{required:Boolean(t.required)},name:t.name,render:({field:r})=>{const a={};return q[t.name]&&(a.color="danger"),e.createElement(f.Switch,{id:`switch-field-${t.name}`,...a,...r,checked:Boolean(r.value),onChange:e=>{r.onChange(e.target.checked)},color:r.value?"success":"neutral",endDecorator:r.value?n[0].label:n[1].label})}}));case exports.FormAttributeType.Checkbox:return e.createElement(z,{key:a.key,attribute:t,display:a,options:n,helperText:o});case exports.FormAttributeType.Select:return e.createElement(p,{key:a.key,id:a.id,required:t.required},e.createElement(L,{error:c,attr:t}),e.createElement(m.Controller,{control:w,rules:{required:Boolean(t.required)},name:t.name,render:({field:r})=>{const l={};q[t.name]&&(l.color="danger");const c=String(r.value);return e.createElement(i,null,e.createElement(g,{id:`select-field-${t.name}`,placeholder:`${a.placeholder}...`,...l,...r,value:c,onChange:(e,t)=>{r.onChange(t)}},n.map((t=>e.createElement(y,{key:String(t.value??""),value:t.value},t.label)))),e.createElement(b,{id:`${t.name}-helper-text`},o))}}));case exports.FormAttributeType.Password:return e.createElement(p,{key:a.key,id:a.id,required:t.required},e.createElement(L,{error:c,attr:t}),e.createElement(d,{...a,...x(t.name,r),type:exports.FormAttributeType.Password}),e.createElement(b,{id:`${t.name}-helper-text`},o));case exports.FormAttributeType.Number:return e.createElement(p,{key:a.key,id:a.id,required:t.required},e.createElement(L,{error:c,attr:t}),e.createElement(d,{...a,...x(t.name,r),type:exports.FormAttributeType.Number}),e.createElement(b,{id:`${t.name}-helper-text`},o));case exports.FormAttributeType.Text:default:return e.createElement(p,{key:a.key,id:a.id,required:t.required},e.createElement(L,{error:c,attr:t}),e.createElement(d,{...a,...x(t.name,r)}),e.createElement(b,{id:`${t.name}-helper-text`},o))}})),c?e.createElement(i,{spacing:2,direction:"row"},c,e.createElement(l,null,e.createElement(o,{type:"submit"},a))):e.createElement(l,null,e.createElement(i,{direction:"row",gap:2},e.createElement(o,{type:"submit",loading:u},a),s))))}function D(t){const{open:a,setOpen:n,refetch:l}=t,{tenantId:o}=O(),i=B(),[c,u]=e.useState(),{watch:s,register:d,handleSubmit:p}=m.useForm(),b=s("email");e.useEffect((()=>{null!=c&&u()}),[b]);const E=r.useMutation((e=>i.users.createTenantUser({createBasicUserRequest:e,tenantId:String(o)})),{onSuccess(e){l&&l(e),n(!1)},onError(e){e instanceof Error&&u(e.message)}}),h=e.useCallback((async e=>{u(""),E.mutate(e)}),[E]);return e.createElement(f.Modal,{open:a},e.createElement(f.ModalDialog,null,e.createElement(f.Stack,{spacing:2},e.createElement(f.Typography,{level:"h4"},"Create user"),e.createElement(e.Fragment,null,c&&e.createElement(f.Typography,{color:"danger"},c)),e.createElement(f.Stack,{component:"form",sx:{width:"40ch"},spacing:1,onSubmit:p((e=>h(e)))},e.createElement(f.FormControl,{sx:{"--FormHelperText-color":"var(--joy-palette-danger-500)"}},e.createElement(f.FormLabel,{htmlFor:"email"},"Email"),e.createElement(f.Input,{...d("email"),fullWidth:!0,size:"lg",id:"email",name:"email",autoComplete:"current-email",required:!0,error:Boolean(c)})),e.createElement(f.FormControl,{sx:{"--FormHelperText-color":"var(--joy-palette-danger-500)"}},e.createElement(f.FormLabel,{htmlFor:"password"},"Password"),e.createElement(f.Input,{...d("password"),fullWidth:!0,size:"lg",id:"password",autoComplete:"current-password",type:"password",required:!0})),e.createElement(f.Stack,{direction:"row",sx:{pt:2},spacing:2},e.createElement(f.Button,{onClick:()=>n(!1),variant:"plain"},"Cancel"),e.createElement(f.Button,{type:"submit"},"Create"))))))}function H(t){const{allowCreation:r,buttonText:a,onUserCreateSuccess:n}=t,[l,c]=e.useState(!1);return r?e.createElement(i,{alignItems:"flex-end",gap:1},e.createElement(D,{open:l,setOpen:c,refetch:n}),e.createElement(o,{startDecorator:e.createElement(k,null),size:"sm",onClick:()=>c(!0)},a)):null}exports.FormAttributeType=void 0,(V=exports.FormAttributeType||(exports.FormAttributeType={})).Text="text",V.Email="email",V.Password="password",V.Select="select",V.Number="number",V.Float="float",V.Checkbox="checkbox",V.Switch="switch";const G=e=>Object.keys(e).reduce(((t,r)=>{const a=e[r];return t[r]=a instanceof Set?Array.from(a).join(", "):Array.isArray(a)?a.join(", "):a,t}),{});exports.Google=function(t){const{callbackUrl:r}=t;return e.createElement(l,{display:"flex",flex:1,sx:{textDecoration:"none"},onClick:()=>{u.signIn("google",{callbackUrl:r})}},e.createElement(l,null,e.createElement(o,{sx:{padding:0,textTransform:"initial",flex:1},"aria-label":"log in with google"},e.createElement(i,{direction:"row",alignItems:"center",p:0,flex:1,fontFamily:"Roboto, sans-serif",fontSize:"14px",display:"inline-flex",color:"rgb(255 255, 255)",boxShadow:"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px",borderRadius:"4px",border:"1px solid transparent",fontWeight:"500",sx:{backgroundColor:"rgb(66 133, 244)"}},e.createElement(l,{padding:"11px",display:"flex",border:"1px solid rgb(66, 133, 244)",borderRadius:"4px",sx:{background:"rgb(255, 255, 255)"}},e.createElement($,{"aria-hidden":"true"})),e.createElement(l,{padding:"10px",flex:1},e.createElement(c,{sx:{color:"white"},fontWeight:700,fontFamily:"Roboto, sans-serif",fontSize:"14px",height:"20px"},"Continue with Google"))))))},exports.NileProvider=r=>{const{children:a,theme:n,slotProps:l,tenantId:o,QueryProvider:i=M,appUrl:c,apiUrl:u="https://api.thenile.dev",api:s}=r,m=e.useMemo((()=>({api:s??new t({basePath:c,credentials:"include"}),tenantId:String(o),apiUrl:u,appUrl:c})),[s,u,c,o]);return e.createElement(i,null,e.createElement(F,{slotProps:l?.provider,theme:n},e.createElement(P,{value:m},a)))},exports.SignInForm=function(t){const[a,n]=e.useState(),{attributes:l,onSuccess:o,onError:c,beforeMutate:m,callbackUrl:d}=t,p=r.useMutation((async e=>{n(void 0);const t={...e,callbackUrl:d},r=m&&m(t);u.signIn("credentials",r??t)}),{onSuccess:o,onError:c}),b=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Text,defaultValue:"",required:!0},{name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}];return l&&l.length>0?e.concat(l):e}),[l]);return e.createElement(i,{gap:2},a?e.createElement(s,{color:"danger"},a):null,e.createElement(R,{mutation:p,buttonText:"Log in",attributes:b}))},exports.SignUpForm=function(t){const[a,n]=e.useState(),{buttonText:l="Sign up",onSuccess:o,onError:c,attributes:u,beforeMutate:m}=t,d=B(),p=r.useMutation((async e=>{n(void 0);const t=m&&m(e),r={...e,...t},{name:a,givenName:l,familyName:o,picture:i,email:c,password:u,newTenantName:s,...p}=r;return Object.keys(p).length>0&&console.warn("additional metadata not supported yet."),await d.users.createUser({createBasicUserRequest:{email:c,password:u,name:a,familyName:o,picture:i,givenName:l,newTenantName:s}})}),{onSuccess:o,onError:(e,t)=>{n(e.message),c&&c(e,t)}}),b=e.useMemo((()=>{const e=[{name:"email",label:"Email",type:exports.FormAttributeType.Email,defaultValue:"",required:!0},{name:"password",label:"Password",type:exports.FormAttributeType.Password,defaultValue:"",required:!0}];return u&&u.length>0?e.concat(u):e}),[u]);return e.createElement(i,{gap:2},a?e.createElement(s,{color:"danger"},a):null,e.createElement(R,{mutation:p,buttonText:l,attributes:b}))},exports.UserTenantList=function(t){const{data:r,allowCreation:a=!0,buttonText:n="Add a user",onUserCreateSuccess:l,slots:o,include:c=["email","preferredName"]}=t,u={width:"100%",height:"100%",...o?.dataGrid??{}},[s,m]=function(t,r){const a=function(){const[t,r]=e.useState();return e.useEffect((()=>{const e=document.createElement("canvas").getContext("2d");e&&(e.font="18px Roboto",r(e))}),[]),t}(),[n,l]=e.useMemo((()=>((e,t,r)=>{if(!e)return[[],[]];const a=e.map(G),n=Object.keys(a[0]),l={},o=n?.map((e=>{const n=function(e,t,r){let a=r&&e?r.measureText(String(e)).width:50;a+=27;let n=a;return n=16+Math.ceil(r?r.measureText(t.reduce(((t,r)=>{let a=r[String(e)];return null==a&&(a=""),a=a?.toString(),t.length>a.length?t:a}),"")).width:50),n<a&&(n=a),n+=8,n}(e,a,t),o=e.slice();if(r.includes(o))return null==l[o]?l[o]=o.length:l[o]+=1,{field:o.padEnd(l[o]),headerName:o.padEnd(l[o]),width:n}})).filter(Boolean)??[];return[o,a]})(t,a,r)),[t,a,r]);return[n,l]}(r,c);return e.createElement(i,{flex:1},e.createElement(H,{allowCreation:a,buttonText:n,onUserCreateSuccess:l}),e.createElement(C.DataGrid,{sx:u,rows:m,columns:s,hideFooter:!0}))},exports.useApi=B,Object.keys(u).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return u[e]}})}));
|
|
2
|
-
//# sourceMappingURL=react.cjs.production.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react.cjs.production.min.js","sources":["../src/context/theme.tsx","../src/context/index.tsx","../src/GoogleLoginButton/google.svg","../src/lib/SimpleForm/types.ts","../src/lib/SimpleForm/CheckGroup/index.tsx","../src/lib/SimpleForm/index.tsx","../src/UserTenantList/UserModal.tsx","../src/UserTenantList/CreateUser.tsx","../src/UserTenantList/useDataParser.ts","../src/GoogleLoginButton/GoogleLoginButton.tsx","../src/SignInForm/SignInForm.tsx","../src/SignUpForm/SignUpForm.tsx","../src/UserTenantList/UserList.tsx","../src/hooks/useTextSizer.ts","../src/utils/getColumnSize.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React from 'react';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport { Theme } from '@mui/joy/styles';\nimport { CssVarsProvider as JoyCssVarsProvider } from '@mui/joy/styles';\n\nexport default function Themer({\n theme,\n children,\n slotProps,\n}: {\n theme?: Theme;\n children: JSX.Element;\n slotProps?: Record<string, string>;\n}) {\n return (\n <JoyCssVarsProvider {...slotProps} theme={theme}>\n <CssBaseline enableColorScheme />\n {children}\n </JoyCssVarsProvider>\n );\n}\n","'use client';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport React, { useMemo, createContext, useContext } from 'react';\nimport Browser from '@niledatabase/browser';\nimport { QueryClientProvider, QueryClient } from '@tanstack/react-query';\n\nimport ThemeProvider from './theme';\nimport { NileContext, NileProviderProps, NileReactConfig } from './types';\n\nconst queryClient = new QueryClient();\n\nconst defaultContext: NileContext = {\n api: new Browser({\n basePath: 'https://api.thenile.dev',\n credentials: 'include',\n }),\n apiUrl: '',\n};\n\nconst context = createContext<NileContext>(defaultContext);\n\nconst { Provider } = context;\n\nexport const BaseQueryProvider = ({\n children,\n}: {\n children: JSX.Element;\n}): JSX.Element => {\n return (\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n );\n};\n\nexport const NileProvider = (props: NileProviderProps) => {\n const {\n children,\n theme,\n slotProps,\n tenantId,\n QueryProvider = BaseQueryProvider,\n appUrl,\n apiUrl = 'https://api.thenile.dev',\n api,\n } = props;\n\n const values = useMemo<NileContext>((): NileContext => {\n return {\n api:\n api ??\n new Browser({\n basePath: appUrl,\n credentials: 'include',\n }),\n tenantId: String(tenantId),\n apiUrl,\n appUrl,\n };\n }, [api, apiUrl, appUrl, tenantId]);\n\n return (\n <QueryProvider>\n <ThemeProvider slotProps={slotProps?.provider} theme={theme}>\n <Provider value={values}>{children}</Provider>\n </ThemeProvider>\n </QueryProvider>\n );\n};\n\nconst useNileContext = (): NileContext => {\n return useContext(context);\n};\n\nexport const useNileConfig = (): NileReactConfig => {\n const { apiUrl, tenantId, appUrl } = useNileContext();\n return useMemo(\n () => ({\n tenantId,\n apiUrl,\n appUrl,\n }),\n [apiUrl, tenantId, appUrl]\n );\n};\n\nexport const useApi = (): Browser => {\n return useNileContext().api;\n};\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\">\n <g fill=\"#000\" fill-rule=\"evenodd\">\n <path d=\"M9 3.48c1.69 0 2.83.73 3.48 1.34l2.54-2.48C13.46.89 11.43 0 9 0 5.48 0 2.44 2.02.96 4.96l2.91 2.26C4.6 5.05 6.62 3.48 9 3.48z\" fill=\"#EA4335\" />\n <path d=\"M17.64 9.2c0-.74-.06-1.28-.19-1.84H9v3.34h4.96c-.1.83-.64 2.08-1.84 2.92l2.84 2.2c1.7-1.57 2.68-3.88 2.68-6.62z\" fill=\"#4285F4\" />\n <path d=\"M3.88 10.78A5.54 5.54 0 0 1 3.58 9c0-.62.11-1.22.29-1.78L.96 4.96A9.008 9.008 0 0 0 0 9c0 1.45.35 2.82.96 4.04l2.92-2.26z\" fill=\"#FBBC05\" />\n <path d=\"M9 18c2.43 0 4.47-.8 5.96-2.18l-2.84-2.2c-.76.53-1.78.9-3.12.9-2.38 0-4.4-1.57-5.12-3.74L.97 13.04C2.45 15.98 5.48 18 9 18z\" fill=\"#34A853\" />\n <path fill=\"none\" d=\"M0 0h18v18H0z\" />\n </g>\n</svg>","export enum AttributeType {\n Text = 'text',\n Email = 'email',\n Password = 'password',\n Select = 'select',\n Number = 'number',\n Float = 'float',\n Checkbox = 'checkbox',\n Switch = 'switch',\n}\ntype SimplePrimitive = number | string | boolean;\n\n// possibly no value for `<Switch/>`\nexport type Options = { label: string; value?: SimplePrimitive }[];\nexport type Attribute = {\n name: string;\n type?: AttributeType;\n defaultValue?: SimplePrimitive;\n options?: Options;\n allowMultiple?: boolean;\n label?: string;\n required?: boolean;\n placeholder?: string;\n helpText?: string;\n disabled?: boolean;\n};\n\nexport type DisplayProps = {\n key: string;\n id: string;\n label: string;\n placeholder: string;\n error?: boolean;\n color?: 'danger';\n disabled?: boolean;\n};\n","import * as React from 'react';\nimport Box from '@mui/joy/Box';\nimport Checkbox from '@mui/joy/Checkbox';\nimport List from '@mui/joy/List';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport FormLabel from '@mui/joy/FormLabel';\nimport ListItem from '@mui/joy/ListItem';\nimport Typography from '@mui/joy/Typography';\n\nimport { Attribute, DisplayProps, Options } from '../types';\n\ntype Props = {\n attribute: Attribute;\n display: DisplayProps;\n options: Options;\n helperText: string;\n};\nexport default function CheckGroup(props: Props) {\n const { options, attribute, display, helperText } = props;\n const { watch, control } = useFormContext();\n const currentVals = watch(attribute.name);\n const checkProps: { color?: 'danger'; id?: string } = {};\n if (helperText) {\n checkProps.color = 'danger';\n }\n return (\n <Controller\n name={attribute.name}\n rules={{ required: Boolean(attribute.required) }}\n control={control}\n render={({ field }) => {\n return (\n <Stack>\n <FormLabel htmlFor={`${field.name}`}>{display.label}</FormLabel>\n <Box\n role=\"group\"\n aria-labelledby={attribute.name}\n sx={{\n borderRadius: 'var(--joy-radius-sm)',\n p: 0.5,\n border: helperText\n ? '1px solid var(--joy-palette-danger-outlinedBorder)'\n : 'none',\n }}\n >\n <List\n orientation=\"horizontal\"\n wrap\n sx={{\n '--List-gap': '8px',\n }}\n >\n {options.map((item) => {\n checkProps.id = String(item.value);\n return (\n <ListItem key={`${item.value}-${item.label}`}>\n <Checkbox\n overlay={options.length > 1}\n {...checkProps}\n checked={currentVals.includes(item.value)}\n disableIcon={options.length > 1}\n variant=\"soft\"\n label={item.label}\n onChange={(event) => {\n if (attribute.allowMultiple) {\n if (event.target.checked) {\n if (!currentVals) {\n field.onChange([item.value]);\n } else {\n field.onChange(currentVals.concat(item.value));\n }\n } else {\n const remaining = currentVals.filter(\n (val: string | number) => val !== item.value\n );\n if (remaining.length > 0) {\n field.onChange(remaining);\n } else {\n field.onChange('');\n }\n }\n } else {\n if (event.target.checked) {\n field.onChange(item.value);\n } else {\n field.onChange('');\n }\n }\n }}\n />\n </ListItem>\n );\n })}\n </List>\n </Box>\n <Typography\n sx={{ color: 'var(--joy-palette-danger-500)' }}\n level=\"body-sm\"\n >\n {helperText}\n </Typography>\n </Stack>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport { Controller, FormProvider, useForm } from 'react-hook-form';\nimport Stack from '@mui/joy/Stack';\nimport Input from '@mui/joy/Input';\nimport FormControl from '@mui/joy/FormControl';\nimport FormHelperText from '@mui/joy/FormHelperText';\nimport Error from '@mui/icons-material/Error';\nimport FormLabel from '@mui/joy/FormLabel';\nimport Select from '@mui/joy/Select';\nimport Option from '@mui/joy/Option';\nimport Box from '@mui/joy/Box';\nimport Tooltip from '@mui/joy/Tooltip';\nimport { Switch } from '@mui/joy';\n\nimport CheckGroup from './CheckGroup';\nimport { Attribute, AttributeType, DisplayProps } from './types';\n\ntype AttrMap = {\n [key: string]: string | number | boolean | string[] | number[];\n};\n\ntype FieldConfig = {\n required?: boolean;\n};\n\nexport const getAttributeDefault = (\n attribute: Attribute\n): string | number | boolean | string[] | number[] => {\n // have to look to see if it is an enum\n if (attribute.allowMultiple === true) {\n if (!Array.isArray(attribute.defaultValue) && attribute.defaultValue) {\n if (typeof attribute.defaultValue === 'number') {\n return [attribute.defaultValue];\n }\n return [String(attribute.defaultValue)];\n }\n }\n return attribute.defaultValue ?? '';\n};\n\nfunction Labler(props: { error?: string; attr: Attribute }) {\n const { error, attr } = props;\n if (error) {\n return (\n <Tooltip title={error} color=\"danger\" sx={{ cursor: 'pointer' }}>\n <FormLabel>\n {attr.label ?? attr.name}\n <Error sx={{ ml: 0.5, '--Icon-color': '#c41c1c' }} fontSize=\"small\" />\n </FormLabel>\n </Tooltip>\n );\n }\n return <FormLabel>{attr.label ?? attr.name}</FormLabel>;\n}\nexport default function SimpleForm(props: {\n buttonText: string;\n cancelButton?: React.ReactNode;\n attributes: Attribute[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mutation: any;\n loading?: boolean;\n successMessage?: JSX.Element;\n}) {\n const {\n mutation,\n buttonText,\n attributes,\n cancelButton,\n loading,\n successMessage,\n } = props;\n\n const defaultValues = React.useMemo(\n () =>\n attributes.reduce((accum: AttrMap, attr: Attribute) => {\n accum[attr.name] = getAttributeDefault(attr);\n return accum;\n }, {}),\n [attributes]\n );\n\n const methods = useForm({\n defaultValues,\n });\n\n const {\n register,\n control,\n handleSubmit,\n formState: { errors },\n } = methods;\n const onSubmit = React.useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: any) => {\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <FormProvider {...methods}>\n <Stack\n component=\"form\"\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSubmit={handleSubmit((data) => onSubmit(data as any))}\n spacing={2}\n >\n {attributes.map((attr: Attribute): React.ReactNode => {\n const fieldConfig: FieldConfig = {};\n const display: DisplayProps = {\n key: attr.name,\n label: attr.label ?? attr.name,\n id: attr.label ?? attr.name,\n placeholder: attr.placeholder ?? attr.label ?? attr.name,\n error: Boolean(errors[attr.name]),\n disabled: Boolean(attr.disabled),\n };\n const options = attr.options ?? [];\n const helperText = attr.helpText ?? '';\n let error = '';\n\n if (attr.required) {\n error = errors[attr.name]\n ? `${attr.label ?? attr.name} is required`\n : '';\n fieldConfig.required = true;\n }\n\n switch (attr.type) {\n case AttributeType.Switch:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n orientation=\"horizontal\"\n sx={{ alignItems: 'center' }}\n required={attr.required}\n >\n <Box>\n <Labler error={error} attr={attr} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Box>\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n return (\n <Switch\n id={`switch-field-${attr.name}`}\n {...color}\n {...field}\n checked={Boolean(field.value)}\n onChange={(event) => {\n field.onChange(event.target.checked);\n }}\n color={field.value ? 'success' : 'neutral'}\n endDecorator={\n field.value ? options[0].label : options[1].label\n }\n />\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Checkbox:\n return (\n <CheckGroup\n key={display.key}\n attribute={attr}\n display={display}\n options={options}\n helperText={helperText}\n />\n );\n case AttributeType.Select:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Controller\n control={control}\n rules={{ required: Boolean(attr.required) }}\n name={attr.name}\n render={({ field }) => {\n const color: { color?: 'danger' } = {};\n if (errors[attr.name]) {\n color.color = 'danger';\n }\n const value = String(field.value);\n return (\n <Stack>\n <Select\n id={`select-field-${attr.name}`}\n placeholder={`${display.placeholder}...`}\n {...color}\n {...field}\n value={value}\n onChange={(_, newValue) => {\n field.onChange(newValue);\n }}\n >\n {options.map((option) => {\n return (\n <Option\n key={String(option.value ?? '')}\n value={option.value}\n >\n {option.label}\n </Option>\n );\n })}\n </Select>\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </Stack>\n );\n }}\n />\n </FormControl>\n );\n case AttributeType.Password:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Password}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n case AttributeType.Number:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Input\n {...display}\n {...register(attr.name, fieldConfig)}\n type={AttributeType.Number}\n />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n\n case AttributeType.Text:\n default:\n return (\n <FormControl\n key={display.key}\n id={display.id}\n required={attr.required}\n >\n <Labler error={error} attr={attr} />\n <Input {...display} {...register(attr.name, fieldConfig)} />\n <FormHelperText id={`${attr.name}-helper-text`}>\n {helperText}\n </FormHelperText>\n </FormControl>\n );\n }\n })}\n {cancelButton ? (\n <Stack spacing={2} direction=\"row\">\n {cancelButton}\n <Box>\n <Button type=\"submit\">{buttonText}</Button>\n </Box>\n </Stack>\n ) : (\n <Box>\n <Stack direction=\"row\" gap={2}>\n <Button type=\"submit\" loading={loading}>\n {buttonText}\n </Button>\n {successMessage}\n </Stack>\n </Box>\n )}\n </Stack>\n </FormProvider>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport {\n Button,\n Stack,\n Typography,\n FormControl,\n FormLabel,\n Input,\n Modal,\n ModalDialog,\n} from '@mui/joy';\nimport { useForm } from 'react-hook-form';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useApi, useNileConfig } from '../context';\n\nexport type UserFormProps = {\n open: boolean;\n setOpen: (open: boolean) => void;\n refetch?: (user: any) => void;\n};\n\nexport default function AddUser(props: UserFormProps) {\n const { open, setOpen, refetch } = props;\n const { tenantId } = useNileConfig();\n const api = useApi();\n const [errorText, setErrorText] = React.useState<void | string>();\n const { watch, register, handleSubmit } = useForm<any>();\n const email = watch('email');\n\n React.useEffect(() => {\n if (errorText != null) {\n setErrorText();\n }\n // if email changes, no more error\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [email]);\n\n const mutation = useMutation(\n (data: any) =>\n api.users.createTenantUser({\n createBasicUserRequest: data,\n tenantId: String(tenantId),\n }),\n {\n onSuccess(data) {\n refetch && refetch(data);\n setOpen(false);\n },\n onError(e) {\n if (e instanceof Error) {\n setErrorText(e.message);\n }\n },\n }\n );\n\n const handleUpdate = React.useCallback(\n async (data: any) => {\n setErrorText('');\n mutation.mutate(data);\n },\n [mutation]\n );\n\n return (\n <Modal open={open}>\n <ModalDialog>\n <Stack spacing={2}>\n <Typography level=\"h4\">Create user</Typography>\n <>\n {errorText && <Typography color=\"danger\">{errorText}</Typography>}\n </>\n <Stack\n component=\"form\"\n sx={{\n width: '40ch',\n }}\n spacing={1}\n onSubmit={handleSubmit((data) => handleUpdate(data as any))}\n >\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"email\">Email</FormLabel>\n <Input\n {...register('email')}\n fullWidth\n size=\"lg\"\n id=\"email\"\n name=\"email\"\n autoComplete=\"current-email\"\n required\n error={Boolean(errorText)}\n />\n </FormControl>\n <FormControl\n sx={{\n '--FormHelperText-color': 'var(--joy-palette-danger-500)',\n }}\n >\n <FormLabel htmlFor=\"password\">Password</FormLabel>\n <Input\n {...register('password')}\n fullWidth\n size=\"lg\"\n id=\"password\"\n autoComplete=\"current-password\"\n type=\"password\"\n required\n />\n </FormControl>\n <Stack direction=\"row\" sx={{ pt: 2 }} spacing={2}>\n <Button onClick={() => setOpen(false)} variant=\"plain\">\n Cancel\n </Button>\n <Button type=\"submit\">Create</Button>\n </Stack>\n </Stack>\n </Stack>\n </ModalDialog>\n </Modal>\n );\n}\n","import React from 'react';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport { useState } from 'react';\nimport Add from '@mui/icons-material/Add';\n\nimport UserModal from './UserModal';\n\ntype Props = {\n allowCreation: boolean;\n buttonText: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onUserCreateSuccess?: (user: any) => void;\n};\nexport default function CreateUser(props: Props) {\n const { allowCreation, buttonText, onUserCreateSuccess } = props;\n const [open, setOpen] = useState(false);\n if (!allowCreation) {\n return null;\n }\n\n return (\n <Stack alignItems=\"flex-end\" gap={1}>\n <UserModal open={open} setOpen={setOpen} refetch={onUserCreateSuccess} />\n <Button startDecorator={<Add />} size=\"sm\" onClick={() => setOpen(true)}>\n {buttonText}\n </Button>\n </Stack>\n );\n}\n","import { useMemo } from 'react';\nimport { GridColDef, GridRowsProp } from '@mui/x-data-grid';\nimport { User } from '@niledatabase/browser';\n\nimport getColumnSize from '../utils/getColumnSize';\nimport useTextSizer from '../hooks/useTextSizer';\n\nexport const internalRowId = '_nile_data_grid_identifier';\n\ntype Cleaned = { [key: string]: string | Set<string> };\n\nconst makeRenderable = (vals: User) => {\n return Object.keys(vals).reduce((cleaned: Cleaned, key) => {\n const val = (vals as Cleaned)[key];\n if (val instanceof Set) {\n cleaned[key] = Array.from(val).join(', ');\n } else if (Array.isArray(val)) {\n cleaned[key] = val.join(', ');\n } else {\n cleaned[key] = val;\n }\n return cleaned;\n }, {});\n};\n\nconst parseResults = (\n data: void | User[],\n ctx: CanvasRenderingContext2D | void,\n include: string[]\n): [GridColDef[], GridRowsProp] => {\n if (!data) {\n return [[], []];\n }\n const rows = data.map(makeRenderable);\n const fields = Object.keys(rows[0]);\n\n const existentCols: { [key: string]: number } = {};\n\n const mapCols = (col: string): GridColDef | void => {\n const width = getColumnSize(col, rows, ctx);\n const name = col.slice();\n if (include.includes(name)) {\n // add spaces to the end of column names so they are not duplicated in the UI\n if (existentCols[name] == null) {\n existentCols[name] = name.length;\n } else {\n existentCols[name] += 1;\n }\n return {\n field: name.padEnd(existentCols[name]),\n headerName: name.padEnd(existentCols[name]),\n width,\n };\n }\n };\n const cols = fields?.map(mapCols).filter(Boolean) ?? [];\n\n return [cols as GridColDef[], rows];\n};\n\nexport default function useDataParser(\n data: void | User[],\n include: string[]\n): [GridColDef[], GridRowsProp] {\n const ctx = useTextSizer();\n const [cols, rows] = useMemo(\n () => parseResults(data, ctx, include),\n [data, ctx, include]\n );\n return [cols, rows];\n}\n","import React from 'react';\nimport Box from '@mui/joy/Box';\nimport Button from '@mui/joy/Button';\nimport Stack from '@mui/joy/Stack';\nimport Typography from '@mui/joy/Typography';\nimport { signIn } from 'next-auth/react';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport GoogleLogo from './google.svg';\n\n/**\n * A component for a Google login button, according to their design language.\n * This works when an identity provider is configured in the admin dashboard.\n * @param props href: a string to override the URL provided by the context\n * @returns a JSX.Element to render\n */\nexport default function GoogleSSOButton(props: { callbackUrl?: string }) {\n const { callbackUrl } = props;\n\n return (\n <Box\n display=\"flex\"\n flex={1}\n sx={{ textDecoration: 'none' }}\n onClick={() => {\n signIn('google', { callbackUrl });\n }}\n >\n <Box>\n <Button\n sx={{ padding: 0, textTransform: 'initial', flex: 1 }}\n aria-label=\"log in with google\"\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n p={0}\n flex={1}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n display=\"inline-flex\"\n color=\"rgb(255 255, 255)\"\n boxShadow=\"rgb(0 0 0 / 24%) 0px 2px 2px 0px rgb(0 0 0 / 24%) 0px 0px 1px 0px\"\n borderRadius=\"4px\"\n border=\"1px solid transparent\"\n fontWeight=\"500\"\n sx={{\n backgroundColor: 'rgb(66 133, 244)',\n }}\n >\n <Box\n padding=\"11px\"\n display=\"flex\"\n border=\"1px solid rgb(66, 133, 244)\"\n borderRadius=\"4px\"\n sx={{\n background: 'rgb(255, 255, 255)',\n }}\n >\n <GoogleLogo aria-hidden=\"true\" />\n </Box>\n <Box padding=\"10px\" flex={1}>\n <Typography\n sx={{ color: 'white' }}\n fontWeight={700}\n fontFamily=\"Roboto, sans-serif\"\n fontSize=\"14px\"\n height=\"20px\"\n >\n Continue with Google\n </Typography>\n </Box>\n </Stack>\n </Button>\n </Box>\n </Box>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Alert from '@mui/joy/Alert';\nimport Stack from '@mui/joy/Stack';\nimport { signIn } from 'next-auth/react';\n\nimport { Attribute } from '../lib/SimpleForm/types';\nimport SimpleForm from '../lib/SimpleForm';\nimport { AttributeType } from '../lib/SimpleForm/types';\n\nimport { Props, LoginInfo } from './types';\n\nexport default function SignInForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const { attributes, onSuccess, onError, beforeMutate, callbackUrl } = props;\n\n const mutation = useMutation(\n async (_data: LoginInfo) => {\n setError(undefined);\n const d = { ..._data, callbackUrl };\n const possibleData = beforeMutate && beforeMutate(d);\n const data = possibleData ?? d;\n signIn('credentials', data);\n },\n {\n onSuccess,\n onError,\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Text,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <SimpleForm\n mutation={mutation}\n buttonText=\"Log in\"\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { useMutation } from '@tanstack/react-query';\nimport Stack from '@mui/joy/Stack';\nimport Alert from '@mui/joy/Alert';\n\nimport UserForm from '../lib/SimpleForm';\nimport { Attribute, AttributeType } from '../lib/SimpleForm/types';\nimport { useApi } from '../context';\n\nimport { Props, SignUpInfo } from './types';\n\nexport default function SignUpForm(props: Props) {\n const [error, setError] = React.useState<string | void>();\n const {\n buttonText = 'Sign up',\n onSuccess,\n onError,\n attributes,\n beforeMutate,\n } = props;\n const api = useApi();\n const mutation = useMutation(\n async (_data: SignUpInfo) => {\n setError(undefined);\n const possibleData = beforeMutate && beforeMutate(_data);\n const data: SignUpInfo = { ..._data, ...possibleData };\n const {\n name,\n givenName,\n familyName,\n picture,\n email,\n password,\n newTenantName,\n ...metadata\n } = data;\n if (Object.keys(metadata).length > 0) {\n // eslint-disable-next-line no-console\n console.warn('additional metadata not supported yet.');\n }\n return await api.users.createUser({\n createBasicUserRequest: {\n email,\n password,\n name,\n familyName,\n picture,\n givenName,\n newTenantName,\n },\n });\n },\n {\n onSuccess,\n onError: (e: Error, vars) => {\n setError(e.message);\n onError && onError(e as Error, vars);\n },\n }\n );\n\n const completeAttributes = React.useMemo(() => {\n const mainAttributes: Attribute[] = [\n {\n name: 'email',\n label: 'Email',\n type: AttributeType.Email,\n defaultValue: '',\n required: true,\n },\n {\n name: 'password',\n label: 'Password',\n type: AttributeType.Password,\n defaultValue: '',\n required: true,\n },\n ];\n if (attributes && attributes.length > 0) {\n return mainAttributes.concat(attributes);\n }\n return mainAttributes;\n }, [attributes]);\n\n return (\n <Stack gap={2}>\n {error ? <Alert color=\"danger\">{error}</Alert> : null}\n <UserForm\n mutation={mutation}\n buttonText={buttonText}\n attributes={completeAttributes}\n />\n </Stack>\n );\n}\n","import { DataGrid } from '@mui/x-data-grid';\nimport React from 'react';\nimport Stack from '@mui/joy/Stack';\nimport { SxProps } from '@mui/system/styleFunctionSx/styleFunctionSx';\nimport { Theme } from '@mui/system/createTheme';\nimport { User } from '@niledatabase/browser';\n\nimport CreateUser from './CreateUser';\nimport useDataParser from './useDataParser';\n\ntype ColumnNames = string;\n\ntype Props = {\n data: void | User[];\n allowCreation?: boolean;\n buttonText?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onUserCreateSuccess?: (user: any) => void;\n slots?: {\n dataGrid?: SxProps<Theme>;\n };\n // white list of columns to show\n include?: ColumnNames[];\n};\n\nexport default function UserList(props: Props) {\n const {\n data,\n allowCreation = true,\n buttonText = 'Add a user',\n onUserCreateSuccess,\n slots,\n include = ['email', 'preferredName'],\n } = props;\n\n const dataGridSx = {\n width: '100%',\n height: '100%',\n ...(slots?.dataGrid ?? {}),\n };\n\n const [columns, rows] = useDataParser(data, include);\n return (\n <Stack flex={1}>\n <CreateUser\n allowCreation={allowCreation}\n buttonText={buttonText}\n onUserCreateSuccess={onUserCreateSuccess}\n />\n <DataGrid\n sx={dataGridSx}\n rows={rows}\n columns={columns}\n hideFooter={true}\n />\n </Stack>\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport default function useTextSizer() {\n const [ctx, setCtx] = useState<CanvasRenderingContext2D>();\n useEffect(() => {\n const canvas = document.createElement('canvas');\n const canvasContext = canvas.getContext('2d');\n if (canvasContext) {\n canvasContext.font = '18px Roboto';\n setCtx(canvasContext);\n }\n }, []);\n return ctx;\n}\n","import { GridRowsProp } from '@mui/x-data-grid';\n\nexport default function getColumnSize(\n column: unknown,\n rows: GridRowsProp,\n canvasContext: void | CanvasRenderingContext2D\n) {\n const dataWidthReducer = (\n longest: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextRow: { [key: string]: any }\n ) => {\n let value = nextRow[String(column)];\n if (value == null) {\n value = '';\n }\n value = value?.toString();\n return longest.length > value.length ? longest : value;\n };\n\n let columnHeaderLen =\n canvasContext && column\n ? canvasContext.measureText(String(column)).width\n : 50;\n /* padding 12, icon-width 15 */\n columnHeaderLen += 15 + 12;\n\n let width = columnHeaderLen;\n width =\n 16 +\n Math.ceil(\n canvasContext\n ? canvasContext.measureText(rows.reduce(dataWidthReducer, '')).width\n : 50\n );\n if (width < columnHeaderLen) {\n width = columnHeaderLen;\n }\n /* Gracefull */\n width += 8;\n return width;\n}\n"],"names":["Themer","theme","children","slotProps","React","JoyCssVarsProvider","createElement","CssBaseline","enableColorScheme","queryClient","QueryClient","context","createContext","api","Browser","basePath","credentials","apiUrl","Provider","BaseQueryProvider","QueryClientProvider","client","useNileContext","useContext","useNileConfig","tenantId","appUrl","useMemo","useApi","_g","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","AttributeType","SvgGoogle","props","xmlns","width","height","fillRule","fill","d","CheckGroup","options","attribute","display","helperText","watch","control","useFormContext","currentVals","name","checkProps","color","Controller","rules","required","Boolean","render","field","Stack","FormLabel","htmlFor","label","Box","role","sx","borderRadius","p","border","List","orientation","wrap","map","item","id","String","value","ListItem","Checkbox","overlay","checked","includes","disableIcon","variant","onChange","event","allowMultiple","concat","remaining","filter","val","Typography","level","Labler","error","attr","Tooltip","title","cursor","Error","ml","fontSize","SimpleForm","mutation","buttonText","attributes","cancelButton","loading","successMessage","defaultValues","reduce","accum","Array","isArray","defaultValue","methods","useForm","register","handleSubmit","formState","errors","onSubmit","useCallback","data","mutate","FormProvider","component","spacing","fieldConfig","placeholder","disabled","helpText","type","FormAttributeType","Switch","FormControl","alignItems","FormHelperText","endDecorator","Select","_","newValue","option","Option","Password","Input","Number","Text","direction","Button","gap","AddUser","open","setOpen","refetch","errorText","setErrorText","useState","email","useEffect","useMutation","users","createTenantUser","createBasicUserRequest","onSuccess","onError","e","message","handleUpdate","async","Modal","ModalDialog","Fragment","fullWidth","size","autoComplete","pt","onClick","CreateUser","allowCreation","onUserCreateSuccess","UserModal","startDecorator","Add","makeRenderable","vals","keys","cleaned","Set","from","join","callbackUrl","flex","textDecoration","signIn","padding","textTransform","fontFamily","boxShadow","fontWeight","backgroundColor","background","GoogleLogo","QueryProvider","values","ThemeProvider","provider","setError","beforeMutate","undefined","_data","possibleData","completeAttributes","mainAttributes","Alert","givenName","familyName","picture","password","newTenantName","metadata","console","warn","createUser","vars","Email","UserForm","slots","include","dataGridSx","dataGrid","columns","rows","ctx","setCtx","canvasContext","document","getContext","font","useTextSizer","cols","parseResults","fields","existentCols","col","column","columnHeaderLen","measureText","Math","ceil","dataWidthReducer","longest","nextRow","toString","getColumnSize","slice","padEnd","headerName","useDataParser","DataGrid","hideFooter"],"mappings":"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"}
|
package/dist/react.esm.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export { NileProvider, useApi } from './context';
|
|
2
|
-
export { default as Google } from './GoogleLoginButton';
|
|
3
|
-
export * from './GoogleLoginButton';
|
|
4
|
-
export * from './SignUpForm';
|
|
5
|
-
export { default as SignUpForm } from './SignUpForm';
|
|
6
|
-
export * from './SignInForm';
|
|
7
|
-
export { default as SignInForm } from './SignInForm';
|
|
8
|
-
export * from './UserTenantList';
|
|
9
|
-
export { default as UserTenantList } from './UserTenantList';
|
|
10
|
-
export { Attribute as FormAttribute, AttributeType as FormAttributeType, } from './lib/SimpleForm/types';
|
|
11
|
-
export * from 'next-auth/react';
|