Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa8113a1f0 | ||
|
|
80f87300f0 | ||
|
|
e26f398f34 | ||
|
|
e77de316e5 |
@@ -28,8 +28,6 @@ npx jest path/to/test.test.ts --config=packages/PROJECT/jest.config.mjs
|
||||
npx nx test twenty-front # Frontend unit tests
|
||||
npx nx test twenty-server # Backend unit tests
|
||||
npx nx run twenty-server:test:integration:with-db-reset # Integration tests with DB reset
|
||||
# To run an indivual test or a pattern of tests, use the following command:
|
||||
cd packages/{workspace} && npx jest "pattern or filename"
|
||||
|
||||
# Storybook
|
||||
npx nx storybook:build twenty-front
|
||||
|
||||
@@ -20,8 +20,11 @@ ENV KEYSTATIC_GITHUB_CLIENT_SECRET="<fake build value>"
|
||||
ENV KEYSTATIC_SECRET="<fake build value>"
|
||||
ENV NEXT_PUBLIC_KEYSTATIC_GITHUB_APP_SLUG="<fake build value>"
|
||||
|
||||
COPY ./packages/twenty-shared /app/packages/twenty-shared
|
||||
COPY ./packages/twenty-ui /app/packages/twenty-ui
|
||||
COPY ./packages/twenty-website /app/packages/twenty-website
|
||||
RUN npx nx build twenty-shared
|
||||
RUN npx nx build twenty-ui
|
||||
RUN npx nx build twenty-website
|
||||
|
||||
FROM node:24-alpine AS twenty-website
|
||||
|
||||
@@ -27,31 +27,31 @@ Le app ti consentono di creare e gestire le personalizzazioni di Twenty **come c
|
||||
Crea una nuova app utilizzando lo scaffolder ufficiale, quindi autenticati e inizia a sviluppare:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Crea lo scaffold di una nuova app (include tutti gli esempi per impostazione predefinita)
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# Se non usi yarn@4
|
||||
# If you don't use yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Autenticati usando la tua API key (ti verrà richiesto)
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
yarn twenty auth:login
|
||||
|
||||
# Avvia la modalità di sviluppo: sincronizza automaticamente le modifiche locali con il tuo workspace
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Lo strumento di scaffolding supporta tre modalità per controllare quali file di esempio vengono inclusi:
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Predefinita (esaustiva): tutti gli esempi (oggetto, campo, funzione logica, componente front-end, vista, voce del menu di navigazione)
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimale: solo i file principali (application-config.ts e default-role.ts)
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interattiva: seleziona quali esempi includere
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
@@ -86,9 +86,9 @@ Quando esegui `npx create-twenty-app@latest my-twenty-app`, lo scaffolder:
|
||||
* Copia un'applicazione base minimale in `my-twenty-app/`
|
||||
* Aggiunge una dipendenza locale `twenty-sdk` e la configurazione di Yarn 4
|
||||
* Crea file di configurazione e script collegati alla CLI `twenty`
|
||||
* Genera i file principali (configurazione dell'applicazione, ruolo predefinito per le funzioni logiche, funzione di post-installazione) più i file di esempio in base alla modalità di scaffolding
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
|
||||
Un'app appena creata con la modalità predefinita `--exhaustive` si presenta così:
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -102,27 +102,27 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Cartella delle risorse pubbliche (immagini, font, ecc.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Obbligatorio - configurazione principale dell'applicazione
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Ruolo predefinito per le funzioni logiche
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Definizione di oggetto personalizzato di esempio
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Definizione di campo autonomo di esempio
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Funzione logica di esempio
|
||||
│ └── post-install.ts # Funzione logica post-installazione
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Componente front-end di esempio
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Definizione di vista salvata di esempio
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Link di navigazione della barra laterale di esempio
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
```
|
||||
|
||||
Con `--minimal`, vengono creati solo i file principali (`application-config.ts`, `roles/default-role.ts` e `logic-functions/post-install.ts`). Con `--interactive`, scegli quali file di esempio includere.
|
||||
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
|
||||
|
||||
A livello generale:
|
||||
|
||||
@@ -139,15 +139,15 @@ A livello generale:
|
||||
|
||||
L'SDK rileva le entità analizzando i tuoi file TypeScript alla ricerca di chiamate **`export default define<Entity>({...})`**. Ogni tipo di entità ha una corrispondente funzione helper esportata da `twenty-sdk`:
|
||||
|
||||
| Funzione helper | Tipo di entità |
|
||||
| ---------------------------- | ---------------------------------------------- |
|
||||
| `defineObject()` | Definizioni di oggetti personalizzati |
|
||||
| `defineLogicFunction()` | Definizioni di funzioni logiche |
|
||||
| `defineFrontComponent()` | Definizioni dei componenti front-end |
|
||||
| `defineRole()` | Definizioni di ruoli |
|
||||
| `defineField()` | Estensioni di campo per oggetti esistenti |
|
||||
| `defineView()` | Definizioni di viste salvate |
|
||||
| `defineNavigationMenuItem()` | Definizioni delle voci del menu di navigazione |
|
||||
| Funzione helper | Tipo di entità |
|
||||
| ---------------------------- | ----------------------------------------- |
|
||||
| `defineObject()` | Definizioni di oggetti personalizzati |
|
||||
| `defineLogicFunction()` | Definizioni di funzioni logiche |
|
||||
| `defineFrontComponent()` | Definizioni dei componenti front-end |
|
||||
| `defineRole()` | Definizioni di ruoli |
|
||||
| `defineField()` | Estensioni di campo per oggetti esistenti |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
|
||||
<Note>
|
||||
**La denominazione dei file è flessibile.** Il rilevamento delle entità è basato sull'AST — l'SDK esegue la scansione dei file sorgente alla ricerca del pattern `export default define<Entity>({...})`. Puoi organizzare file e cartelle come preferisci. Raggruppare per tipo di entità (ad es., `logic-functions/`, `roles/`) è solo una convenzione per l'organizzazione del codice, non un requisito.
|
||||
@@ -220,8 +220,8 @@ L'SDK fornisce funzioni helper per definire le entità della tua app. Come descr
|
||||
| `defineFrontComponent()` | Definisci componenti front-end per un'interfaccia utente personalizzata |
|
||||
| `defineRole()` | Configura i permessi dei ruoli e l'accesso agli oggetti |
|
||||
| `defineField()` | Estendi gli oggetti esistenti con campi aggiuntivi |
|
||||
| `defineView()` | Definisce viste salvate per gli oggetti |
|
||||
| `defineNavigationMenuItem()` | Definisce i link di navigazione della barra laterale |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
|
||||
Queste funzioni convalidano la configurazione in fase di build e offrono il completamento automatico nell'IDE e la sicurezza dei tipi.
|
||||
|
||||
@@ -497,7 +497,7 @@ Note:
|
||||
|
||||
Una funzione post-installazione è una funzione logica che viene eseguita automaticamente dopo che la tua app è stata installata in uno spazio di lavoro. Questo è utile per attività di configurazione una tantum come il popolamento di dati predefiniti, la creazione di record iniziali o la configurazione delle impostazioni dello spazio di lavoro.
|
||||
|
||||
Quando esegui lo scaffolding di una nuova app con `create-twenty-app`, viene generata automaticamente una funzione di post-installazione in `src/logic-functions/post-install.ts`:
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
La funzione viene collegata alla tua app facendo riferimento al suo identificatore universale in `application-config.ts`:
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
Puoi anche eseguire manualmente la funzione di post-installazione in qualsiasi momento utilizzando la CLI:
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Punti chiave:
|
||||
|
||||
* Le funzioni di post-installazione sono funzioni logiche standard — usano `defineLogicFunction()` come qualsiasi altra funzione.
|
||||
* Il campo `postInstallLogicFunctionUniversalIdentifier` in `defineApplication()` è facoltativo. Se omesso, nessuna funzione viene eseguita dopo l'installazione.
|
||||
* Il timeout predefinito è impostato a 300 secondi (5 minuti) per consentire attività di configurazione più lunghe, come il popolamento dei dati.
|
||||
* Le funzioni di post-installazione non necessitano di trigger — vengono invocate dalla piattaforma durante l'installazione o manualmente tramite `function:execute --postInstall`.
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
|
||||
### Payload del trigger di route
|
||||
|
||||
|
||||
@@ -27,31 +27,31 @@ Os aplicativos permitem criar e gerenciar personalizações do Twenty **como có
|
||||
Crie um novo aplicativo usando o gerador oficial, depois autentique-se e comece a desenvolver:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Criar a estrutura de um novo app (inclui todos os exemplos por padrão)
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# Se você não usa yarn@4
|
||||
# If you don't use yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Autentique-se usando sua chave de API (você será solicitado)
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
yarn twenty auth:login
|
||||
|
||||
# Iniciar modo de desenvolvimento: sincroniza automaticamente as alterações locais com seu workspace
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
O gerador de estrutura oferece suporte a três modos para controlar quais arquivos de exemplo são incluídos:
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Padrão (exhaustivo): todos os exemplos (objeto, campo, função de lógica, componente de front-end, visualização, item do menu de navegação)
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Mínimo: apenas arquivos principais (application-config.ts e default-role.ts)
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interativo: selecione quais exemplos incluir
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
@@ -86,9 +86,9 @@ Ao executar `npx create-twenty-app@latest my-twenty-app`, o gerador:
|
||||
* Copia um aplicativo base mínimo para `my-twenty-app/`
|
||||
* Adiciona uma dependência local `twenty-sdk` e a configuração do Yarn 4
|
||||
* Cria arquivos de configuração e scripts conectados à CLI `twenty`
|
||||
* Gera arquivos principais (configuração da aplicação, papel padrão para funções de lógica, função de pós-instalação) além de arquivos de exemplo com base no modo de geração de estrutura
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
|
||||
Um app recém-criado com o modo padrão `--exhaustive` fica assim:
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -102,27 +102,27 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Pasta de recursos públicos (imagens, fontes, etc.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Obrigatório - configuração principal da aplicação
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Papel padrão para funções de lógica
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Exemplo de definição de objeto personalizado
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Exemplo de definição de campo independente
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Exemplo de função de lógica
|
||||
│ └── post-install.ts # Função de lógica de pós-instalação
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Exemplo de componente de front-end
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Exemplo de definição de visualização salva
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Exemplo de link de navegação da barra lateral
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
```
|
||||
|
||||
Com `--minimal`, apenas os arquivos principais são criados (`application-config.ts`, `roles/default-role.ts` e `logic-functions/post-install.ts`). Com `--interactive`, você escolhe quais arquivos de exemplo incluir.
|
||||
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
|
||||
|
||||
Em alto nível:
|
||||
|
||||
@@ -146,8 +146,8 @@ O SDK detecta entidades analisando seus arquivos TypeScript em busca de chamadas
|
||||
| `defineFrontComponent()` | Definições de componentes de front-end |
|
||||
| `defineRole()` | Definições de papéis |
|
||||
| `defineField()` | Extensões de campos para objetos existentes |
|
||||
| `defineView()` | Definições de visualizações salvas |
|
||||
| `defineNavigationMenuItem()` | Definições de itens do menu de navegação |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
|
||||
<Note>
|
||||
**A nomeação de arquivos é flexível.** A detecção de entidades é baseada em AST — o SDK varre seus arquivos fonte em busca do padrão `export default define<Entity>({...})`. Você pode organizar seus arquivos e pastas como quiser. Agrupar por tipo de entidade (por exemplo, `logic-functions/`, `roles/`) é apenas uma convenção para organização do código, não um requisito.
|
||||
@@ -220,8 +220,8 @@ O SDK fornece funções utilitárias para definir as entidades do seu app. Confo
|
||||
| `defineFrontComponent()` | Definir componentes de front-end para UI personalizada |
|
||||
| `defineRole()` | Configura permissões de papéis e acesso a objetos |
|
||||
| `defineField()` | Estender objetos existentes com campos adicionais |
|
||||
| `defineView()` | Define visualizações salvas para objetos |
|
||||
| `defineNavigationMenuItem()` | Define links de navegação da barra lateral |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
|
||||
Essas funções validam sua configuração em tempo de compilação e oferecem autocompletar na IDE e segurança de tipos.
|
||||
|
||||
@@ -497,7 +497,7 @@ Notas:
|
||||
|
||||
Uma função de pós-instalação é uma função de lógica que é executada automaticamente após a sua aplicação ser instalada em um espaço de trabalho. Isso é útil para tarefas de configuração únicas, como preencher dados padrão, criar registros iniciais ou configurar as configurações do espaço de trabalho.
|
||||
|
||||
Ao criar a estrutura de um novo app com `create-twenty-app`, uma função de pós-instalação é gerada para você em `src/logic-functions/post-install.ts`:
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
A função é conectada ao seu app referenciando seu identificador universal em `application-config.ts`:
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
Você também pode executar manualmente a função de pós-instalação a qualquer momento usando a CLI:
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* As funções de pós-instalação são funções de lógica padrão — elas usam `defineLogicFunction()` como qualquer outra função.
|
||||
* O campo `postInstallLogicFunctionUniversalIdentifier` em `defineApplication()` é opcional. Se omitido, nenhuma função é executada após a instalação.
|
||||
* O tempo limite padrão é definido como 300 segundos (5 minutos) para permitir tarefas de configuração mais longas, como o pré-carregamento de dados.
|
||||
* As funções de pós-instalação não precisam de gatilhos — elas são invocadas pela plataforma durante a instalação ou manualmente via `function:execute --postInstall`.
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
|
||||
### Payload de gatilho de rota
|
||||
|
||||
|
||||
@@ -27,31 +27,31 @@ description: Создавайте и управляйте настройками
|
||||
Создайте новое приложение с помощью официального генератора, затем выполните аутентификацию и начните разработку:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Создать каркас нового приложения (по умолчанию включает все примеры)
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# Если вы не используете yarn@4
|
||||
# If you don't use yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Аутентифицироваться с помощью вашего API-ключа (вам будет предложено)
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
yarn twenty auth:login
|
||||
|
||||
# Запустить режим разработки: автоматически синхронизирует локальные изменения с вашим рабочим пространством
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
Генератор каркаса поддерживает три режима для управления тем, какие примерные файлы включаются:
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# По умолчанию (полный набор): все примеры (объект, поле, логическая функция, фронтенд-компонент, представление, пункт меню навигации)
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Минимальный: только основные файлы (application-config.ts и default-role.ts)
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Интерактивный: выбрать, какие примеры включить
|
||||
# Interactive: select which examples to include
|
||||
npx create-twenty-app@latest my-app --interactive
|
||||
```
|
||||
|
||||
@@ -86,9 +86,9 @@ yarn twenty help
|
||||
* Копирует минимальное базовое приложение в `my-twenty-app/`
|
||||
* Добавляет локальную зависимость `twenty-sdk` и конфигурацию Yarn 4
|
||||
* Создаёт файлы конфигурации и скрипты, подключённые к CLI `twenty`
|
||||
* Генерирует основные файлы (конфигурацию приложения, роль функций по умолчанию, постустановочную функцию), а также примерные файлы в зависимости от выбранного режима создания каркаса
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
|
||||
Сгенерированное с помощью каркаса приложение с режимом по умолчанию `--exhaustive` выглядит так:
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -102,27 +102,27 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Папка публичных ресурсов (изображения, шрифты и т. д.)
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
src/
|
||||
├── application-config.ts # Обязательный — основная конфигурация приложения
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── roles/
|
||||
│ └── default-role.ts # Роль по умолчанию для логических функций
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
├── objects/
|
||||
│ └── example-object.ts # Пример определения пользовательского объекта
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
├── fields/
|
||||
│ └── example-field.ts # Пример определения отдельного поля
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Пример логической функции
|
||||
│ └── post-install.ts # Постустановочная логическая функция
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Пример фронтенд-компонента
|
||||
│ └── hello-world.tsx # Example front component
|
||||
├── views/
|
||||
│ └── example-view.ts # Пример определения сохранённого представления
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Пример ссылки боковой панели навигации
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
```
|
||||
|
||||
С `--minimal` создаются только основные файлы (`application-config.ts`, `roles/default-role.ts` и `logic-functions/post-install.ts`). С `--interactive` вы выбираете, какие примерные файлы включить.
|
||||
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
|
||||
|
||||
В общих чертах:
|
||||
|
||||
@@ -146,8 +146,8 @@ SDK обнаруживает сущности, разбирая ваши фай
|
||||
| `defineFrontComponent()` | Определения компонентов фронтенда |
|
||||
| `defineRole()` | Определения ролей |
|
||||
| `defineField()` | Расширения полей для существующих объектов |
|
||||
| `defineView()` | Определения сохранённых представлений |
|
||||
| `defineNavigationMenuItem()` | Определения пунктов меню навигации |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
|
||||
<Note>
|
||||
**Имена файлов заданы гибко.** Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона `export default define<Entity>({...})`. Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, `logic-functions/`, `roles/`) — это лишь соглашение для организации кода, а не требование.
|
||||
@@ -220,8 +220,8 @@ SDK предоставляет вспомогательные функции д
|
||||
| `defineFrontComponent()` | Определение фронт-компонентов для настраиваемого интерфейса |
|
||||
| `defineRole()` | Настраивает права роли и доступ к объектам |
|
||||
| `defineField()` | Расширение существующих объектов дополнительными полями |
|
||||
| `defineView()` | Определяйте сохранённые представления для объектов |
|
||||
| `defineNavigationMenuItem()` | Определяйте ссылки боковой панели навигации |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
|
||||
Эти функции проверяют вашу конфигурацию на этапе сборки и обеспечивают автодополнение в IDE и безопасность типов.
|
||||
|
||||
@@ -497,7 +497,7 @@ export default defineLogicFunction({
|
||||
|
||||
Послеустановочная функция — это функция логики, которая автоматически выполняется после установки вашего приложения в рабочем пространстве. Это полезно для одноразовых задач настройки, таких как инициализация данных по умолчанию, создание начальных записей или настройка параметров рабочего пространства.
|
||||
|
||||
Когда вы создаёте каркас нового приложения с помощью `create-twenty-app`, для вас генерируется постустановочная функция по пути `src/logic-functions/post-install.ts`:
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
Функция подключается к вашему приложению посредством ссылки на её универсальный идентификатор в `application-config.ts`:
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
Вы также можете вручную выполнить постустановочную функцию в любое время с помощью CLI:
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Основные моменты:
|
||||
|
||||
* Постустановочные функции — это стандартные логические функции: они используют `defineLogicFunction()` как и любые другие функции.
|
||||
* Поле `postInstallLogicFunctionUniversalIdentifier` в `defineApplication()` является необязательным. Если его опустить, после установки никакая функция выполняться не будет.
|
||||
* Тайм-аут по умолчанию установлен на 300 секунд (5 минут), чтобы позволить выполнять более длительные задачи настройки, такие как инициализация данных.
|
||||
* Постустановочным функциям не нужны триггеры — платформа вызывает их во время установки или вручную через `function:execute --postInstall`.
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
|
||||
### Полезная нагрузка триггера маршрута
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
İskelet oluşturucu, hangi örnek dosyaların dahil edileceğini kontrol etmek için üç modu destekler:
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
@@ -86,9 +86,9 @@ Ayrıca bkz.: [create-twenty-app](https://www.npmjs.com/package/create-twenty-ap
|
||||
* Minimal bir temel uygulamayı `my-twenty-app/` içine kopyalar
|
||||
* Yerel bir `twenty-sdk` bağımlılığı ve Yarn 4 yapılandırması ekler
|
||||
* `twenty` CLI ile bağlantılı yapılandırma dosyaları ve betikler oluşturur
|
||||
* İskelet oluşturma moduna bağlı olarak çekirdek dosyaları (uygulama yapılandırması, varsayılan işlev rolü, kurulum sonrası işlev) ile örnek dosyaları üretir
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
|
||||
Varsayılan `--exhaustive` moduyla yeni oluşturulmuş bir uygulama şu şekilde görünür:
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -122,7 +122,7 @@ my-twenty-app/
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
```
|
||||
|
||||
`--minimal` ile yalnızca çekirdek dosyalar oluşturulur (`application-config.ts`, `roles/default-role.ts` ve `logic-functions/post-install.ts`). `--interactive` ile hangi örnek dosyaların dahil edileceğini siz seçersiniz.
|
||||
With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, and `logic-functions/post-install.ts`). With `--interactive`, you choose which example files to include.
|
||||
|
||||
Genel hatlarıyla:
|
||||
|
||||
@@ -146,8 +146,8 @@ SDK, TypeScript dosyalarınızı **`export default define<Entity>({...})`** ça
|
||||
| `defineFrontComponent()` | Front component definitions |
|
||||
| `defineRole()` | Rol tanımları |
|
||||
| `defineField()` | Mevcut nesneler için alan genişletmeleri |
|
||||
| `defineView()` | Kaydedilmiş görünüm tanımları |
|
||||
| `defineNavigationMenuItem()` | Gezinme menüsü öğesi tanımları |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
|
||||
<Note>
|
||||
**Dosya adlandırma esnektir.** Varlık algılama AST tabanlıdır — SDK, kaynak dosyalarınızı `export default define<Entity>({...})` desenini bulmak için tarar. Dosyalarınızı ve klasörlerinizi dilediğiniz gibi düzenleyebilirsiniz. Varlık türüne göre gruplama (örn. `logic-functions/`, `roles/`) bir gereklilik değil, yalnızca kod organizasyonu için bir gelenektir.
|
||||
@@ -220,8 +220,8 @@ SDK, uygulama varlıklarınızı tanımlamak için yardımcı fonksiyonlar sağl
|
||||
| `defineFrontComponent()` | Özel kullanıcı arayüzü için ön uç bileşenlerini tanımlayın |
|
||||
| `defineRole()` | Rol izinlerini ve nesne erişimini yapılandırın |
|
||||
| `defineField()` | Mevcut nesneleri ek alanlarla genişletin |
|
||||
| `defineView()` | Nesneler için kaydedilmiş görünümler tanımlayın |
|
||||
| `defineNavigationMenuItem()` | Kenar çubuğu gezinme bağlantılarını tanımlayın |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
|
||||
Bu fonksiyonlar, derleme zamanında yapılandırmanızı doğrular ve IDE otomatik tamamlama ile tür güvenliği sağlar.
|
||||
|
||||
@@ -497,7 +497,7 @@ Notlar:
|
||||
|
||||
Kurulum sonrası işlev, uygulamanız bir çalışma alanına yüklendikten sonra otomatik olarak çalışan bir mantık işlevidir. Bu, varsayılan verileri tohumlama, ilk kayıtları oluşturma veya çalışma alanı ayarlarını yapılandırma gibi tek seferlik kurulum görevleri için yararlıdır.
|
||||
|
||||
`create-twenty-app` ile yeni bir uygulama iskeleti oluşturduğunuzda, `src/logic-functions/post-install.ts` konumunda sizin için bir kurulum sonrası işlevi oluşturulur:
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
İşlev, `application-config.ts` içinde evrensel tanımlayıcısına başvurularak uygulamanıza bağlanır:
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
Ayrıca kurulum sonrası işlevi istediğiniz zaman CLI kullanarak manuel olarak çalıştırabilirsiniz:
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* Kurulum sonrası işlevleri standart mantık işlevleridir — diğer herhangi bir işlev gibi `defineLogicFunction()` kullanırlar.
|
||||
* `defineApplication()` içindeki `postInstallLogicFunctionUniversalIdentifier` alanı isteğe bağlıdır. Atlanırsa, kurulumdan sonra hiçbir işlev çalıştırılmaz.
|
||||
* Varsayılan zaman aşımı, veri tohumlama gibi daha uzun kurulum görevlerine izin vermek için 300 saniye (5 dakika) olarak ayarlanmıştır.
|
||||
* Kurulum sonrası işlevlerin tetikleyicilere ihtiyacı yoktur — kurulum sırasında platform tarafından veya `function:execute --postInstall` aracılığıyla manuel olarak çağrılırlar.
|
||||
* Post-install functions are standard logic functions — they use `defineLogicFunction()` like any other function.
|
||||
* The `postInstallLogicFunctionUniversalIdentifier` field in `defineApplication()` is optional. If omitted, no function runs after installation.
|
||||
* The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding.
|
||||
* Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`.
|
||||
|
||||
### Rota tetikleyicisi yükü
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ export default defineLogicFunction({
|
||||
|
||||
安装后函数是在你的应用安装到工作区后自动运行的逻辑函数。 这对于一次性设置任务很有用,例如填充默认数据、创建初始记录或配置工作区设置。
|
||||
|
||||
当你使用 `create-twenty-app` 脚手架创建一个新应用时,会在 `src/logic-functions/post-install.ts` 为你生成一个安装后函数:
|
||||
When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
通过在 `application-config.ts` 中引用其通用标识符,可将该函数接入你的应用:
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
@@ -9,8 +9,6 @@ import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { RootDecorator } from '../src/testing/decorators/RootDecorator';
|
||||
// eslint-disable-next-line no-restricted-imports
|
||||
import { resetJotaiStore } from '../src/modules/ui/utilities/state/jotai/jotaiStore';
|
||||
|
||||
import 'react-loading-skeleton/dist/skeleton.css';
|
||||
import 'twenty-ui/style.css';
|
||||
@@ -86,10 +84,6 @@ const preview: Preview = {
|
||||
RootDecorator,
|
||||
],
|
||||
|
||||
beforeEach: () => {
|
||||
resetJotaiStore();
|
||||
},
|
||||
|
||||
loaders: [mswLoader],
|
||||
|
||||
parameters: {
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Aanhegsels"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Bruin"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Kies die velde wat jou rekords sal identifiseer"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Kies die formaat wat gebruik word om datumwaarde te vertoon"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Voer filter in"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Voer in <0>Unicode</0> formaat"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Werkruimte Domein"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "المرفقات"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "بني"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "اختر الحقول التي ستحدد سجلاتك"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "اختر التنسيق المستخدم لعرض قيمة التاريخ"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "أدخل عامل تصفية"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "إدخل بصيغة <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14209,7 +14210,6 @@ msgid "Workspace Domain"
|
||||
msgstr "نطاق مساحة العمل"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Adjunts"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Marró"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Trieu els camps que identificaran els vostres registres"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Tria el format utilitzat per mostrar el valor de la data"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introdueix el filtre"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Introdueix en format <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Domini de l'espai de treball"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Přílohy"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Hnědá"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Vyberte pole, která budou identifikovat vaše záznamy"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Vyberte formát použitý k zobrazení datumové hodnoty"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Zadejte filtr"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Zadejte v <0>Unicode</0> formátu"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Doména pracovního prostoru"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Vedhæftninger"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Brun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Vælg de felter, der vil identificere dine poster"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Vælg det format, der bruges til at vise datoværdien"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Indtast filter"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Indtast i <0>Unicode</0> format"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14213,7 +14214,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbejdsområdedomæne"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Anhänge"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Braun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Wählen Sie die Felder aus, die Ihre Datensätze identifizieren werden"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Wählen Sie das Format zur Anzeige des Datumswertes"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Filter eingeben"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Im <0>Unicode</0>-Format eingeben"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbeitsbereichsdomäne"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Συνημμένα"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Καφέ"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Επιλέξτε τα πεδία που θα ταυτοποιήσουν τις εγγραφές σας"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Επιλέξτε τη μορφή που χρησιμοποιείται για την εμφάνιση της τιμής ημερομηνίας"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Εισάγετε φίλτρο"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Εισάγετε σε μορφή <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14215,7 +14216,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Τομέας Χώρου εργασίας"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1969,6 +1969,7 @@ msgstr "Attachments"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr "Audit Logs"
|
||||
@@ -2245,10 +2246,10 @@ msgstr "Brown"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr "Build many-to-many relations. <0>Learn more</0>"
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -2609,7 +2610,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Choose the fields that will identify your records"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Choose the format used to display date value"
|
||||
|
||||
@@ -5035,10 +5036,10 @@ msgstr "Enter files as JSON array"
|
||||
msgid "Enter filter"
|
||||
msgstr "Enter filter"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr "Enter in Unicode format"
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Enter in <0>Unicode</0> format"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14208,7 +14209,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Workspace Domain"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr "Workspace Events"
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Adjuntos"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Marrón"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Elige los campos que identificarán tus registros"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Elige el formato utilizado para mostrar el valor de la fecha"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduce un filtro"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Ingresar en formato <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14213,7 +14214,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Dominio del espacio de trabajo"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Liitteet"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Ruskea"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Valitse kentät, jotka identifioivat tietueesi"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Valitse päivämäärän näyttämiseen käytetty muoto"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Syötä suodatin"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Kirjoita <0>Unicode</0>-muodossa"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Työtilan verkkotunnus"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Pièces jointes"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Marron"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Choisissez les champs qui identifieront vos enregistrements"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Choisir le format utilisé pour afficher la valeur de la date"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Saisissez un filtre"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Entrer au format <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14213,7 +14214,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Domaine de l'espace de travail"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1974,6 +1974,7 @@ msgstr "קבצים מצורפים"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "חום"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "בחרו את השדות שיזהו את הרשומות שלכם"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "בחר את הפורמט להצגת תאריך"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "הזן מסנן"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "הכנס בפורמט <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "תחום סביבת עבודה"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Csatolmányok"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Barna"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Válassza ki azon mezőket, amelyek azonosítják a bejegyzéseit"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Válassza ki a dátumérték megjelenítésére használt formátumot"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Adja meg a szűrőt"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Adja meg <0>Unicode</0> formátumban"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Munkaterületi Domain"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Allegati"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Marrone"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Scegli i campi che identificheranno i tuoi record"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Scegli il formato utilizzato per visualizzare il valore della data"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Inserisci il filtro"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Inserisci nel formato <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14213,7 +14214,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Dominio del workspace"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "添付ファイル"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "茶色"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "レコードを識別するフィールドを選択してください"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "日付値を表示するために使用される形式を選択"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "フィルターを入力"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "<0>Unicode</0>形式で入力"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "ワークスペースドメイン"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "첨부 파일"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "갈색"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "레코드를 식별할 필드를 선택하세요"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "날짜 형식을 선택하세요"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "필터를 입력하세요"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "<0>유니코드</0> 형식으로 입력"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "워크스페이스 도메인"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Bijlagen"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Bruin"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Kies de velden die uw records zullen identificeren"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Kies het formaat dat wordt gebruikt om de datumnotatie weer te geven"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Voer een filter in"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Voer in <0>Unicode</0>-formaat in"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14213,7 +14214,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Werkruimte Domein"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Vedlegg"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Brun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Velg feltene som vil identifisere postene dine"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Velg formatet som brukes til å vise dato"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Skriv inn filter"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Skriv inn i <0>Unicode</0>-format"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbeidsområdets domene"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Załączniki"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Brązowy"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Wybierz pola, które będą identyfikować Twoje rekordy"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Wybierz format używany do wyświetlania daty"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Wprowadź filtr"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Wprowadź w formacie <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Domena miejsca pracy"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1969,6 +1969,7 @@ msgstr ""
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2245,9 +2246,9 @@ msgstr ""
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2609,7 +2610,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr ""
|
||||
|
||||
@@ -5035,9 +5036,9 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
@@ -14204,7 +14205,6 @@ msgid "Workspace Domain"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Anexos"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Marrom"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Escolha os campos que irão identificar seus registros"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Escolha o formato usado para exibir o valor da data"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Insira o filtro"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Digite no formato <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Domínio do Workspace"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Anexos"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Castanho"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Escolha os campos que identificarão seus registros"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Escolha o formato usado para exibir o valor da data"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduza o filtro"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Digite no formato <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Domínio do espaço de trabalho"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Atașamente"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Maro"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Alegeți câmpurile care vor identifica înregistrările dvs"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Alege formatul utilizat pentru a afișa valoarea datei"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduceți filtrul"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Introduceți în format <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Domeniu Spațiu de lucru"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
Binary file not shown.
@@ -1974,6 +1974,7 @@ msgstr "Прилози"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Браон"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Изаберите поља која ће идентификовати ваше записе"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Изаберите формат за приказ датума"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Унесите филтер"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Унеси у <0>Unicode</0> формату"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Домен радног простора"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Bilagor"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Brun"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Välj de fält som kommer att identifiera dina poster"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Välj formatet som används för att visa datumvärdet"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Ange filter"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Ange i <0>Unicode</0>-format"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14225,7 +14226,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Arbetsyta domän"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Ekler"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Kahverengi"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Kayıtlarınızı tanımlayacak alanları seçin"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Tarih değerini görüntülemek için kullanılan formatı seçin"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Filtre girin"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "<0>Unicode</0> formatında girin"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "İş Alanı Alan Adı"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Вкладення"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Коричневий"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Виберіть поля, які будуть ідентифікувати ваші записи"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Оберіть формат для відображення значення дати"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Введіть фільтр"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Введіть у форматі <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14213,7 +14214,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Домен робочої області"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "Tập tin đính kèm"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "Nâu"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Chọn các trường sẽ xác định bản ghi của bạn"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Chọn định dạng dùng để hiển thị giá trị ngày"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Nhập bộ lọc"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "Nhập theo định dạng <0>Unicode</0>"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "Tên miền không gian làm việc"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "附件"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "棕色"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "选择将标识您记录的字段"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "选择用于显示日期值的格式"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "输入筛选条件"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "以<0>Unicode</0>格式输入"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "工作区域"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
@@ -1974,6 +1974,7 @@ msgstr "附件"
|
||||
|
||||
#. js-lingui-id: EPEFrH
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/SettingsEventLogs.tsx
|
||||
msgid "Audit Logs"
|
||||
msgstr ""
|
||||
@@ -2250,9 +2251,9 @@ msgstr "棕色"
|
||||
msgid "Build a dashboard that shows: (1) total pipeline value by stage for the last 3 months, (2) count of deals won vs lost per month, (3) average deal size. Use our standard pipeline stages."
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: alSW5d
|
||||
#. js-lingui-id: 8SlslB
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations"
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2614,7 +2615,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "選擇將識別您記錄的欄位"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "選擇用于顯示日期值的格式"
|
||||
|
||||
@@ -5040,10 +5041,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "輸入篩選條件"
|
||||
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
msgstr "以<0>Unicode</0>格式輸入"
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14211,7 +14212,6 @@ msgid "Workspace Domain"
|
||||
msgstr "工作區域名"
|
||||
|
||||
#. js-lingui-id: J2q6WC
|
||||
#: src/pages/settings/security/SettingsSecurity.tsx
|
||||
#: src/pages/settings/security/event-logs/components/EventLogTableSelector.tsx
|
||||
msgid "Workspace Events"
|
||||
msgstr ""
|
||||
|
||||
+35
-41
@@ -1,5 +1,4 @@
|
||||
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
||||
import { Provider as JotaiProvider } from 'jotai';
|
||||
import { RecoilRoot } from 'recoil';
|
||||
import * as test from 'storybook/test';
|
||||
import { expect, userEvent, waitFor, within } from 'storybook/test';
|
||||
@@ -11,7 +10,6 @@ import { ActionMenuComponentInstanceContext } from '@/action-menu/states/context
|
||||
import { recordIndexActionMenuDropdownPositionComponentState } from '@/action-menu/states/recordIndexActionMenuDropdownPositionComponentState';
|
||||
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { RouterDecorator } from 'twenty-ui/testing';
|
||||
import { ContextStoreDecorator } from '~/testing/decorators/ContextStoreDecorator';
|
||||
|
||||
@@ -23,48 +21,44 @@ const meta: Meta<typeof RecordIndexActionMenuDropdown> = {
|
||||
title: 'Modules/ActionMenu/RecordIndexActionMenuDropdown',
|
||||
component: RecordIndexActionMenuDropdown,
|
||||
decorators: [
|
||||
(Story) => {
|
||||
jotaiStore.set(
|
||||
isDropdownOpenComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story-action-menu',
|
||||
}),
|
||||
true,
|
||||
);
|
||||
(Story) => (
|
||||
<RecoilRoot
|
||||
initializeState={({ set }) => {
|
||||
set(
|
||||
recordIndexActionMenuDropdownPositionComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story',
|
||||
}),
|
||||
{ x: 10, y: 10 },
|
||||
);
|
||||
|
||||
return (
|
||||
<JotaiProvider store={jotaiStore}>
|
||||
<RecoilRoot
|
||||
initializeState={({ set }) => {
|
||||
set(
|
||||
recordIndexActionMenuDropdownPositionComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story',
|
||||
}),
|
||||
{ x: 10, y: 10 },
|
||||
);
|
||||
set(
|
||||
isDropdownOpenComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story-action-menu',
|
||||
}),
|
||||
true,
|
||||
);
|
||||
}}
|
||||
>
|
||||
<ActionMenuComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'story-action-menu' }}
|
||||
>
|
||||
<ActionMenuContext.Provider
|
||||
value={{
|
||||
isInRightDrawer: true,
|
||||
displayType: 'dropdownItem',
|
||||
actionMenuType: 'index-page-action-menu-dropdown',
|
||||
actions: createMockActionMenuActions({
|
||||
deleteMock,
|
||||
addToFavoritesMock,
|
||||
exportMock,
|
||||
}),
|
||||
}}
|
||||
>
|
||||
<ActionMenuComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'story-action-menu' }}
|
||||
>
|
||||
<ActionMenuContext.Provider
|
||||
value={{
|
||||
isInRightDrawer: true,
|
||||
displayType: 'dropdownItem',
|
||||
actionMenuType: 'index-page-action-menu-dropdown',
|
||||
actions: createMockActionMenuActions({
|
||||
deleteMock,
|
||||
addToFavoritesMock,
|
||||
exportMock,
|
||||
}),
|
||||
}}
|
||||
>
|
||||
<Story />
|
||||
</ActionMenuContext.Provider>
|
||||
</ActionMenuComponentInstanceContext.Provider>
|
||||
</RecoilRoot>
|
||||
</JotaiProvider>
|
||||
);
|
||||
},
|
||||
<Story />
|
||||
</ActionMenuContext.Provider>
|
||||
</ActionMenuComponentInstanceContext.Provider>
|
||||
</RecoilRoot>
|
||||
),
|
||||
ContextStoreDecorator,
|
||||
RouterDecorator,
|
||||
],
|
||||
|
||||
@@ -22,8 +22,8 @@ import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFla
|
||||
import { IconCalendar, OverflowingTextWithTooltip } from 'twenty-ui/display';
|
||||
import { isNavigationModifierPressed } from 'twenty-ui/utilities';
|
||||
import {
|
||||
FeatureFlagKey,
|
||||
PermissionFlagType,
|
||||
FeatureFlagKey,
|
||||
} from '~/generated-metadata/graphql';
|
||||
import { formatToHumanReadableDate } from '~/utils/date-utils';
|
||||
import { getFileNameAndExtension } from '~/utils/file/getFileNameAndExtension';
|
||||
@@ -96,11 +96,7 @@ export const AttachmentRow = ({
|
||||
);
|
||||
|
||||
const { name: originalFileName, extension: attachmentFileExtension } =
|
||||
getFileNameAndExtension(
|
||||
isFilesFieldMigrated
|
||||
? (attachment.file?.[0]?.label as string)
|
||||
: attachment.name,
|
||||
);
|
||||
getFileNameAndExtension(attachment.name);
|
||||
|
||||
const [attachmentFileName, setAttachmentFileName] =
|
||||
useState(originalFileName);
|
||||
@@ -210,9 +206,7 @@ export const AttachmentRow = ({
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<OverflowingTextWithTooltip
|
||||
text={`${attachmentFileName}${attachmentFileExtension}`}
|
||||
/>
|
||||
<OverflowingTextWithTooltip text={attachment.name} />
|
||||
</StyledLink>
|
||||
</StyledLinkContainer>
|
||||
)}
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ import {
|
||||
} from '@/ui/layout/dropdown/components/Dropdown';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useSelectableList } from '@/ui/layout/selectable-list/hooks/useSelectableList';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
|
||||
export type CommandMenuItemDropdownProps = CommandMenuItemProps &
|
||||
Pick<
|
||||
@@ -31,7 +31,7 @@ export const CommandMenuItemDropdown = ({
|
||||
dropdownId,
|
||||
disabled = false,
|
||||
}: CommandMenuItemDropdownProps) => {
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+1
-2
@@ -26,7 +26,6 @@ import { currentFavoriteFolderIdStateV2 } from '@/ui/navigation/navigation-drawe
|
||||
import { useSetRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useSetRecoilStateV2';
|
||||
import { getNavigationSubItemLeftAdornment } from '@/ui/navigation/navigation-drawer/utils/getNavigationSubItemLeftAdornment';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { Droppable } from '@hello-pangea/dnd';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { useContext, useState } from 'react';
|
||||
@@ -96,7 +95,7 @@ export const CurrentWorkspaceMemberFavorites = ({
|
||||
|
||||
const dropdownId = `favorite-folder-edit-${folder.folderId}`;
|
||||
|
||||
const isDropdownOpenComponent = useRecoilComponentValueV2(
|
||||
const isDropdownOpenComponent = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+1
-2
@@ -45,7 +45,6 @@ import { currentNavigationMenuItemFolderIdStateV2 } from '@/ui/navigation/naviga
|
||||
import { useSetRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useSetRecoilStateV2';
|
||||
import { getNavigationSubItemLeftAdornment } from '@/ui/navigation/navigation-drawer/utils/getNavigationSubItemLeftAdornment';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { isNonEmptyString } from '@sniptt/guards';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
@@ -124,7 +123,7 @@ export const CurrentWorkspaceMemberNavigationMenuItems = ({
|
||||
|
||||
const dropdownId = `navigation-menu-item-folder-edit-${folder.id}`;
|
||||
|
||||
const isDropdownOpenComponent = useRecoilComponentValueV2(
|
||||
const isDropdownOpenComponent = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
||||
import { StyledHeaderDropdownButton } from '@/ui/layout/dropdown/components/StyledHeaderDropdownButton';
|
||||
import { DROPDOWN_OFFSET_Y } from '@/ui/layout/dropdown/constants/DropdownOffsetY';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { type ViewType } from '@/views/types/ViewType';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
@@ -28,7 +28,7 @@ export const ObjectOptionsDropdown = ({
|
||||
const { currentContentId, handleContentChange, handleResetContent } =
|
||||
useDropdownContextCurrentContentId<ObjectOptionsContentId>();
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
OBJECT_OPTIONS_DROPDOWN_ID,
|
||||
);
|
||||
|
||||
+1
-2
@@ -27,7 +27,6 @@ import { SelectableListItem } from '@/ui/layout/selectable-list/components/Selec
|
||||
import { selectedItemIdComponentState } from '@/ui/layout/selectable-list/states/selectedItemIdComponentState';
|
||||
import { useRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentState';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { Trans, useLingui } from '@lingui/react/macro';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
@@ -139,7 +138,7 @@ export const ObjectSortDropdownButton = () => {
|
||||
setIsRecordSortDirectionMenuUnfolded(false);
|
||||
};
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
OBJECT_SORT_DROPDOWN_ID,
|
||||
);
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
import { StyledHeaderDropdownButton } from '@/ui/layout/dropdown/components/StyledHeaderDropdownButton';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import styled from '@emotion/styled';
|
||||
import { type Nullable } from 'twenty-shared/types';
|
||||
import { Tag } from 'twenty-ui/components';
|
||||
@@ -23,7 +23,7 @@ export const RecordBoardColumnHeaderAggregateDropdownButton = ({
|
||||
value?: Nullable<string | number>;
|
||||
tooltip?: Nullable<string>;
|
||||
}) => {
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ import { type FieldMorphRelationMetadata } from '@/object-record/record-field/ui
|
||||
import { getRecordFieldCardRelationPickerDropdownId } from '@/object-record/record-show/utils/getRecordFieldCardRelationPickerDropdownId';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
|
||||
import { RecordDetailMorphRelationSectionDropdown } from '@/object-record/record-field-list/record-detail-section/relation/components/RecordDetailMorphRelationSectionDropdown';
|
||||
import { RecordDetailRelationRecordsList } from '@/object-record/record-field-list/record-detail-section/relation/components/RecordDetailRelationRecordsList';
|
||||
@@ -49,7 +49,7 @@ export const RecordDetailMorphRelationSection = ({
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import { getRecordFieldCardRelationPickerDropdownId } from '@/object-record/reco
|
||||
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
||||
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { dropdownPlacementComponentState } from '@/ui/layout/dropdown/states/dropdownPlacementComponentState';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
@@ -65,7 +65,7 @@ export const RecordDetailMorphRelationSectionDropdownManyToOne = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
dropdownPlacementComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
||||
import { GenericDropdownContentWidth } from '@/ui/layout/dropdown/constants/GenericDropdownContentWidth';
|
||||
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { dropdownPlacementComponentState } from '@/ui/layout/dropdown/states/dropdownPlacementComponentState';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { CustomError, isDefined } from 'twenty-shared/utils';
|
||||
@@ -68,7 +68,7 @@ export const RecordDetailMorphRelationSectionDropdownOneToMany = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
dropdownPlacementComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal';
|
||||
import { useModal } from '@/ui/layout/modal/hooks/useModal';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
@@ -152,7 +152,7 @@ export const RecordDetailRelationRecordsListItem = ({
|
||||
const dropdownInstanceId = `record-field-card-menu:${scopeInstanceId}:${relationFieldMetadataId}:${relationRecord.id}`;
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownInstanceId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import { AggregateOperations } from '@/object-record/record-table/constants/Aggr
|
||||
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { coreIndexViewIdFromObjectMetadataItemFamilySelector } from '@/views/states/selectors/coreIndexViewIdFromObjectMetadataItemFamilySelector';
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import {
|
||||
@@ -100,7 +100,7 @@ export const RecordDetailRelationSection = ({
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
||||
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { dropdownPlacementComponentState } from '@/ui/layout/dropdown/states/dropdownPlacementComponentState';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
import { CustomError, isDefined } from 'twenty-shared/utils';
|
||||
import { IconPlus } from 'twenty-ui/display';
|
||||
@@ -85,7 +85,7 @@ export const RecordDetailRelationSectionDropdownToMany = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
dropdownPlacementComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
|
||||
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { dropdownPlacementComponentState } from '@/ui/layout/dropdown/states/dropdownPlacementComponentState';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState';
|
||||
|
||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||
@@ -96,7 +96,7 @@ export const RecordDetailRelationSectionDropdownToOne = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
dropdownPlacementComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDrop
|
||||
import { usePushFocusItemToFocusStack } from '@/ui/utilities/focus/hooks/usePushFocusItemToFocusStack';
|
||||
import { useRemoveFocusItemFromFocusStackById } from '@/ui/utilities/focus/hooks/useRemoveFocusItemFromFocusStackById';
|
||||
import { FocusComponentType } from '@/ui/utilities/focus/types/FocusComponentType';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { isStandaloneVariableString } from '@/workflow/utils/isStandaloneVariableString';
|
||||
import { useTheme } from '@emotion/react';
|
||||
import styled from '@emotion/styled';
|
||||
@@ -128,7 +128,7 @@ export const FormArrayFieldInput = ({
|
||||
const containerRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const dropdownId = `dropdown-${instanceId}`;
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/Drop
|
||||
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { MenuItemWithOptionDropdown } from '@/ui/navigation/menu-item/components/MenuItemWithOptionDropdown';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import React, { useState } from 'react';
|
||||
import {
|
||||
IconBookmark,
|
||||
@@ -44,7 +44,7 @@ export const MultiItemFieldMenuItem = <T,>({
|
||||
}: MultiItemFieldMenuItemProps<T>) => {
|
||||
const [isHovered, setIsHovered] = useState(false);
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+27
-26
@@ -19,7 +19,7 @@ import { usePersistFieldFromFieldInputContext } from '@/object-record/record-fie
|
||||
import { getDropdownFocusIdForRecordField } from '@/object-record/utils/getDropdownFocusIdForRecordField';
|
||||
import { useGoBackToPreviousDropdownFocusId } from '@/ui/layout/dropdown/hooks/useGoBackToPreviousDropdownFocusId';
|
||||
import { activeDropdownFocusIdState } from '@/ui/layout/dropdown/states/activeDropdownFocusIdState';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
import { useIcons } from 'twenty-ui/display';
|
||||
import { RecordInlineCellContainer } from './RecordInlineCellContainer';
|
||||
import {
|
||||
@@ -133,36 +133,37 @@ export const RecordInlineCell = ({
|
||||
closeInlineCell();
|
||||
};
|
||||
|
||||
const handleClickOutside = useCallback(
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = jotaiStore.get(
|
||||
activeDropdownFocusIdState.atom,
|
||||
);
|
||||
const handleClickOutside = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = snapshot
|
||||
.getLoadable(activeDropdownFocusIdState)
|
||||
.getValue();
|
||||
|
||||
const expectedDropdownFocusId = getDropdownFocusIdForRecordField({
|
||||
recordId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
componentType: 'inline-cell',
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
const expectedDropdownFocusId = getDropdownFocusIdForRecordField({
|
||||
recordId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
componentType: 'inline-cell',
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
|
||||
if (currentDropdownFocusId !== expectedDropdownFocusId) {
|
||||
return;
|
||||
}
|
||||
if (currentDropdownFocusId !== expectedDropdownFocusId) {
|
||||
return;
|
||||
}
|
||||
|
||||
event?.preventDefault();
|
||||
event?.stopImmediatePropagation();
|
||||
event?.preventDefault();
|
||||
event?.stopImmediatePropagation();
|
||||
|
||||
if (skipPersist !== true) {
|
||||
persistFieldFromFieldInputContext(newValue);
|
||||
}
|
||||
if (skipPersist !== true) {
|
||||
persistFieldFromFieldInputContext(newValue);
|
||||
}
|
||||
|
||||
closeInlineCell();
|
||||
},
|
||||
closeInlineCell();
|
||||
},
|
||||
[
|
||||
recordId,
|
||||
fieldDefinition.fieldMetadataId,
|
||||
|
||||
+1
-2
@@ -6,7 +6,6 @@ import { RecordTableColumnAggregateFooterValue } from '@/object-record/record-ta
|
||||
import { hasAggregateOperationForViewFieldFamilySelector } from '@/object-record/record-table/record-table-footer/states/hasAggregateOperationForViewFieldFamilySelector';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useTheme } from '@emotion/react';
|
||||
import styled from '@emotion/styled';
|
||||
import { useContext, useState } from 'react';
|
||||
@@ -58,7 +57,7 @@ export const RecordTableColumnAggregateFooterValueCell = ({
|
||||
}) => {
|
||||
const [isHovered, setIsHovered] = useState(false);
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+27
-26
@@ -24,7 +24,7 @@ import { getDropdownFocusIdForRecordField } from '@/object-record/utils/getDropd
|
||||
import { FieldWidgetInlineCellContainer } from '@/page-layout/widgets/field/components/FieldWidgetInlineCellContainer';
|
||||
import { useGoBackToPreviousDropdownFocusId } from '@/ui/layout/dropdown/hooks/useGoBackToPreviousDropdownFocusId';
|
||||
import { activeDropdownFocusIdState } from '@/ui/layout/dropdown/states/activeDropdownFocusIdState';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
|
||||
type FieldWidgetInlineCellProps = {
|
||||
loading?: boolean;
|
||||
@@ -132,36 +132,37 @@ export const FieldWidgetInlineCell = ({
|
||||
closeInlineCell();
|
||||
};
|
||||
|
||||
const handleClickOutside = useCallback(
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = jotaiStore.get(
|
||||
activeDropdownFocusIdState.atom,
|
||||
);
|
||||
const handleClickOutside = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = snapshot
|
||||
.getLoadable(activeDropdownFocusIdState)
|
||||
.getValue();
|
||||
|
||||
const expectedDropdownFocusId = getDropdownFocusIdForRecordField({
|
||||
recordId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
componentType: 'inline-cell',
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
const expectedDropdownFocusId = getDropdownFocusIdForRecordField({
|
||||
recordId,
|
||||
fieldMetadataId: fieldDefinition.fieldMetadataId,
|
||||
componentType: 'inline-cell',
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
|
||||
if (currentDropdownFocusId !== expectedDropdownFocusId) {
|
||||
return;
|
||||
}
|
||||
if (currentDropdownFocusId !== expectedDropdownFocusId) {
|
||||
return;
|
||||
}
|
||||
|
||||
event?.preventDefault();
|
||||
event?.stopImmediatePropagation();
|
||||
event?.preventDefault();
|
||||
event?.stopImmediatePropagation();
|
||||
|
||||
if (skipPersist !== true) {
|
||||
persistFieldFromFieldInputContext(newValue);
|
||||
}
|
||||
if (skipPersist !== true) {
|
||||
persistFieldFromFieldInputContext(newValue);
|
||||
}
|
||||
|
||||
closeInlineCell();
|
||||
},
|
||||
closeInlineCell();
|
||||
},
|
||||
[
|
||||
closeInlineCell,
|
||||
recordId,
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import { isFieldMorphRelation } from '@/object-record/record-field/ui/types/guar
|
||||
import { getRecordFieldCardRelationPickerDropdownId } from '@/object-record/record-show/utils/getRecordFieldCardRelationPickerDropdownId';
|
||||
import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState';
|
||||
import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
import { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { css } from '@emotion/react';
|
||||
import styled from '@emotion/styled';
|
||||
import { CustomError } from 'twenty-shared/utils';
|
||||
@@ -99,7 +99,7 @@ export const FieldWidgetRelationEditAction = ({
|
||||
instanceId: scopeInstanceId,
|
||||
});
|
||||
|
||||
const isRelationSelectionDropdownOpen = useRecoilComponentValueV2(
|
||||
const isRelationSelectionDropdownOpen = useRecoilComponentValue(
|
||||
isDropdownOpenComponentState,
|
||||
relationSelectionDropdownId,
|
||||
);
|
||||
|
||||
-5
@@ -32,11 +32,6 @@ export const StyledSettingsCardTitle = styled.div`
|
||||
margin-bottom: ${({ theme }) => theme.spacing(1)};
|
||||
`;
|
||||
|
||||
export const StyledSettingsCardTextContainer = styled.div`
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
`;
|
||||
|
||||
export const StyledSettingsCardDescription = styled.div`
|
||||
color: ${({ theme }) => theme.font.color.secondary};
|
||||
font-size: ${({ theme }) => theme.font.size.sm};
|
||||
|
||||
+7
-14
@@ -2,26 +2,21 @@ import {
|
||||
StyledSettingsCardContent,
|
||||
StyledSettingsCardDescription,
|
||||
StyledSettingsCardIcon,
|
||||
StyledSettingsCardTextContainer,
|
||||
StyledSettingsCardTitle,
|
||||
} from '@/settings/components/SettingsOptions/SettingsCardContentBase';
|
||||
import { SettingsOptionIconCustomizer } from '@/settings/components/SettingsOptions/SettingsOptionIconCustomizer';
|
||||
import styled from '@emotion/styled';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
|
||||
type SettingsOptionCardContentButtonProps = {
|
||||
Icon?: IconComponent;
|
||||
title: React.ReactNode;
|
||||
description?: string;
|
||||
description?: string | React.ReactNode;
|
||||
disabled?: boolean;
|
||||
Button?: React.ReactNode;
|
||||
};
|
||||
|
||||
const StyledButtonContainer = styled.div`
|
||||
flex-shrink: 0;
|
||||
margin-left: auto;
|
||||
`;
|
||||
|
||||
@@ -39,14 +34,12 @@ export const SettingsOptionCardContentButton = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<StyledSettingsCardTextContainer>
|
||||
<div>
|
||||
<StyledSettingsCardTitle>{title}</StyledSettingsCardTitle>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
</div>
|
||||
{Button && <StyledButtonContainer>{Button}</StyledButtonContainer>}
|
||||
</StyledSettingsCardContent>
|
||||
);
|
||||
|
||||
+4
-8
@@ -3,14 +3,10 @@ import {
|
||||
StyledSettingsCardContent,
|
||||
StyledSettingsCardDescription,
|
||||
StyledSettingsCardIcon,
|
||||
StyledSettingsCardTextContainer,
|
||||
StyledSettingsCardTitle,
|
||||
} from '@/settings/components/SettingsOptions/SettingsCardContentBase';
|
||||
import { SettingsOptionIconCustomizer } from '@/settings/components/SettingsOptions/SettingsOptionIconCustomizer';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
|
||||
type SettingsOptionCardContentCounterProps = {
|
||||
Icon?: IconComponent;
|
||||
@@ -42,14 +38,14 @@ export const SettingsOptionCardContentCounter = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<StyledSettingsCardTextContainer>
|
||||
<div>
|
||||
<StyledSettingsCardTitle>{title}</StyledSettingsCardTitle>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
</div>
|
||||
<SettingsCounter
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
|
||||
+7
-14
@@ -2,26 +2,21 @@ import {
|
||||
StyledSettingsCardContent,
|
||||
StyledSettingsCardDescription,
|
||||
StyledSettingsCardIcon,
|
||||
StyledSettingsCardTextContainer,
|
||||
StyledSettingsCardTitle,
|
||||
} from '@/settings/components/SettingsOptions/SettingsCardContentBase';
|
||||
import { SettingsOptionIconCustomizer } from '@/settings/components/SettingsOptions/SettingsOptionIconCustomizer';
|
||||
import styled from '@emotion/styled';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
|
||||
type SettingsOptionCardContentSelectProps = {
|
||||
Icon?: IconComponent;
|
||||
title: React.ReactNode;
|
||||
description?: string;
|
||||
description?: string | React.ReactNode;
|
||||
disabled?: boolean;
|
||||
children?: React.ReactNode;
|
||||
};
|
||||
|
||||
const StyledSelectContainer = styled.div`
|
||||
flex-shrink: 0;
|
||||
justify-content: flex-end;
|
||||
margin-left: auto;
|
||||
max-width: 120px;
|
||||
@@ -41,14 +36,12 @@ export const SettingsOptionCardContentSelect = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<StyledSettingsCardTextContainer>
|
||||
<div>
|
||||
<StyledSettingsCardTitle>{title}</StyledSettingsCardTitle>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
</div>
|
||||
<StyledSelectContainer>{children}</StyledSelectContainer>
|
||||
</StyledSettingsCardContent>
|
||||
);
|
||||
|
||||
+7
-14
@@ -3,17 +3,13 @@ import {
|
||||
StyledSettingsCardContent,
|
||||
StyledSettingsCardDescription,
|
||||
StyledSettingsCardIcon,
|
||||
StyledSettingsCardTextContainer,
|
||||
StyledSettingsCardTitle,
|
||||
} from '@/settings/components/SettingsOptions/SettingsCardContentBase';
|
||||
import { SettingsOptionIconCustomizer } from '@/settings/components/SettingsOptions/SettingsOptionIconCustomizer';
|
||||
import { useTheme } from '@emotion/react';
|
||||
import styled from '@emotion/styled';
|
||||
import { useId } from 'react';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
import { Toggle } from 'twenty-ui/input';
|
||||
|
||||
const StyledSettingsCardToggleContent = styled(StyledSettingsCardContent)`
|
||||
@@ -31,7 +27,6 @@ const StyledSettingsCardToggleButton = styled(Toggle)<{
|
||||
}>`
|
||||
align-self: ${({ toggleCentered }) =>
|
||||
toggleCentered ? 'center' : 'flex-start'};
|
||||
flex-shrink: 0;
|
||||
margin-left: auto;
|
||||
`;
|
||||
|
||||
@@ -44,7 +39,7 @@ const StyledSettingsCardToggleCover = styled.span`
|
||||
type SettingsOptionCardContentToggleProps = {
|
||||
Icon?: IconComponent;
|
||||
title: React.ReactNode;
|
||||
description?: string;
|
||||
description?: React.ReactNode;
|
||||
divider?: boolean;
|
||||
disabled?: boolean;
|
||||
advancedMode?: boolean;
|
||||
@@ -75,19 +70,17 @@ export const SettingsOptionCardContentToggle = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<StyledSettingsCardTextContainer>
|
||||
<div>
|
||||
<StyledSettingsCardTitle>
|
||||
<label htmlFor={toggleId}>
|
||||
{title}
|
||||
<StyledSettingsCardToggleCover />
|
||||
</label>
|
||||
</StyledSettingsCardTitle>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
</div>
|
||||
<StyledSettingsCardToggleButton
|
||||
id={toggleId}
|
||||
value={checked}
|
||||
|
||||
+2
-3
@@ -8,6 +8,7 @@ import { SettingsOptionCardContentSelect } from '@/settings/components/SettingsO
|
||||
import { ADVANCED_SETTINGS_ANIMATION_DURATION } from '@/settings/constants/AdvancedSettingsAnimationDurations';
|
||||
import { useDateSettingsFormInitialValues } from '@/settings/data-model/fields/forms/date/hooks/useDateSettingsFormInitialValues';
|
||||
import { getDisplayFormatLabel } from '@/settings/data-model/fields/forms/date/utils/getDisplayFormatLabel';
|
||||
import { getDisplayFormatSelectDescription } from '@/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription';
|
||||
import { Select } from '@/ui/input/components/Select';
|
||||
import { SettingsTextInput } from '@/ui/input/components/SettingsTextInput';
|
||||
import styled from '@emotion/styled';
|
||||
@@ -70,9 +71,7 @@ export const SettingsDataModelFieldDateForm = ({
|
||||
isDateFieldCustomDisplayFormat(activeDisplayFormat);
|
||||
|
||||
const displayFormatSelectDescription =
|
||||
activeDisplayFormat === FieldDateDisplayFormat.CUSTOM
|
||||
? t`Enter in Unicode format`
|
||||
: t`Choose the format used to display date value`;
|
||||
getDisplayFormatSelectDescription(activeDisplayFormat);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
import { FieldDateDisplayFormat } from '@/object-record/record-field/ui/types/FieldMetadata';
|
||||
import { Trans } from '@lingui/react/macro';
|
||||
|
||||
export const getDisplayFormatSelectDescription = (
|
||||
selectedDisplayFormat: FieldDateDisplayFormat,
|
||||
) => {
|
||||
if (selectedDisplayFormat === FieldDateDisplayFormat.CUSTOM) {
|
||||
return (
|
||||
<Trans>
|
||||
Enter in{' '}
|
||||
<a
|
||||
href="https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
style={{ textDecoration: 'underline', color: 'inherit' }}
|
||||
>
|
||||
Unicode
|
||||
</a>{' '}
|
||||
format
|
||||
</Trans>
|
||||
);
|
||||
}
|
||||
return <Trans>Choose the format used to display date value</Trans>;
|
||||
};
|
||||
+23
-2
@@ -1,14 +1,17 @@
|
||||
import { useLingui } from '@lingui/react/macro';
|
||||
import { Trans, useLingui } from '@lingui/react/macro';
|
||||
import { useFormContext } from 'react-hook-form';
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { DOCUMENTATION_PATHS } from 'twenty-shared/constants';
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { IconLink } from 'twenty-ui/display';
|
||||
|
||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||
import { SettingsOptionCardContentSelect } from '@/settings/components/SettingsOptions/SettingsOptionCardContentSelect';
|
||||
import { SettingsOptionCardContentToggle } from '@/settings/components/SettingsOptions/SettingsOptionCardContentToggle';
|
||||
import { getDocumentationUrl } from '@/support/utils/getDocumentationUrl';
|
||||
import { Select } from '@/ui/input/components/Select';
|
||||
import { isAdvancedModeEnabledState } from '@/ui/navigation/navigation-drawer/states/isAdvancedModeEnabledState';
|
||||
import { RelationType } from '~/generated-metadata/graphql';
|
||||
@@ -26,6 +29,12 @@ export const SettingsDataModelFieldRelationJunctionForm = ({
|
||||
useFormContext<SettingsDataModelFieldEditFormValues>();
|
||||
|
||||
const isAdvancedModeEnabled = useRecoilValue(isAdvancedModeEnabledState);
|
||||
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||
|
||||
const documentationUrl = getDocumentationUrl({
|
||||
locale: currentWorkspaceMember?.locale,
|
||||
path: DOCUMENTATION_PATHS.USER_GUIDE_DATA_MODEL_HOW_TOS_CREATE_MANY_TO_MANY_RELATIONS,
|
||||
});
|
||||
|
||||
const { objectMetadataItem: sourceObjectMetadataItem } =
|
||||
useObjectMetadataItem({ objectNameSingular });
|
||||
@@ -154,7 +163,19 @@ export const SettingsDataModelFieldRelationJunctionForm = ({
|
||||
<SettingsOptionCardContentToggle
|
||||
Icon={IconLink}
|
||||
title={t`This is a relation to a Junction Object`}
|
||||
description={t`Build many-to-many relations`}
|
||||
description={
|
||||
<Trans>
|
||||
Build many-to-many relations.{' '}
|
||||
<a
|
||||
href={documentationUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
style={{ textDecoration: 'underline', color: 'inherit' }}
|
||||
>
|
||||
Learn more
|
||||
</a>
|
||||
</Trans>
|
||||
}
|
||||
checked={isJunctionConfigEnabled}
|
||||
onChange={handleJunctionToggle}
|
||||
divider={isJunctionConfigEnabled}
|
||||
|
||||
+2
-1
@@ -175,11 +175,12 @@ export const SettingsSecurityAuthProvidersOptionsList = () => {
|
||||
description={t`Allow the invitation of new users by sharing an invite link.`}
|
||||
checked={currentWorkspace.isPublicInviteLinkEnabled}
|
||||
advancedMode
|
||||
divider
|
||||
onChange={() =>
|
||||
handleChange(!currentWorkspace.isPublicInviteLinkEnabled)
|
||||
}
|
||||
/>
|
||||
</Card>
|
||||
<Card rounded>
|
||||
<Toggle2FA />
|
||||
</Card>
|
||||
</>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user