mirror of https://github.com/nocodb/nocodb
աɨռɢӄաօռɢ
12 months ago
132 changed files with 9773 additions and 1285 deletions
@ -1,23 +1,91 @@
|
||||
<script lang="ts" setup> |
||||
import { iconMap } from '#imports' |
||||
</script> |
||||
<script lang="ts" setup></script> |
||||
|
||||
<template> |
||||
<a |
||||
v-e="['c:navbar:join-cloud']" |
||||
class="flex !no-underline" |
||||
href="https://app.nocodb.com/#/signin?utm_source=OSS&utm_medium=OSS&utm_campaign=OSS&utm_content=OSS" |
||||
> |
||||
<div |
||||
class="flex justify-center items-center rounded-l-[3px] w-full cursor-pointer px-2 py-1 !text-current !no-underline text-primary border-1 border-[#cdd1d6] bg-[#EFF2F6] hover:bg-[#e9ebef] m-0" |
||||
<div class="flex flex-row items-center w-full bg-white rounded-lg border-1 border-brand-500 shadow-sm mb-0.5 overflow-hidden"> |
||||
<a |
||||
v-e="['c:navbar:join-cloud']" |
||||
class="flex flex-grow !no-underline items-center justify-center border-r-1 h-full hover:bg-gray-100" |
||||
href="https://app.nocodb.com/#/signin?utm_source=OSS&utm_medium=OSS&utm_campaign=OSS&utm_content=OSS" |
||||
> |
||||
<component :is="iconMap.cloud" class="mt-[1px] text-black font-bold" /> |
||||
<div class="px-1 text-xs font-bold text-gray-800">{{ $t('general.join') }}</div> |
||||
</div> |
||||
<div |
||||
class="group flex justify-center items-center rounded-r-[3px] w-full cursor-pointer px-1 py-1 text-primary border-r-1 border-b-1 border-t-1 border-[#cdd1d6] m-0" |
||||
> |
||||
<div class="px-1 text-xs font-semibold group-hover:text-[#0a69da] text-gray-900">NocoDB Cloud</div> |
||||
</div> |
||||
</a> |
||||
<div class="px-1 text-gray-500 prose-sm" style="line-height: 1.3125rem">Try NocoDB Cloud</div> |
||||
</a> |
||||
<a-tooltip overlay-class-name="nc-join-cloud-tooltip"> |
||||
<template #title> |
||||
<div class="w-72 bg-transparent overflow-hidden rounded-3xl shadow border border-zinc-100"> |
||||
<div class="p-6 bg-white flex-col justify-start items-center gap-4 inline-flex pb-7 w-full"> |
||||
<div class="self-stretch justify-start items-center gap-3 inline-flex"> |
||||
<div class="text-slate-800 text-lg font-semibold leading-9">NocoDB Cloud</div> |
||||
<div class="px-2 py-1 bg-brand-50 rounded-lg justify-center items-center gap-2 flex"> |
||||
<div class="text-brand-500 text-sm font-medium leading-tight">Usage based</div> |
||||
</div> |
||||
</div> |
||||
<div class="self-stretch justify-start items-center gap-2 inline-flex"> |
||||
<div class="text-gray-500 text-base font-bold line-through leading-normal"> |
||||
$ 99 |
||||
<span class="font-thin text-gray-500"> Onwards </span> |
||||
</div> |
||||
<div class="text-neutral-900 text-4xl font-bold leading-10">Free</div> |
||||
</div> |
||||
<div class="self-stretch text-gray-500 text-base leading-normal">/ month / workspace</div> |
||||
|
||||
<a href="https://app.nocodb.com/#/signin" target="_blank" class="!no-underline"> |
||||
<NcButton class="text-gray-700 text-base font-semibold leading-tight py-4 w-full">Start for Free</NcButton> |
||||
</a> |
||||
<div class="self-stretch text-center text-gray-500 text-xs font-medium leading-none mb-4"> |
||||
No credit card required |
||||
</div> |
||||
<div class="flex flex-col items-start w-full"> |
||||
<div class="self-stretch text-gray-500 text-base font-semibold leading-tight mb-2">Includes</div> |
||||
<div class="self-stretch justify-between items-center inline-flex"> |
||||
<div class="justify-end items-center gap-3 flex"> |
||||
<GeneralIcon icon="check" class="text-brand-500" /> |
||||
<div class="text-brand-500 text-lg font-bold leading-normal">20 Users</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="self-stretch justify-between items-center inline-flex"> |
||||
<div class="justify-start items-center gap-3 flex"> |
||||
<GeneralIcon icon="check" class="text-brand-500" /> |
||||
|
||||
<div class="text-slate-800 text-sm font-semibold leading-tight">300k rows / workspace</div> |
||||
</div> |
||||
</div> |
||||
<div class="self-stretch justify-between items-center inline-flex"> |
||||
<div class="justify-start items-center gap-3 flex"> |
||||
<GeneralIcon icon="check" class="text-brand-500" /> |
||||
|
||||
<div class="text-slate-800 text-sm font-semibold leading-tight">25 GB+ storage</div> |
||||
</div> |
||||
</div> |
||||
<div class="self-stretch justify-between items-center inline-flex"> |
||||
<div class="justify-start items-center gap-3 flex"> |
||||
<GeneralIcon icon="check" class="text-brand-500" /> |
||||
|
||||
<div class="text-slate-800 text-sm font-semibold leading-tight">APIs : 10+ requests / second</div> |
||||
</div> |
||||
</div> |
||||
<div class="self-stretch justify-start items-center gap-3 inline-flex"> |
||||
<GeneralIcon icon="check" class="text-brand-500" /> |
||||
|
||||
<div class="text-slate-800 text-sm font-semibold leading-tight">Support for External Database</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<NcButton type="text" size="small" class="!rounded-l-none !rounded-r-lg"> |
||||
<GeneralIcon icon="help" class="!text-lg -mt-0.5 text-gray-700" /> |
||||
</NcButton> |
||||
</a-tooltip> |
||||
</div> |
||||
</template> |
||||
|
||||
<style lang="scss"> |
||||
.nc-join-cloud-tooltip { |
||||
.ant-tooltip-inner { |
||||
@apply !bg-transparent !p-0 !text-gray-700 rounded-3xl; |
||||
} |
||||
.ant-tooltip-arrow-content { |
||||
@apply !bg-white; |
||||
} |
||||
} |
||||
</style> |
||||
|
@ -1,47 +1,36 @@
|
||||
<!-- File not in use for now --> |
||||
|
||||
<script setup lang="ts"> |
||||
import { precisions, useVModel } from '#imports' |
||||
import { useVModel } from '#imports' |
||||
|
||||
const props = defineProps<{ |
||||
value: any |
||||
isEdit: boolean |
||||
}>() |
||||
|
||||
const emit = defineEmits(['update:value']) |
||||
|
||||
const vModel = useVModel(props, 'value', emit) |
||||
|
||||
if (!vModel.value.meta) vModel.value.meta = {} |
||||
if (!vModel.value.meta?.negative) vModel.value.meta.negative = false |
||||
if (!vModel.value.meta?.default) vModel.value.meta.default = null |
||||
if (!vModel.value.meta?.precision) vModel.value.meta.precision = precisions[0].id |
||||
const validators = {} |
||||
|
||||
const { setAdditionalValidations } = useColumnCreateStoreOrThrow() |
||||
|
||||
setAdditionalValidations({ |
||||
...validators, |
||||
}) |
||||
|
||||
// set default value |
||||
vModel.value.meta = { |
||||
is_progress: false, |
||||
...vModel.value.meta, |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="flex flex-col mt-2 gap-2"> |
||||
<div class="flex flex-row space-x-2"> |
||||
<a-form-item class="flex w-1/2" :label="$t('placeholder.precision')"> |
||||
<a-select v-model:value="vModel.meta.precision" dropdown-class-name="nc-dropdown-precision"> |
||||
<a-select-option v-for="(precision, i) of precisions" :key="i" :value="precision.id"> |
||||
<div class="flex flex-row items-center"> |
||||
<div class="text-xs"> |
||||
{{ precision.title }} |
||||
</div> |
||||
</div> |
||||
</a-select-option> |
||||
</a-select> |
||||
</a-form-item> |
||||
<a-form-item :label="$t('labels.defaultNumberPercent')"> |
||||
<a-input v-model:value="vModel.meta.default" :name="$t('labels.default')" type="number" /> |
||||
</a-form-item> |
||||
</div> |
||||
<div class="flex flex-row mt-2"> |
||||
<a-form-item> |
||||
<div class="flex flex-row space-x-2 items-center"> |
||||
<a-switch v-model:checked="vModel.meta.negative" :name="$t('labels.negative')" /> |
||||
<div class="text-xs">{{ $t('placeholder.allowNegativeNumbers') }}</div> |
||||
</div> |
||||
</a-form-item> |
||||
<div class="flex flex-col"> |
||||
<div> |
||||
<a-checkbox v-if="vModel.meta" v-model:checked="vModel.meta.is_progress" class="ml-1 mb-1"> |
||||
<span class="text-[10px] text-gray-600">Display as progress</span> |
||||
</a-checkbox> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
@ -0,0 +1,47 @@
|
||||
<!-- File not in use for now --> |
||||
|
||||
<script setup lang="ts"> |
||||
import { precisions, useVModel } from '#imports' |
||||
|
||||
const props = defineProps<{ |
||||
value: any |
||||
}>() |
||||
|
||||
const emit = defineEmits(['update:value']) |
||||
|
||||
const vModel = useVModel(props, 'value', emit) |
||||
|
||||
if (!vModel.value.meta) vModel.value.meta = {} |
||||
if (!vModel.value.meta?.negative) vModel.value.meta.negative = false |
||||
if (!vModel.value.meta?.default) vModel.value.meta.default = null |
||||
if (!vModel.value.meta?.precision) vModel.value.meta.precision = precisions[0].id |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="flex flex-col mt-2 gap-2"> |
||||
<div class="flex flex-row space-x-2"> |
||||
<a-form-item class="flex w-1/2" :label="$t('placeholder.precision')"> |
||||
<a-select v-model:value="vModel.meta.precision" dropdown-class-name="nc-dropdown-precision"> |
||||
<a-select-option v-for="(precision, i) of precisions" :key="i" :value="precision.id"> |
||||
<div class="flex flex-row items-center"> |
||||
<div class="text-xs"> |
||||
{{ precision.title }} |
||||
</div> |
||||
</div> |
||||
</a-select-option> |
||||
</a-select> |
||||
</a-form-item> |
||||
<a-form-item :label="$t('labels.defaultNumberPercent')"> |
||||
<a-input v-model:value="vModel.meta.default" :name="$t('labels.default')" type="number" /> |
||||
</a-form-item> |
||||
</div> |
||||
<div class="flex flex-row mt-2"> |
||||
<a-form-item> |
||||
<div class="flex flex-row space-x-2 items-center"> |
||||
<a-switch v-model:checked="vModel.meta.negative" :name="$t('labels.negative')" /> |
||||
<div class="text-xs">{{ $t('placeholder.allowNegativeNumbers') }}</div> |
||||
</div> |
||||
</a-form-item> |
||||
</div> |
||||
</div> |
||||
</template> |
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue