@open-mercato/core 0.5.1-develop.2949.009dcdd2d5 → 0.5.1-develop.2954.610bab2d08
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/integration/salesUi.js +25 -23
- package/dist/helpers/integration/salesUi.js.map +2 -2
- package/dist/modules/api_docs/frontend/docs/api/Explorer.js +24 -24
- package/dist/modules/api_docs/frontend/docs/api/Explorer.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentPartitionSettings.js +15 -7
- package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
- package/dist/modules/attachments/fields/attachment.js +4 -6
- package/dist/modules/attachments/fields/attachment.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +63 -23
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/users/create/page.js +26 -26
- package/dist/modules/auth/backend/users/create/page.js.map +2 -2
- package/dist/modules/business_rules/components/ActionRow.js +36 -25
- package/dist/modules/business_rules/components/ActionRow.js.map +2 -2
- package/dist/modules/business_rules/components/ConditionGroup.js +14 -5
- package/dist/modules/business_rules/components/ConditionGroup.js.map +2 -2
- package/dist/modules/business_rules/components/ConditionRow.js +19 -10
- package/dist/modules/business_rules/components/ConditionRow.js.map +2 -2
- package/dist/modules/business_rules/components/RuleSetMembers.js +16 -10
- package/dist/modules/business_rules/components/RuleSetMembers.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js +30 -34
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js +220 -223
- package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
- package/dist/modules/catalog/components/PriceKindSettings.js +20 -19
- package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductUomSection.js +42 -37
- package/dist/modules/catalog/components/products/ProductUomSection.js.map +2 -2
- package/dist/modules/catalog/components/products/VariantBuilder.js +22 -18
- package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +18 -26
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +4 -6
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +5 -4
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
- package/dist/modules/customers/backend/config/customers/pipeline-stages/page.js +19 -7
- package/dist/modules/customers/backend/config/customers/pipeline-stages/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/page.js +24 -21
- package/dist/modules/customers/backend/customers/deals/pipeline/page.js.map +2 -2
- package/dist/modules/customers/components/AddressEditor.js +24 -7
- package/dist/modules/customers/components/AddressEditor.js.map +2 -2
- package/dist/modules/customers/components/AddressFormatSettings.js +35 -25
- package/dist/modules/customers/components/AddressFormatSettings.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivityForm.js +20 -12
- package/dist/modules/customers/components/detail/ActivityForm.js.map +2 -2
- package/dist/modules/customers/components/detail/AnnualRevenueField.js +2 -2
- package/dist/modules/customers/components/detail/AnnualRevenueField.js.map +2 -2
- package/dist/modules/customers/components/detail/DealForm.js +19 -14
- package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
- package/dist/modules/customers/components/formConfig.js +16 -12
- package/dist/modules/customers/components/formConfig.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/customer-todos/widget.client.js +3 -2
- package/dist/modules/customers/widgets/dashboard/customer-todos/widget.client.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/new-customers/widget.client.js +18 -10
- package/dist/modules/customers/widgets/dashboard/new-customers/widget.client.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/new-deals/widget.client.js +3 -2
- package/dist/modules/customers/widgets/dashboard/new-deals/widget.client.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/next-interactions/widget.client.js +3 -2
- package/dist/modules/customers/widgets/dashboard/next-interactions/widget.client.js.map +2 -2
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +27 -28
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.js +14 -6
- package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js +14 -6
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js +3 -2
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js +3 -2
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js +17 -8
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +40 -23
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/components/IntegrationScheduleTab.js +15 -6
- package/dist/modules/data_sync/components/IntegrationScheduleTab.js.map +2 -2
- package/dist/modules/dictionaries/components/AppearanceSelector.js +4 -4
- package/dist/modules/dictionaries/components/AppearanceSelector.js.map +2 -2
- package/dist/modules/dictionaries/components/DictionaryEntriesEditor.js +4 -5
- package/dist/modules/dictionaries/components/DictionaryEntriesEditor.js.map +2 -2
- package/dist/modules/dictionaries/components/DictionaryEntrySelect.js +22 -14
- package/dist/modules/dictionaries/components/DictionaryEntrySelect.js.map +2 -2
- package/dist/modules/dictionaries/fields/dictionary.js +18 -13
- package/dist/modules/dictionaries/fields/dictionary.js.map +2 -2
- package/dist/modules/entities/components/EncryptionManager.js +23 -19
- package/dist/modules/entities/components/EncryptionManager.js.map +2 -2
- package/dist/modules/feature_toggles/components/formConfig.js +17 -9
- package/dist/modules/feature_toggles/components/formConfig.js.map +2 -2
- package/dist/modules/feature_toggles/components/overrideFormConfig.js +17 -9
- package/dist/modules/feature_toggles/components/overrideFormConfig.js.map +2 -2
- package/dist/modules/inbox_ops/backend/inbox-ops/settings/page.js +15 -8
- package/dist/modules/inbox_ops/backend/inbox-ops/settings/page.js.map +2 -2
- package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js +37 -22
- package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +22 -17
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +12 -6
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
- package/dist/modules/planner/components/AvailabilityRulesEditor.js +19 -12
- package/dist/modules/planner/components/AvailabilityRulesEditor.js.map +2 -2
- package/dist/modules/resources/components/ResourceCrudForm.js +15 -10
- package/dist/modules/resources/components/ResourceCrudForm.js.map +3 -3
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +15 -18
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/components/ProviderFieldInput.js +23 -20
- package/dist/modules/sales/components/ProviderFieldInput.js.map +2 -2
- package/dist/modules/sales/components/ShippingMethodsSettings.js +25 -17
- package/dist/modules/sales/components/ShippingMethodsSettings.js.map +3 -3
- package/dist/modules/sales/components/channels/ChannelOfferForm.js +35 -42
- package/dist/modules/sales/components/channels/ChannelOfferForm.js.map +2 -2
- package/dist/modules/sales/components/documents/AddressesSection.js +87 -90
- package/dist/modules/sales/components/documents/AddressesSection.js.map +2 -2
- package/dist/modules/sales/components/documents/AdjustmentDialog.js +17 -6
- package/dist/modules/sales/components/documents/AdjustmentDialog.js.map +3 -3
- package/dist/modules/sales/components/documents/LineItemDialog.js +42 -25
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentForm.js +96 -87
- package/dist/modules/sales/components/documents/SalesDocumentForm.js.map +2 -2
- package/dist/modules/sales/widgets/dashboard/new-orders/widget.client.js +20 -11
- package/dist/modules/sales/widgets/dashboard/new-orders/widget.client.js.map +2 -2
- package/dist/modules/sales/widgets/dashboard/new-quotes/widget.client.js +20 -11
- package/dist/modules/sales/widgets/dashboard/new-quotes/widget.client.js.map +2 -2
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js +36 -22
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.js.map +2 -2
- package/dist/modules/staff/components/TeamMemberForm.js +14 -9
- package/dist/modules/staff/components/TeamMemberForm.js.map +3 -3
- package/dist/modules/workflows/backend/tasks/[id]/page.js +42 -21
- package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
- package/dist/modules/workflows/components/ActivitiesEditor.js +14 -6
- package/dist/modules/workflows/components/ActivitiesEditor.js.map +3 -3
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +25 -17
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +3 -3
- package/dist/modules/workflows/components/EdgeEditDialog.js +48 -45
- package/dist/modules/workflows/components/EdgeEditDialog.js.map +2 -2
- package/dist/modules/workflows/components/NodeEditDialog.js +90 -90
- package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
- package/dist/modules/workflows/components/StepsEditor.js +14 -6
- package/dist/modules/workflows/components/StepsEditor.js.map +3 -3
- package/dist/modules/workflows/components/TransitionsEditor.js +31 -26
- package/dist/modules/workflows/components/TransitionsEditor.js.map +3 -3
- package/dist/modules/workflows/components/fields/ActivityArrayEditor.js +19 -11
- package/dist/modules/workflows/components/fields/ActivityArrayEditor.js.map +3 -3
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +12 -14
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +24 -16
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +3 -3
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +12 -13
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/mobile/MobileTaskForm.js +12 -8
- package/dist/modules/workflows/components/mobile/MobileTaskForm.js.map +2 -2
- package/dist/modules/workflows/frontend/checkout-demo/page.js +43 -46
- package/dist/modules/workflows/frontend/checkout-demo/page.js.map +2 -2
- package/package.json +3 -3
- package/src/helpers/integration/salesUi.ts +40 -30
- package/src/modules/api_docs/frontend/docs/api/Explorer.tsx +25 -19
- package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +21 -11
- package/src/modules/attachments/fields/attachment.tsx +4 -6
- package/src/modules/auth/api/users/route.ts +75 -25
- package/src/modules/auth/backend/users/create/page.tsx +16 -20
- package/src/modules/business_rules/components/ActionRow.tsx +51 -32
- package/src/modules/business_rules/components/ConditionGroup.tsx +20 -9
- package/src/modules/business_rules/components/ConditionRow.tsx +24 -15
- package/src/modules/business_rules/components/RuleSetMembers.tsx +23 -13
- package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +47 -53
- package/src/modules/catalog/backend/catalog/products/create/page.tsx +84 -87
- package/src/modules/catalog/components/PriceKindSettings.tsx +9 -9
- package/src/modules/catalog/components/products/ProductUomSection.tsx +85 -83
- package/src/modules/catalog/components/products/VariantBuilder.tsx +49 -33
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +12 -27
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +4 -6
- package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +5 -4
- package/src/modules/customers/backend/config/customers/pipeline-stages/page.tsx +28 -15
- package/src/modules/customers/backend/customers/deals/pipeline/page.tsx +37 -26
- package/src/modules/customers/components/AddressEditor.tsx +30 -16
- package/src/modules/customers/components/AddressFormatSettings.tsx +25 -19
- package/src/modules/customers/components/detail/ActivityForm.tsx +35 -23
- package/src/modules/customers/components/detail/AnnualRevenueField.tsx +2 -2
- package/src/modules/customers/components/detail/DealForm.tsx +33 -20
- package/src/modules/customers/components/formConfig.tsx +25 -17
- package/src/modules/customers/widgets/dashboard/customer-todos/widget.client.tsx +3 -2
- package/src/modules/customers/widgets/dashboard/new-customers/widget.client.tsx +21 -11
- package/src/modules/customers/widgets/dashboard/new-deals/widget.client.tsx +3 -2
- package/src/modules/customers/widgets/dashboard/next-interactions/widget.client.tsx +3 -2
- package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +17 -22
- package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.client.tsx +17 -7
- package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.tsx +20 -10
- package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.tsx +3 -2
- package/src/modules/dashboards/widgets/dashboard/top-customers/widget.client.tsx +3 -2
- package/src/modules/dashboards/widgets/dashboard/top-products/widget.client.tsx +20 -9
- package/src/modules/data_sync/backend/data-sync/page.tsx +64 -38
- package/src/modules/data_sync/components/IntegrationScheduleTab.tsx +18 -7
- package/src/modules/dictionaries/components/AppearanceSelector.tsx +4 -4
- package/src/modules/dictionaries/components/DictionaryEntriesEditor.tsx +3 -4
- package/src/modules/dictionaries/components/DictionaryEntrySelect.tsx +27 -21
- package/src/modules/dictionaries/fields/dictionary.tsx +36 -23
- package/src/modules/entities/components/EncryptionManager.tsx +49 -33
- package/src/modules/feature_toggles/components/formConfig.tsx +20 -10
- package/src/modules/feature_toggles/components/overrideFormConfig.tsx +20 -10
- package/src/modules/inbox_ops/backend/inbox-ops/settings/page.tsx +19 -10
- package/src/modules/inbox_ops/components/proposals/EditActionDialog.tsx +49 -26
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +20 -11
- package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +19 -9
- package/src/modules/planner/components/AvailabilityRulesEditor.tsx +34 -21
- package/src/modules/resources/components/ResourceCrudForm.tsx +24 -15
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +12 -15
- package/src/modules/sales/components/ProviderFieldInput.tsx +26 -17
- package/src/modules/sales/components/ShippingMethodsSettings.tsx +28 -20
- package/src/modules/sales/components/channels/ChannelOfferForm.tsx +51 -46
- package/src/modules/sales/components/documents/AddressesSection.tsx +78 -76
- package/src/modules/sales/components/documents/AdjustmentDialog.tsx +27 -15
- package/src/modules/sales/components/documents/LineItemDialog.tsx +69 -51
- package/src/modules/sales/components/documents/SalesDocumentForm.tsx +98 -87
- package/src/modules/sales/widgets/dashboard/new-orders/widget.client.tsx +23 -12
- package/src/modules/sales/widgets/dashboard/new-quotes/widget.client.tsx +23 -12
- package/src/modules/shipping_carriers/lib/shipment-wizard/components/ConfigureStep.tsx +35 -19
- package/src/modules/staff/components/TeamMemberForm.tsx +23 -14
- package/src/modules/workflows/backend/tasks/[id]/page.tsx +51 -23
- package/src/modules/workflows/components/ActivitiesEditor.tsx +20 -10
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +28 -18
- package/src/modules/workflows/components/EdgeEditDialog.tsx +51 -40
- package/src/modules/workflows/components/NodeEditDialog.tsx +81 -77
- package/src/modules/workflows/components/StepsEditor.tsx +20 -10
- package/src/modules/workflows/components/TransitionsEditor.tsx +61 -44
- package/src/modules/workflows/components/fields/ActivityArrayEditor.tsx +22 -12
- package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +9 -13
- package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +27 -17
- package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +9 -12
- package/src/modules/workflows/components/mobile/MobileTaskForm.tsx +19 -11
- package/src/modules/workflows/frontend/checkout-demo/page.tsx +71 -60
|
@@ -13,6 +13,13 @@ import { Button } from '@open-mercato/ui/primitives/button'
|
|
|
13
13
|
import { Input } from '@open-mercato/ui/primitives/input'
|
|
14
14
|
import { Label } from '@open-mercato/ui/primitives/label'
|
|
15
15
|
import { Alert, AlertDescription } from '@open-mercato/ui/primitives/alert'
|
|
16
|
+
import {
|
|
17
|
+
Select,
|
|
18
|
+
SelectContent,
|
|
19
|
+
SelectItem,
|
|
20
|
+
SelectTrigger,
|
|
21
|
+
SelectValue,
|
|
22
|
+
} from '@open-mercato/ui/primitives/select'
|
|
16
23
|
import { Separator } from '@open-mercato/ui/primitives/separator'
|
|
17
24
|
import { Switch } from '@open-mercato/ui/primitives/switch'
|
|
18
25
|
import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
@@ -676,56 +683,71 @@ export default function SyncRunsDashboardPage() {
|
|
|
676
683
|
<PlugZap className="size-4 text-muted-foreground" />
|
|
677
684
|
<span>{t('data_sync.dashboard.columns.integration')}</span>
|
|
678
685
|
</Label>
|
|
679
|
-
<
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
onChange={(event) => setSelectedIntegrationId(event.target.value)}
|
|
686
|
+
<Select
|
|
687
|
+
value={selectedIntegrationId || undefined}
|
|
688
|
+
onValueChange={(value) => setSelectedIntegrationId(value ?? '')}
|
|
683
689
|
disabled={isLoadingOptions || options.length === 0}
|
|
684
690
|
>
|
|
685
|
-
|
|
686
|
-
<
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
691
|
+
<SelectTrigger size="lg">
|
|
692
|
+
<SelectValue
|
|
693
|
+
placeholder={
|
|
694
|
+
options.length === 0
|
|
695
|
+
? t('integrations.marketplace.noResults', 'No integrations found')
|
|
696
|
+
: undefined
|
|
697
|
+
}
|
|
698
|
+
/>
|
|
699
|
+
</SelectTrigger>
|
|
700
|
+
<SelectContent>
|
|
701
|
+
{options.map((item) => (
|
|
702
|
+
<SelectItem key={item.integrationId} value={item.integrationId}>
|
|
703
|
+
{item.title}
|
|
704
|
+
</SelectItem>
|
|
705
|
+
))}
|
|
706
|
+
</SelectContent>
|
|
707
|
+
</Select>
|
|
694
708
|
</div>
|
|
695
709
|
<div className="space-y-2">
|
|
696
710
|
<Label className="flex items-center gap-2 text-sm font-medium">
|
|
697
711
|
<Boxes className="size-4 text-muted-foreground" />
|
|
698
712
|
<span>{t('data_sync.dashboard.columns.entityType')}</span>
|
|
699
713
|
</Label>
|
|
700
|
-
<
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
onChange={(event) => setSelectedEntityType(event.target.value)}
|
|
714
|
+
<Select
|
|
715
|
+
value={selectedEntityType || undefined}
|
|
716
|
+
onValueChange={(value) => setSelectedEntityType(value ?? '')}
|
|
704
717
|
disabled={entityOptions.length === 0}
|
|
705
718
|
>
|
|
706
|
-
|
|
707
|
-
<
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
719
|
+
<SelectTrigger size="lg">
|
|
720
|
+
<SelectValue />
|
|
721
|
+
</SelectTrigger>
|
|
722
|
+
<SelectContent>
|
|
723
|
+
{entityOptions.map((entityType) => (
|
|
724
|
+
<SelectItem key={entityType} value={entityType}>
|
|
725
|
+
{formatEntityTypeLabel(entityType)}
|
|
726
|
+
</SelectItem>
|
|
727
|
+
))}
|
|
728
|
+
</SelectContent>
|
|
729
|
+
</Select>
|
|
712
730
|
</div>
|
|
713
731
|
<div className="space-y-2">
|
|
714
732
|
<Label className="flex items-center gap-2 text-sm font-medium">
|
|
715
733
|
<ArrowRightLeft className="size-4 text-muted-foreground" />
|
|
716
734
|
<span>{t('data_sync.dashboard.columns.direction')}</span>
|
|
717
735
|
</Label>
|
|
718
|
-
<
|
|
719
|
-
className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
|
|
736
|
+
<Select
|
|
720
737
|
value={selectedDirection}
|
|
721
|
-
|
|
738
|
+
onValueChange={(value) => setSelectedDirection(value === 'export' ? 'export' : 'import')}
|
|
722
739
|
disabled={selectedIntegration?.direction !== 'bidirectional'}
|
|
723
740
|
>
|
|
724
|
-
<
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
741
|
+
<SelectTrigger size="lg">
|
|
742
|
+
<SelectValue />
|
|
743
|
+
</SelectTrigger>
|
|
744
|
+
<SelectContent>
|
|
745
|
+
<SelectItem value="import">{t('data_sync.dashboard.direction.import')}</SelectItem>
|
|
746
|
+
{(selectedIntegration?.direction === 'bidirectional' || selectedIntegration?.direction === 'export') ? (
|
|
747
|
+
<SelectItem value="export">{t('data_sync.dashboard.direction.export')}</SelectItem>
|
|
748
|
+
) : null}
|
|
749
|
+
</SelectContent>
|
|
750
|
+
</Select>
|
|
729
751
|
</div>
|
|
730
752
|
</div>
|
|
731
753
|
|
|
@@ -818,17 +840,21 @@ export default function SyncRunsDashboardPage() {
|
|
|
818
840
|
<Clock3 className="size-4 text-muted-foreground" />
|
|
819
841
|
<span>{t('data_sync.dashboard.schedule.type', 'Schedule type')}</span>
|
|
820
842
|
</Label>
|
|
821
|
-
<
|
|
822
|
-
className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
|
|
843
|
+
<Select
|
|
823
844
|
value={scheduleEditor.scheduleType}
|
|
824
|
-
|
|
825
|
-
scheduleType:
|
|
845
|
+
onValueChange={(value) => updateScheduleEditor({
|
|
846
|
+
scheduleType: value === 'cron' ? 'cron' : 'interval',
|
|
826
847
|
})}
|
|
827
848
|
disabled={isLoadingSchedule || isSavingSchedule || isDeletingSchedule || !selectedIntegration || !selectedEntityType}
|
|
828
849
|
>
|
|
829
|
-
<
|
|
830
|
-
|
|
831
|
-
|
|
850
|
+
<SelectTrigger size="lg">
|
|
851
|
+
<SelectValue />
|
|
852
|
+
</SelectTrigger>
|
|
853
|
+
<SelectContent>
|
|
854
|
+
<SelectItem value="interval">{t('data_sync.dashboard.schedule.interval', 'Interval')}</SelectItem>
|
|
855
|
+
<SelectItem value="cron">{t('data_sync.dashboard.schedule.cron', 'Cron')}</SelectItem>
|
|
856
|
+
</SelectContent>
|
|
857
|
+
</Select>
|
|
832
858
|
</div>
|
|
833
859
|
<div className="space-y-2">
|
|
834
860
|
<Label className="flex items-center gap-2 text-sm font-medium">
|
|
@@ -8,6 +8,13 @@ import { Button } from '@open-mercato/ui/primitives/button'
|
|
|
8
8
|
import { Input } from '@open-mercato/ui/primitives/input'
|
|
9
9
|
import { Label } from '@open-mercato/ui/primitives/label'
|
|
10
10
|
import { Alert, AlertDescription } from '@open-mercato/ui/primitives/alert'
|
|
11
|
+
import {
|
|
12
|
+
Select,
|
|
13
|
+
SelectContent,
|
|
14
|
+
SelectItem,
|
|
15
|
+
SelectTrigger,
|
|
16
|
+
SelectValue,
|
|
17
|
+
} from '@open-mercato/ui/primitives/select'
|
|
11
18
|
import { Spinner } from '@open-mercato/ui/primitives/spinner'
|
|
12
19
|
import { useOrganizationScopeVersion } from '@open-mercato/shared/lib/frontend/useOrganizationScope'
|
|
13
20
|
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
@@ -396,17 +403,21 @@ export function IntegrationScheduleTab(props: IntegrationScheduleTabProps) {
|
|
|
396
403
|
<td className="px-3 py-3 font-medium">{formatEntityTypeLabel(row.entityType)}</td>
|
|
397
404
|
<td className="px-3 py-3">{t(`data_sync.dashboard.direction.${row.direction}`, row.direction === 'import' ? 'Import' : 'Export')}</td>
|
|
398
405
|
<td className="px-3 py-3">
|
|
399
|
-
<
|
|
400
|
-
className="flex h-10 w-full min-w-32 rounded-md border border-input bg-background px-3 py-2 text-sm"
|
|
406
|
+
<Select
|
|
401
407
|
value={scheduleState.scheduleType}
|
|
402
|
-
|
|
403
|
-
scheduleType:
|
|
408
|
+
onValueChange={(value) => updateScheduleEditor(row.key, {
|
|
409
|
+
scheduleType: value === 'cron' ? 'cron' : 'interval',
|
|
404
410
|
}, row.entityType)}
|
|
405
411
|
disabled={controlsDisabled}
|
|
406
412
|
>
|
|
407
|
-
<
|
|
408
|
-
|
|
409
|
-
|
|
413
|
+
<SelectTrigger size="lg" className="min-w-32">
|
|
414
|
+
<SelectValue />
|
|
415
|
+
</SelectTrigger>
|
|
416
|
+
<SelectContent>
|
|
417
|
+
<SelectItem value="interval">{t('data_sync.dashboard.schedule.interval', 'Interval')}</SelectItem>
|
|
418
|
+
<SelectItem value="cron">{t('data_sync.dashboard.schedule.cron', 'Cron')}</SelectItem>
|
|
419
|
+
</SelectContent>
|
|
420
|
+
</Select>
|
|
410
421
|
</td>
|
|
411
422
|
<td className="px-3 py-3">
|
|
412
423
|
<Input
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as React from 'react'
|
|
4
4
|
import { Ellipsis } from 'lucide-react'
|
|
5
5
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
6
|
+
import { Input } from '@open-mercato/ui/primitives/input'
|
|
6
7
|
import { ICON_LIBRARY, ICON_SUGGESTIONS, type IconOption, renderDictionaryColor, renderDictionaryIcon } from './dictionaryAppearance'
|
|
7
8
|
|
|
8
9
|
export type AppearanceSelectorLabels = {
|
|
@@ -142,12 +143,12 @@ export function AppearanceSelector({
|
|
|
142
143
|
<label className="text-sm font-medium">{labels.iconLabel}</label>
|
|
143
144
|
<div ref={pickerContainerRef} className="relative">
|
|
144
145
|
<div className="flex gap-2">
|
|
145
|
-
<
|
|
146
|
+
<Input
|
|
146
147
|
type="text"
|
|
147
148
|
value={normalizedIcon}
|
|
148
149
|
onChange={(event) => onIconChange(event.target.value)}
|
|
149
150
|
placeholder={labels.iconPlaceholder}
|
|
150
|
-
className="flex-1
|
|
151
|
+
className="flex-1"
|
|
151
152
|
disabled={disabled}
|
|
152
153
|
/>
|
|
153
154
|
<Button
|
|
@@ -166,14 +167,13 @@ export function AppearanceSelector({
|
|
|
166
167
|
{pickerOpen ? (
|
|
167
168
|
<div className="absolute left-0 right-0 top-full z-dropdown mt-2 rounded-md border border-border bg-popover p-3 shadow-lg">
|
|
168
169
|
<div className="space-y-3">
|
|
169
|
-
<
|
|
170
|
+
<Input
|
|
170
171
|
ref={searchInputRef}
|
|
171
172
|
type="search"
|
|
172
173
|
value={iconSearch}
|
|
173
174
|
onChange={(event) => setIconSearch(event.target.value)}
|
|
174
175
|
placeholder={labels.iconSearchPlaceholder}
|
|
175
176
|
aria-label={labels.iconSearchPlaceholder}
|
|
176
|
-
className="w-full rounded border border-border px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
177
177
|
autoComplete="off"
|
|
178
178
|
/>
|
|
179
179
|
<div className="max-h-64 overflow-y-auto pr-1">
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as React from 'react'
|
|
4
4
|
import { Plus, Pencil, Trash2, RefreshCw, Languages } from 'lucide-react'
|
|
5
5
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
6
|
+
import { Input } from '@open-mercato/ui/primitives/input'
|
|
6
7
|
import {
|
|
7
8
|
Dialog,
|
|
8
9
|
DialogContent,
|
|
@@ -362,7 +363,7 @@ export function DictionaryEntriesEditor({ dictionaryId, dictionaryName, readOnly
|
|
|
362
363
|
{t('dictionaries.config.entries.dialog.valueLabel', 'Value')}
|
|
363
364
|
<span className="ml-1 text-destructive">*</span>
|
|
364
365
|
</label>
|
|
365
|
-
<
|
|
366
|
+
<Input
|
|
366
367
|
type="text"
|
|
367
368
|
value={formState.value}
|
|
368
369
|
onChange={(event) => {
|
|
@@ -372,7 +373,6 @@ export function DictionaryEntriesEditor({ dictionaryId, dictionaryName, readOnly
|
|
|
372
373
|
setErrors((prev) => ({ ...prev, value: undefined }))
|
|
373
374
|
}
|
|
374
375
|
}}
|
|
375
|
-
className={`w-full rounded border px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${errors.value ? 'border-destructive focus-visible:ring-destructive' : ''}`}
|
|
376
376
|
aria-invalid={errors.value ? 'true' : 'false'}
|
|
377
377
|
aria-describedby="dictionary-entry-value-error"
|
|
378
378
|
/>
|
|
@@ -386,12 +386,11 @@ export function DictionaryEntriesEditor({ dictionaryId, dictionaryName, readOnly
|
|
|
386
386
|
<label className="text-sm font-medium">
|
|
387
387
|
{t('dictionaries.config.entries.dialog.labelLabel', 'Label')}
|
|
388
388
|
</label>
|
|
389
|
-
<
|
|
389
|
+
<Input
|
|
390
390
|
type="text"
|
|
391
391
|
value={formState.label}
|
|
392
392
|
onChange={(event) => setFormState((prev) => ({ ...prev, label: event.target.value }))}
|
|
393
393
|
placeholder={t('dictionaries.config.entries.dialog.labelPlaceholder', 'Display name shown in UI')}
|
|
394
|
-
className="w-full rounded border px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
395
394
|
/>
|
|
396
395
|
</div>
|
|
397
396
|
<AppearanceSelector
|
|
@@ -5,6 +5,7 @@ import Link from 'next/link'
|
|
|
5
5
|
import { usePathname, useSearchParams } from 'next/navigation'
|
|
6
6
|
import { Plus, Settings, Save } from 'lucide-react'
|
|
7
7
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
8
|
+
import { Input } from '@open-mercato/ui/primitives/input'
|
|
8
9
|
import {
|
|
9
10
|
Dialog,
|
|
10
11
|
DialogContent,
|
|
@@ -14,6 +15,13 @@ import {
|
|
|
14
15
|
DialogTitle,
|
|
15
16
|
DialogTrigger,
|
|
16
17
|
} from '@open-mercato/ui/primitives/dialog'
|
|
18
|
+
import {
|
|
19
|
+
Select,
|
|
20
|
+
SelectContent,
|
|
21
|
+
SelectItem,
|
|
22
|
+
SelectTrigger,
|
|
23
|
+
SelectValue,
|
|
24
|
+
} from '@open-mercato/ui/primitives/select'
|
|
17
25
|
import { Spinner } from '@open-mercato/ui/primitives/spinner'
|
|
18
26
|
import { flash } from '@open-mercato/ui/backend/FlashMessages'
|
|
19
27
|
import { buildHrefWithReturnTo } from '@open-mercato/shared/lib/navigation/returnTo'
|
|
@@ -233,25 +241,25 @@ export function DictionaryEntrySelect({
|
|
|
233
241
|
return (
|
|
234
242
|
<div className="space-y-2">
|
|
235
243
|
<div className="flex items-center gap-2">
|
|
236
|
-
<
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
selectClassName,
|
|
240
|
-
]
|
|
241
|
-
.filter(Boolean)
|
|
242
|
-
.join(' ')}
|
|
243
|
-
value={value ?? ''}
|
|
244
|
-
onChange={(event) => onChange(event.target.value ? event.target.value : undefined)}
|
|
244
|
+
<Select
|
|
245
|
+
value={value || undefined}
|
|
246
|
+
onValueChange={(next) => onChange(next || undefined)}
|
|
245
247
|
disabled={disabled}
|
|
246
|
-
title={activeOption?.label ?? undefined}
|
|
247
248
|
>
|
|
248
|
-
<
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
249
|
+
<SelectTrigger
|
|
250
|
+
className={selectClassName}
|
|
251
|
+
title={activeOption?.label ?? undefined}
|
|
252
|
+
>
|
|
253
|
+
<SelectValue placeholder={labels.placeholder} />
|
|
254
|
+
</SelectTrigger>
|
|
255
|
+
<SelectContent>
|
|
256
|
+
{options.map((option) => (
|
|
257
|
+
<SelectItem key={option.value} value={option.value}>
|
|
258
|
+
{option.label}
|
|
259
|
+
</SelectItem>
|
|
260
|
+
))}
|
|
261
|
+
</SelectContent>
|
|
262
|
+
</Select>
|
|
255
263
|
<div className="flex items-center gap-1">
|
|
256
264
|
{allowInlineCreate && createOption ? (
|
|
257
265
|
<Dialog open={dialogOpen} onOpenChange={setDialogOpen}>
|
|
@@ -275,9 +283,8 @@ export function DictionaryEntrySelect({
|
|
|
275
283
|
<div className="space-y-4">
|
|
276
284
|
<div className="space-y-2">
|
|
277
285
|
<label className="text-sm font-medium">{labels.valueLabel}</label>
|
|
278
|
-
<
|
|
286
|
+
<Input
|
|
279
287
|
type="text"
|
|
280
|
-
className="w-full rounded border px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
281
288
|
value={newValue}
|
|
282
289
|
onChange={(event) => {
|
|
283
290
|
setNewValue(event.target.value)
|
|
@@ -291,9 +298,8 @@ export function DictionaryEntrySelect({
|
|
|
291
298
|
{showLabelInput ? (
|
|
292
299
|
<div className="space-y-2">
|
|
293
300
|
<label className="text-sm font-medium">{labels.labelLabel}</label>
|
|
294
|
-
<
|
|
301
|
+
<Input
|
|
295
302
|
type="text"
|
|
296
|
-
className="w-full rounded border px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
297
303
|
value={newLabel}
|
|
298
304
|
onChange={(event) => setNewLabel(event.target.value)}
|
|
299
305
|
placeholder={labels.labelPlaceholder}
|
|
@@ -5,6 +5,13 @@ import type { CrudCustomFieldRenderProps } from '@open-mercato/ui/backend/CrudFo
|
|
|
5
5
|
import { FieldRegistry } from '@open-mercato/ui/backend/fields/registry'
|
|
6
6
|
import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
|
|
7
7
|
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
8
|
+
import {
|
|
9
|
+
Select,
|
|
10
|
+
SelectContent,
|
|
11
|
+
SelectItem,
|
|
12
|
+
SelectTrigger,
|
|
13
|
+
SelectValue,
|
|
14
|
+
} from '@open-mercato/ui/primitives/select'
|
|
8
15
|
import { DictionarySelectControl } from '../components/DictionarySelectControl'
|
|
9
16
|
import { useDictionaryEntries } from '../components/hooks/useDictionaryEntries'
|
|
10
17
|
|
|
@@ -42,18 +49,21 @@ function DictionaryDefaultSelector({
|
|
|
42
49
|
<label className="text-xs font-medium text-muted-foreground">
|
|
43
50
|
{t('dictionaries.customFields.defaultValue', 'Default value')}
|
|
44
51
|
</label>
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
onChange={(event) => onChange(event.target.value)}
|
|
52
|
+
<Select
|
|
53
|
+
value={defaultValue || undefined}
|
|
54
|
+
onValueChange={(next) => onChange(next ?? '')}
|
|
49
55
|
>
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
<SelectTrigger size="sm">
|
|
57
|
+
<SelectValue placeholder={t('dictionaries.customFields.defaultValueNone', 'No default')} />
|
|
58
|
+
</SelectTrigger>
|
|
59
|
+
<SelectContent>
|
|
60
|
+
{entries.map((entry) => (
|
|
61
|
+
<SelectItem key={entry.value} value={entry.value}>
|
|
62
|
+
{entry.label}
|
|
63
|
+
</SelectItem>
|
|
64
|
+
))}
|
|
65
|
+
</SelectContent>
|
|
66
|
+
</Select>
|
|
57
67
|
{isLoading ? (
|
|
58
68
|
<p className="text-xs text-muted-foreground">
|
|
59
69
|
{t('dictionaries.customFields.loading', 'Loading dictionaries…')}
|
|
@@ -126,19 +136,22 @@ function DictionaryFieldDefEditor({ def, onChange }: { def: { configJson?: Dicti
|
|
|
126
136
|
<label className="text-xs font-medium text-muted-foreground">
|
|
127
137
|
{t('dictionaries.customFields.dictionaryLabel', 'Dictionary source')}
|
|
128
138
|
</label>
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
onChange={(event) => onChange({ dictionaryId: event.target.value || undefined })}
|
|
139
|
+
<Select
|
|
140
|
+
value={selectedId || undefined}
|
|
141
|
+
onValueChange={(next) => onChange({ dictionaryId: next || undefined })}
|
|
133
142
|
>
|
|
134
|
-
<
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
<SelectTrigger size="sm">
|
|
144
|
+
<SelectValue placeholder={t('dictionaries.customFields.dictionaryPlaceholder', 'Select a dictionary')} />
|
|
145
|
+
</SelectTrigger>
|
|
146
|
+
<SelectContent>
|
|
147
|
+
{items.map((item) => (
|
|
148
|
+
<SelectItem key={item.id} value={item.id}>
|
|
149
|
+
{item.name}
|
|
150
|
+
{item.isActive ? '' : ` (${t('dictionaries.customFields.inactive', 'inactive')})`}
|
|
151
|
+
</SelectItem>
|
|
152
|
+
))}
|
|
153
|
+
</SelectContent>
|
|
154
|
+
</Select>
|
|
142
155
|
{loading ? (
|
|
143
156
|
<p className="text-xs text-muted-foreground">
|
|
144
157
|
{t('dictionaries.customFields.loading', 'Loading dictionaries…')}
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
import * as React from 'react'
|
|
4
4
|
import { useQuery, useMutation } from '@tanstack/react-query'
|
|
5
5
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
6
|
+
import {
|
|
7
|
+
Select,
|
|
8
|
+
SelectContent,
|
|
9
|
+
SelectItem,
|
|
10
|
+
SelectTrigger,
|
|
11
|
+
SelectValue,
|
|
12
|
+
} from '@open-mercato/ui/primitives/select'
|
|
6
13
|
import { LoadingMessage, ErrorMessage } from '@open-mercato/ui/backend/detail'
|
|
7
14
|
import { flash } from '@open-mercato/ui/backend/FlashMessages'
|
|
8
15
|
import { apiCall, readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
|
|
@@ -303,32 +310,38 @@ export function EncryptionManager() {
|
|
|
303
310
|
return (
|
|
304
311
|
<tr key={row.id} className="border-t">
|
|
305
312
|
<td className="px-3 py-2 align-top">
|
|
306
|
-
<
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
onChange={(event) => updateField(row.id, { field: event.target.value })}
|
|
313
|
+
<Select
|
|
314
|
+
value={row.field || undefined}
|
|
315
|
+
onValueChange={(value) => updateField(row.id, { field: value ?? '' })}
|
|
310
316
|
>
|
|
311
|
-
<
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
317
|
+
<SelectTrigger>
|
|
318
|
+
<SelectValue placeholder={t('entities.encryption.fields.selectField', 'Select field')} />
|
|
319
|
+
</SelectTrigger>
|
|
320
|
+
<SelectContent>
|
|
321
|
+
{fieldOpts.map((option) => (
|
|
322
|
+
<SelectItem key={option.value} value={option.value}>
|
|
323
|
+
{option.label}
|
|
324
|
+
</SelectItem>
|
|
325
|
+
))}
|
|
326
|
+
</SelectContent>
|
|
327
|
+
</Select>
|
|
318
328
|
</td>
|
|
319
329
|
<td className="px-3 py-2 align-top">
|
|
320
|
-
<
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
onChange={(event) => updateField(row.id, { hashField: event.target.value ? event.target.value : null })}
|
|
330
|
+
<Select
|
|
331
|
+
value={row.hashField || undefined}
|
|
332
|
+
onValueChange={(value) => updateField(row.id, { hashField: value || null })}
|
|
324
333
|
>
|
|
325
|
-
<
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
334
|
+
<SelectTrigger>
|
|
335
|
+
<SelectValue placeholder={t('entities.encryption.fields.selectHash', 'Select hash field (optional)')} />
|
|
336
|
+
</SelectTrigger>
|
|
337
|
+
<SelectContent>
|
|
338
|
+
{hashOpts.map((option) => (
|
|
339
|
+
<SelectItem key={option.value} value={option.value}>
|
|
340
|
+
{option.label}
|
|
341
|
+
</SelectItem>
|
|
342
|
+
))}
|
|
343
|
+
</SelectContent>
|
|
344
|
+
</Select>
|
|
332
345
|
<p className="mt-1 text-overline text-muted-foreground">
|
|
333
346
|
{t('entities.encryption.fields.hashHint', 'Use when lookups must stay deterministic (e.g., login by email).')}
|
|
334
347
|
</p>
|
|
@@ -368,19 +381,22 @@ export function EncryptionManager() {
|
|
|
368
381
|
<label className="text-xs text-muted-foreground">
|
|
369
382
|
{t('entities.encryption.selectEntity', 'Choose entity')}
|
|
370
383
|
</label>
|
|
371
|
-
<
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
onChange={(event) => setSelectedEntityId(event.target.value)}
|
|
384
|
+
<Select
|
|
385
|
+
value={selectedEntityId || undefined}
|
|
386
|
+
onValueChange={(value) => setSelectedEntityId(value ?? '')}
|
|
375
387
|
disabled={loadingEntities || !!entitiesError}
|
|
376
388
|
>
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
389
|
+
<SelectTrigger className="mt-1">
|
|
390
|
+
<SelectValue placeholder={t('entities.encryption.placeholder', 'Select an entity')} />
|
|
391
|
+
</SelectTrigger>
|
|
392
|
+
<SelectContent>
|
|
393
|
+
{(entities?.items || []).map((item) => (
|
|
394
|
+
<SelectItem key={item.entityId} value={item.entityId}>
|
|
395
|
+
{item.label || item.entityId} {item.source === 'custom' ? `(${t('entities.encryption.source.custom', 'custom')})` : ''}
|
|
396
|
+
</SelectItem>
|
|
397
|
+
))}
|
|
398
|
+
</SelectContent>
|
|
399
|
+
</Select>
|
|
384
400
|
{entitiesError ? (
|
|
385
401
|
<p className="mt-1 text-xs text-red-600">
|
|
386
402
|
{t('entities.encryption.errors.loadEntities', 'Failed to load entities')}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
import { CrudFormGroup, CrudCustomFieldRenderProps, CrudField } from "@open-mercato/ui/backend/CrudForm";
|
|
3
3
|
import { JsonBuilder } from "@open-mercato/ui/backend/JsonBuilder";
|
|
4
|
+
import { Input } from "@open-mercato/ui/primitives/input";
|
|
5
|
+
import {
|
|
6
|
+
Select,
|
|
7
|
+
SelectContent,
|
|
8
|
+
SelectItem,
|
|
9
|
+
SelectTrigger,
|
|
10
|
+
SelectValue,
|
|
11
|
+
} from "@open-mercato/ui/primitives/select";
|
|
4
12
|
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
5
13
|
|
|
6
14
|
|
|
@@ -13,15 +21,19 @@ export function renderDefaultValueCreateComponent(props: CrudCustomFieldRenderPr
|
|
|
13
21
|
return (
|
|
14
22
|
<div>
|
|
15
23
|
<label className="block text-sm font-medium mb-2">{t('feature_toggles.form.fields.defaultValue.boolean.label', 'Default Value (Boolean)')}</label>
|
|
16
|
-
<
|
|
24
|
+
<Select
|
|
17
25
|
value={props.value as string || 'false'}
|
|
18
|
-
|
|
19
|
-
className="w-full h-9 rounded border px-2 text-sm"
|
|
26
|
+
onValueChange={(value) => props.setValue(value === 'true')}
|
|
20
27
|
disabled={props.disabled}
|
|
21
28
|
>
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
<SelectTrigger>
|
|
30
|
+
<SelectValue />
|
|
31
|
+
</SelectTrigger>
|
|
32
|
+
<SelectContent>
|
|
33
|
+
<SelectItem value="true">{t('feature_toggles.values.true', 'True')}</SelectItem>
|
|
34
|
+
<SelectItem value="false">{t('feature_toggles.values.false', 'False')}</SelectItem>
|
|
35
|
+
</SelectContent>
|
|
36
|
+
</Select>
|
|
25
37
|
</div>
|
|
26
38
|
);
|
|
27
39
|
|
|
@@ -29,12 +41,11 @@ export function renderDefaultValueCreateComponent(props: CrudCustomFieldRenderPr
|
|
|
29
41
|
return (
|
|
30
42
|
<div>
|
|
31
43
|
<label className="block text-sm font-medium mb-2">{t('feature_toggles.form.fields.defaultValue.string.label', 'Default Value (String)')}</label>
|
|
32
|
-
<
|
|
44
|
+
<Input
|
|
33
45
|
type="text"
|
|
34
46
|
value={props.value as string || ''}
|
|
35
47
|
onChange={(e) => props.setValue(e.target.value)}
|
|
36
48
|
placeholder={t('feature_toggles.form.fields.defaultValue.string.placeholder', 'Enter default string value')}
|
|
37
|
-
className="w-full h-9 rounded border px-2 text-sm"
|
|
38
49
|
disabled={props.disabled}
|
|
39
50
|
autoFocus={props.autoFocus}
|
|
40
51
|
/>
|
|
@@ -45,11 +56,10 @@ export function renderDefaultValueCreateComponent(props: CrudCustomFieldRenderPr
|
|
|
45
56
|
return (
|
|
46
57
|
<div>
|
|
47
58
|
<label className="block text-sm font-medium mb-2">{t('feature_toggles.form.fields.defaultValue.number.label', 'Default Value (Number)')}</label>
|
|
48
|
-
<
|
|
59
|
+
<Input
|
|
49
60
|
type="number"
|
|
50
61
|
value={props.value as number || 0}
|
|
51
62
|
onChange={(e) => props.setValue(Number(e.target.value) || 0)}
|
|
52
|
-
className="w-full h-9 rounded border px-2 text-sm"
|
|
53
63
|
disabled={props.disabled}
|
|
54
64
|
autoFocus={props.autoFocus}
|
|
55
65
|
/>
|