Compare commits

..
Author SHA1 Message Date
c0fef0be08 i18n - translations (#19762)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-16 15:14:16 +02:00
Abdul RahmanandGitHub 270069c3e3 Add search to Fields dropdown (#19750)
Issue link:
https://discord.com/channels/1130383047699738754/1489198502998315100


https://github.com/user-attachments/assets/7d0a859e-c33e-4f9e-bdb3-5867fc0dd80f
2026-04-16 12:59:01 +00:00
Paul RastoinandGitHub 2413af0ba9 [run-instance-commands] Preserve fast slow sequentiality (#19757)
# Introduction
The command was wrongly running all fast and then all slow ignoring
instance commands segment
Leading to 
```ts
1.23.0_AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceCommand_1776090711153 executed successfully
[Nest] 32679  - 04/16/2026, 1:21:07 PM     LOG [InstanceCommandRunnerService] 1.23.0_DropWorkspaceVersionColumnFastInstanceCommand_1785000000000 executed successfully
[Nest] 32679  - 04/16/2026, 1:21:07 PM     LOG [InstanceCommandRunnerService] 1.22.0_BackfillWorkspaceIdOnIndirectEntitiesSlowInstanceCommand_1775758621018 executed successfully
[Nest] 32679  - 04/16/2026, 1:21:07 PM     LOG [RunInstanceCommandsCommand] Instance commands completed
```

No prod/self host impact as 1.23 hasn't been released yet
2026-04-16 12:14:47 +00:00
2b5b8a8b13 Link command menu items to specific page layout (#19706)
- Add a `pageLayoutId` foreign key to `CommandMenuItem`, allowing
command menu items to be scoped to a specific page layout instead of
being globally available
- Filter command menu items by the current page layout on the frontend.
Items with a `pageLayoutId` only appear when viewing that layout, while
items without one remain globally visible
- Create an effect to track the current page layout ID
- Include a seed example: a "Show Notification" command pinned to the
Star history standalone page layout

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2026-04-16 12:07:36 +00:00
7af82fb6a4 i18n - translations (#19758)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
2026-04-16 13:48:47 +02:00
9beb1ca326 Support Select All for workflow manual triggers (#19734)
## Summary
- Move record fetching and payload building from the enrichment hook
into `TriggerWorkflowVersionEngineCommand`, following the same
component-based pattern as `DeleteRecordsCommand` and
`RestoreRecordsCommand`
- The enrichment hook now only stores workflow metadata (`trigger`,
`availabilityType`, `availabilityObjectMetadataId`); the component uses
`useLazyFetchAllRecords` for exclusion mode (Select All) with full
pagination
- `buildTriggerWorkflowVersionPayloads` is now a pure function accepting
`selectedRecords: ObjectRecord[]` instead of reading from the Jotai
store

Fixes the issue introduced by #19718 which blocked Select All with a
warning toast instead of implementing it.

## Test plan
- [ ] Select individual records → run workflow trigger from command menu
→ works as before
- [ ] Click Select All → run workflow trigger from command menu →
fetches all matching records and runs the workflow
- [ ] Select All with some records deselected → correctly excludes those
records
- [ ] Global workflows (no object context) → run without payload as
before
- [ ] Bulk record triggers → payload wraps records in `{namePlural:
[records]}`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 11:33:03 +00:00
113 changed files with 674 additions and 643 deletions
@@ -2651,6 +2651,7 @@ type CommandMenuItem {
hotKeys: [String!]
conditionalAvailabilityExpression: String
availabilityObjectMetadataId: UUID
pageLayoutId: UUID
applicationId: UUID
createdAt: DateTime!
updatedAt: DateTime!
@@ -4183,6 +4184,7 @@ input CreateCommandMenuItemInput {
conditionalAvailabilityExpression: String
availabilityObjectMetadataId: UUID
payload: JSON
pageLayoutId: UUID
}
input UpdateCommandMenuItemInput {
@@ -4196,6 +4198,7 @@ input UpdateCommandMenuItemInput {
availabilityObjectMetadataId: UUID
engineComponentKey: EngineComponentKey
hotKeys: [String!]
pageLayoutId: UUID
}
input CreateFrontComponentInput {
@@ -2368,6 +2368,7 @@ export interface CommandMenuItem {
hotKeys?: Scalars['String'][]
conditionalAvailabilityExpression?: Scalars['String']
availabilityObjectMetadataId?: Scalars['UUID']
pageLayoutId?: Scalars['UUID']
applicationId?: Scalars['UUID']
createdAt: Scalars['DateTime']
updatedAt: Scalars['DateTime']
@@ -5706,6 +5707,7 @@ export interface CommandMenuItemGenqlSelection{
hotKeys?: boolean | number
conditionalAvailabilityExpression?: boolean | number
availabilityObjectMetadataId?: boolean | number
pageLayoutId?: boolean | number
applicationId?: boolean | number
createdAt?: boolean | number
updatedAt?: boolean | number
@@ -6742,9 +6744,9 @@ update: UpdateLogicFunctionFromSourceInputUpdates}
export interface UpdateLogicFunctionFromSourceInputUpdates {name?: (Scalars['String'] | null),description?: (Scalars['String'] | null),timeoutSeconds?: (Scalars['Float'] | null),sourceHandlerCode?: (Scalars['String'] | null),toolInputSchema?: (Scalars['JSON'] | null),handlerName?: (Scalars['String'] | null),sourceHandlerPath?: (Scalars['String'] | null),isTool?: (Scalars['Boolean'] | null),cronTriggerSettings?: (Scalars['JSON'] | null),databaseEventTriggerSettings?: (Scalars['JSON'] | null),httpRouteTriggerSettings?: (Scalars['JSON'] | null)}
export interface CreateCommandMenuItemInput {workflowVersionId?: (Scalars['UUID'] | null),frontComponentId?: (Scalars['UUID'] | null),engineComponentKey: EngineComponentKey,label: Scalars['String'],icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),hotKeys?: (Scalars['String'][] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null),payload?: (Scalars['JSON'] | null)}
export interface CreateCommandMenuItemInput {workflowVersionId?: (Scalars['UUID'] | null),frontComponentId?: (Scalars['UUID'] | null),engineComponentKey: EngineComponentKey,label: Scalars['String'],icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),hotKeys?: (Scalars['String'][] | null),conditionalAvailabilityExpression?: (Scalars['String'] | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null),payload?: (Scalars['JSON'] | null),pageLayoutId?: (Scalars['UUID'] | null)}
export interface UpdateCommandMenuItemInput {id: Scalars['UUID'],label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null),engineComponentKey?: (EngineComponentKey | null),hotKeys?: (Scalars['String'][] | null)}
export interface UpdateCommandMenuItemInput {id: Scalars['UUID'],label?: (Scalars['String'] | null),icon?: (Scalars['String'] | null),shortLabel?: (Scalars['String'] | null),position?: (Scalars['Float'] | null),isPinned?: (Scalars['Boolean'] | null),availabilityType?: (CommandMenuItemAvailabilityType | null),availabilityObjectMetadataId?: (Scalars['UUID'] | null),engineComponentKey?: (EngineComponentKey | null),hotKeys?: (Scalars['String'][] | null),pageLayoutId?: (Scalars['UUID'] | null)}
export interface CreateFrontComponentInput {id?: (Scalars['UUID'] | null),name: Scalars['String'],description?: (Scalars['String'] | null),sourceComponentPath: Scalars['String'],builtComponentPath: Scalars['String'],componentName: Scalars['String'],builtComponentChecksum: Scalars['String']}
@@ -5334,6 +5334,9 @@ export default {
"availabilityObjectMetadataId": [
3
],
"pageLayoutId": [
3
],
"applicationId": [
3
],
@@ -10666,6 +10669,9 @@ export default {
"payload": [
15
],
"pageLayoutId": [
3
],
"__typename": [
1
]
@@ -10701,6 +10707,9 @@ export default {
"hotKeys": [
1
],
"pageLayoutId": [
3
],
"__typename": [
1
]
File diff suppressed because one or more lines are too long
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Geen rekords wat aan die filterkriteria voldoen, is gevind nie."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Voer {formattedName} uit"
msgid "Running function"
msgstr "Funksie word uitgevoer"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Soek geldeenheid"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Jy het 'n geskeduleerde gemeterde vlakverandering. Wil jy dit kanselleer?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "لم يتم العثور على سجلات تطابق معايير التصفية."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "جارٍ تشغيل {formattedName}"
msgid "Running function"
msgstr "الدالة قيد التشغيل"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "بحث عن العملة"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16357,11 +16354,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "لقد قمت بجدولة تغيير الطبقة المقاسة. هل تريد إلغاؤه؟"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "No s'han trobat registres que coincideixin amb els criteris del filtre."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Executant {formattedName}"
msgid "Running function"
msgstr "Funció en execució"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Cerca moneda"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Has programat un canvi de nivell mesurat. Vols cancel·lar-lo?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Nebyly nalezeny žádné záznamy odpovídající kritériím filtru."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Spouští se {formattedName}"
msgid "Running function"
msgstr "Spouští se funkce"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Vyhledat měnu"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Naplánovali jste změnu úrovně s měřením. Chcete ji zrušit?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Der blev ikke fundet nogen poster, der matcher filterkriterierne."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Kører {formattedName}"
msgid "Running function"
msgstr "Kører funktion"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Søg valuta"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16361,11 +16358,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Du har planlagt et skift til målt niveau. Vil du annullere det?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Es wurden keine Datensätze gefunden, die den Filterkriterien entsprechen."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "{formattedName} wird ausgeführt"
msgid "Running function"
msgstr "Funktion wird ausgeführt"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Währung suchen"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Sie haben eine Änderung des Zählertarifs geplant. Möchten Sie diese abbrechen?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Δεν βρέθηκαν εγγραφές που να αντιστοιχούν στα κριτήρια φιλτραρίσματος."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Εκτελείται {formattedName}"
msgid "Running function"
msgstr "Εκτέλεση λειτουργίας"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Αναζήτηση νομίσματος"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16363,11 +16360,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Έχετε προγραμματίσει αλλαγή βαθμίδας. Θέλετε να την ακυρώσετε;"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10154,6 +10154,7 @@ msgid "No records matching the filter criteria were found."
msgstr "No records matching the filter criteria were found."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12347,11 +12348,6 @@ msgstr "Running {formattedName}"
msgid "Running function"
msgstr "Running function"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr "Running workflows on all records is not yet supported. Please select records manually."
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12601,6 +12597,7 @@ msgstr "Search currency"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16356,11 +16353,6 @@ msgstr "You don't have access to this object."
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "You have scheduled a metered tier change. Do you want to cancel it?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "No se encontraron registros que coincidan con los criterios del filtro."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Ejecutando {formattedName}"
msgid "Running function"
msgstr "Ejecutando función"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Buscar moneda"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16361,11 +16358,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Has programado un cambio de nivel medido. ¿Quieres cancelarlo?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Suodatuskriteerejä vastaavia tietueita ei löytynyt."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Suoritetaan {formattedName}"
msgid "Running function"
msgstr "Suoritetaan funktiota"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Etsi valuutta"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Olet aikatauluttanut mitatun tason muutoksen. Haluatko peruuttaa sen?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Aucun enregistrement correspondant aux critères de filtrage n'a été trouvé."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Exécution de {formattedName}"
msgid "Running function"
msgstr "Exécution de la fonction"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Rechercher la devise"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16361,11 +16358,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Vous avez programmé un changement de niveau mesuré. Voulez-vous l'annuler ?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
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
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "לא נמצאו רשומות התואמות לקריטריוני הסינון."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "מריץ את {formattedName}"
msgid "Running function"
msgstr "מריץ פונקציה"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "חפש מטבע"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "יש לך החלפה מתוכננת של רמות מדידה. האם ברצונך לבטל אותה?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "A szűrési feltételeknek megfelelő rekordok nem találhatók."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "{formattedName} futtatása"
msgid "Running function"
msgstr "Függvény fut"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Pénznem keresése"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Ütemezett egy mérőszint-változtatást. Szeretné törölni?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Non sono stati trovati record che corrispondono ai criteri del filtro."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Esecuzione di {formattedName}"
msgid "Running function"
msgstr "Funzione in esecuzione"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Cerca valuta"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16361,11 +16358,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Hai programmato un cambio di livello misurato. Vuoi annullarlo?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "フィルター条件に一致するレコードは見つかりませんでした。"
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "{formattedName} を実行中"
msgid "Running function"
msgstr "関数を実行中"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "通貨を検索"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "メーター制ティア変更をスケジュールしました。キャンセルしますか?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "필터 기준에 맞는 레코드를 찾을 수 없습니다."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "{formattedName} 실행 중"
msgid "Running function"
msgstr "함수 실행 중"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "통화 검색"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "계획된 계측된 계층 변경이 있습니다. 취소하시겠습니까?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Er zijn geen records gevonden die aan de filtercriteria voldoen."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Voert {formattedName} uit"
msgid "Running function"
msgstr "Functie wordt uitgevoerd"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Valuta zoeken"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16361,11 +16358,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "U heeft een metered tier-verandering ingepland. Wilt u dit annuleren?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Fant ingen oppføringer som samsvarer med filterkriteriene."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Kjører {formattedName}"
msgid "Running function"
msgstr "Kjører funksjon"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Søk etter valuta"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Du har planlagt en endring av målt nivå. Ønsker du å avbryte den?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Nie znaleziono rekordów spełniających kryteria filtru."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Uruchamianie {formattedName}"
msgid "Running function"
msgstr "Uruchamianie funkcji"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Wyszukaj walutę"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Zaplanowałeś zmianę poziomu rozliczeń. Czy chcesz ją anulować?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10154,6 +10154,7 @@ msgid "No records matching the filter criteria were found."
msgstr ""
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12347,11 +12348,6 @@ msgstr ""
msgid "Running function"
msgstr ""
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12601,6 +12597,7 @@ msgstr ""
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16352,11 +16349,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr ""
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Nenhum registro correspondente aos critérios do filtro foi encontrado."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr ""
msgid "Running function"
msgstr "Executando função"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Buscar moeda"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Você agendou uma mudança de faixa medida. Deseja cancelá-la?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Não foram encontrados registos que correspondam aos critérios do filtro."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Executando {formattedName}"
msgid "Running function"
msgstr "A executar função"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Procurar moeda"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Você agendou uma mudança de nível medido. Deseja cancelá-la?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Nu s-au găsit înregistrări care să corespundă criteriilor de filtrare."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Se rulează {formattedName}"
msgid "Running function"
msgstr "Se rulează funcția"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Caută moneda"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Ați programat o schimbare a nivelului măsurat. Doriți să o anulați?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
Binary file not shown.
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Нису пронађени записи који одговарају критеријумима филтера."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Покреће се {formattedName}"
msgid "Running function"
msgstr "Извршавање функције"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Претражите валуту"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Заказали сте промену мерног нивоа. Да ли желите да је откажете?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10161,6 +10161,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Inga poster som matchar filterkriterierna hittades."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12354,11 +12355,6 @@ msgstr "Kör {formattedName}"
msgid "Running function"
msgstr "Funktionen körs"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12610,6 +12606,7 @@ msgstr "Sök valuta"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16367,11 +16364,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Du har planerat ett byte av debiteringsnivå. Vill du avbryta det?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Filtre kriterleriyle eşleşen kayıt bulunamadı."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "{formattedName} çalıştırılıyor"
msgid "Running function"
msgstr "İşlev çalıştırılıyor"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Döviz ara"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Ölçülen seviye değişikliği planladınız. İptal etmek istiyor musunuz?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Не знайдено записів, що відповідають критеріям фільтра."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Виконання {formattedName}"
msgid "Running function"
msgstr "Виконується функція"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Пошук валюти"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16361,11 +16358,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Ви запланували зміну тарифу з лічильником. Ви бажаєте скасувати її?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "Không tìm thấy bản ghi nào khớp với tiêu chí lọc."
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "Đang chạy {formattedName}"
msgid "Running function"
msgstr "Đang chạy hàm"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "Tìm kiếm tiền tệ"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "Bạn đã lên lịch thay đổi cấp đo. Bạn có muốn hủy nó không?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "未找到符合筛选条件的记录。"
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "正在运行 {formattedName}"
msgid "Running function"
msgstr "正在运行函数"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "搜索货币"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "您已安排计量等级更改。您要取消吗?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
+2 -10
View File
@@ -10159,6 +10159,7 @@ msgid "No records matching the filter criteria were found."
msgstr "找不到符合篩選條件的記錄。"
#. js-lingui-id: Ev2r9A
#: src/modules/views/components/ViewFieldsSearchDropdownSection.tsx
#: src/modules/ui/input/components/internal/phone/components/PhoneCountryPickerDropdownSelect.tsx
#: src/modules/ui/input/components/internal/currency/components/CurrencyPickerDropdownSelect.tsx
#: src/modules/object-record/select/components/MultipleSelectDropdown.tsx
@@ -12352,11 +12353,6 @@ msgstr "正在執行 {formattedName}"
msgid "Running function"
msgstr "正在執行函式"
#. js-lingui-id: SoR81K
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "Running workflows on all records is not yet supported. Please select records manually."
msgstr ""
#. js-lingui-id: LTC198
#: src/modules/ai/components/CodeExecutionDisplay.tsx
msgid "Running..."
@@ -12606,6 +12602,7 @@ msgstr "搜尋貨幣"
#: src/modules/side-panel/pages/page-layout/components/dropdown-content/ChartFieldSelectionForAggregateOperationDropdownContent.tsx
#: src/modules/object-record/object-sort-dropdown/components/ObjectSortDropdownButton.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownRecordGroupFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownFieldsContent.tsx
#: src/modules/object-record/object-options-dropdown/components/ObjectOptionsDropdownCalendarFieldsContent.tsx
#: src/modules/object-record/advanced-filter/components/AdvancedFilterFieldSelectSearchInput.tsx
msgid "Search fields"
@@ -16359,11 +16356,6 @@ msgstr ""
msgid "You have scheduled a metered tier change. Do you want to cancel it?"
msgstr "您已排定一個計量層級變更。您想取消它嗎?"
#. js-lingui-id: qXzOWu
#: src/modules/command-menu-item/engine-command/hooks/useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation.ts
msgid "You selected {selectedCountFormatted} records but manual triggers can run on at most {limitFormatted} records at once. Only the first {limitFormatted} records will be processed."
msgstr ""
#. js-lingui-id: z8eKS7
#: src/modules/settings/billing/hooks/useBillingWording.ts
msgid "you will be charged ${enterprisePrice} per user per month"
@@ -32,6 +32,7 @@ import { useResetFocusStackToFocusItem } from '@/ui/utilities/focus/hooks/useRes
import { FocusComponentType } from '@/ui/utilities/focus/types/FocusComponentType';
import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { currentPageLayoutIdState } from '@/page-layout/states/currentPageLayoutIdState';
import { useStore } from 'jotai';
import { useCallback, useEffect, useState } from 'react';
import {
@@ -44,6 +45,7 @@ import { AppBasePath, AppPath, SidePanelPages } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { AnalyticsType } from '~/generated-metadata/graphql';
import { usePageChangeEffectNavigateLocation } from '~/hooks/usePageChangeEffectNavigateLocation';
import { getPageLayoutIdForLocation } from '~/modules/app/utils/getPageLayoutIdForLocation';
import { useInitializeQueryParamState } from '~/modules/app/hooks/useInitializeQueryParamState';
import { isMatchingLocation } from '~/utils/isMatchingLocation';
import { getPageTitleFromPath } from '~/utils/title-utils';
@@ -146,10 +148,15 @@ export const PageChangeEffect = () => {
if (!previousLocation || previousLocation !== location.pathname) {
setPreviousLocation(location.pathname);
executeTasksOnAnyLocationChange();
} else {
return;
const newPageLayoutId = getPageLayoutIdForLocation({
location,
store,
});
store.set(currentPageLayoutIdState.atom, newPageLayoutId);
}
}, [location, previousLocation, executeTasksOnAnyLocationChange]);
}, [location, previousLocation, executeTasksOnAnyLocationChange, store]);
useEffect(() => {
initializeQueryParamState();
@@ -0,0 +1,59 @@
import { type getDefaultStore } from 'jotai';
import { type Location, matchPath } from 'react-router-dom';
import { AppPath, CoreObjectNameSingular } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { recordPageLayoutByObjectMetadataIdFamilySelector } from '@/page-layout/states/selectors/recordPageLayoutByObjectMetadataIdFamilySelector';
import { getDefaultRecordPageLayoutId } from '@/page-layout/utils/getDefaultRecordPageLayoutId';
const DASHBOARD_NAME_SINGULAR = CoreObjectNameSingular.Dashboard;
export const getPageLayoutIdForLocation = ({
location,
store,
}: {
location: Location;
store: ReturnType<typeof getDefaultStore>;
}): string | null => {
const recordShowMatch = matchPath(AppPath.RecordShowPage, location.pathname);
if (isDefined(recordShowMatch?.params.objectNameSingular)) {
const objectNameSingular = recordShowMatch.params.objectNameSingular;
if (objectNameSingular === DASHBOARD_NAME_SINGULAR) {
return null;
}
const objectMetadataItem = store.get(
objectMetadataItemFamilySelector.selectorFamily({
objectName: objectNameSingular,
objectNameType: 'singular',
}),
);
if (!isDefined(objectMetadataItem)) {
return null;
}
const recordPageLayout = store.get(
recordPageLayoutByObjectMetadataIdFamilySelector.selectorFamily({
objectMetadataId: objectMetadataItem.id,
}),
);
return isDefined(recordPageLayout)
? recordPageLayout.id
: getDefaultRecordPageLayoutId({
targetObjectNameSingular: objectNameSingular,
});
}
const pageLayoutMatch = matchPath(AppPath.PageLayoutPage, location.pathname);
if (isDefined(pageLayoutMatch?.params.pageLayoutId)) {
return pageLayoutMatch.params.pageLayoutId;
}
return null;
};
@@ -5,7 +5,9 @@ import { PinnedCommandMenuItemButtons } from '@/command-menu-item/display/compon
import { CommandMenuItemEditButton } from '@/command-menu-item/edit/components/CommandMenuItemEditButton';
import { commandMenuItemsSelector } from '@/command-menu-item/states/commandMenuItemsSelector';
import { doesCommandMenuItemMatchObjectMetadataId } from '@/command-menu-item/utils/doesCommandMenuItemMatchObjectMetadataId';
import { doesCommandMenuItemMatchPageLayoutId } from '@/command-menu-item/utils/doesCommandMenuItemMatchPageLayoutId';
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
import { currentPageLayoutIdState } from '@/page-layout/states/currentPageLayoutIdState';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useStore } from 'jotai';
import { useMemo } from 'react';
@@ -22,6 +24,7 @@ export const StandalonePageCommandMenu = () => {
const isMobile = useIsMobile();
const commandMenuItems = useAtomStateValue(commandMenuItemsSelector);
const currentWorkspace = useAtomStateValue(currentWorkspaceState);
const currentPageLayoutId = useAtomStateValue(currentPageLayoutIdState);
const { objectMetadataItems } = useObjectMetadataItems();
const commandMenuContextApi = useMemo<CommandMenuContextApi>(() => {
@@ -83,6 +86,7 @@ export const StandalonePageCommandMenu = () => {
item.availabilityType !==
CommandMenuItemAvailabilityType.GLOBAL_OBJECT_CONTEXT,
)
.filter(doesCommandMenuItemMatchPageLayoutId(currentPageLayoutId))
.filter((item) =>
evaluateConditionalAvailabilityExpression(
item.conditionalAvailabilityExpression,
@@ -92,7 +96,7 @@ export const StandalonePageCommandMenu = () => {
.sort(
(firstItem, secondItem) => firstItem.position - secondItem.position,
);
}, [commandMenuItems, commandMenuContextApi]);
}, [commandMenuItems, commandMenuContextApi, currentPageLayoutId]);
return (
<CommandMenuContext.Provider
@@ -4,7 +4,9 @@ import {
} from '@/command-menu-item/contexts/CommandMenuContext';
import { commandMenuItemsSelector } from '@/command-menu-item/states/commandMenuItemsSelector';
import { doesCommandMenuItemMatchObjectMetadataId } from '@/command-menu-item/utils/doesCommandMenuItemMatchObjectMetadataId';
import { doesCommandMenuItemMatchPageLayoutId } from '@/command-menu-item/utils/doesCommandMenuItemMatchPageLayoutId';
import { doesCommandMenuItemMatchPageType } from '@/command-menu-item/utils/doesCommandMenuItemMatchPageType';
import { currentPageLayoutIdState } from '@/page-layout/states/currentPageLayoutIdState';
import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
import { useMemo } from 'react';
import { type CommandMenuContextApi } from 'twenty-shared/types';
@@ -24,6 +26,7 @@ export const CommandMenuContextProviderContent = ({
commandMenuContextApi,
}: CommandMenuContextProviderContentProps) => {
const commandMenuItems = useAtomStateValue(commandMenuItemsSelector);
const currentPageLayoutId = useAtomStateValue(currentPageLayoutIdState);
const filteredCommandMenuItems = useMemo(() => {
const currentObjectMetadataItemId =
@@ -34,6 +37,7 @@ export const CommandMenuContextProviderContent = ({
doesCommandMenuItemMatchObjectMetadataId(currentObjectMetadataItemId),
)
.filter(doesCommandMenuItemMatchPageType(commandMenuContextApi.pageType))
.filter(doesCommandMenuItemMatchPageLayoutId(currentPageLayoutId))
.filter((item) =>
evaluateConditionalAvailabilityExpression(
item.conditionalAvailabilityExpression,
@@ -43,7 +47,7 @@ export const CommandMenuContextProviderContent = ({
.sort(
(firstItem, secondItem) => firstItem.position - secondItem.position,
);
}, [commandMenuItems, commandMenuContextApi]);
}, [commandMenuItems, commandMenuContextApi, currentPageLayoutId]);
return (
<CommandMenuContext.Provider
@@ -126,6 +126,7 @@ export const PinnedCommandMenuItemButtonsEditMode = () => {
shortLabel,
Icon,
}}
disabled
/>
</StyledCommandMenuItemContainer>
);
@@ -9,8 +9,6 @@ import {
} from '~/generated-metadata/graphql';
const mockFindOneWorkflowVersion = jest.fn();
const mockEnqueueWarningSnackBar = jest.fn();
const mockBuildTriggerWorkflowVersionPayloads = jest.fn();
jest.mock('@/object-record/hooks/useLazyFindOneRecord', () => ({
useLazyFindOneRecord: () => ({
@@ -18,20 +16,6 @@ jest.mock('@/object-record/hooks/useLazyFindOneRecord', () => ({
}),
}));
jest.mock('@/ui/feedback/snack-bar-manager/hooks/useSnackBar', () => ({
useSnackBar: () => ({
enqueueWarningSnackBar: mockEnqueueWarningSnackBar,
}),
}));
jest.mock(
'@/command-menu-item/engine-command/utils/buildTriggerWorkflowVersionPayloads',
() => ({
buildTriggerWorkflowVersionPayloads: (...args: unknown[]) =>
mockBuildTriggerWorkflowVersionPayloads(...args),
}),
);
const getWrapper =
(store = createStore()) =>
({ children }: { children: ReactNode }) => (
@@ -58,7 +42,7 @@ describe('useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformatio
jest.clearAllMocks();
});
it('should return enriched context API with workflow info and payloads', async () => {
it('should return enriched context with workflow metadata', async () => {
const store = createStore();
const wrapper = getWrapper(store);
@@ -75,9 +59,6 @@ describe('useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformatio
},
);
const expectedPayloads = [{ recordId: 'rec-1' }];
mockBuildTriggerWorkflowVersionPayloads.mockReturnValue(expectedPayloads);
const { result } = renderHook(
() =>
useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation(),
@@ -94,7 +75,8 @@ describe('useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformatio
{
headlessEngineCommandContextApi,
workflowVersionId: 'wf-version-1',
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
availabilityObjectMetadataId: 'obj-1',
},
);
});
@@ -103,7 +85,9 @@ describe('useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformatio
...headlessEngineCommandContextApi,
workflowId: 'workflow-1',
workflowVersionId: 'wf-version-1',
payloads: expectedPayloads,
trigger: { type: 'MANUAL' },
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
availabilityObjectMetadataId: 'obj-1',
});
});
@@ -134,99 +118,4 @@ describe('useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformatio
expect(enrichedResult).toBeUndefined();
});
it('should return undefined for RECORD_SELECTION type when payloads are empty', async () => {
const store = createStore();
const wrapper = getWrapper(store);
const workflowVersionRecord = {
id: 'wf-version-1',
workflowId: 'workflow-1',
trigger: { type: 'MANUAL' },
__typename: 'WorkflowVersion' as const,
};
mockFindOneWorkflowVersion.mockImplementation(
async ({ onCompleted }: { onCompleted: (data: unknown) => void }) => {
onCompleted(workflowVersionRecord);
},
);
mockBuildTriggerWorkflowVersionPayloads.mockReturnValue([]);
const { result } = renderHook(
() =>
useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation(),
{ wrapper },
);
let enrichedResult: unknown;
await act(async () => {
enrichedResult =
await result.current.enrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation(
{
headlessEngineCommandContextApi: buildBaseContextApi(),
workflowVersionId: 'wf-version-1',
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
},
);
});
expect(enrichedResult).toBeUndefined();
});
it('should show warning snackbar when selected records exceed QUERY_MAX_RECORDS', async () => {
const store = createStore();
const wrapper = getWrapper(store);
const workflowVersionRecord = {
id: 'wf-version-1',
workflowId: 'workflow-1',
trigger: { type: 'MANUAL' },
__typename: 'WorkflowVersion' as const,
};
mockFindOneWorkflowVersion.mockImplementation(
async ({ onCompleted }: { onCompleted: (data: unknown) => void }) => {
onCompleted(workflowVersionRecord);
},
);
mockBuildTriggerWorkflowVersionPayloads.mockReturnValue([
{ recordId: 'rec-1' },
]);
const selectedRecordIds = Array.from({ length: 201 }, (_, index) =>
String(index),
);
const headlessEngineCommandContextApi = buildBaseContextApi({
targetedRecordsRule: { mode: 'selection', selectedRecordIds },
});
const { result } = renderHook(
() =>
useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation(),
{ wrapper },
);
await act(async () => {
await result.current.enrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation(
{
headlessEngineCommandContextApi,
workflowVersionId: 'wf-version-1',
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
},
);
});
expect(mockEnqueueWarningSnackBar).toHaveBeenCalledWith(
expect.objectContaining({
options: {
dedupeKey: 'workflow-manual-trigger-selection-limit',
},
}),
);
});
});
@@ -84,7 +84,8 @@ describe('useMountCommand', () => {
...baseContextApi,
workflowId: 'workflow-1',
workflowVersionId: 'wf-version-1',
payloads: [{ recordId: 'rec-1' }],
trigger: { type: 'MANUAL' },
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
};
mockEnrichFn.mockResolvedValue(enrichedState);
@@ -4,27 +4,18 @@ import {
type HeadlessCommandContextApi,
type HeadlessEngineCommandContextApi,
} from '@/command-menu-item/engine-command/types/HeadlessCommandContextApi';
import { buildTriggerWorkflowVersionPayloads } from '@/command-menu-item/engine-command/utils/buildTriggerWorkflowVersionPayloads';
import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector';
import { useLazyFindOneRecord } from '@/object-record/hooks/useLazyFindOneRecord';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { type WorkflowVersion } from '@/workflow/types/Workflow';
import { t } from '@lingui/core/macro';
import { useStore } from 'jotai';
import { QUERY_MAX_RECORDS } from 'twenty-shared/constants';
import { CoreObjectNameSingular } from 'twenty-shared/types';
import { isDefined, isNonEmptyArray } from 'twenty-shared/utils';
import {
CommandMenuItemAvailabilityType as CommandMenuItemAvailabilityTypeEnum,
type CommandMenuItemAvailabilityType,
} from '~/generated-metadata/graphql';
import { isDefined } from 'twenty-shared/utils';
import { type CommandMenuItemAvailabilityType } from '~/generated-metadata/graphql';
type WorkflowVersionRecord = Pick<
WorkflowVersion,
'id' | 'workflowId' | 'trigger' | '__typename'
>;
type BuildTriggerWorkflowVersionCommandStateParams = {
type EnrichParams = {
headlessEngineCommandContextApi: HeadlessEngineCommandContextApi;
workflowVersionId: string;
availabilityType: CommandMenuItemAvailabilityType;
@@ -33,9 +24,6 @@ type BuildTriggerWorkflowVersionCommandStateParams = {
export const useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInformation =
() => {
const store = useStore();
const { enqueueWarningSnackBar } = useSnackBar();
const { findOneRecord: findOneWorkflowVersion } =
useLazyFindOneRecord<WorkflowVersionRecord>({
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
@@ -65,76 +53,23 @@ export const useEnrichHeadlessCommandContextApiWithWorkflowVersionTriggerInforma
workflowVersionId,
availabilityType,
availabilityObjectMetadataId,
}: BuildTriggerWorkflowVersionCommandStateParams): Promise<
HeadlessCommandContextApi | undefined
> => {
}: EnrichParams): Promise<HeadlessCommandContextApi | undefined> => {
const workflowVersion = await fetchWorkflowVersion(workflowVersionId);
if (!isDefined(workflowVersion)) {
return undefined;
}
if (
headlessEngineCommandContextApi.targetedRecordsRule.mode ===
'exclusion'
) {
enqueueWarningSnackBar({
message: t`Running workflows on all records is not yet supported. Please select records manually.`,
options: {
dedupeKey: 'workflow-manual-trigger-select-all-not-supported',
},
});
return undefined;
}
const selectedRecordIds =
headlessEngineCommandContextApi.targetedRecordsRule
.selectedRecordIds;
if (selectedRecordIds.length > QUERY_MAX_RECORDS) {
const selectedCountFormatted =
selectedRecordIds.length.toLocaleString();
const limitFormatted = QUERY_MAX_RECORDS.toLocaleString();
enqueueWarningSnackBar({
message: t`You selected ${selectedCountFormatted} records but manual triggers can run on at most ${limitFormatted} records at once. Only the first ${limitFormatted} records will be processed.`,
options: {
dedupeKey: 'workflow-manual-trigger-selection-limit',
},
});
}
const objectMetadataItems = store.get(
objectMetadataItemsSelector.atom,
);
const payloads = buildTriggerWorkflowVersionPayloads({
store,
trigger: workflowVersion.trigger,
availabilityType,
availabilityObjectMetadataId,
objectMetadataItems,
selectedRecordIds,
});
if (
availabilityType ===
CommandMenuItemAvailabilityTypeEnum.RECORD_SELECTION &&
!isNonEmptyArray(payloads)
) {
return undefined;
}
return {
...headlessEngineCommandContextApi,
workflowId: workflowVersion.workflowId,
workflowVersionId: workflowVersion.id,
payloads,
trigger: workflowVersion.trigger,
availabilityType,
availabilityObjectMetadataId,
};
},
[store, fetchWorkflowVersion, enqueueWarningSnackBar],
[fetchWorkflowVersion],
);
return {
@@ -1,23 +1,63 @@
import { HeadlessEngineCommandWrapperEffect } from '@/command-menu-item/engine-command/components/HeadlessEngineCommandWrapperEffect';
import { useHeadlessCommandContextApi } from '@/command-menu-item/engine-command/hooks/useHeadlessCommandContextApi';
import { buildTriggerWorkflowVersionPayloads } from '@/command-menu-item/engine-command/utils/buildTriggerWorkflowVersionPayloads';
import { isHeadlessTriggerWorkflowVersionCommandContextApi } from '@/command-menu-item/engine-command/utils/isHeadlessTriggerWorkflowVersionCommandContextApi';
import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector';
import { DEFAULT_QUERY_PAGE_SIZE } from '@/object-record/constants/DefaultQueryPageSize';
import { useLazyFetchAllRecords } from '@/object-record/hooks/useLazyFetchAllRecords';
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
import { useRunWorkflowVersion } from '@/workflow/hooks/useRunWorkflowVersion';
import { useStore } from 'jotai';
import { useCallback } from 'react';
import {
CoreObjectNameSingular,
type RecordGqlOperationFilter,
} from 'twenty-shared/types';
import { isNonEmptyArray } from 'twenty-shared/utils';
export const TriggerWorkflowVersionEngineCommand = () => {
const mountedCommandState = useHeadlessCommandContextApi();
const store = useStore();
if (!isHeadlessTriggerWorkflowVersionCommandContextApi(mountedCommandState)) {
throw new Error(
'TriggerWorkflowVersionEngineCommand requires a workflow trigger context',
);
}
const noMatchFilter: RecordGqlOperationFilter = { id: { in: [] } };
const { fetchAllRecords } = useLazyFetchAllRecords({
objectNameSingular:
mountedCommandState.objectMetadataItem?.nameSingular ??
CoreObjectNameSingular.Person,
filter: mountedCommandState.graphqlFilter ?? noMatchFilter,
limit: DEFAULT_QUERY_PAGE_SIZE,
});
const { runWorkflowVersion } = useRunWorkflowVersion();
const execute = useCallback(async () => {
if (
!isHeadlessTriggerWorkflowVersionCommandContextApi(mountedCommandState)
) {
return;
let selectedRecords: ObjectRecord[];
if (mountedCommandState.targetedRecordsRule.mode === 'selection') {
selectedRecords = mountedCommandState.selectedRecords;
} else {
selectedRecords = await fetchAllRecords();
}
if (!isNonEmptyArray(mountedCommandState.payloads)) {
const objectMetadataItems = store.get(objectMetadataItemsSelector.atom);
const payloads = buildTriggerWorkflowVersionPayloads({
trigger: mountedCommandState.trigger,
availabilityType: mountedCommandState.availabilityType,
availabilityObjectMetadataId:
mountedCommandState.availabilityObjectMetadataId,
objectMetadataItems,
selectedRecords,
});
if (!isNonEmptyArray(payloads)) {
await runWorkflowVersion({
workflowId: mountedCommandState.workflowId,
workflowVersionId: mountedCommandState.workflowVersionId,
@@ -26,14 +66,14 @@ export const TriggerWorkflowVersionEngineCommand = () => {
return;
}
for (const payload of mountedCommandState.payloads) {
for (const payload of payloads) {
await runWorkflowVersion({
workflowId: mountedCommandState.workflowId,
workflowVersionId: mountedCommandState.workflowVersionId,
payload,
});
}
}, [runWorkflowVersion, mountedCommandState]);
}, [mountedCommandState, fetchAllRecords, runWorkflowVersion, store]);
return <HeadlessEngineCommandWrapperEffect execute={execute} />;
};
@@ -1,11 +1,13 @@
import { type ContextStoreTargetedRecordsRule } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState';
import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem';
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
import { type WorkflowTrigger } from '@/workflow/types/Workflow';
import {
type Nullable,
type RecordGqlOperationFilter,
} from 'twenty-shared/types';
import {
type CommandMenuItemAvailabilityType,
type EngineComponentKey,
type CommandMenuItemPayload,
} from '~/generated-metadata/graphql';
@@ -31,7 +33,9 @@ export type HeadlessTriggerWorkflowVersionCommandContextApi =
HeadlessEngineCommandContextApi & {
workflowId: string;
workflowVersionId: string;
payloads: Record<string, any>[];
trigger: WorkflowTrigger | null;
availabilityType: CommandMenuItemAvailabilityType;
availabilityObjectMetadataId?: string | null;
};
export type HeadlessCommandContextApi =
@@ -1,6 +1,9 @@
import { type HeadlessCommandContextApi } from '@/command-menu-item/engine-command/types/HeadlessCommandContextApi';
import { isHeadlessTriggerWorkflowVersionCommandContextApi } from '@/command-menu-item/engine-command/utils/isHeadlessTriggerWorkflowVersionCommandContextApi';
import { EngineComponentKey } from '~/generated-metadata/graphql';
import {
CommandMenuItemAvailabilityType,
EngineComponentKey,
} from '~/generated-metadata/graphql';
const baseContextApi: HeadlessCommandContextApi = {
engineComponentKey: EngineComponentKey.CREATE_NEW_RECORD,
@@ -20,7 +23,8 @@ describe('isHeadlessTriggerWorkflowVersionCommandContextApi', () => {
...baseContextApi,
workflowId: 'wf-1',
workflowVersionId: 'wfv-1',
payloads: [],
trigger: null,
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
};
expect(
@@ -1,10 +1,7 @@
import type { Store } from 'jotai/vanilla/store';
import { isBulkRecordsManualTrigger } from '@/command-menu-item/record/utils/isBulkRecordsManualTrigger';
import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem';
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
import { type WorkflowTrigger } from '@/workflow/types/Workflow';
import { QUERY_MAX_RECORDS } from 'twenty-shared/constants';
import { isDefined } from 'twenty-shared/utils';
import {
type CommandMenuItemAvailabilityType,
@@ -12,44 +9,31 @@ import {
} from '~/generated-metadata/graphql';
export const buildTriggerWorkflowVersionPayloads = ({
store,
trigger,
availabilityType,
availabilityObjectMetadataId,
objectMetadataItems,
selectedRecordIds,
selectedRecords,
}: {
store: Store;
trigger: WorkflowTrigger | null;
availabilityType: CommandMenuItemAvailabilityType;
availabilityObjectMetadataId?: string | null;
objectMetadataItems: EnrichedObjectMetadataItem[];
selectedRecordIds: string[];
selectedRecords: ObjectRecord[];
}): Record<string, any>[] => {
const payloads: Record<string, any>[] = [];
switch (availabilityType) {
case CommandMenuItemAvailabilityTypeEnum.RECORD_SELECTION: {
if (selectedRecordIds.length === 0) {
if (selectedRecords.length === 0) {
return payloads;
}
const limitedSelectedRecordIds = selectedRecordIds.slice(
0,
QUERY_MAX_RECORDS,
);
const objectMetadataItem = objectMetadataItems.find(
(metadata) => metadata.id === availabilityObjectMetadataId,
);
if (isDefined(trigger) && isBulkRecordsManualTrigger(trigger)) {
const selectedRecords = limitedSelectedRecordIds
.map((recordId) =>
store.get(recordStoreFamilyState.atomFamily(recordId)),
)
.filter(isDefined);
if (isDefined(objectMetadataItem)) {
payloads.push({
[objectMetadataItem.namePlural]: selectedRecords,
@@ -59,15 +43,7 @@ export const buildTriggerWorkflowVersionPayloads = ({
return payloads;
}
for (const selectedRecordId of limitedSelectedRecordIds) {
const selectedRecord = store.get(
recordStoreFamilyState.atomFamily(selectedRecordId),
);
if (!isDefined(selectedRecord)) {
continue;
}
for (const selectedRecord of selectedRecords) {
payloads.push(selectedRecord);
}
@@ -28,5 +28,6 @@ export const COMMAND_MENU_ITEM_FRAGMENT = gql`
conditionalAvailabilityExpression
availabilityType
availabilityObjectMetadataId
pageLayoutId
}
`;
@@ -0,0 +1,6 @@
import { isDefined } from 'twenty-shared/utils';
import { type CommandMenuItemFieldsFragment } from '~/generated-metadata/graphql';
export const doesCommandMenuItemMatchPageLayoutId =
(pageLayoutId: string | null) => (item: CommandMenuItemFieldsFragment) =>
!isDefined(item.pageLayoutId) || item.pageLayoutId === pageLayoutId;
@@ -3,14 +3,20 @@ import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent
import { DropdownMenuHeader } from '@/ui/layout/dropdown/components/DropdownMenuHeader/DropdownMenuHeader';
import { DropdownMenuHeaderLeftComponent } from '@/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/DropdownMenuSearchInput';
import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator';
import { ViewFieldsSearchDropdownSection } from '@/views/components/ViewFieldsSearchDropdownSection';
import { ViewFieldsVisibleDropdownSection } from '@/views/components/ViewFieldsVisibleDropdownSection';
import { useLingui } from '@lingui/react/macro';
import { isNonEmptyString } from '@sniptt/guards';
import { useState } from 'react';
import { IconChevronLeft, IconEyeOff } from 'twenty-ui/display';
import { MenuItemNavigate } from 'twenty-ui/navigation';
export const ObjectOptionsDropdownFieldsContent = () => {
const { t } = useLingui();
const [searchInput, setSearchInput] = useState('');
const { onContentChange, resetContent } = useObjectOptionsDropdown();
return (
@@ -25,15 +31,28 @@ export const ObjectOptionsDropdownFieldsContent = () => {
>
{t`Fields`}
</DropdownMenuHeader>
<ViewFieldsVisibleDropdownSection />
<DropdownMenuSearchInput
autoFocus
value={searchInput}
placeholder={t`Search fields`}
onChange={(event) => setSearchInput(event.target.value)}
/>
<DropdownMenuSeparator />
<DropdownMenuItemsContainer scrollable={false}>
<MenuItemNavigate
onClick={() => onContentChange('hiddenFields')}
LeftIcon={IconEyeOff}
text={t`Hidden Fields`}
/>
</DropdownMenuItemsContainer>
{isNonEmptyString(searchInput) ? (
<ViewFieldsSearchDropdownSection searchInput={searchInput} />
) : (
<>
<ViewFieldsVisibleDropdownSection />
<DropdownMenuSeparator />
<DropdownMenuItemsContainer scrollable={false}>
<MenuItemNavigate
onClick={() => onContentChange('hiddenFields')}
LeftIcon={IconEyeOff}
text={t`Hidden Fields`}
/>
</DropdownMenuItemsContainer>
</>
)}
</DropdownContent>
);
};
@@ -95,7 +95,9 @@ export const useSetIsPageLayoutInEditMode = (pageLayoutIdFromProps: string) => {
store.set(contextStoreIsFullTabWidgetInEditModeState, value);
store.set(currentPageLayoutIdState.atom, value ? pageLayoutId : null);
if (value) {
store.set(currentPageLayoutIdState.atom, pageLayoutId);
}
},
[
isDashboardInEditModeState,
@@ -0,0 +1,101 @@
import { useActiveFieldMetadataItems } from '@/object-metadata/hooks/useActiveFieldMetadataItems';
import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem';
import { useObjectOptionsForBoard } from '@/object-record/object-options-dropdown/hooks/useObjectOptionsForBoard';
import { ObjectOptionsDropdownContext } from '@/object-record/object-options-dropdown/states/contexts/ObjectOptionsDropdownContext';
import { useChangeRecordFieldVisibility } from '@/object-record/record-field/hooks/useChangeRecordFieldVisibility';
import { visibleRecordFieldsComponentSelector } from '@/object-record/record-field/states/visibleRecordFieldsComponentSelector';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { useAtomComponentSelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentSelectorValue';
import { ViewType } from '@/views/types/ViewType';
import { useLingui } from '@lingui/react/macro';
import { useContext } from 'react';
import { IconEye, IconEyeOff, useIcons } from 'twenty-ui/display';
import { MenuItem } from 'twenty-ui/navigation';
type ViewFieldsSearchDropdownSectionProps = {
searchInput: string;
};
export const ViewFieldsSearchDropdownSection = ({
searchInput,
}: ViewFieldsSearchDropdownSectionProps) => {
const { t } = useLingui();
const { getIcon } = useIcons();
const { viewType, objectMetadataItem, recordIndexId } = useContext(
ObjectOptionsDropdownContext,
);
const { changeRecordFieldVisibility } =
useChangeRecordFieldVisibility(recordIndexId);
const { handleBoardFieldVisibilityChange } = useObjectOptionsForBoard({
objectNameSingular: objectMetadataItem.nameSingular,
recordBoardId: recordIndexId,
viewBarId: recordIndexId,
});
const handleChangeFieldVisibility =
viewType === ViewType.KANBAN
? handleBoardFieldVisibilityChange
: changeRecordFieldVisibility;
const { activeFieldMetadataItems } = useActiveFieldMetadataItems({
objectMetadataItem,
});
const visibleRecordFields = useAtomComponentSelectorValue(
visibleRecordFieldsComponentSelector,
);
const visibleFieldIds = new Set(
visibleRecordFields.map((recordField) => recordField.fieldMetadataItemId),
);
const fieldMetadataItemLabelIdentifier =
getLabelIdentifierFieldMetadataItem(objectMetadataItem);
const filteredFields = activeFieldMetadataItems.filter(
(fieldMetadataItem) => {
return fieldMetadataItem.label
.toLowerCase()
.includes(searchInput.toLowerCase());
},
);
return (
<DropdownMenuItemsContainer>
{filteredFields.length > 0 ? (
filteredFields.map((fieldMetadataItem) => {
const isVisible = visibleFieldIds.has(fieldMetadataItem.id);
const isLabelIdentifier =
fieldMetadataItem.id === fieldMetadataItemLabelIdentifier?.id;
return (
<MenuItem
key={fieldMetadataItem.id}
LeftIcon={getIcon(fieldMetadataItem.icon)}
iconButtons={
isLabelIdentifier
? undefined
: [
{
Icon: isVisible ? IconEyeOff : IconEye,
onClick: () =>
handleChangeFieldVisibility({
fieldMetadataId: fieldMetadataItem.id,
isVisible: !isVisible,
}),
},
]
}
text={fieldMetadataItem.label}
/>
);
})
) : (
<MenuItem text={t`No results`} />
)}
</DropdownMenuItemsContainer>
);
};
@@ -9,6 +9,7 @@ import { TWENTY_PREVIOUS_VERSIONS } from 'src/engine/core-modules/upgrade/consta
import { InstanceCommandRunnerService } from 'src/engine/core-modules/upgrade/services/instance-command-runner.service';
import { UpgradeCommandRegistryService } from 'src/engine/core-modules/upgrade/services/upgrade-command-registry.service';
import { UpgradeMigrationService } from 'src/engine/core-modules/upgrade/services/upgrade-migration.service';
import { UpgradeSequenceReaderService } from 'src/engine/core-modules/upgrade/services/upgrade-sequence-reader.service';
import { WorkspaceVersionService } from 'src/engine/workspace-manager/workspace-version/services/workspace-version.service';
type RunInstanceCommandsOptions = {
@@ -30,6 +31,7 @@ export class RunInstanceCommandsCommand extends CommandRunner {
private readonly dataSource: DataSource,
private readonly workspaceVersionService: WorkspaceVersionService,
private readonly upgradeCommandRegistryService: UpgradeCommandRegistryService,
private readonly upgradeSequenceReaderService: UpgradeSequenceReaderService,
private readonly instanceUpgradeService: InstanceCommandRunnerService,
private readonly upgradeMigrationService: UpgradeMigrationService,
) {
@@ -65,31 +67,26 @@ export class RunInstanceCommandsCommand extends CommandRunner {
const activeOrSuspendedWorkspaceIds =
await this.workspaceVersionService.getActiveOrSuspendedWorkspaceIds();
for (const {
command,
name,
} of this.upgradeCommandRegistryService.getCrossUpgradeSupportedFastInstanceCommands()) {
const result = await this.instanceUpgradeService.runFastInstanceCommand(
{
command,
name,
},
);
const sequence = this.upgradeSequenceReaderService.getUpgradeSequence();
if (result.status === 'failed') {
throw result.error;
for (const step of sequence) {
if (step.kind === 'fast-instance') {
const result =
await this.instanceUpgradeService.runFastInstanceCommand({
command: step.command,
name: step.name,
});
if (result.status === 'failed') {
throw result.error;
}
}
}
if (options.includeSlow) {
for (const {
command,
name,
} of this.upgradeCommandRegistryService.getCrossUpgradeSupportedSlowInstanceCommands()) {
if (step.kind === 'slow-instance' && options.includeSlow) {
const result =
await this.instanceUpgradeService.runSlowInstanceCommand({
command,
name,
command: step.command,
name: step.name,
skipDataMigration: activeOrSuspendedWorkspaceIds.length === 0,
});
@@ -238,6 +238,8 @@ export class RefactorNavigationCommandsCommand extends ActiveOrSuspendedWorkspac
workflowVersionId: null,
availabilityObjectMetadataId: null,
availabilityObjectMetadataUniversalIdentifier: null,
pageLayoutId: null,
pageLayoutUniversalIdentifier: null,
createdAt: now,
updatedAt: now,
});
@@ -0,0 +1,33 @@
import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('1.23.0', 1776168404836)
export class AddPageLayoutIdToCommandMenuItemFastInstanceCommand
implements FastInstanceCommand
{
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
'ALTER TABLE "core"."commandMenuItem" ADD "pageLayoutId" uuid',
);
await queryRunner.query(
'CREATE INDEX "IDX_COMMAND_MENU_ITEM_PAGE_LAYOUT_ID_WORKSPACE_ID" ON "core"."commandMenuItem" ("pageLayoutId", "workspaceId") ',
);
await queryRunner.query(
'ALTER TABLE "core"."commandMenuItem" ADD CONSTRAINT "FK_8577be6253969364b6725b807b4" FOREIGN KEY ("pageLayoutId") REFERENCES "core"."pageLayout"("id") ON DELETE CASCADE ON UPDATE NO ACTION',
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
'ALTER TABLE "core"."commandMenuItem" DROP CONSTRAINT "FK_8577be6253969364b6725b807b4"',
);
await queryRunner.query(
'DROP INDEX "core"."IDX_COMMAND_MENU_ITEM_PAGE_LAYOUT_ID_WORKSPACE_ID"',
);
await queryRunner.query(
'ALTER TABLE "core"."commandMenuItem" DROP COLUMN "pageLayoutId"',
);
}
}
@@ -13,6 +13,7 @@ import { AddCreditBalanceToBillingCustomerFastInstanceCommand } from 'src/databa
import { BackfillWorkspaceIdOnIndirectEntitiesSlowInstanceCommand } from 'src/database/commands/upgrade-version-command/1-22/1-22-instance-command-slow-1775758621018-backfill-workspace-id-on-indirect-entities';
import { DropWorkspaceVersionColumnFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1785000000000-drop-workspace-version-column';
import { AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1776090711153-add-global-object-context-to-command-menu-item-availability-type';
import { AddPageLayoutIdToCommandMenuItemFastInstanceCommand } from 'src/database/commands/upgrade-version-command/1-23/1-23-instance-command-fast-1776168404836-add-page-layout-id-to-command-menu-item';
export const INSTANCE_COMMANDS = [
AddViewFieldGroupIdIndexOnViewFieldFastInstanceCommand,
@@ -28,4 +29,5 @@ export const INSTANCE_COMMANDS = [
AddCreditBalanceToBillingCustomerFastInstanceCommand,
DropWorkspaceVersionColumnFastInstanceCommand,
AddGlobalObjectContextToCommandMenuItemAvailabilityTypeFastInstanceCommand,
AddPageLayoutIdToCommandMenuItemFastInstanceCommand,
];
@@ -44,6 +44,7 @@ export const fromCommandMenuItemManifestToUniversalFlatCommandMenuItem = ({
payload: null,
hotKeys: null,
workflowVersionId: null,
pageLayoutUniversalIdentifier: null,
createdAt: now,
updatedAt: now,
};
@@ -283,10 +283,10 @@ export class UpgradeMigrationService {
return completedCount === workspaceIds.length;
}
async getLastAttemptedInstanceCommandOrThrow(): Promise<{
async getLastAttemptedInstanceCommand(): Promise<{
name: string;
status: UpgradeMigrationStatus;
}> {
} | null> {
const migration = await this.upgradeMigrationRepository
.createQueryBuilder('migration')
.select(['migration.name', 'migration.status'])
@@ -304,11 +304,24 @@ export class UpgradeMigrationService {
.getOne();
if (!migration) {
return null;
}
return { name: migration.name, status: migration.status };
}
async getLastAttemptedInstanceCommandOrThrow(): Promise<{
name: string;
status: UpgradeMigrationStatus;
}> {
const result = await this.getLastAttemptedInstanceCommand();
if (!result) {
throw new Error(
'No instance command found — the database may not have been initialized',
);
}
return { name: migration.name, status: migration.status };
return result;
}
}
@@ -97,11 +97,19 @@ export class CommandMenuItemService {
input: CreateCommandMenuItemInput,
workspaceId: string,
): Promise<CommandMenuItemDTO> {
const { flatObjectMetadataMaps, flatFrontComponentMaps } =
const {
flatObjectMetadataMaps,
flatFrontComponentMaps,
flatPageLayoutMaps,
} =
await this.workspaceManyOrAllFlatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatMapsKeys: ['flatObjectMetadataMaps', 'flatFrontComponentMaps'],
flatMapsKeys: [
'flatObjectMetadataMaps',
'flatFrontComponentMaps',
'flatPageLayoutMaps',
],
},
);
@@ -117,6 +125,7 @@ export class CommandMenuItemService {
flatApplication: workspaceCustomFlatApplication,
flatObjectMetadataMaps,
flatFrontComponentMaps,
flatPageLayoutMaps,
});
const validateAndBuildResult =
@@ -171,19 +180,24 @@ export class CommandMenuItemService {
const {
flatCommandMenuItemMaps: existingFlatCommandMenuItemMaps,
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
} =
await this.workspaceManyOrAllFlatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatMapsKeys: ['flatCommandMenuItemMaps', 'flatObjectMetadataMaps'],
},
);
flatPageLayoutMaps: existingFlatPageLayoutMaps,
} = await this.workspaceManyOrAllFlatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatMapsKeys: [
'flatCommandMenuItemMaps',
'flatObjectMetadataMaps',
'flatPageLayoutMaps',
],
},
);
const flatCommandMenuItemToUpdate =
fromUpdateCommandMenuItemInputToFlatCommandMenuItemToUpdateOrThrow({
flatCommandMenuItemMaps: existingFlatCommandMenuItemMaps,
updateCommandMenuItemInput: input,
flatObjectMetadataMaps: existingFlatObjectMetadataMaps,
flatPageLayoutMaps: existingFlatPageLayoutMaps,
});
const validateAndBuildResult =
@@ -91,6 +91,11 @@ export class CommandMenuItemDTO {
@Field(() => UUIDScalarType, { nullable: true })
availabilityObjectMetadataId?: string;
@IsUUID()
@IsOptional()
@Field(() => UUIDScalarType, { nullable: true })
pageLayoutId?: string;
@HideField()
workspaceId: string;
@@ -83,4 +83,9 @@ export class CreateCommandMenuItemInput {
@IsOptional()
@Field(() => GraphQLJSON, { nullable: true })
payload?: CommandMenuItemPayload;
@IsUUID()
@IsOptional()
@Field(() => UUIDScalarType, { nullable: true })
pageLayoutId?: string;
}
@@ -65,4 +65,9 @@ export class UpdateCommandMenuItemInput {
@IsOptional()
@Field(() => [String], { nullable: true })
hotKeys?: string[];
@IsUUID()
@IsOptional()
@Field(() => UUIDScalarType, { nullable: true })
pageLayoutId?: string;
}
@@ -16,6 +16,7 @@ import { CommandMenuItemAvailabilityType } from 'src/engine/metadata-modules/com
import { EngineComponentKey } from 'src/engine/metadata-modules/command-menu-item/enums/engine-component-key.enum';
import { FrontComponentEntity } from 'src/engine/metadata-modules/front-component/entities/front-component.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface';
@Entity({ name: 'commandMenuItem', schema: 'core' })
@@ -30,6 +31,10 @@ import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-enti
@Index('IDX_COMMAND_MENU_ITEM_AVAILABILITY_OBJECT_METADATA_ID', [
'availabilityObjectMetadataId',
])
@Index('IDX_COMMAND_MENU_ITEM_PAGE_LAYOUT_ID_WORKSPACE_ID', [
'pageLayoutId',
'workspaceId',
])
@Check(
'CHK_CMD_MENU_ITEM_ENGINE_KEY_COHERENCE',
`("engineComponentKey" = 'TRIGGER_WORKFLOW_VERSION' AND "workflowVersionId" IS NOT NULL AND "frontComponentId" IS NULL AND "payload" IS NULL) OR ("engineComponentKey" = 'FRONT_COMPONENT_RENDERER' AND "frontComponentId" IS NOT NULL AND "workflowVersionId" IS NULL AND "payload" IS NULL) OR ("engineComponentKey" = 'NAVIGATION' AND "payload" IS NOT NULL AND "workflowVersionId" IS NULL AND "frontComponentId" IS NULL) OR ("engineComponentKey" NOT IN ('TRIGGER_WORKFLOW_VERSION', 'FRONT_COMPONENT_RENDERER', 'NAVIGATION') AND "workflowVersionId" IS NULL AND "frontComponentId" IS NULL AND "payload" IS NULL)`,
@@ -99,6 +104,16 @@ export class CommandMenuItemEntity
@JoinColumn({ name: 'availabilityObjectMetadataId' })
availabilityObjectMetadata: Relation<ObjectMetadataEntity> | null;
@Column({ nullable: true, type: 'uuid' })
pageLayoutId: string | null;
@ManyToOne(() => PageLayoutEntity, {
onDelete: 'CASCADE',
nullable: true,
})
@JoinColumn({ name: 'pageLayoutId' })
pageLayout: Relation<PageLayoutEntity> | null;
@CreateDateColumn({ type: 'timestamptz' })
createdAt: Date;
@@ -10,4 +10,5 @@ export const FLAT_COMMAND_MENU_ITEM_EDITABLE_PROPERTIES = [
'availabilityType',
'availabilityObjectMetadataId',
'engineComponentKey',
'pageLayoutId',
] as const satisfies MetadataEntityPropertyName<'commandMenuItem'>[];
@@ -7,6 +7,7 @@ import { WorkspaceFlatCommandMenuItemMapCacheService } from 'src/engine/metadata
import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module';
import { FrontComponentEntity } from 'src/engine/metadata-modules/front-component/entities/front-component.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
@Module({
imports: [
@@ -15,6 +16,7 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat
ApplicationEntity,
ObjectMetadataEntity,
FrontComponentEntity,
PageLayoutEntity,
]),
WorkspaceManyOrAllFlatEntityMapsCacheModule,
],
@@ -12,6 +12,7 @@ import { fromCommandMenuItemEntityToFlatCommandMenuItem } from 'src/engine/metad
import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant';
import { FrontComponentEntity } from 'src/engine/metadata-modules/front-component/entities/front-component.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity';
import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator';
import { createIdToUniversalIdentifierMap } from 'src/engine/workspace-cache/utils/create-id-to-universal-identifier-map.util';
import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util';
@@ -28,33 +29,45 @@ export class WorkspaceFlatCommandMenuItemMapCacheService extends WorkspaceCacheP
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
@InjectRepository(FrontComponentEntity)
private readonly frontComponentRepository: Repository<FrontComponentEntity>,
@InjectRepository(PageLayoutEntity)
private readonly pageLayoutRepository: Repository<PageLayoutEntity>,
) {
super();
}
async computeForCache(workspaceId: string): Promise<FlatCommandMenuItemMaps> {
const [commandMenuItems, applications, objectMetadatas, frontComponents] =
await Promise.all([
this.commandMenuItemRepository.find({
where: { workspaceId },
withDeleted: true,
}),
this.applicationRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
this.objectMetadataRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
this.frontComponentRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
]);
const [
commandMenuItems,
applications,
objectMetadatas,
frontComponents,
pageLayouts,
] = await Promise.all([
this.commandMenuItemRepository.find({
where: { workspaceId },
withDeleted: true,
}),
this.applicationRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
this.objectMetadataRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
this.frontComponentRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
this.pageLayoutRepository.find({
where: { workspaceId },
select: ['id', 'universalIdentifier'],
withDeleted: true,
}),
]);
const applicationIdToUniversalIdentifierMap =
createIdToUniversalIdentifierMap(applications);
@@ -62,6 +75,8 @@ export class WorkspaceFlatCommandMenuItemMapCacheService extends WorkspaceCacheP
createIdToUniversalIdentifierMap(objectMetadatas);
const frontComponentIdToUniversalIdentifierMap =
createIdToUniversalIdentifierMap(frontComponents);
const pageLayoutIdToUniversalIdentifierMap =
createIdToUniversalIdentifierMap(pageLayouts);
const flatCommandMenuItemMaps = createEmptyFlatEntityMaps();
@@ -72,6 +87,7 @@ export class WorkspaceFlatCommandMenuItemMapCacheService extends WorkspaceCacheP
applicationIdToUniversalIdentifierMap,
objectMetadataIdToUniversalIdentifierMap,
frontComponentIdToUniversalIdentifierMap,
pageLayoutIdToUniversalIdentifierMap,
});
addFlatEntityToFlatEntityMapsThroughMutationOrThrow({
@@ -65,6 +65,8 @@ export const buildNavigationFlatCommandMenuItem = ({
workflowVersionId: null,
availabilityObjectMetadataId: null,
availabilityObjectMetadataUniversalIdentifier: null,
pageLayoutId: null,
pageLayoutUniversalIdentifier: null,
createdAt: now,
updatedAt: now,
};
@@ -12,6 +12,7 @@ export const fromCommandMenuItemEntityToFlatCommandMenuItem = ({
applicationIdToUniversalIdentifierMap,
objectMetadataIdToUniversalIdentifierMap,
frontComponentIdToUniversalIdentifierMap,
pageLayoutIdToUniversalIdentifierMap,
}: FromEntityToFlatEntityArgs<'commandMenuItem'>): FlatCommandMenuItem => {
const applicationUniversalIdentifier =
applicationIdToUniversalIdentifierMap.get(
@@ -57,6 +58,22 @@ export const fromCommandMenuItemEntityToFlatCommandMenuItem = ({
}
}
let pageLayoutUniversalIdentifier: string | null = null;
if (isDefined(commandMenuItemEntity.pageLayoutId)) {
pageLayoutUniversalIdentifier =
pageLayoutIdToUniversalIdentifierMap.get(
commandMenuItemEntity.pageLayoutId,
) ?? null;
if (!isDefined(pageLayoutUniversalIdentifier)) {
throw new FlatEntityMapsException(
`PageLayout with id ${commandMenuItemEntity.pageLayoutId} not found for commandMenuItem ${commandMenuItemEntity.id}`,
FlatEntityMapsExceptionCode.ENTITY_NOT_FOUND,
);
}
}
return {
id: commandMenuItemEntity.id,
workflowVersionId: commandMenuItemEntity.workflowVersionId,
@@ -82,5 +99,7 @@ export const fromCommandMenuItemEntityToFlatCommandMenuItem = ({
commandMenuItemEntity.conditionalAvailabilityExpression,
availabilityObjectMetadataUniversalIdentifier,
frontComponentUniversalIdentifier,
pageLayoutId: commandMenuItemEntity.pageLayoutId,
pageLayoutUniversalIdentifier,
};
};
@@ -14,13 +14,14 @@ export const fromCreateCommandMenuItemInputToFlatCommandMenuItemToCreate = ({
flatApplication,
flatObjectMetadataMaps,
flatFrontComponentMaps,
flatPageLayoutMaps,
}: {
createCommandMenuItemInput: CreateCommandMenuItemInput;
workspaceId: string;
flatApplication: FlatApplication;
} & Pick<
AllFlatEntityMaps,
'flatObjectMetadataMaps' | 'flatFrontComponentMaps'
'flatObjectMetadataMaps' | 'flatFrontComponentMaps' | 'flatPageLayoutMaps'
>): FlatCommandMenuItem => {
const id = uuidv4();
const now = new Date().toISOString();
@@ -28,14 +29,20 @@ export const fromCreateCommandMenuItemInputToFlatCommandMenuItemToCreate = ({
const {
availabilityObjectMetadataUniversalIdentifier,
frontComponentUniversalIdentifier,
pageLayoutUniversalIdentifier,
} = resolveEntityRelationUniversalIdentifiers({
metadataName: 'commandMenuItem',
foreignKeyValues: {
availabilityObjectMetadataId:
createCommandMenuItemInput.availabilityObjectMetadataId,
frontComponentId: createCommandMenuItemInput.frontComponentId,
pageLayoutId: createCommandMenuItemInput.pageLayoutId,
},
flatEntityMaps: {
flatObjectMetadataMaps,
flatFrontComponentMaps,
flatPageLayoutMaps,
},
flatEntityMaps: { flatObjectMetadataMaps, flatFrontComponentMaps },
});
return {
@@ -64,6 +71,8 @@ export const fromCreateCommandMenuItemInputToFlatCommandMenuItemToCreate = ({
conditionalAvailabilityExpression:
createCommandMenuItemInput.conditionalAvailabilityExpression ?? null,
availabilityObjectMetadataUniversalIdentifier,
pageLayoutId: createCommandMenuItemInput.pageLayoutId ?? null,
pageLayoutUniversalIdentifier,
workspaceId,
applicationId: flatApplication.id,
applicationUniversalIdentifier: flatApplication.universalIdentifier,

Some files were not shown because too many files have changed in this diff Show More