Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a14b0ab6ca | ||
|
|
6e29f66ce8 | ||
|
|
9bcc2fc5d9 | ||
|
|
01e203a70b | ||
|
|
db9636bd9e | ||
|
|
36c2b0e23b | ||
|
|
66deb8be63 | ||
|
|
01d2269bd0 | ||
|
|
04502e5abb | ||
|
|
549c7a613b | ||
|
|
743b733e70 | ||
|
|
612f7c37a5 | ||
|
|
42108e0611 |
@@ -28,6 +28,8 @@ 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,11 +20,8 @@ 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"
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
# Crea lo scaffold di una nuova app (include tutti gli esempi per impostazione predefinita)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# If you don't use yarn@4
|
||||
# Se non usi yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
# Autenticati usando la tua API key (ti verrà richiesto)
|
||||
yarn twenty auth:login
|
||||
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
# Avvia la modalità di sviluppo: sincronizza automaticamente le modifiche locali con il tuo workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
Lo strumento di scaffolding supporta tre modalità per controllare quali file di esempio vengono inclusi:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
# Predefinita (esaustiva): tutti gli esempi (oggetto, campo, funzione logica, componente front-end, vista, voce del menu di navigazione)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
# Minimale: solo i file principali (application-config.ts e default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
# Interattiva: seleziona quali esempi includere
|
||||
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`
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
* 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
|
||||
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
Un'app appena creata con la modalità predefinita `--exhaustive` si presenta così:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -102,27 +102,27 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
public/ # Cartella delle risorse pubbliche (immagini, font, ecc.)
|
||||
src/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── application-config.ts # Obbligatorio - configurazione principale dell'applicazione
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
│ └── default-role.ts # Ruolo predefinito per le funzioni logiche
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
│ └── example-object.ts # Definizione di oggetto personalizzato di esempio
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
│ └── example-field.ts # Definizione di campo autonomo di esempio
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
│ ├── hello-world.ts # Funzione logica di esempio
|
||||
│ └── post-install.ts # Funzione logica post-installazione
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
│ └── hello-world.tsx # Componente front-end di esempio
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
│ └── example-view.ts # Definizione di vista salvata di esempio
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── example-navigation-menu-item.ts # Link di navigazione della barra laterale di esempio
|
||||
```
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
| 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 |
|
||||
|
||||
<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()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
| `defineView()` | Definisce viste salvate per gli oggetti |
|
||||
| `defineNavigationMenuItem()` | Definisce i link di navigazione della barra laterale |
|
||||
|
||||
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.
|
||||
|
||||
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`:
|
||||
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`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
La funzione viene collegata alla tua app facendo riferimento al suo identificatore universale in `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Puoi anche eseguire manualmente la funzione di post-installazione in qualsiasi momento utilizzando la CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Punti chiave:
|
||||
|
||||
* 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`.
|
||||
* 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`.
|
||||
|
||||
### 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"
|
||||
# Scaffold a new app (includes all examples by default)
|
||||
# Criar a estrutura de um novo app (inclui todos os exemplos por padrão)
|
||||
npx create-twenty-app@latest my-twenty-app
|
||||
cd my-twenty-app
|
||||
|
||||
# If you don't use yarn@4
|
||||
# Se você não usa yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
# Autentique-se usando sua chave de API (você será solicitado)
|
||||
yarn twenty auth:login
|
||||
|
||||
# Start dev mode: automatically syncs local changes to your workspace
|
||||
# Iniciar modo de desenvolvimento: sincroniza automaticamente as alterações locais com seu workspace
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
O gerador de estrutura oferece suporte a três modos para controlar quais arquivos de exemplo são incluídos:
|
||||
|
||||
```bash filename="Terminal"
|
||||
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item)
|
||||
# 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)
|
||||
npx create-twenty-app@latest my-app
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
# Mínimo: apenas arquivos principais (application-config.ts e default-role.ts)
|
||||
npx create-twenty-app@latest my-app --minimal
|
||||
|
||||
# Interactive: select which examples to include
|
||||
# Interativo: selecione quais exemplos incluir
|
||||
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`
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
* 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
|
||||
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
Um app recém-criado com o modo padrão `--exhaustive` fica assim:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -102,27 +102,27 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
public/ # Pasta de recursos públicos (imagens, fontes, etc.)
|
||||
src/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── application-config.ts # Obrigatório - configuração principal da aplicação
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
│ └── default-role.ts # Papel padrão para funções de lógica
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
│ └── example-object.ts # Exemplo de definição de objeto personalizado
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
│ └── example-field.ts # Exemplo de definição de campo independente
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
│ ├── hello-world.ts # Exemplo de função de lógica
|
||||
│ └── post-install.ts # Função de lógica de pós-instalação
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
│ └── hello-world.tsx # Exemplo de componente de front-end
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
│ └── example-view.ts # Exemplo de definição de visualização salva
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── example-navigation-menu-item.ts # Exemplo de link de navegação da barra lateral
|
||||
```
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
| `defineView()` | Definições de visualizações salvas |
|
||||
| `defineNavigationMenuItem()` | Definições de itens do menu de navegação |
|
||||
|
||||
<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 saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
| `defineView()` | Define visualizações salvas para objetos |
|
||||
| `defineNavigationMenuItem()` | Define links de navegação da barra lateral |
|
||||
|
||||
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.
|
||||
|
||||
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`:
|
||||
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`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
A função é conectada ao seu app referenciando seu identificador universal em `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Você também pode executar manualmente a função de pós-instalação a qualquer momento usando a CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Pontos-chave:
|
||||
|
||||
* 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`.
|
||||
* 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`.
|
||||
|
||||
### 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
|
||||
|
||||
# If you don't use yarn@4
|
||||
# Если вы не используете yarn@4
|
||||
corepack enable
|
||||
yarn install
|
||||
|
||||
# Authenticate using your API key (you'll be prompted)
|
||||
# Аутентифицироваться с помощью вашего API-ключа (вам будет предложено)
|
||||
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
|
||||
|
||||
# Minimal: only core files (application-config.ts and default-role.ts)
|
||||
# Минимальный: только основные файлы (application-config.ts и 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
|
||||
* Генерирует основные файлы (конфигурацию приложения, роль функций по умолчанию, постустановочную функцию), а также примерные файлы в зависимости от выбранного режима создания каркаса
|
||||
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
Сгенерированное с помощью каркаса приложение с режимом по умолчанию `--exhaustive` выглядит так:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -102,27 +102,27 @@ my-twenty-app/
|
||||
eslint.config.mjs
|
||||
tsconfig.json
|
||||
README.md
|
||||
public/ # Public assets folder (images, fonts, etc.)
|
||||
public/ # Папка публичных ресурсов (изображения, шрифты и т. д.)
|
||||
src/
|
||||
├── application-config.ts # Required - main application configuration
|
||||
├── application-config.ts # Обязательный — основная конфигурация приложения
|
||||
├── roles/
|
||||
│ └── default-role.ts # Default role for logic functions
|
||||
│ └── default-role.ts # Роль по умолчанию для логических функций
|
||||
├── objects/
|
||||
│ └── example-object.ts # Example custom object definition
|
||||
│ └── example-object.ts # Пример определения пользовательского объекта
|
||||
├── fields/
|
||||
│ └── example-field.ts # Example standalone field definition
|
||||
│ └── example-field.ts # Пример определения отдельного поля
|
||||
├── logic-functions/
|
||||
│ ├── hello-world.ts # Example logic function
|
||||
│ └── post-install.ts # Post-install logic function
|
||||
│ ├── hello-world.ts # Пример логической функции
|
||||
│ └── post-install.ts # Постустановочная логическая функция
|
||||
├── front-components/
|
||||
│ └── hello-world.tsx # Example front component
|
||||
│ └── hello-world.tsx # Пример фронтенд-компонента
|
||||
├── views/
|
||||
│ └── example-view.ts # Example saved view definition
|
||||
│ └── example-view.ts # Пример определения сохранённого представления
|
||||
└── navigation-menu-items/
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
└── example-navigation-menu-item.ts # Пример ссылки боковой панели навигации
|
||||
```
|
||||
|
||||
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.
|
||||
С `--minimal` создаются только основные файлы (`application-config.ts`, `roles/default-role.ts` и `logic-functions/post-install.ts`). С `--interactive` вы выбираете, какие примерные файлы включить.
|
||||
|
||||
В общих чертах:
|
||||
|
||||
@@ -146,8 +146,8 @@ SDK обнаруживает сущности, разбирая ваши фай
|
||||
| `defineFrontComponent()` | Определения компонентов фронтенда |
|
||||
| `defineRole()` | Определения ролей |
|
||||
| `defineField()` | Расширения полей для существующих объектов |
|
||||
| `defineView()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
| `defineView()` | Определения сохранённых представлений |
|
||||
| `defineNavigationMenuItem()` | Определения пунктов меню навигации |
|
||||
|
||||
<Note>
|
||||
**Имена файлов заданы гибко.** Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона `export default define<Entity>({...})`. Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, `logic-functions/`, `roles/`) — это лишь соглашение для организации кода, а не требование.
|
||||
@@ -220,8 +220,8 @@ SDK предоставляет вспомогательные функции д
|
||||
| `defineFrontComponent()` | Определение фронт-компонентов для настраиваемого интерфейса |
|
||||
| `defineRole()` | Настраивает права роли и доступ к объектам |
|
||||
| `defineField()` | Расширение существующих объектов дополнительными полями |
|
||||
| `defineView()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
| `defineView()` | Определяйте сохранённые представления для объектов |
|
||||
| `defineNavigationMenuItem()` | Определяйте ссылки боковой панели навигации |
|
||||
|
||||
Эти функции проверяют вашу конфигурацию на этапе сборки и обеспечивают автодополнение в IDE и безопасность типов.
|
||||
|
||||
@@ -497,7 +497,7 @@ export default defineLogicFunction({
|
||||
|
||||
Послеустановочная функция — это функция логики, которая автоматически выполняется после установки вашего приложения в рабочем пространстве. Это полезно для одноразовых задач настройки, таких как инициализация данных по умолчанию, создание начальных записей или настройка параметров рабочего пространства.
|
||||
|
||||
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`:
|
||||
Когда вы создаёте каркас нового приложения с помощью `create-twenty-app`, для вас генерируется постустановочная функция по пути `src/logic-functions/post-install.ts`:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
Функция подключается к вашему приложению посредством ссылки на её универсальный идентификатор в `application-config.ts`:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Вы также можете вручную выполнить постустановочную функцию в любое время с помощью CLI:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty 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`.
|
||||
* Постустановочные функции — это стандартные логические функции: они используют `defineLogicFunction()` как и любые другие функции.
|
||||
* Поле `postInstallLogicFunctionUniversalIdentifier` в `defineApplication()` является необязательным. Если его опустить, после установки никакая функция выполняться не будет.
|
||||
* Тайм-аут по умолчанию установлен на 300 секунд (5 минут), чтобы позволить выполнять более длительные задачи настройки, такие как инициализация данных.
|
||||
* Постустановочным функциям не нужны триггеры — платформа вызывает их во время установки или вручную через `function:execute --postInstall`.
|
||||
|
||||
### Полезная нагрузка триггера маршрута
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ yarn twenty auth:login
|
||||
yarn twenty app:dev
|
||||
```
|
||||
|
||||
The scaffolder supports three modes for controlling which example files are included:
|
||||
İskelet oluşturucu, hangi örnek dosyaların dahil edileceğini kontrol etmek için üç modu destekler:
|
||||
|
||||
```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
|
||||
* Generates core files (application config, default function role, post-install function) plus example files based on the scaffolding mode
|
||||
* İ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
|
||||
|
||||
A freshly scaffolded app with the default `--exhaustive` mode looks like this:
|
||||
Varsayılan `--exhaustive` moduyla yeni oluşturulmuş bir uygulama şu şekilde görünür:
|
||||
|
||||
```text filename="my-twenty-app/"
|
||||
my-twenty-app/
|
||||
@@ -122,7 +122,7 @@ my-twenty-app/
|
||||
└── example-navigation-menu-item.ts # Example sidebar navigation link
|
||||
```
|
||||
|
||||
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.
|
||||
`--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.
|
||||
|
||||
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()` | Saved view definitions |
|
||||
| `defineNavigationMenuItem()` | Navigation menu item definitions |
|
||||
| `defineView()` | Kaydedilmiş görünüm tanımları |
|
||||
| `defineNavigationMenuItem()` | Gezinme menüsü öğesi tanımları |
|
||||
|
||||
<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()` | Define saved views for objects |
|
||||
| `defineNavigationMenuItem()` | Define sidebar navigation links |
|
||||
| `defineView()` | Nesneler için kaydedilmiş görünümler tanımlayın |
|
||||
| `defineNavigationMenuItem()` | Kenar çubuğu gezinme bağlantılarını tanımlayın |
|
||||
|
||||
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.
|
||||
|
||||
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`:
|
||||
`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:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
İşlev, `application-config.ts` içinde evrensel tanımlayıcısına başvurularak uygulamanıza bağlanır:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
@@ -529,7 +529,7 @@ export default defineApplication({
|
||||
});
|
||||
```
|
||||
|
||||
You can also manually execute the post-install function at any time using the CLI:
|
||||
Ayrıca kurulum sonrası işlevi istediğiniz zaman CLI kullanarak manuel olarak çalıştırabilirsiniz:
|
||||
|
||||
```bash filename="Terminal"
|
||||
yarn twenty function:execute --postInstall
|
||||
@@ -537,10 +537,10 @@ yarn twenty function:execute --postInstall
|
||||
|
||||
Önemli noktalar:
|
||||
|
||||
* 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`.
|
||||
* 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.
|
||||
|
||||
### Rota tetikleyicisi yükü
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ export default defineLogicFunction({
|
||||
|
||||
安装后函数是在你的应用安装到工作区后自动运行的逻辑函数。 这对于一次性设置任务很有用,例如填充默认数据、创建初始记录或配置工作区设置。
|
||||
|
||||
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`:
|
||||
当你使用 `create-twenty-app` 脚手架创建一个新应用时,会在 `src/logic-functions/post-install.ts` 为你生成一个安装后函数:
|
||||
|
||||
```typescript
|
||||
// src/logic-functions/post-install.ts
|
||||
@@ -518,7 +518,7 @@ export default defineLogicFunction({
|
||||
});
|
||||
```
|
||||
|
||||
The function is wired into your app by referencing its universal identifier in `application-config.ts`:
|
||||
通过在 `application-config.ts` 中引用其通用标识符,可将该函数接入你的应用:
|
||||
|
||||
```typescript
|
||||
import { POST_INSTALL_UNIVERSAL_IDENTIFIER } from 'src/logic-functions/post-install';
|
||||
|
||||
@@ -9,6 +9,8 @@ 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';
|
||||
@@ -84,6 +86,10 @@ const preview: Preview = {
|
||||
RootDecorator,
|
||||
],
|
||||
|
||||
beforeEach: () => {
|
||||
resetJotaiStore();
|
||||
},
|
||||
|
||||
loaders: [mswLoader],
|
||||
|
||||
parameters: {
|
||||
|
||||
@@ -1974,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Kies die formaat wat gebruik word om datumwaarde te vertoon"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Voer filter in"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "اختر الحقول التي ستحدد سجلاتك"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "اختر التنسيق المستخدم لعرض قيمة التاريخ"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14210,6 +14209,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Tria el format utilitzat per mostrar el valor de la data"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introdueix el filtre"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Vyberte formát použitý k zobrazení datumové hodnoty"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Zadejte filtr"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Vælg det format, der bruges til at vise datoværdien"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Indtast filter"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14214,6 +14213,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Wählen Sie das Format zur Anzeige des Datumswertes"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Filter eingeben"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Επιλέξτε τα πεδία που θα ταυτοποιήσουν τις εγγραφές σας"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Επιλέξτε τη μορφή που χρησιμοποιείται για την εμφάνιση της τιμής ημερομηνίας"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14216,6 +14215,7 @@ 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,7 +1969,6 @@ 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"
|
||||
@@ -2246,10 +2245,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgstr "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr "Build many-to-many relations"
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
#: src/pages/settings/ai/components/SettingsToolsTable.tsx
|
||||
@@ -2610,7 +2609,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Choose the format used to display date value"
|
||||
|
||||
@@ -5036,10 +5035,10 @@ msgstr "Enter files as JSON array"
|
||||
msgid "Enter filter"
|
||||
msgstr "Enter filter"
|
||||
|
||||
#. 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: 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: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14209,6 +14208,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Elige el formato utilizado para mostrar el valor de la fecha"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduce un filtro"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14214,6 +14213,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Valitse päivämäärän näyttämiseen käytetty muoto"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Syötä suodatin"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Choisir le format utilisé pour afficher la valeur de la date"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Saisissez un filtre"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14214,6 +14213,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "בחרו את השדות שיזהו את הרשומות שלכם"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "בחר את הפורמט להצגת תאריך"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.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"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Adja meg a szűrőt"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Scegli il formato utilizzato per visualizzare il valore della data"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Inserisci il filtro"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14214,6 +14213,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "レコードを識別するフィールドを選択してください"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "日付値を表示するために使用される形式を選択"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "레코드를 식별할 필드를 선택하세요"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "날짜 형식을 선택하세요"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Kies het formaat dat wordt gebruikt om de datumnotatie weer te geven"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Voer een filter in"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14214,6 +14213,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Velg formatet som brukes til å vise dato"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Skriv inn filter"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Wybierz format używany do wyświetlania daty"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Wprowadź filtr"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1969,6 @@ 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 ""
|
||||
@@ -2246,9 +2245,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2610,7 +2609,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr ""
|
||||
|
||||
@@ -5036,9 +5035,9 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9/30HU
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
msgid "Enter in <0>Unicode</0> format"
|
||||
#. js-lingui-id: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
@@ -14205,6 +14204,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Escolha o formato usado para exibir o valor da data"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Insira o filtro"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Escolha o formato usado para exibir o valor da data"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduza o filtro"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Alege formatul utilizat pentru a afișa valoarea datei"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Introduceți filtrul"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Изаберите поља која ће идентификовати ваше записе"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Изаберите формат за приказ датума"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Välj formatet som används för att visa datumvärdet"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Ange filter"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14226,6 +14225,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.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"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Filtre girin"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "Виберіть поля, які будуть ідентифікувати ваші записи"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "Оберіть формат для відображення значення дати"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14214,6 +14213,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,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/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.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"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
msgstr "Nhập bộ lọc"
|
||||
|
||||
#. 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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "选择将标识您记录的字段"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "选择用于显示日期值的格式"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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,7 +1974,6 @@ 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 ""
|
||||
@@ -2251,9 +2250,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: 8SlslB
|
||||
#. js-lingui-id: alSW5d
|
||||
#: src/modules/settings/data-model/fields/forms/morph-relation/components/SettingsDataModelFieldRelationJunctionForm.tsx
|
||||
msgid "Build many-to-many relations. <0>Learn more</0>"
|
||||
msgid "Build many-to-many relations"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: +7fBMP
|
||||
@@ -2615,7 +2614,7 @@ msgid "Choose the fields that will identify your records"
|
||||
msgstr "選擇將識別您記錄的欄位"
|
||||
|
||||
#. js-lingui-id: hIJigY
|
||||
#: src/modules/settings/data-model/fields/forms/date/utils/getDisplayFormatSelectDescription.tsx
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Choose the format used to display date value"
|
||||
msgstr "選擇用于顯示日期值的格式"
|
||||
|
||||
@@ -5041,10 +5040,10 @@ msgstr ""
|
||||
msgid "Enter filter"
|
||||
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: f09Lhk
|
||||
#: src/modules/settings/data-model/fields/forms/date/components/SettingsDataModelFieldDateForm.tsx
|
||||
msgid "Enter in Unicode format"
|
||||
msgstr ""
|
||||
|
||||
#. js-lingui-id: 9CjMQ7
|
||||
#: src/modules/settings/admin-panel/config-variables/components/ConfigVariableDatabaseInput.tsx
|
||||
@@ -14212,6 +14211,7 @@ 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 ""
|
||||
|
||||
+41
-35
@@ -1,4 +1,5 @@
|
||||
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';
|
||||
@@ -10,6 +11,7 @@ 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';
|
||||
|
||||
@@ -21,44 +23,48 @@ const meta: Meta<typeof RecordIndexActionMenuDropdown> = {
|
||||
title: 'Modules/ActionMenu/RecordIndexActionMenuDropdown',
|
||||
component: RecordIndexActionMenuDropdown,
|
||||
decorators: [
|
||||
(Story) => (
|
||||
<RecoilRoot
|
||||
initializeState={({ set }) => {
|
||||
set(
|
||||
recordIndexActionMenuDropdownPositionComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story',
|
||||
}),
|
||||
{ x: 10, y: 10 },
|
||||
);
|
||||
(Story) => {
|
||||
jotaiStore.set(
|
||||
isDropdownOpenComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story-action-menu',
|
||||
}),
|
||||
true,
|
||||
);
|
||||
|
||||
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,
|
||||
}),
|
||||
return (
|
||||
<JotaiProvider store={jotaiStore}>
|
||||
<RecoilRoot
|
||||
initializeState={({ set }) => {
|
||||
set(
|
||||
recordIndexActionMenuDropdownPositionComponentState.atomFamily({
|
||||
instanceId: 'action-menu-dropdown-story',
|
||||
}),
|
||||
{ x: 10, y: 10 },
|
||||
);
|
||||
}}
|
||||
>
|
||||
<Story />
|
||||
</ActionMenuContext.Provider>
|
||||
</ActionMenuComponentInstanceContext.Provider>
|
||||
</RecoilRoot>
|
||||
),
|
||||
<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>
|
||||
);
|
||||
},
|
||||
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 {
|
||||
PermissionFlagType,
|
||||
FeatureFlagKey,
|
||||
PermissionFlagType,
|
||||
} from '~/generated-metadata/graphql';
|
||||
import { formatToHumanReadableDate } from '~/utils/date-utils';
|
||||
import { getFileNameAndExtension } from '~/utils/file/getFileNameAndExtension';
|
||||
@@ -96,7 +96,11 @@ export const AttachmentRow = ({
|
||||
);
|
||||
|
||||
const { name: originalFileName, extension: attachmentFileExtension } =
|
||||
getFileNameAndExtension(attachment.name);
|
||||
getFileNameAndExtension(
|
||||
isFilesFieldMigrated
|
||||
? (attachment.file?.[0]?.label as string)
|
||||
: attachment.name,
|
||||
);
|
||||
|
||||
const [attachmentFileName, setAttachmentFileName] =
|
||||
useState(originalFileName);
|
||||
@@ -206,7 +210,9 @@ export const AttachmentRow = ({
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<OverflowingTextWithTooltip text={attachment.name} />
|
||||
<OverflowingTextWithTooltip
|
||||
text={`${attachmentFileName}${attachmentFileExtension}`}
|
||||
/>
|
||||
</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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
|
||||
export type CommandMenuItemDropdownProps = CommandMenuItemProps &
|
||||
Pick<
|
||||
@@ -31,7 +31,7 @@ export const CommandMenuItemDropdown = ({
|
||||
dropdownId,
|
||||
disabled = false,
|
||||
}: CommandMenuItemDropdownProps) => {
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@ 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';
|
||||
@@ -95,7 +96,7 @@ export const CurrentWorkspaceMemberFavorites = ({
|
||||
|
||||
const dropdownId = `favorite-folder-edit-${folder.folderId}`;
|
||||
|
||||
const isDropdownOpenComponent = useRecoilComponentValue(
|
||||
const isDropdownOpenComponent = useRecoilComponentValueV2(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+2
-1
@@ -45,6 +45,7 @@ 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';
|
||||
|
||||
@@ -123,7 +124,7 @@ export const CurrentWorkspaceMemberNavigationMenuItems = ({
|
||||
|
||||
const dropdownId = `navigation-menu-item-folder-edit-${folder.id}`;
|
||||
|
||||
const isDropdownOpenComponent = useRecoilComponentValue(
|
||||
const isDropdownOpenComponent = useRecoilComponentValueV2(
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
isDropdownOpenComponentState,
|
||||
OBJECT_OPTIONS_DROPDOWN_ID,
|
||||
);
|
||||
|
||||
+2
-1
@@ -27,6 +27,7 @@ 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';
|
||||
@@ -138,7 +139,7 @@ export const ObjectSortDropdownButton = () => {
|
||||
setIsRecordSortDirectionMenuUnfolded(false);
|
||||
};
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
|
||||
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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
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 { 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 { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
@@ -65,7 +65,7 @@ export const RecordDetailMorphRelationSectionDropdownManyToOne = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
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 { 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 { FieldMetadataType } from 'twenty-shared/types';
|
||||
import { CustomError, isDefined } from 'twenty-shared/utils';
|
||||
@@ -68,7 +68,7 @@ export const RecordDetailMorphRelationSectionDropdownOneToMany = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
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 { 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 { 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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
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 { 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 { CustomError, isDefined } from 'twenty-shared/utils';
|
||||
import { IconPlus } from 'twenty-ui/display';
|
||||
@@ -85,7 +85,7 @@ export const RecordDetailRelationSectionDropdownToMany = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
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 { 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 { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||
@@ -96,7 +96,7 @@ export const RecordDetailRelationSectionDropdownToOne = ({
|
||||
|
||||
const { closeDropdown } = useCloseDropdown();
|
||||
|
||||
const dropdownPlacement = useRecoilComponentValue(
|
||||
const dropdownPlacement = useRecoilComponentValueV2(
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
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 = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+26
-27
@@ -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 { useRecoilCallback } from 'recoil';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
import { useIcons } from 'twenty-ui/display';
|
||||
import { RecordInlineCellContainer } from './RecordInlineCellContainer';
|
||||
import {
|
||||
@@ -133,37 +133,36 @@ export const RecordInlineCell = ({
|
||||
closeInlineCell();
|
||||
};
|
||||
|
||||
const handleClickOutside = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = snapshot
|
||||
.getLoadable(activeDropdownFocusIdState)
|
||||
.getValue();
|
||||
const handleClickOutside = useCallback(
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = jotaiStore.get(
|
||||
activeDropdownFocusIdState.atom,
|
||||
);
|
||||
|
||||
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,
|
||||
|
||||
+2
-1
@@ -6,6 +6,7 @@ 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';
|
||||
@@ -57,7 +58,7 @@ export const RecordTableColumnAggregateFooterValueCell = ({
|
||||
}) => {
|
||||
const [isHovered, setIsHovered] = useState(false);
|
||||
|
||||
const isDropdownOpen = useRecoilComponentValue(
|
||||
const isDropdownOpen = useRecoilComponentValueV2(
|
||||
isDropdownOpenComponentState,
|
||||
dropdownId,
|
||||
);
|
||||
|
||||
+26
-27
@@ -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 { useRecoilCallback } from 'recoil';
|
||||
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
|
||||
|
||||
type FieldWidgetInlineCellProps = {
|
||||
loading?: boolean;
|
||||
@@ -132,37 +132,36 @@ export const FieldWidgetInlineCell = ({
|
||||
closeInlineCell();
|
||||
};
|
||||
|
||||
const handleClickOutside = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = snapshot
|
||||
.getLoadable(activeDropdownFocusIdState)
|
||||
.getValue();
|
||||
const handleClickOutside = useCallback(
|
||||
({
|
||||
event,
|
||||
newValue,
|
||||
skipPersist,
|
||||
}: Parameters<FieldInputClickOutsideEvent>[0]) => {
|
||||
const currentDropdownFocusId = jotaiStore.get(
|
||||
activeDropdownFocusIdState.atom,
|
||||
);
|
||||
|
||||
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 { useRecoilComponentValue } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValue';
|
||||
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilComponentValueV2';
|
||||
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 = useRecoilComponentValue(
|
||||
const isRelationSelectionDropdownOpen = useRecoilComponentValueV2(
|
||||
isDropdownOpenComponentState,
|
||||
relationSelectionDropdownId,
|
||||
);
|
||||
|
||||
+5
@@ -32,6 +32,11 @@ 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};
|
||||
|
||||
+14
-7
@@ -2,21 +2,26 @@ 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 } from 'twenty-ui/display';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
|
||||
type SettingsOptionCardContentButtonProps = {
|
||||
Icon?: IconComponent;
|
||||
title: React.ReactNode;
|
||||
description?: string | React.ReactNode;
|
||||
description?: string;
|
||||
disabled?: boolean;
|
||||
Button?: React.ReactNode;
|
||||
};
|
||||
|
||||
const StyledButtonContainer = styled.div`
|
||||
flex-shrink: 0;
|
||||
margin-left: auto;
|
||||
`;
|
||||
|
||||
@@ -34,12 +39,14 @@ export const SettingsOptionCardContentButton = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<div>
|
||||
<StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardTitle>{title}</StyledSettingsCardTitle>
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
</div>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
{Button && <StyledButtonContainer>{Button}</StyledButtonContainer>}
|
||||
</StyledSettingsCardContent>
|
||||
);
|
||||
|
||||
+8
-4
@@ -3,10 +3,14 @@ import {
|
||||
StyledSettingsCardContent,
|
||||
StyledSettingsCardDescription,
|
||||
StyledSettingsCardIcon,
|
||||
StyledSettingsCardTextContainer,
|
||||
StyledSettingsCardTitle,
|
||||
} from '@/settings/components/SettingsOptions/SettingsCardContentBase';
|
||||
import { SettingsOptionIconCustomizer } from '@/settings/components/SettingsOptions/SettingsOptionIconCustomizer';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
|
||||
type SettingsOptionCardContentCounterProps = {
|
||||
Icon?: IconComponent;
|
||||
@@ -38,14 +42,14 @@ export const SettingsOptionCardContentCounter = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<div>
|
||||
<StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardTitle>{title}</StyledSettingsCardTitle>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</div>
|
||||
</StyledSettingsCardTextContainer>
|
||||
<SettingsCounter
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
|
||||
+14
-7
@@ -2,21 +2,26 @@ 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 } from 'twenty-ui/display';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
|
||||
type SettingsOptionCardContentSelectProps = {
|
||||
Icon?: IconComponent;
|
||||
title: React.ReactNode;
|
||||
description?: string | React.ReactNode;
|
||||
description?: string;
|
||||
disabled?: boolean;
|
||||
children?: React.ReactNode;
|
||||
};
|
||||
|
||||
const StyledSelectContainer = styled.div`
|
||||
flex-shrink: 0;
|
||||
justify-content: flex-end;
|
||||
margin-left: auto;
|
||||
max-width: 120px;
|
||||
@@ -36,12 +41,14 @@ export const SettingsOptionCardContentSelect = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<div>
|
||||
<StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardTitle>{title}</StyledSettingsCardTitle>
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
</div>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
<StyledSelectContainer>{children}</StyledSelectContainer>
|
||||
</StyledSettingsCardContent>
|
||||
);
|
||||
|
||||
+14
-7
@@ -3,13 +3,17 @@ 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 } from 'twenty-ui/display';
|
||||
import {
|
||||
type IconComponent,
|
||||
OverflowingTextWithTooltip,
|
||||
} from 'twenty-ui/display';
|
||||
import { Toggle } from 'twenty-ui/input';
|
||||
|
||||
const StyledSettingsCardToggleContent = styled(StyledSettingsCardContent)`
|
||||
@@ -27,6 +31,7 @@ const StyledSettingsCardToggleButton = styled(Toggle)<{
|
||||
}>`
|
||||
align-self: ${({ toggleCentered }) =>
|
||||
toggleCentered ? 'center' : 'flex-start'};
|
||||
flex-shrink: 0;
|
||||
margin-left: auto;
|
||||
`;
|
||||
|
||||
@@ -39,7 +44,7 @@ const StyledSettingsCardToggleCover = styled.span`
|
||||
type SettingsOptionCardContentToggleProps = {
|
||||
Icon?: IconComponent;
|
||||
title: React.ReactNode;
|
||||
description?: React.ReactNode;
|
||||
description?: string;
|
||||
divider?: boolean;
|
||||
disabled?: boolean;
|
||||
advancedMode?: boolean;
|
||||
@@ -70,17 +75,19 @@ export const SettingsOptionCardContentToggle = ({
|
||||
<SettingsOptionIconCustomizer Icon={Icon} />
|
||||
</StyledSettingsCardIcon>
|
||||
)}
|
||||
<div>
|
||||
<StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardTitle>
|
||||
<label htmlFor={toggleId}>
|
||||
{title}
|
||||
<StyledSettingsCardToggleCover />
|
||||
</label>
|
||||
</StyledSettingsCardTitle>
|
||||
<StyledSettingsCardDescription>
|
||||
{description}
|
||||
</StyledSettingsCardDescription>
|
||||
</div>
|
||||
{description && (
|
||||
<StyledSettingsCardDescription>
|
||||
<OverflowingTextWithTooltip text={description} />
|
||||
</StyledSettingsCardDescription>
|
||||
)}
|
||||
</StyledSettingsCardTextContainer>
|
||||
<StyledSettingsCardToggleButton
|
||||
id={toggleId}
|
||||
value={checked}
|
||||
|
||||
+3
-2
@@ -8,7 +8,6 @@ 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';
|
||||
@@ -71,7 +70,9 @@ export const SettingsDataModelFieldDateForm = ({
|
||||
isDateFieldCustomDisplayFormat(activeDisplayFormat);
|
||||
|
||||
const displayFormatSelectDescription =
|
||||
getDisplayFormatSelectDescription(activeDisplayFormat);
|
||||
activeDisplayFormat === FieldDateDisplayFormat.CUSTOM
|
||||
? t`Enter in Unicode format`
|
||||
: t`Choose the format used to display date value`;
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
-24
@@ -1,24 +0,0 @@
|
||||
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>;
|
||||
};
|
||||
+2
-23
@@ -1,17 +1,14 @@
|
||||
import { Trans, useLingui } from '@lingui/react/macro';
|
||||
import { 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';
|
||||
@@ -29,12 +26,6 @@ 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 });
|
||||
@@ -163,19 +154,7 @@ export const SettingsDataModelFieldRelationJunctionForm = ({
|
||||
<SettingsOptionCardContentToggle
|
||||
Icon={IconLink}
|
||||
title={t`This is a relation to a Junction Object`}
|
||||
description={
|
||||
<Trans>
|
||||
Build many-to-many relations.{' '}
|
||||
<a
|
||||
href={documentationUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
style={{ textDecoration: 'underline', color: 'inherit' }}
|
||||
>
|
||||
Learn more
|
||||
</a>
|
||||
</Trans>
|
||||
}
|
||||
description={t`Build many-to-many relations`}
|
||||
checked={isJunctionConfigEnabled}
|
||||
onChange={handleJunctionToggle}
|
||||
divider={isJunctionConfigEnabled}
|
||||
|
||||
+1
-2
@@ -175,12 +175,11 @@ 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