@open-mercato/core 0.5.1-develop.2953.6647bb2c43 → 0.5.1-develop.2964.d5ac4a6ebb
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/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/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
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react'
|
|
4
4
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
5
|
+
import { Input } from '@open-mercato/ui/primitives/input'
|
|
6
|
+
import {
|
|
7
|
+
Select,
|
|
8
|
+
SelectContent,
|
|
9
|
+
SelectItem,
|
|
10
|
+
SelectTrigger,
|
|
11
|
+
SelectValue,
|
|
12
|
+
} from '@open-mercato/ui/primitives/select'
|
|
5
13
|
import { Plus, ChevronUp, ChevronDown, X } from 'lucide-react'
|
|
6
14
|
import { useQuery } from '@tanstack/react-query'
|
|
7
15
|
import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
|
|
@@ -168,30 +176,32 @@ export function RuleSetMembers({ members, onAdd, onUpdate, onRemove }: RuleSetMe
|
|
|
168
176
|
<label className="block text-sm font-medium text-foreground mb-1">
|
|
169
177
|
{t('business_rules.sets.members.form.selectRule')}
|
|
170
178
|
</label>
|
|
171
|
-
<
|
|
172
|
-
value={selectedRuleId}
|
|
173
|
-
|
|
174
|
-
className="w-full px-3 py-2 border border-border rounded bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
179
|
+
<Select
|
|
180
|
+
value={selectedRuleId || undefined}
|
|
181
|
+
onValueChange={(value) => setSelectedRuleId(value ?? '')}
|
|
175
182
|
>
|
|
176
|
-
<
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
<SelectTrigger>
|
|
184
|
+
<SelectValue placeholder={t('business_rules.sets.members.form.selectRulePlaceholder')} />
|
|
185
|
+
</SelectTrigger>
|
|
186
|
+
<SelectContent>
|
|
187
|
+
{rulesNotInSet.map((rule) => (
|
|
188
|
+
<SelectItem key={rule.id} value={rule.id}>
|
|
189
|
+
{rule.ruleName} ({rule.ruleId})
|
|
190
|
+
</SelectItem>
|
|
191
|
+
))}
|
|
192
|
+
</SelectContent>
|
|
193
|
+
</Select>
|
|
183
194
|
</div>
|
|
184
195
|
|
|
185
196
|
<div className="w-32">
|
|
186
197
|
<label className="block text-sm font-medium text-foreground mb-1">
|
|
187
198
|
{t('business_rules.sets.members.form.sequence')}
|
|
188
199
|
</label>
|
|
189
|
-
<
|
|
200
|
+
<Input
|
|
190
201
|
type="number"
|
|
191
202
|
value={sequence}
|
|
192
203
|
onChange={(e) => setSequence(parseInt(e.target.value) || 0)}
|
|
193
204
|
min={0}
|
|
194
|
-
className="w-full px-3 py-2 border border-border rounded bg-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
195
205
|
/>
|
|
196
206
|
</div>
|
|
197
207
|
</div>
|
|
@@ -21,6 +21,13 @@ import { flash } from "@open-mercato/ui/backend/FlashMessages";
|
|
|
21
21
|
import { Button } from "@open-mercato/ui/primitives/button";
|
|
22
22
|
import { Input } from "@open-mercato/ui/primitives/input";
|
|
23
23
|
import { Label } from "@open-mercato/ui/primitives/label";
|
|
24
|
+
import {
|
|
25
|
+
Select,
|
|
26
|
+
SelectContent,
|
|
27
|
+
SelectItem,
|
|
28
|
+
SelectTrigger,
|
|
29
|
+
SelectValue,
|
|
30
|
+
} from "@open-mercato/ui/primitives/select";
|
|
24
31
|
import { TagsInput } from "@open-mercato/ui/backend/inputs/TagsInput";
|
|
25
32
|
import { Textarea } from "@open-mercato/ui/primitives/textarea";
|
|
26
33
|
import { DataLoader } from "@open-mercato/ui/primitives/DataLoader";
|
|
@@ -2473,44 +2480,34 @@ function ProductMetaSection({
|
|
|
2473
2480
|
<Label>
|
|
2474
2481
|
{t("catalog.products.form.productType", "Product type")}
|
|
2475
2482
|
</Label>
|
|
2476
|
-
<
|
|
2477
|
-
className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
|
2483
|
+
<Select
|
|
2478
2484
|
value={values.productType || "simple"}
|
|
2479
|
-
|
|
2480
|
-
const nextType =
|
|
2485
|
+
onValueChange={(value) => {
|
|
2486
|
+
const nextType = value;
|
|
2481
2487
|
setValue("productType", nextType);
|
|
2482
|
-
const nextIsConfigurable =
|
|
2483
|
-
isConfigurableProductType(nextType);
|
|
2488
|
+
const nextIsConfigurable = isConfigurableProductType(nextType);
|
|
2484
2489
|
if (nextIsConfigurable && !values.hasVariants) {
|
|
2485
2490
|
setValue("hasVariants", true);
|
|
2486
|
-
} else if (
|
|
2487
|
-
!nextIsConfigurable &&
|
|
2488
|
-
values.hasVariants
|
|
2489
|
-
) {
|
|
2491
|
+
} else if (!nextIsConfigurable && values.hasVariants) {
|
|
2490
2492
|
setValue("hasVariants", false);
|
|
2491
2493
|
}
|
|
2492
2494
|
}}
|
|
2493
2495
|
>
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
disabled={isDisabled}
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
: ""}
|
|
2510
|
-
</option>
|
|
2511
|
-
);
|
|
2512
|
-
})}
|
|
2513
|
-
</select>
|
|
2496
|
+
<SelectTrigger>
|
|
2497
|
+
<SelectValue />
|
|
2498
|
+
</SelectTrigger>
|
|
2499
|
+
<SelectContent>
|
|
2500
|
+
{CATALOG_PRODUCT_TYPES.map((type) => {
|
|
2501
|
+
const isDisabled = type === "bundle" || type === "grouped";
|
|
2502
|
+
return (
|
|
2503
|
+
<SelectItem key={type} value={type} disabled={isDisabled}>
|
|
2504
|
+
{t(`catalog.products.types.${type}`, type)}
|
|
2505
|
+
{isDisabled ? ` (${t("common.comingSoon", "Coming soon")})` : ""}
|
|
2506
|
+
</SelectItem>
|
|
2507
|
+
);
|
|
2508
|
+
})}
|
|
2509
|
+
</SelectContent>
|
|
2510
|
+
</Select>
|
|
2514
2511
|
{errors.productType ? (
|
|
2515
2512
|
<p className="text-xs text-red-600">
|
|
2516
2513
|
{errors.productType}
|
|
@@ -2551,31 +2548,28 @@ function ProductMetaSection({
|
|
|
2551
2548
|
</span>
|
|
2552
2549
|
</Button>
|
|
2553
2550
|
</div>
|
|
2554
|
-
<
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
onChange={(event) =>
|
|
2558
|
-
setValue("taxRateId", event.target.value || null)
|
|
2559
|
-
}
|
|
2551
|
+
<Select
|
|
2552
|
+
value={values.taxRateId || undefined}
|
|
2553
|
+
onValueChange={(value) => setValue("taxRateId", value || null)}
|
|
2560
2554
|
disabled={!taxRates.length}
|
|
2561
2555
|
>
|
|
2562
|
-
<
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
"No tax class selected"
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
</
|
|
2556
|
+
<SelectTrigger>
|
|
2557
|
+
<SelectValue
|
|
2558
|
+
placeholder={
|
|
2559
|
+
taxRates.length
|
|
2560
|
+
? t("catalog.products.create.taxRates.noneSelected", "No tax class selected")
|
|
2561
|
+
: t("catalog.products.create.taxRates.emptyOption", "No tax classes available")
|
|
2562
|
+
}
|
|
2563
|
+
/>
|
|
2564
|
+
</SelectTrigger>
|
|
2565
|
+
<SelectContent>
|
|
2566
|
+
{taxRates.map((rate) => (
|
|
2567
|
+
<SelectItem key={rate.id} value={rate.id}>
|
|
2568
|
+
{formatTaxRateLabel(rate)}
|
|
2569
|
+
</SelectItem>
|
|
2570
|
+
))}
|
|
2571
|
+
</SelectContent>
|
|
2572
|
+
</Select>
|
|
2579
2573
|
<p className="text-xs text-muted-foreground">
|
|
2580
2574
|
{taxRates.length
|
|
2581
2575
|
? t(
|
|
@@ -17,6 +17,14 @@ import { TagsInput } from "@open-mercato/ui/backend/inputs/TagsInput";
|
|
|
17
17
|
import { Button } from "@open-mercato/ui/primitives/button";
|
|
18
18
|
import { Input } from "@open-mercato/ui/primitives/input";
|
|
19
19
|
import { Label } from "@open-mercato/ui/primitives/label";
|
|
20
|
+
import { RadioGroup, Radio } from "@open-mercato/ui/primitives/radio";
|
|
21
|
+
import {
|
|
22
|
+
Select,
|
|
23
|
+
SelectContent,
|
|
24
|
+
SelectItem,
|
|
25
|
+
SelectTrigger,
|
|
26
|
+
SelectValue,
|
|
27
|
+
} from "@open-mercato/ui/primitives/select";
|
|
20
28
|
import { cn } from "@open-mercato/shared/lib/utils";
|
|
21
29
|
import {
|
|
22
30
|
Plus,
|
|
@@ -1551,6 +1559,12 @@ function ProductBuilder({
|
|
|
1551
1559
|
) : null}
|
|
1552
1560
|
|
|
1553
1561
|
<div className="rounded-lg border">
|
|
1562
|
+
<RadioGroup
|
|
1563
|
+
className="contents"
|
|
1564
|
+
name="defaultVariant"
|
|
1565
|
+
value={(Array.isArray(values.variants) ? values.variants : []).find((v) => v.isDefault)?.id ?? ''}
|
|
1566
|
+
onValueChange={(next) => markDefaultVariant(next)}
|
|
1567
|
+
>
|
|
1554
1568
|
<div className="w-full overflow-x-auto">
|
|
1555
1569
|
<table className="w-full min-w-[900px] table-fixed border-collapse text-sm">
|
|
1556
1570
|
<thead className="bg-muted/50">
|
|
@@ -1642,12 +1656,7 @@ function ProductBuilder({
|
|
|
1642
1656
|
<tr key={variant.id} className="border-t">
|
|
1643
1657
|
<td className="px-3 py-2">
|
|
1644
1658
|
<label className="inline-flex items-center gap-1 text-xs">
|
|
1645
|
-
<
|
|
1646
|
-
type="radio"
|
|
1647
|
-
name="defaultVariant"
|
|
1648
|
-
checked={variant.isDefault}
|
|
1649
|
-
onChange={() => markDefaultVariant(variant.id)}
|
|
1650
|
-
/>
|
|
1659
|
+
<Radio value={variant.id} />
|
|
1651
1660
|
{variant.isDefault
|
|
1652
1661
|
? t(
|
|
1653
1662
|
"catalog.products.create.variantsBuilder.defaultLabel",
|
|
@@ -1697,35 +1706,36 @@ function ProductBuilder({
|
|
|
1697
1706
|
/>
|
|
1698
1707
|
</td>
|
|
1699
1708
|
<td className="px-3 py-2">
|
|
1700
|
-
<
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
setVariantField(
|
|
1705
|
-
variant.id,
|
|
1706
|
-
"taxRateId",
|
|
1707
|
-
event.target.value || null,
|
|
1708
|
-
)
|
|
1709
|
+
<Select
|
|
1710
|
+
value={variant.taxRateId || undefined}
|
|
1711
|
+
onValueChange={(value) =>
|
|
1712
|
+
setVariantField(variant.id, "taxRateId", value || null)
|
|
1709
1713
|
}
|
|
1710
1714
|
disabled={!taxRates.length}
|
|
1711
1715
|
>
|
|
1712
|
-
<
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1716
|
+
<SelectTrigger>
|
|
1717
|
+
<SelectValue
|
|
1718
|
+
placeholder={
|
|
1719
|
+
defaultTaxRateLabel
|
|
1720
|
+
? t(
|
|
1721
|
+
"catalog.products.create.variantsBuilder.vatOptionDefault",
|
|
1722
|
+
"Use product tax class ({{label}})",
|
|
1723
|
+
).replace("{{label}}", defaultTaxRateLabel)
|
|
1724
|
+
: t(
|
|
1725
|
+
"catalog.products.create.variantsBuilder.vatOptionNone",
|
|
1726
|
+
"No tax class",
|
|
1727
|
+
)
|
|
1728
|
+
}
|
|
1729
|
+
/>
|
|
1730
|
+
</SelectTrigger>
|
|
1731
|
+
<SelectContent>
|
|
1732
|
+
{taxRates.map((rate) => (
|
|
1733
|
+
<SelectItem key={rate.id} value={rate.id}>
|
|
1734
|
+
{formatTaxRateLabel(rate)}
|
|
1735
|
+
</SelectItem>
|
|
1736
|
+
))}
|
|
1737
|
+
</SelectContent>
|
|
1738
|
+
</Select>
|
|
1729
1739
|
</td>
|
|
1730
1740
|
{priceKinds.map((kind) => (
|
|
1731
1741
|
<td key={kind.id} className="px-3 py-2">
|
|
@@ -1733,9 +1743,8 @@ function ProductBuilder({
|
|
|
1733
1743
|
<span className="text-xs text-muted-foreground">
|
|
1734
1744
|
{kind.currencyCode ?? "—"}
|
|
1735
1745
|
</span>
|
|
1736
|
-
<
|
|
1746
|
+
<Input
|
|
1737
1747
|
type="number"
|
|
1738
|
-
className="w-full rounded-md border px-2 py-1"
|
|
1739
1748
|
value={variant.prices?.[kind.id]?.amount ?? ""}
|
|
1740
1749
|
onChange={(event) =>
|
|
1741
1750
|
setVariantPrice(
|
|
@@ -1803,6 +1812,7 @@ function ProductBuilder({
|
|
|
1803
1812
|
</tbody>
|
|
1804
1813
|
</table>
|
|
1805
1814
|
</div>
|
|
1815
|
+
</RadioGroup>
|
|
1806
1816
|
{!priceKinds.length ? (
|
|
1807
1817
|
<div className="flex items-center gap-2 border-t px-4 py-3 text-sm text-muted-foreground">
|
|
1808
1818
|
<AlertCircle className="h-4 w-4" />
|
|
@@ -1964,44 +1974,34 @@ function ProductMetaSection({
|
|
|
1964
1974
|
<Label>
|
|
1965
1975
|
{t("catalog.products.form.productType", "Product type")}
|
|
1966
1976
|
</Label>
|
|
1967
|
-
<
|
|
1968
|
-
className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
|
1977
|
+
<Select
|
|
1969
1978
|
value={values.productType || "simple"}
|
|
1970
|
-
|
|
1971
|
-
const nextType =
|
|
1979
|
+
onValueChange={(value) => {
|
|
1980
|
+
const nextType = value;
|
|
1972
1981
|
setValue("productType", nextType);
|
|
1973
|
-
const nextIsConfigurable =
|
|
1974
|
-
isConfigurableProductType(nextType);
|
|
1982
|
+
const nextIsConfigurable = isConfigurableProductType(nextType);
|
|
1975
1983
|
if (nextIsConfigurable && !values.hasVariants) {
|
|
1976
1984
|
setValue("hasVariants", true);
|
|
1977
|
-
} else if (
|
|
1978
|
-
!nextIsConfigurable &&
|
|
1979
|
-
values.hasVariants
|
|
1980
|
-
) {
|
|
1985
|
+
} else if (!nextIsConfigurable && values.hasVariants) {
|
|
1981
1986
|
setValue("hasVariants", false);
|
|
1982
1987
|
}
|
|
1983
1988
|
}}
|
|
1984
1989
|
>
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
disabled={isDisabled}
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
: ""}
|
|
2001
|
-
</option>
|
|
2002
|
-
);
|
|
2003
|
-
})}
|
|
2004
|
-
</select>
|
|
1990
|
+
<SelectTrigger>
|
|
1991
|
+
<SelectValue />
|
|
1992
|
+
</SelectTrigger>
|
|
1993
|
+
<SelectContent>
|
|
1994
|
+
{CATALOG_PRODUCT_TYPES.map((type) => {
|
|
1995
|
+
const isDisabled = type === "bundle" || type === "grouped";
|
|
1996
|
+
return (
|
|
1997
|
+
<SelectItem key={type} value={type} disabled={isDisabled}>
|
|
1998
|
+
{t(`catalog.products.types.${type}`, type)}
|
|
1999
|
+
{isDisabled ? ` (${t("common.comingSoon", "Coming soon")})` : ""}
|
|
2000
|
+
</SelectItem>
|
|
2001
|
+
);
|
|
2002
|
+
})}
|
|
2003
|
+
</SelectContent>
|
|
2004
|
+
</Select>
|
|
2005
2005
|
{errors.productType ? (
|
|
2006
2006
|
<p className="text-xs text-red-600">
|
|
2007
2007
|
{errors.productType}
|
|
@@ -2042,31 +2042,28 @@ function ProductMetaSection({
|
|
|
2042
2042
|
</span>
|
|
2043
2043
|
</Button>
|
|
2044
2044
|
</div>
|
|
2045
|
-
<
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
onChange={(event) =>
|
|
2049
|
-
setValue("taxRateId", event.target.value || null)
|
|
2050
|
-
}
|
|
2045
|
+
<Select
|
|
2046
|
+
value={values.taxRateId || undefined}
|
|
2047
|
+
onValueChange={(value) => setValue("taxRateId", value || null)}
|
|
2051
2048
|
disabled={!taxRates.length}
|
|
2052
2049
|
>
|
|
2053
|
-
<
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
"No tax class selected"
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
</
|
|
2050
|
+
<SelectTrigger>
|
|
2051
|
+
<SelectValue
|
|
2052
|
+
placeholder={
|
|
2053
|
+
taxRates.length
|
|
2054
|
+
? t("catalog.products.create.taxRates.noneSelected", "No tax class selected")
|
|
2055
|
+
: t("catalog.products.create.taxRates.emptyOption", "No tax classes available")
|
|
2056
|
+
}
|
|
2057
|
+
/>
|
|
2058
|
+
</SelectTrigger>
|
|
2059
|
+
<SelectContent>
|
|
2060
|
+
{taxRates.map((rate) => (
|
|
2061
|
+
<SelectItem key={rate.id} value={rate.id}>
|
|
2062
|
+
{formatTaxRateLabel(rate)}
|
|
2063
|
+
</SelectItem>
|
|
2064
|
+
))}
|
|
2065
|
+
</SelectContent>
|
|
2066
|
+
</Select>
|
|
2070
2067
|
<p className="text-xs text-muted-foreground">
|
|
2071
2068
|
{taxRates.length
|
|
2072
2069
|
? t(
|
|
@@ -7,6 +7,7 @@ import { RowActions } from '@open-mercato/ui/backend/RowActions'
|
|
|
7
7
|
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
|
+
import { RadioGroup, Radio } from '@open-mercato/ui/primitives/radio'
|
|
10
11
|
import {
|
|
11
12
|
Dialog,
|
|
12
13
|
DialogContent,
|
|
@@ -480,7 +481,12 @@ export function PriceKindSettings() {
|
|
|
480
481
|
</div>
|
|
481
482
|
<div className="space-y-2">
|
|
482
483
|
<Label>{t('catalog.priceKinds.form.displayModeLabel', 'Display mode')}</Label>
|
|
483
|
-
<
|
|
484
|
+
<RadioGroup
|
|
485
|
+
className="grid gap-2 md:grid-cols-2"
|
|
486
|
+
name="displayMode"
|
|
487
|
+
value={form.displayMode}
|
|
488
|
+
onValueChange={(next) => setForm((prev) => ({ ...prev, displayMode: next as CatalogPriceDisplayMode }))}
|
|
489
|
+
>
|
|
484
490
|
{displayModeOptions.map((mode) => (
|
|
485
491
|
<label
|
|
486
492
|
key={mode.value}
|
|
@@ -488,17 +494,11 @@ export function PriceKindSettings() {
|
|
|
488
494
|
form.displayMode === mode.value ? 'border-primary bg-primary/5' : 'border-border'
|
|
489
495
|
}`}
|
|
490
496
|
>
|
|
491
|
-
<
|
|
492
|
-
type="radio"
|
|
493
|
-
name="displayMode"
|
|
494
|
-
value={mode.value}
|
|
495
|
-
checked={form.displayMode === mode.value}
|
|
496
|
-
onChange={() => setForm((prev) => ({ ...prev, displayMode: mode.value }))}
|
|
497
|
-
/>
|
|
497
|
+
<Radio value={mode.value} />
|
|
498
498
|
<span>{mode.label}</span>
|
|
499
499
|
</label>
|
|
500
500
|
))}
|
|
501
|
-
</
|
|
501
|
+
</RadioGroup>
|
|
502
502
|
</div>
|
|
503
503
|
<div className="space-y-2">
|
|
504
504
|
<Label>{t('catalog.priceKinds.form.currencyLabel', 'Currency (optional)')}</Label>
|