@myparcel-dev/pdk-admin 1.14.1 → 2.0.0

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.
Files changed (499) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/package.json +5 -5
  3. package/src/__tests__/__snapshots__/exports.spec.ts.snap +8 -1
  4. package/src/__tests__/doComponentTestTeardown.ts +2 -0
  5. package/src/__tests__/mocks/index.ts +1 -1
  6. package/src/__tests__/mocks/mockDefaultAccount.ts +1 -0
  7. package/src/__tests__/mocks/mockDefaultGlobalContext.ts +2 -2
  8. package/src/__tests__/mocks/{mockDefaultPlatform.ts → mockDefaultProposition.ts} +1 -3
  9. package/src/__tests__/mocks/mockDefaultShop.ts +1 -0
  10. package/src/__tests__/utils/getActionIds.ts +12 -0
  11. package/src/__tests__/utils/mockOrderData.ts +20 -0
  12. package/src/actions/composables/mutations/orders/useExportOrdersMutation.ts +1 -1
  13. package/src/actions/composables/queries/account/useOrderCapabilitiesQuery.ts +67 -0
  14. package/src/actions/composables/queries/account/useShipmentCapabilitiesQuery.ts +96 -0
  15. package/src/actions/definitions/orders.ts +6 -8
  16. package/src/actions/index.ts +1 -0
  17. package/src/actions/orderModeActions.spec.ts +150 -0
  18. package/src/actions/orderModeActions.ts +90 -0
  19. package/src/components/OrderBox/ShipmentOptionsBox.spec.ts +109 -0
  20. package/src/components/OrderBox/ShipmentOptionsBox.vue +9 -25
  21. package/src/components/OrderListItem/OrderModeOrderListItem.spec.ts +125 -0
  22. package/src/components/OrderListItem/OrderModeOrderListItem.vue +10 -6
  23. package/src/components/PluginSettings/PluginSettingsForms.vue +7 -4
  24. package/src/components/common/DeliveryOptionsExcerptCarrierName.vue +3 -3
  25. package/src/components/modals/ShipmentOptionsModal.spec.ts +79 -0
  26. package/src/components/modals/ShipmentOptionsModal.vue +4 -21
  27. package/src/composables/components/useToggleInputContext.ts +2 -2
  28. package/src/composables/components/useTriStateInputContext.ts +2 -2
  29. package/src/composables/context/index.ts +1 -0
  30. package/src/composables/context/useOrderMode.spec.ts +75 -0
  31. package/src/composables/context/useOrderMode.ts +26 -0
  32. package/src/composables/language/useLanguage.spec.ts +2 -2
  33. package/src/composables/shipments/useShipmentData.ts +2 -2
  34. package/src/data/index.ts +1 -0
  35. package/src/data/orderMode.spec.ts +22 -0
  36. package/src/data/orderMode.ts +50 -0
  37. package/src/forms/form-builder/builders/buildAfterUpdate.spec.ts +5 -8
  38. package/src/forms/form-builder/operations/executeOperations.spec.ts +4 -7
  39. package/src/forms/form-builder/operations/executeSetPropOperation.spec.ts +4 -7
  40. package/src/forms/form-builder/operations/executeSetValueOperation.spec.ts +3 -2
  41. package/src/forms/form-builder/utils/createValueSetter.ts +21 -8
  42. package/src/forms/helpers/addCapabilitiesClearNotification.ts +39 -0
  43. package/src/forms/helpers/getDeliveryTypes.ts +5 -10
  44. package/src/forms/helpers/getFieldLabel.ts +7 -2
  45. package/src/forms/helpers/getPackageTypes.ts +7 -12
  46. package/src/forms/helpers/index.ts +3 -10
  47. package/src/forms/helpers/useFormCapabilities.spec.ts +227 -0
  48. package/src/forms/helpers/useFormCapabilities.ts +176 -0
  49. package/src/forms/pluginSettings/createPluginSettingsForm.ts +2 -2
  50. package/src/forms/pluginSettings/filterPluginSettingsView.spec.ts +158 -0
  51. package/src/forms/pluginSettings/filterPluginSettingsView.ts +96 -0
  52. package/src/forms/pluginSettings/index.ts +1 -0
  53. package/src/forms/pluginSettings/resolveSettingsValues.spec.ts +62 -0
  54. package/src/forms/pluginSettings/resolveSettingsValues.ts +16 -0
  55. package/src/forms/shipmentOptions/createShipmentOptionsForm.spec.ts +108 -0
  56. package/src/forms/shipmentOptions/createShipmentOptionsForm.ts +114 -52
  57. package/src/forms/shipmentOptions/field.ts +6 -66
  58. package/src/forms/shipmentOptions/fieldFactoryRegistry.ts +26 -0
  59. package/src/forms/shipmentOptions/fields/createCarrierField.ts +119 -30
  60. package/src/forms/shipmentOptions/fields/createDigitalStampRangeField.ts +3 -3
  61. package/src/forms/shipmentOptions/fields/createInsuranceField.ts +43 -22
  62. package/src/forms/shipmentOptions/fields/createPackageTypeField.ts +1 -2
  63. package/src/forms/shipmentOptions/fields/createShipmentOptionField.spec.ts +177 -0
  64. package/src/forms/shipmentOptions/fields/createShipmentOptionField.ts +90 -8
  65. package/src/forms/shipmentOptions/fields/index.ts +0 -9
  66. package/src/forms/shipmentOptions/useCapabilitiesAutoClear.spec.ts +347 -0
  67. package/src/forms/shipmentOptions/useCapabilitiesAutoClear.ts +452 -0
  68. package/src/forms/shipmentOptions/useCapabilitiesWatcher.spec.ts +14 -0
  69. package/src/forms/shipmentOptions/useCapabilitiesWatcher.ts +29 -0
  70. package/src/forms/shipmentOptions/wireProxyCapabilities.spec.ts +160 -0
  71. package/src/forms/shipmentOptions/wireProxyCapabilities.ts +102 -0
  72. package/src/index.ts +2 -0
  73. package/src/pdk/instance/plugins/createRegisterComponentsPlugin.ts +2 -0
  74. package/src/sdk/composables/api/useFetchCarrier.ts +39 -4
  75. package/src/sdk/composables/usePdkAdminApi.ts +8 -3
  76. package/src/stores/useActionStore.spec.ts +101 -0
  77. package/src/stores/useActionStore.ts +4 -28
  78. package/src/stores/useQueryStore.ts +15 -0
  79. package/src/types/actions/endpoints.types.ts +2 -1
  80. package/src/types/sdk.types.ts +54 -1
  81. package/src/utils/forms/formToBody.ts +2 -1
  82. package/src/utils/forms/getEnabledValues.spec.ts +66 -0
  83. package/src/utils/forms/getEnabledValues.ts +25 -0
  84. package/src/utils/forms/index.ts +1 -0
  85. package/src/utils/translations/getDynamicTranslation.ts +1 -1
  86. package/src/views/OrderBox.vue +11 -5
  87. package/src/views/OrderListItem.spec.ts +71 -0
  88. package/src/views/OrderListItem.vue +6 -7
  89. package/dist/__tests__/doComponentTestSetup.d.ts +0 -2
  90. package/dist/__tests__/doComponentTestTeardown.d.ts +0 -1
  91. package/dist/__tests__/index.d.ts +0 -3
  92. package/dist/__tests__/mocks/index.d.ts +0 -14
  93. package/dist/__tests__/mocks/mockDefaultAccount.d.ts +0 -2
  94. package/dist/__tests__/mocks/mockDefaultAppConfig.d.ts +0 -2
  95. package/dist/__tests__/mocks/mockDefaultAppInfo.d.ts +0 -2
  96. package/dist/__tests__/mocks/mockDefaultCarriers.d.ts +0 -2
  97. package/dist/__tests__/mocks/mockDefaultConfig.d.ts +0 -2
  98. package/dist/__tests__/mocks/mockDefaultDynamicContext.d.ts +0 -2
  99. package/dist/__tests__/mocks/mockDefaultEndpoints.d.ts +0 -2
  100. package/dist/__tests__/mocks/mockDefaultGlobalContext.d.ts +0 -2
  101. package/dist/__tests__/mocks/mockDefaultLogger.d.ts +0 -1
  102. package/dist/__tests__/mocks/mockDefaultPlatform.d.ts +0 -2
  103. package/dist/__tests__/mocks/mockDefaultPluginSettings.d.ts +0 -2
  104. package/dist/__tests__/mocks/mockDefaultPrintOptionsView.d.ts +0 -2
  105. package/dist/__tests__/mocks/mockDefaultShop.d.ts +0 -2
  106. package/dist/__tests__/mocks/mockDefaultTranslations.d.ts +0 -2
  107. package/dist/actions/composables/index.d.ts +0 -2
  108. package/dist/actions/composables/mutations/account/index.d.ts +0 -2
  109. package/dist/actions/composables/mutations/account/useDeleteAccountMutation.d.ts +0 -3
  110. package/dist/actions/composables/mutations/account/useUpdateAccountMutation.d.ts +0 -3
  111. package/dist/actions/composables/mutations/debug/index.d.ts +0 -3
  112. package/dist/actions/composables/mutations/debug/useDownloadLogsMutation.d.ts +0 -3
  113. package/dist/actions/composables/mutations/debug/useSwitchToAcceptanceApiMutation.d.ts +0 -3
  114. package/dist/actions/composables/mutations/debug/useSwitchToProductionApiMutation.d.ts +0 -3
  115. package/dist/actions/composables/mutations/index.d.ts +0 -7
  116. package/dist/actions/composables/mutations/orders/index.d.ts +0 -3
  117. package/dist/actions/composables/mutations/orders/useExportOrdersMutation.d.ts +0 -5
  118. package/dist/actions/composables/mutations/orders/usePrintOrdersMutation.d.ts +0 -4
  119. package/dist/actions/composables/mutations/orders/useUpdateOrdersMutation.d.ts +0 -4
  120. package/dist/actions/composables/mutations/settings/index.d.ts +0 -2
  121. package/dist/actions/composables/mutations/settings/useUpdatePluginSettingsMutation.d.ts +0 -3
  122. package/dist/actions/composables/mutations/settings/useUpdateProductSettingsMutation.d.ts +0 -3
  123. package/dist/actions/composables/mutations/shipments/index.d.ts +0 -4
  124. package/dist/actions/composables/mutations/shipments/useDeleteShipmentsMutation.d.ts +0 -4
  125. package/dist/actions/composables/mutations/shipments/useExportReturnMutation.d.ts +0 -4
  126. package/dist/actions/composables/mutations/shipments/usePrintShipmentsMutation.d.ts +0 -4
  127. package/dist/actions/composables/mutations/shipments/useUpdateShipmentsMutation.d.ts +0 -4
  128. package/dist/actions/composables/mutations/usePdkMutation.d.ts +0 -15
  129. package/dist/actions/composables/mutations/webhooks/index.d.ts +0 -2
  130. package/dist/actions/composables/mutations/webhooks/useCreateWebhooksMutation.d.ts +0 -1
  131. package/dist/actions/composables/mutations/webhooks/useDeleteWebhooksMutation.d.ts +0 -3
  132. package/dist/actions/composables/queries/account/index.d.ts +0 -1
  133. package/dist/actions/composables/queries/account/useFetchContextQuery.d.ts +0 -3
  134. package/dist/actions/composables/queries/index.d.ts +0 -6
  135. package/dist/actions/composables/queries/orders/index.d.ts +0 -1
  136. package/dist/actions/composables/queries/orders/useFetchOrdersQuery.d.ts +0 -3
  137. package/dist/actions/composables/queries/products/index.d.ts +0 -1
  138. package/dist/actions/composables/queries/products/useFetchProductsQuery.d.ts +0 -3
  139. package/dist/actions/composables/queries/queryKeys.d.ts +0 -2
  140. package/dist/actions/composables/queries/shipments/index.d.ts +0 -1
  141. package/dist/actions/composables/queries/shipments/useFetchShipmentsQuery.d.ts +0 -4
  142. package/dist/actions/composables/queries/webhooks/index.d.ts +0 -1
  143. package/dist/actions/composables/queries/webhooks/useFetchWebhooksQuery.d.ts +0 -3
  144. package/dist/actions/defineAction.d.ts +0 -8
  145. package/dist/actions/definitions/account.d.ts +0 -13
  146. package/dist/actions/definitions/context.d.ts +0 -6
  147. package/dist/actions/definitions/debug.d.ts +0 -13
  148. package/dist/actions/definitions/index.d.ts +0 -8
  149. package/dist/actions/definitions/modal.d.ts +0 -17
  150. package/dist/actions/definitions/orders.d.ts +0 -38
  151. package/dist/actions/definitions/settings.d.ts +0 -2
  152. package/dist/actions/definitions/shipments.d.ts +0 -15
  153. package/dist/actions/definitions/webhooks.d.ts +0 -4
  154. package/dist/actions/executors/createHandlerWithParameters.d.ts +0 -5
  155. package/dist/actions/executors/createMutationHandler.d.ts +0 -3
  156. package/dist/actions/executors/createOrdersMutationHandler.d.ts +0 -2
  157. package/dist/actions/executors/createQueryHandler.d.ts +0 -3
  158. package/dist/actions/executors/createShipmentsMutationHandler.d.ts +0 -2
  159. package/dist/actions/executors/doMutate.d.ts +0 -4
  160. package/dist/actions/executors/executeAction.d.ts +0 -6
  161. package/dist/actions/executors/executeAfterHandle.d.ts +0 -3
  162. package/dist/actions/executors/executeBeforeHandle.d.ts +0 -4
  163. package/dist/actions/executors/executeHandler.d.ts +0 -3
  164. package/dist/actions/executors/executeNextAction.d.ts +0 -6
  165. package/dist/actions/executors/index.d.ts +0 -14
  166. package/dist/actions/executors/resolveOrderParameters.d.ts +0 -3
  167. package/dist/actions/executors/resolveQuerySuffix.d.ts +0 -3
  168. package/dist/actions/executors/types.d.ts +0 -19
  169. package/dist/actions/index.d.ts +0 -6
  170. package/dist/actions/print/index.d.ts +0 -3
  171. package/dist/actions/print/openOrPrintPdf.d.ts +0 -3
  172. package/dist/actions/print/resolvePrintParameters.d.ts +0 -3
  173. package/dist/actions/print/waitForLabelPrompt.d.ts +0 -3
  174. package/dist/actions/stopActionHandler.d.ts +0 -2
  175. package/dist/components/OrderBox/OrderShipmentsTable.vue.d.ts +0 -6
  176. package/dist/components/OrderBox/OrderShipmentsTableRow.vue.d.ts +0 -21
  177. package/dist/components/OrderBox/ShipmentOptionsBox.vue.d.ts +0 -2
  178. package/dist/components/OrderBox/ShipmentTableBox.vue.d.ts +0 -2
  179. package/dist/components/OrderListItem/OrderModeOrderListItem.vue.d.ts +0 -2
  180. package/dist/components/OrderListItem/ShipmentLabel.vue.d.ts +0 -15
  181. package/dist/components/OrderListItem/ShipmentModeOrderListItem.vue.d.ts +0 -2
  182. package/dist/components/PluginSettings/AccountSettings.vue.d.ts +0 -2
  183. package/dist/components/PluginSettings/DebugOptions.vue.d.ts +0 -2
  184. package/dist/components/PluginSettings/EditApiKeyForm.vue.d.ts +0 -7
  185. package/dist/components/PluginSettings/PluginSettingsForms.vue.d.ts +0 -2
  186. package/dist/components/PluginSettings/WebhooksStatus.vue.d.ts +0 -2
  187. package/dist/components/PluginSettings/createUpdateAccountSettingsValidator.d.ts +0 -4
  188. package/dist/components/common/ActionButton.vue.d.ts +0 -52
  189. package/dist/components/common/BulkSelectCheckbox.vue.d.ts +0 -22
  190. package/dist/components/common/CarrierLogo.vue.d.ts +0 -16
  191. package/dist/components/common/DateRelative.vue.d.ts +0 -16
  192. package/dist/components/common/DeliveryOptionsDeliveryType.vue.d.ts +0 -16
  193. package/dist/components/common/DeliveryOptionsExcerpt.vue.d.ts +0 -2
  194. package/dist/components/common/DeliveryOptionsExcerptCarrierName.vue.d.ts +0 -16
  195. package/dist/components/common/DeliveryOptionsPackageType.vue.d.ts +0 -16
  196. package/dist/components/common/DigitalStampWeightRange.vue.d.ts +0 -15
  197. package/dist/components/common/NotificationContainer.vue.d.ts +0 -19
  198. package/dist/components/common/PackageType.vue.d.ts +0 -16
  199. package/dist/components/common/PlainElement.d.ts +0 -2
  200. package/dist/components/common/ResetButton.vue.d.ts +0 -15
  201. package/dist/components/common/ReturnsForm.vue.d.ts +0 -14
  202. package/dist/components/common/ShipmentBarcode.vue.d.ts +0 -15
  203. package/dist/components/common/ShipmentOptionsForm.vue.d.ts +0 -16
  204. package/dist/components/common/ShipmentStatus.vue.d.ts +0 -15
  205. package/dist/components/common/StatusIndicator.vue.d.ts +0 -23
  206. package/dist/components/common/SubmitButton.vue.d.ts +0 -15
  207. package/dist/components/common/TabNavigation.vue.d.ts +0 -66
  208. package/dist/components/common/index.d.ts +0 -20
  209. package/dist/components/index.d.ts +0 -1
  210. package/dist/components/modals/PrintOptionsModal.vue.d.ts +0 -2
  211. package/dist/components/modals/PrintOptionsModalForm.vue.d.ts +0 -2
  212. package/dist/components/modals/ShipmentOptionsModal.vue.d.ts +0 -2
  213. package/dist/components/modals/ShipmentOptionsModalForm.vue.d.ts +0 -16
  214. package/dist/composables/components/index.d.ts +0 -15
  215. package/dist/composables/components/useBulkSelectCheckbox.d.ts +0 -9
  216. package/dist/composables/components/useCheckboxGroupContext.d.ts +0 -4
  217. package/dist/composables/components/useDropOffInputContext.d.ts +0 -13
  218. package/dist/composables/components/useDropdownButtonContext.d.ts +0 -15
  219. package/dist/composables/components/useElementContext.d.ts +0 -7
  220. package/dist/composables/components/useElementOptions.d.ts +0 -6
  221. package/dist/composables/components/useInputWithOptionsContext.d.ts +0 -10
  222. package/dist/composables/components/useModalElementContext.d.ts +0 -11
  223. package/dist/composables/components/useMultiSelectInputContext.d.ts +0 -4
  224. package/dist/composables/components/useRadioGroupContext.d.ts +0 -10
  225. package/dist/composables/components/useSelectInputContext.d.ts +0 -4
  226. package/dist/composables/components/useShippingMethodsInputContext.d.ts +0 -13
  227. package/dist/composables/components/useTableContext.d.ts +0 -7
  228. package/dist/composables/components/useToggleInputContext.d.ts +0 -11
  229. package/dist/composables/components/useTriStateInputContext.d.ts +0 -17
  230. package/dist/composables/context/index.d.ts +0 -7
  231. package/dist/composables/context/useAppInfo.d.ts +0 -2
  232. package/dist/composables/context/useContext.d.ts +0 -3
  233. package/dist/composables/context/useGlobalContext.d.ts +0 -2
  234. package/dist/composables/context/useInstanceContext.d.ts +0 -8
  235. package/dist/composables/context/useModalContext.d.ts +0 -11
  236. package/dist/composables/context/useModalOrder.d.ts +0 -1
  237. package/dist/composables/context/usePluginSettings.d.ts +0 -2
  238. package/dist/composables/formatter/default/createCurrencyFormat.d.ts +0 -1
  239. package/dist/composables/formatter/default/createLongDateFormat.d.ts +0 -1
  240. package/dist/composables/formatter/default/createRelativeTimeFormat.d.ts +0 -1
  241. package/dist/composables/formatter/default/defaultCurrencyFormatters.d.ts +0 -2
  242. package/dist/composables/formatter/default/defaultDateFormatters.d.ts +0 -4
  243. package/dist/composables/formatter/default/index.d.ts +0 -6
  244. package/dist/composables/formatter/default/parseDate.d.ts +0 -1
  245. package/dist/composables/formatter/formatter.types.d.ts +0 -23
  246. package/dist/composables/formatter/index.d.ts +0 -4
  247. package/dist/composables/formatter/useFormatter.d.ts +0 -2
  248. package/dist/composables/formatter/useLocalizedFormatter.d.ts +0 -2
  249. package/dist/composables/index.d.ts +0 -17
  250. package/dist/composables/language/index.d.ts +0 -4
  251. package/dist/composables/language/resolveTranslatedString.d.ts +0 -3
  252. package/dist/composables/language/resolveTranslationKey.d.ts +0 -2
  253. package/dist/composables/language/types.d.ts +0 -1
  254. package/dist/composables/language/useLanguage.d.ts +0 -23
  255. package/dist/composables/orders/index.d.ts +0 -3
  256. package/dist/composables/orders/useOrder.d.ts +0 -3
  257. package/dist/composables/orders/useOrderData.d.ts +0 -9
  258. package/dist/composables/orders/useOrdersData.d.ts +0 -3
  259. package/dist/composables/products/index.d.ts +0 -1
  260. package/dist/composables/products/useProductData.d.ts +0 -8
  261. package/dist/composables/shipments/index.d.ts +0 -3
  262. package/dist/composables/shipments/useShipment.d.ts +0 -3
  263. package/dist/composables/shipments/useShipmentData.d.ts +0 -12
  264. package/dist/composables/shipments/useShipmentsData.d.ts +0 -2
  265. package/dist/composables/useAdminConfig.d.ts +0 -2
  266. package/dist/composables/useAdminInstance.d.ts +0 -2
  267. package/dist/composables/useDigitalStampRanges.d.ts +0 -12
  268. package/dist/composables/useGlobalPdkAdmin.d.ts +0 -2
  269. package/dist/composables/useLoadMore.d.ts +0 -14
  270. package/dist/composables/useLoading.d.ts +0 -10
  271. package/dist/composables/useLogger.d.ts +0 -2
  272. package/dist/composables/useStoreContextQuery.d.ts +0 -3
  273. package/dist/composables/useStoreQuery.d.ts +0 -4
  274. package/dist/composables/useWeekdays.d.ts +0 -9
  275. package/dist/data/components.d.ts +0 -195
  276. package/dist/data/constants.d.ts +0 -63
  277. package/dist/data/endpoints.d.ts +0 -5
  278. package/dist/data/index.d.ts +0 -4
  279. package/dist/data/view.d.ts +0 -9
  280. package/dist/deprecated.d.ts +0 -6
  281. package/dist/forms/createReturnsForm.d.ts +0 -1
  282. package/dist/forms/form-builder/builders/buildAfterUpdate.d.ts +0 -3
  283. package/dist/forms/form-builder/builders/buildFormStateWatcher.d.ts +0 -3
  284. package/dist/forms/form-builder/builders/index.d.ts +0 -2
  285. package/dist/forms/form-builder/conditions/index.d.ts +0 -3
  286. package/dist/forms/form-builder/conditions/validateIfCondition.d.ts +0 -2
  287. package/dist/forms/form-builder/conditions/validateIfConditions.d.ts +0 -2
  288. package/dist/forms/form-builder/conditions/validateIsTruthy.d.ts +0 -2
  289. package/dist/forms/form-builder/index.d.ts +0 -5
  290. package/dist/forms/form-builder/operations/executeCustomOperationHandlers.d.ts +0 -2
  291. package/dist/forms/form-builder/operations/executeOperation.d.ts +0 -2
  292. package/dist/forms/form-builder/operations/executeOperations.d.ts +0 -2
  293. package/dist/forms/form-builder/operations/executeSetPropOperation.d.ts +0 -2
  294. package/dist/forms/form-builder/operations/executeSetValueOperation.d.ts +0 -2
  295. package/dist/forms/form-builder/operations/index.d.ts +0 -5
  296. package/dist/forms/form-builder/operations/parseBuilders.d.ts +0 -3
  297. package/dist/forms/form-builder/types/FormCondition.types.d.ts +0 -36
  298. package/dist/forms/form-builder/types/FormOperations.types.d.ts +0 -16
  299. package/dist/forms/form-builder/types/SubOperationBuilder.types.d.ts +0 -13
  300. package/dist/forms/form-builder/types/common.types.d.ts +0 -21
  301. package/dist/forms/form-builder/types/index.d.ts +0 -4
  302. package/dist/forms/form-builder/utils/createPropSetter.d.ts +0 -4
  303. package/dist/forms/form-builder/utils/createValueGetter.d.ts +0 -4
  304. package/dist/forms/form-builder/utils/createValueSetter.d.ts +0 -4
  305. package/dist/forms/form-builder/utils/index.d.ts +0 -4
  306. package/dist/forms/formKeys.d.ts +0 -10
  307. package/dist/forms/helpers/addBulkEditNotification.d.ts +0 -1
  308. package/dist/forms/helpers/createDefaultOption.d.ts +0 -3
  309. package/dist/forms/helpers/createHasShipmentOptionWatcher.d.ts +0 -3
  310. package/dist/forms/helpers/createLabel.d.ts +0 -1
  311. package/dist/forms/helpers/defineFormField.d.ts +0 -2
  312. package/dist/forms/helpers/getCarrier.d.ts +0 -3
  313. package/dist/forms/helpers/getDeliveryTypes.d.ts +0 -3
  314. package/dist/forms/helpers/getFieldLabel.d.ts +0 -2
  315. package/dist/forms/helpers/getFormCarrierName.d.ts +0 -2
  316. package/dist/forms/helpers/getInsuranceOptions.d.ts +0 -3
  317. package/dist/forms/helpers/getPackageTypes.d.ts +0 -3
  318. package/dist/forms/helpers/hasPostNlAgeCheck.d.ts +0 -2
  319. package/dist/forms/helpers/hasShipmentOption.d.ts +0 -3
  320. package/dist/forms/helpers/index.d.ts +0 -21
  321. package/dist/forms/helpers/isPackageTypeMailbox.d.ts +0 -2
  322. package/dist/forms/helpers/isPackageTypePackage.d.ts +0 -2
  323. package/dist/forms/helpers/isPackageTypePackageOrSmall.d.ts +0 -2
  324. package/dist/forms/helpers/isPackageTypeSmallPackage.d.ts +0 -2
  325. package/dist/forms/helpers/resolveFormComponent.d.ts +0 -3
  326. package/dist/forms/helpers/setFieldProp.d.ts +0 -8
  327. package/dist/forms/helpers/setPostNlAgeCheckSubtext.d.ts +0 -2
  328. package/dist/forms/helpers/triStateFieldIsEnabled.d.ts +0 -2
  329. package/dist/forms/helpers/updateFieldsDefaults.d.ts +0 -6
  330. package/dist/forms/index.d.ts +0 -6
  331. package/dist/forms/pluginSettings/createFormTab.d.ts +0 -3
  332. package/dist/forms/pluginSettings/createPluginSettingsForm.d.ts +0 -4
  333. package/dist/forms/pluginSettings/createPluginSettingsTabs.d.ts +0 -4
  334. package/dist/forms/pluginSettings/createPluginSettingsTabsComponent.d.ts +0 -4
  335. package/dist/forms/pluginSettings/generateFormFields.d.ts +0 -8
  336. package/dist/forms/pluginSettings/index.d.ts +0 -6
  337. package/dist/forms/pluginSettings/types.d.ts +0 -13
  338. package/dist/forms/shipmentOptions/createShipmentOptionsForm.d.ts +0 -4
  339. package/dist/forms/shipmentOptions/field.d.ts +0 -36
  340. package/dist/forms/shipmentOptions/fields/createAgeCheckField.d.ts +0 -3
  341. package/dist/forms/shipmentOptions/fields/createCarrierField.d.ts +0 -4
  342. package/dist/forms/shipmentOptions/fields/createDeliveryTypeField.d.ts +0 -3
  343. package/dist/forms/shipmentOptions/fields/createDigitalStampRangeField.d.ts +0 -4
  344. package/dist/forms/shipmentOptions/fields/createDirectReturnField.d.ts +0 -3
  345. package/dist/forms/shipmentOptions/fields/createHideSenderField.d.ts +0 -3
  346. package/dist/forms/shipmentOptions/fields/createInsuranceField.d.ts +0 -3
  347. package/dist/forms/shipmentOptions/fields/createLabelAmountField.d.ts +0 -3
  348. package/dist/forms/shipmentOptions/fields/createLargeFormatField.d.ts +0 -3
  349. package/dist/forms/shipmentOptions/fields/createOnlyRecipientField.d.ts +0 -3
  350. package/dist/forms/shipmentOptions/fields/createPackageTypeField.d.ts +0 -3
  351. package/dist/forms/shipmentOptions/fields/createPriorityDeliveryField.d.ts +0 -3
  352. package/dist/forms/shipmentOptions/fields/createReceiptCodeField.d.ts +0 -3
  353. package/dist/forms/shipmentOptions/fields/createRef.d.ts +0 -3
  354. package/dist/forms/shipmentOptions/fields/createSameDayDeliveryField.d.ts +0 -3
  355. package/dist/forms/shipmentOptions/fields/createShipmentOptionField.d.ts +0 -4
  356. package/dist/forms/shipmentOptions/fields/createSignatureField.d.ts +0 -3
  357. package/dist/forms/shipmentOptions/fields/index.d.ts +0 -15
  358. package/dist/forms/shipmentOptions/index.d.ts +0 -4
  359. package/dist/forms/shipmentOptions/types.d.ts +0 -2
  360. package/dist/index.d.ts +0 -19
  361. package/dist/pdk/PdkAdmin.d.ts +0 -18
  362. package/dist/pdk/boot.d.ts +0 -3
  363. package/dist/pdk/createAdminConfig.d.ts +0 -2
  364. package/dist/pdk/createPdkAdmin.d.ts +0 -8
  365. package/dist/pdk/createPdkAdminPlugin.d.ts +0 -3
  366. package/dist/pdk/fillShipmentsQueryData.d.ts +0 -4
  367. package/dist/pdk/index.d.ts +0 -11
  368. package/dist/pdk/instance/createInstanceContext.d.ts +0 -5
  369. package/dist/pdk/instance/createQueryClient.d.ts +0 -2
  370. package/dist/pdk/instance/index.d.ts +0 -3
  371. package/dist/pdk/instance/plugins/createContextPlugin.d.ts +0 -2
  372. package/dist/pdk/instance/plugins/createLoggerPlugin.d.ts +0 -2
  373. package/dist/pdk/instance/plugins/createRegisterComponentsPlugin.d.ts +0 -5
  374. package/dist/pdk/instance/plugins/createStorePlugin.d.ts +0 -2
  375. package/dist/pdk/instance/plugins/createVueQueryPlugin.d.ts +0 -5
  376. package/dist/pdk/instance/plugins/index.d.ts +0 -6
  377. package/dist/pdk/instance/plugins/plugins.types.d.ts +0 -3
  378. package/dist/pdk/renderMap.d.ts +0 -3
  379. package/dist/pdk/sendBootEvent.d.ts +0 -3
  380. package/dist/pdk/setupAdminApp.d.ts +0 -3
  381. package/dist/pdk/testIdDirective.d.ts +0 -5
  382. package/dist/sdk/PdkFetchClient.d.ts +0 -11
  383. package/dist/sdk/composables/api/index.d.ts +0 -1
  384. package/dist/sdk/composables/api/useFetchCarrier.d.ts +0 -2
  385. package/dist/sdk/composables/index.d.ts +0 -3
  386. package/dist/sdk/composables/useMyParcelApi.d.ts +0 -5
  387. package/dist/sdk/composables/usePdkAdminApi.d.ts +0 -6
  388. package/dist/sdk/endpoints/abstractPdkEndpoint.d.ts +0 -7
  389. package/dist/sdk/endpoints/index.d.ts +0 -1
  390. package/dist/sdk/index.d.ts +0 -3
  391. package/dist/services/actions/createAction.d.ts +0 -4
  392. package/dist/services/actions/createActionContext.d.ts +0 -3
  393. package/dist/services/actions/downloadFile.d.ts +0 -4
  394. package/dist/services/actions/getActionIdentifier.d.ts +0 -2
  395. package/dist/services/actions/index.d.ts +0 -4
  396. package/dist/services/addErrorToNotifications.d.ts +0 -2
  397. package/dist/services/context/getElementContext.d.ts +0 -2
  398. package/dist/services/context/index.d.ts +0 -1
  399. package/dist/services/createNotification.d.ts +0 -5
  400. package/dist/services/index.d.ts +0 -9
  401. package/dist/services/instantiateAction.d.ts +0 -2
  402. package/dist/services/instantiateActions.d.ts +0 -8
  403. package/dist/services/logger.d.ts +0 -19
  404. package/dist/services/mutations/getCallbackForMutationMode.d.ts +0 -4
  405. package/dist/services/mutations/getModalMutationOptions.d.ts +0 -2
  406. package/dist/services/mutations/index.d.ts +0 -3
  407. package/dist/services/mutations/mutationMode.d.ts +0 -4
  408. package/dist/services/print/index.d.ts +0 -1
  409. package/dist/services/print/openPdfInNewWindow.d.ts +0 -4
  410. package/dist/stores/createQueryCacheKey.d.ts +0 -3
  411. package/dist/stores/index.d.ts +0 -6
  412. package/dist/stores/types.d.ts +0 -13
  413. package/dist/stores/useActionStore.d.ts +0 -25
  414. package/dist/stores/useModalStore.d.ts +0 -16
  415. package/dist/stores/useNotificationStore.d.ts +0 -60
  416. package/dist/stores/useQueryStore.d.ts +0 -77
  417. package/dist/symbols.d.ts +0 -5
  418. package/dist/testing.d.ts +0 -1
  419. package/dist/types/actions/actions.types.d.ts +0 -31
  420. package/dist/types/actions/endpoints.types.d.ts +0 -9
  421. package/dist/types/actions/index.d.ts +0 -4
  422. package/dist/types/actions/parameters.types.d.ts +0 -55
  423. package/dist/types/actions/response.types.d.ts +0 -7
  424. package/dist/types/actions.types.d.ts +0 -45
  425. package/dist/types/admin.types.d.ts +0 -26
  426. package/dist/types/common.types.d.ts +0 -53
  427. package/dist/types/components-form.types.d.ts +0 -107
  428. package/dist/types/components.types.d.ts +0 -273
  429. package/dist/types/configuration.types.d.ts +0 -95
  430. package/dist/types/context.types.d.ts +0 -20
  431. package/dist/types/endpoints.types.d.ts +0 -7
  432. package/dist/types/form.types.d.ts +0 -39
  433. package/dist/types/index.d.ts +0 -12
  434. package/dist/types/language.types.d.ts +0 -9
  435. package/dist/types/sdk.types.d.ts +0 -155
  436. package/dist/utils/booleanToTriState.d.ts +0 -2
  437. package/dist/utils/convertDotNotationToObject.d.ts +0 -1
  438. package/dist/utils/createAssetUrl.d.ts +0 -1
  439. package/dist/utils/createClasses.d.ts +0 -8
  440. package/dist/utils/createObjectWithKeys.d.ts +0 -3
  441. package/dist/utils/decodeHtmlEntities.d.ts +0 -7
  442. package/dist/utils/downloadBlob.d.ts +0 -1
  443. package/dist/utils/downloadFileFromUrl.d.ts +0 -1
  444. package/dist/utils/encodeArrayParameter.d.ts +0 -2
  445. package/dist/utils/extendAdminInstance.d.ts +0 -2
  446. package/dist/utils/fakeLinkClick.d.ts +0 -4
  447. package/dist/utils/forms/createFormElement.d.ts +0 -3
  448. package/dist/utils/forms/createShipmentFormName.d.ts +0 -1
  449. package/dist/utils/forms/formToBody.d.ts +0 -2
  450. package/dist/utils/forms/generateFieldId.d.ts +0 -3
  451. package/dist/utils/forms/index.d.ts +0 -4
  452. package/dist/utils/generateLabelFilename.d.ts +0 -3
  453. package/dist/utils/getOrderId.d.ts +0 -3
  454. package/dist/utils/getOrderShipmentIds.d.ts +0 -2
  455. package/dist/utils/index.d.ts +0 -22
  456. package/dist/utils/openUrlInNewTab.d.ts +0 -1
  457. package/dist/utils/prefixComponent.d.ts +0 -3
  458. package/dist/utils/query/index.d.ts +0 -3
  459. package/dist/utils/query/setQueryData.d.ts +0 -2
  460. package/dist/utils/query/setQueryOrder.d.ts +0 -10
  461. package/dist/utils/query/setQueryShipment.d.ts +0 -3
  462. package/dist/utils/resolveCarrier.d.ts +0 -1
  463. package/dist/utils/translations/getDeliveryTypeTranslation.d.ts +0 -2
  464. package/dist/utils/translations/getDynamicTranslation.d.ts +0 -1
  465. package/dist/utils/translations/getPackageTypeTranslation.d.ts +0 -2
  466. package/dist/utils/translations/index.d.ts +0 -4
  467. package/dist/utils/translations/translateSelectOption.d.ts +0 -3
  468. package/dist/utils/triStateToBoolean.d.ts +0 -2
  469. package/dist/utils/unprefixComponent.d.ts +0 -3
  470. package/dist/utils/validateId.d.ts +0 -2
  471. package/dist/views/ChildProductSettings.vue.d.ts +0 -2
  472. package/dist/views/Modals.vue.d.ts +0 -2
  473. package/dist/views/Notifications.vue.d.ts +0 -2
  474. package/dist/views/OrderBox.vue.d.ts +0 -2
  475. package/dist/views/OrderListItem.vue.d.ts +0 -2
  476. package/dist/views/PluginSettings.vue.d.ts +0 -2
  477. package/dist/views/ProductSettings.vue.d.ts +0 -35
  478. package/dist/views/integrated/OrderBoxView.vue.d.ts +0 -12
  479. package/dist/views/integrated/OrderListItemView.vue.d.ts +0 -12
  480. package/dist/views/integrated/index.d.ts +0 -7
  481. package/src/forms/helpers/createHasShipmentOptionWatcher.ts +0 -12
  482. package/src/forms/helpers/getCarrier.ts +0 -11
  483. package/src/forms/helpers/getInsuranceOptions.ts +0 -23
  484. package/src/forms/helpers/hasPostNlAgeCheck.ts +0 -11
  485. package/src/forms/helpers/hasShipmentOption.ts +0 -8
  486. package/src/forms/helpers/isPackageTypeMailbox.ts +0 -7
  487. package/src/forms/helpers/isPackageTypePackage.ts +0 -7
  488. package/src/forms/helpers/isPackageTypePackageOrSmall.ts +0 -7
  489. package/src/forms/helpers/isPackageTypeSmallPackage.ts +0 -7
  490. package/src/forms/helpers/setPostNlAgeCheckSubtext.ts +0 -17
  491. package/src/forms/shipmentOptions/fields/createAgeCheckField.ts +0 -33
  492. package/src/forms/shipmentOptions/fields/createDirectReturnField.ts +0 -8
  493. package/src/forms/shipmentOptions/fields/createHideSenderField.ts +0 -8
  494. package/src/forms/shipmentOptions/fields/createLargeFormatField.ts +0 -8
  495. package/src/forms/shipmentOptions/fields/createOnlyRecipientField.ts +0 -21
  496. package/src/forms/shipmentOptions/fields/createPriorityDeliveryField.ts +0 -12
  497. package/src/forms/shipmentOptions/fields/createReceiptCodeField.ts +0 -21
  498. package/src/forms/shipmentOptions/fields/createSameDayDeliveryField.ts +0 -8
  499. package/src/forms/shipmentOptions/fields/createSignatureField.ts +0 -11
@@ -0,0 +1,109 @@
1
+ // @vitest-environment happy-dom
2
+
3
+ import {computed, defineComponent, h} from 'vue';
4
+ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
5
+ import {config, mount} from '@vue/test-utils';
6
+ import {AdminAction, OrderMode} from '../../data';
7
+ import {useOrderData} from '../../composables/orders/useOrderData';
8
+ import {useOrderMode} from '../../composables/context/useOrderMode';
9
+ import {ORDER_VIEW_IN_BACKOFFICE_ID} from '../../actions';
10
+ import {mockOrderData} from '../../__tests__/utils/mockOrderData';
11
+ import {getActionIds} from '../../__tests__/utils/getActionIds';
12
+ import {doComponentTestSetup, doComponentTestTeardown} from '../../__tests__';
13
+ import ShipmentOptionsBox from './ShipmentOptionsBox.vue';
14
+
15
+ vi.mock('../../composables/context/useOrderMode', () => ({
16
+ useOrderMode: vi.fn(),
17
+ }));
18
+
19
+ vi.mock('../../composables/orders/useOrderData', () => ({
20
+ useOrderData: vi.fn(),
21
+ }));
22
+
23
+ vi.mock('../../composables/language/useLanguage', () => ({
24
+ useLanguage: vi.fn(() => ({
25
+ translate: (key: string) => key,
26
+ })),
27
+ }));
28
+
29
+ const mockedUseOrderMode = vi.mocked(useOrderMode);
30
+ const mockedUseOrderData = vi.mocked(useOrderData);
31
+
32
+ // eslint-disable-next-line @typescript-eslint/naming-convention
33
+ const PdkConceptBoxWrapperStub = defineComponent({
34
+ name: 'PdkConceptBoxWrapper',
35
+ props: {actions: Array, loading: Boolean},
36
+ render() {
37
+ return h('div', this.$slots.default?.());
38
+ },
39
+ });
40
+
41
+ const getBoxActionIds = (wrapper: ReturnType<typeof mount>) => getActionIds(wrapper, PdkConceptBoxWrapperStub);
42
+
43
+ describe('ShipmentOptionsBox', () => {
44
+ beforeEach(() => {
45
+ doComponentTestSetup();
46
+ config.global.stubs.PdkConceptBoxWrapper = PdkConceptBoxWrapperStub as any;
47
+ });
48
+
49
+ afterEach(() => {
50
+ doComponentTestTeardown();
51
+ });
52
+
53
+ it('shows update, export-to-shipments, print, and export-print in Shipments mode', () => {
54
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.Shipments));
55
+ mockOrderData(mockedUseOrderData);
56
+ const wrapper = mount(ShipmentOptionsBox);
57
+ const ids = getBoxActionIds(wrapper);
58
+
59
+ expect(ids).toContain(AdminAction.OrdersUpdate);
60
+ expect(ids).toContain(AdminAction.OrdersExport);
61
+ expect(ids).toContain(AdminAction.OrdersPrint);
62
+ expect(ids).toContain(AdminAction.OrdersExportPrint);
63
+ expect(ids).not.toContain(ORDER_VIEW_IN_BACKOFFICE_ID);
64
+ });
65
+
66
+ it('shows update and export in OrderV1 mode (not exported)', () => {
67
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV1));
68
+ mockOrderData(mockedUseOrderData);
69
+ const wrapper = mount(ShipmentOptionsBox);
70
+ const ids = getBoxActionIds(wrapper);
71
+
72
+ expect(ids).toContain(AdminAction.OrdersUpdate);
73
+ expect(ids).toContain(AdminAction.OrdersExport);
74
+ expect(ids).not.toContain(AdminAction.OrdersPrint);
75
+ expect(ids).not.toContain(AdminAction.OrdersExportPrint);
76
+ });
77
+
78
+ it('shows backoffice link in OrderV1 mode when exported', () => {
79
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV1));
80
+ mockOrderData(mockedUseOrderData, {exported: true});
81
+ const wrapper = mount(ShipmentOptionsBox);
82
+ const ids = getBoxActionIds(wrapper);
83
+
84
+ expect(ids).toEqual([ORDER_VIEW_IN_BACKOFFICE_ID]);
85
+ });
86
+
87
+ it('shows update plus the shipment-export action set in OrderV2 mode (hybrid)', () => {
88
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV2));
89
+ mockOrderData(mockedUseOrderData);
90
+ const wrapper = mount(ShipmentOptionsBox);
91
+ const ids = getBoxActionIds(wrapper);
92
+
93
+ expect(ids).toContain(AdminAction.OrdersUpdate);
94
+ expect(ids).toContain(AdminAction.OrdersExport);
95
+ expect(ids).toContain(AdminAction.OrdersPrint);
96
+ expect(ids).toContain(AdminAction.OrdersExportPrint);
97
+ });
98
+
99
+ it('does not show the V1 backoffice link in OrderV2 mode, even if order has exported flag', () => {
100
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV2));
101
+ mockOrderData(mockedUseOrderData, {exported: true});
102
+ const wrapper = mount(ShipmentOptionsBox);
103
+ const ids = getBoxActionIds(wrapper);
104
+
105
+ expect(ids).not.toContain(ORDER_VIEW_IN_BACKOFFICE_ID);
106
+ // Hybrid actions still appear regardless of the exported flag.
107
+ expect(ids).toContain(AdminAction.OrdersExport);
108
+ });
109
+ });
@@ -23,8 +23,7 @@
23
23
 
24
24
  <PdkRow>
25
25
  <PdkCol>
26
- <NotificationContainer
27
- :category="NotificationCategory.Action" />
26
+ <NotificationContainer :category="NotificationCategory.Action" />
28
27
  </PdkCol>
29
28
  </PdkRow>
30
29
  </template>
@@ -35,40 +34,25 @@
35
34
  import {computed, toValue} from 'vue';
36
35
  import {ShipmentOptionsForm} from '../common';
37
36
  import {instantiateActions} from '../../services';
38
- import {AdminIcon, NotificationCategory} from '../../data';
39
- import {useLanguage, useOrderData, usePluginSettings} from '../../composables';
40
- import {
41
- orderExportAction,
42
- orderExportToShipmentsAction,
43
- ordersExportPrintShipmentsAction,
44
- ordersPrintAction,
45
- ordersUpdateAction,
46
- orderViewInBackofficeAction,
47
- } from '../../actions';
37
+ import {AdminIcon, NotificationCategory, OrderMode} from '../../data';
38
+ import {useLanguage, useOrderData, useOrderMode} from '../../composables';
48
39
  import {NotificationContainer} from '../../components';
40
+ import {BOX_MODE_ACTIONS, ordersUpdateAction, orderViewInBackofficeAction} from '../../actions';
49
41
 
50
42
  const {order: data, loading} = useOrderData();
51
43
 
52
44
  const {translate} = useLanguage();
53
- const pluginSettings = usePluginSettings();
45
+ const orderMode = useOrderMode();
54
46
 
55
- const {orderMode} = pluginSettings.order;
56
-
57
- const isExported = computed(() => pluginSettings.order.orderMode && toValue(data)?.exported);
47
+ const isExported = computed(() => orderMode.value === OrderMode.OrderV1 && toValue(data)?.exported);
58
48
 
59
49
  const actions = computed(() => {
60
50
  if (isExported.value) {
61
51
  return instantiateActions(orderViewInBackofficeAction);
62
52
  }
63
53
 
64
- return instantiateActions(
65
- [
66
- ordersUpdateAction,
67
- ...(orderMode
68
- ? [orderExportAction]
69
- : [orderExportToShipmentsAction, ordersPrintAction, ordersExportPrintShipmentsAction]),
70
- ],
71
- {orderIds: toValue(data)?.externalIdentifier},
72
- );
54
+ return instantiateActions([ordersUpdateAction, ...BOX_MODE_ACTIONS[orderMode.value]], {
55
+ orderIds: toValue(data)?.externalIdentifier,
56
+ });
73
57
  });
74
58
  </script>
@@ -0,0 +1,125 @@
1
+ // @vitest-environment happy-dom
2
+
3
+ import {computed, defineComponent, h} from 'vue';
4
+ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
5
+ import {config, mount} from '@vue/test-utils';
6
+ import {AdminAction, OrderMode} from '../../data';
7
+ import {useOrderMode} from '../../composables/context/useOrderMode';
8
+ import {useOrderData} from '../../composables/orders/useOrderData';
9
+ import {ORDER_VIEW_IN_BACKOFFICE_ID} from '../../actions';
10
+ import {mockOrderData} from '../../__tests__/utils/mockOrderData';
11
+ import {doComponentTestSetup, doComponentTestTeardown} from '../../__tests__';
12
+ import OrderModeOrderListItem from './OrderModeOrderListItem.vue';
13
+
14
+ vi.mock('../../composables/orders/useOrderData', () => ({
15
+ useOrderData: vi.fn(),
16
+ }));
17
+
18
+ vi.mock('../../composables/context/useOrderMode', () => ({
19
+ useOrderMode: vi.fn(),
20
+ }));
21
+
22
+ const mockedUseOrderData = vi.mocked(useOrderData);
23
+ const mockedUseOrderMode = vi.mocked(useOrderMode);
24
+
25
+ // eslint-disable-next-line @typescript-eslint/naming-convention
26
+ const ShipmentLabelStub = defineComponent({
27
+ name: 'ShipmentLabel',
28
+ props: {shipmentId: Number},
29
+ render() {
30
+ return h('div', {class: 'shipment-label'}, `Shipment #${this.shipmentId}`);
31
+ },
32
+ });
33
+
34
+ // eslint-disable-next-line @typescript-eslint/naming-convention
35
+ const PdkLinkStub = defineComponent({
36
+ name: 'PdkLink',
37
+ props: {action: {type: Object, required: true}},
38
+ render() {
39
+ return h('a', {'data-action-id': (this.action as {id?: string})?.id}, 'PdkLink');
40
+ },
41
+ });
42
+
43
+ describe('OrderModeOrderListItem', () => {
44
+ beforeEach(() => {
45
+ doComponentTestSetup();
46
+ config.global.stubs.ShipmentLabel = ShipmentLabelStub as any;
47
+ config.global.stubs.PdkLink = PdkLinkStub as any;
48
+ });
49
+
50
+ afterEach(() => {
51
+ doComponentTestTeardown();
52
+ });
53
+
54
+ describe('OrderV1 mode', () => {
55
+ beforeEach(() => {
56
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV1));
57
+ });
58
+
59
+ it('shows edit and export actions when the order is not exported', () => {
60
+ mockOrderData(mockedUseOrderData);
61
+ const wrapper = mount(OrderModeOrderListItem);
62
+ const html = wrapper.html();
63
+
64
+ expect(html).toContain(AdminAction.OrdersEdit);
65
+ expect(html).toContain(AdminAction.OrdersExport);
66
+ expect(html).not.toContain(ORDER_VIEW_IN_BACKOFFICE_ID);
67
+ });
68
+
69
+ it('shows only the backoffice link when the order is exported', () => {
70
+ mockOrderData(mockedUseOrderData, {exported: true});
71
+ const wrapper = mount(OrderModeOrderListItem);
72
+ const pdkLink = wrapper.findComponent(PdkLinkStub);
73
+ const html = wrapper.html();
74
+
75
+ expect(pdkLink.exists()).toBe(true);
76
+ expect(html).toContain(`data-action-id="${ORDER_VIEW_IN_BACKOFFICE_ID}"`);
77
+ expect(html).not.toContain(AdminAction.OrdersEdit);
78
+ expect(html).not.toContain(AdminAction.OrdersExport);
79
+ });
80
+ });
81
+
82
+ describe('OrderV2 mode', () => {
83
+ beforeEach(() => {
84
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV2));
85
+ });
86
+
87
+ it('shows the edit action and the shipment-export action (hybrid)', () => {
88
+ mockOrderData(mockedUseOrderData);
89
+ const wrapper = mount(OrderModeOrderListItem);
90
+ const html = wrapper.html();
91
+
92
+ expect(html).toContain(AdminAction.OrdersEdit);
93
+ expect(html).toContain(AdminAction.OrdersExport);
94
+ });
95
+
96
+ it('does not show the V1 backoffice link, even when the order is exported', () => {
97
+ mockOrderData(mockedUseOrderData, {exported: true});
98
+ const wrapper = mount(OrderModeOrderListItem);
99
+ const html = wrapper.html();
100
+
101
+ expect(html).not.toContain(ORDER_VIEW_IN_BACKOFFICE_ID);
102
+ });
103
+ });
104
+
105
+ describe('structural rendering', () => {
106
+ beforeEach(() => {
107
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV2));
108
+ });
109
+
110
+ it('shows DeliveryOptionsExcerpt when there are no shipments', () => {
111
+ mockOrderData(mockedUseOrderData, {shipments: []});
112
+ const wrapper = mount(OrderModeOrderListItem);
113
+
114
+ expect(wrapper.findComponent({name: 'DeliveryOptionsExcerpt'}).exists()).toBe(true);
115
+ });
116
+
117
+ it('renders a ShipmentLabel for each shipment', () => {
118
+ mockOrderData(mockedUseOrderData, {shipments: [{id: 1}, {id: 2}, {id: 3}]});
119
+ const wrapper = mount(OrderModeOrderListItem);
120
+ const labels = wrapper.findAllComponents(ShipmentLabelStub);
121
+
122
+ expect(labels).toHaveLength(3);
123
+ });
124
+ });
125
+ });
@@ -7,7 +7,7 @@
7
7
  :shipment-id="shipment.id" />
8
8
 
9
9
  <PdkButtonGroup v-test="[$.type.__name, order?.externalIdentifier]">
10
- <template v-if="order?.exported">
10
+ <template v-if="orderMode === OrderMode.OrderV1 && order?.exported">
11
11
  <PdkLink :action="showExportedOrderAction" />
12
12
  </template>
13
13
 
@@ -27,11 +27,13 @@ import {computed, toValue} from 'vue';
27
27
  import {Size} from '@myparcel-dev/pdk-common';
28
28
  import {ActionButton, DeliveryOptionsExcerpt} from '../common';
29
29
  import {instantiateAction, instantiateActions} from '../../services';
30
- import {useOrderData} from '../../composables';
31
- import {orderExportAction, ordersEditAction, orderViewInBackofficeAction} from '../../actions';
30
+ import {useOrderData, useOrderMode} from '../../composables';
31
+ import {OrderMode} from '../../data';
32
+ import {LIST_ITEM_MODE_ACTIONS, orderViewInBackofficeAction} from '../../actions';
32
33
  import ShipmentLabel from './ShipmentLabel.vue';
33
34
 
34
35
  const {query, order} = useOrderData();
36
+ const orderMode = useOrderMode();
35
37
 
36
38
  const data = computed(() => toValue(query.data));
37
39
 
@@ -39,7 +41,9 @@ const shipments = computed(() => toValue(data)?.shipments ?? []);
39
41
 
40
42
  const showExportedOrderAction = instantiateAction(orderViewInBackofficeAction);
41
43
 
42
- const orderActions = instantiateActions([ordersEditAction, orderExportAction], {
43
- orderIds: order.value?.externalIdentifier,
44
- });
44
+ const orderActions = computed(() =>
45
+ instantiateActions(LIST_ITEM_MODE_ACTIONS[orderMode.value], {
46
+ orderIds: order.value?.externalIdentifier,
47
+ }),
48
+ );
45
49
  </script>
@@ -14,12 +14,13 @@ import {AdminContextKey} from '@myparcel-dev/pdk-common';
14
14
  import {TabNavigation} from '../common';
15
15
  import {type TabDefinition} from '../../types';
16
16
  import {createActionContext} from '../../services';
17
- import {createPluginSettingsTabs} from '../../forms';
17
+ import {createPluginSettingsTabs, filterPluginSettingsView} from '../../forms';
18
18
  import {type AdminAction} from '../../data';
19
- import {useAdminConfig, useStoreContextQuery} from '../../composables';
19
+ import {useAdminConfig, useOrderMode, useStoreContextQuery} from '../../composables';
20
20
  import {pluginSettingsUpdateAction} from '../../actions';
21
21
 
22
22
  const config = useAdminConfig();
23
+ const orderMode = useOrderMode();
23
24
 
24
25
  const dynamicContextQuery = useStoreContextQuery();
25
26
  const pluginSettingsContextQuery = useStoreContextQuery(AdminContextKey.PluginSettingsView);
@@ -37,14 +38,16 @@ watch(
37
38
  return;
38
39
  }
39
40
 
40
- const pluginSettingsView = toValue(pluginSettingsContextQuery.data);
41
+ const rawPluginSettingsView = toValue(pluginSettingsContextQuery.data);
41
42
  const dynamicContext = toValue(dynamicContextQuery.data);
42
43
 
43
- if (!pluginSettingsView || !dynamicContext?.pluginSettings) {
44
+ if (!rawPluginSettingsView || !dynamicContext?.pluginSettings) {
44
45
  tabs.value = [];
45
46
  return;
46
47
  }
47
48
 
49
+ const pluginSettingsView = filterPluginSettingsView(rawPluginSettingsView, orderMode.value);
50
+
48
51
  tabs.value = createPluginSettingsTabs(pluginSettingsView, {
49
52
  pluginSettings: dynamicContext.pluginSettings,
50
53
  actionContext,
@@ -8,14 +8,14 @@
8
8
 
9
9
  <script lang="ts" setup>
10
10
  import {computed, toRefs, toValue} from 'vue';
11
- import {type Carrier} from '@myparcel-dev/pdk-common';
11
+ import {type CarrierModel} from '@myparcel-dev/pdk-common';
12
12
  import {useFetchCarrier} from '../../sdk';
13
13
  import CarrierLogo from './CarrierLogo.vue';
14
14
 
15
- const props = defineProps<{carrier: Carrier.ModelCarrier}>();
15
+ const props = defineProps<{carrier: CarrierModel}>();
16
16
  const propRefs = toRefs(props);
17
17
 
18
- const carriersQuery = useFetchCarrier(propRefs.carrier.value.name);
18
+ const carriersQuery = useFetchCarrier(propRefs.carrier.value.carrier);
19
19
 
20
20
  const carrierData = computed(() => toValue(carriersQuery.data));
21
21
  </script>
@@ -0,0 +1,79 @@
1
+ // @vitest-environment happy-dom
2
+
3
+ import {computed, defineComponent, h} from 'vue';
4
+ import {afterEach, beforeEach, describe, expect, it, vi} from 'vitest';
5
+ import {config, mount} from '@vue/test-utils';
6
+ import {AdminAction, OrderMode} from '../../data';
7
+ import {useOrderMode} from '../../composables/context/useOrderMode';
8
+ import {getActionIds} from '../../__tests__/utils/getActionIds';
9
+ import {doComponentTestSetup, doComponentTestTeardown} from '../../__tests__';
10
+ import ShipmentOptionsModal from './ShipmentOptionsModal.vue';
11
+
12
+ vi.mock('../../composables/context/useOrderMode', () => ({
13
+ useOrderMode: vi.fn(),
14
+ }));
15
+
16
+ vi.mock('../../composables/orders/useOrdersData', () => ({
17
+ useOrdersData: vi.fn(() => []),
18
+ }));
19
+
20
+ const mockedUseOrderMode = vi.mocked(useOrderMode);
21
+
22
+ const MODAL_CLOSE_ID = 'modal_close';
23
+
24
+ // eslint-disable-next-line @typescript-eslint/naming-convention
25
+ const PdkModalStub = defineComponent({
26
+ name: 'PdkModal',
27
+ props: {actions: Array, modalKey: String, title: String},
28
+ render() {
29
+ return h('div');
30
+ },
31
+ });
32
+
33
+ const getModalActionIds = (wrapper: ReturnType<typeof mount>) => getActionIds(wrapper, PdkModalStub);
34
+
35
+ describe('ShipmentOptionsModal', () => {
36
+ beforeEach(() => {
37
+ doComponentTestSetup();
38
+ config.global.stubs.PdkModal = PdkModalStub as any;
39
+ });
40
+
41
+ afterEach(() => {
42
+ doComponentTestTeardown();
43
+ });
44
+
45
+ it('shows close, update, export-to-shipments, and export-print in Shipments mode', () => {
46
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.Shipments));
47
+ const wrapper = mount(ShipmentOptionsModal);
48
+ const ids = getModalActionIds(wrapper);
49
+
50
+ expect(ids).toContain(MODAL_CLOSE_ID);
51
+ expect(ids).toContain(AdminAction.OrdersUpdate);
52
+ expect(ids).toContain(AdminAction.OrdersExport);
53
+ expect(ids).toContain(AdminAction.OrdersExportPrint);
54
+ });
55
+
56
+ it('shows close, update, and export in OrderV1 mode', () => {
57
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV1));
58
+ const wrapper = mount(ShipmentOptionsModal);
59
+ const ids = getModalActionIds(wrapper);
60
+
61
+ expect(ids).toContain(MODAL_CLOSE_ID);
62
+ expect(ids).toContain(AdminAction.OrdersUpdate);
63
+ expect(ids).toContain(AdminAction.OrdersExport);
64
+ expect(ids).not.toContain(AdminAction.OrdersExportPrint);
65
+ });
66
+
67
+ it('shows close, update, export and export-print in OrderV2 mode (hybrid)', () => {
68
+ mockedUseOrderMode.mockReturnValue(computed(() => OrderMode.OrderV2));
69
+ const wrapper = mount(ShipmentOptionsModal);
70
+ const ids = getModalActionIds(wrapper);
71
+
72
+ expect(ids).toContain(MODAL_CLOSE_ID);
73
+ expect(ids).toContain(AdminAction.OrdersUpdate);
74
+ expect(ids).toContain(AdminAction.OrdersExport);
75
+ expect(ids).toContain(AdminAction.OrdersExportPrint);
76
+ // Standalone print is intentionally absent from the modal in both Shipments and V2.
77
+ expect(ids).not.toContain(AdminAction.OrdersPrint);
78
+ });
79
+ });
@@ -15,14 +15,8 @@
15
15
  import {computed, defineAsyncComponent, toValue} from 'vue';
16
16
  import {instantiateActions} from '../../services';
17
17
  import {AdminModalKey} from '../../data';
18
- import {useOrdersData, usePluginSettings} from '../../composables';
19
- import {
20
- modalCloseAction,
21
- orderExportAction,
22
- orderExportToShipmentsAction,
23
- ordersExportPrintShipmentsAction,
24
- ordersUpdateAction,
25
- } from '../../actions';
18
+ import {useOrderMode, useOrdersData} from '../../composables';
19
+ import {modalCloseAction, MODAL_MODE_ACTIONS, ordersUpdateAction} from '../../actions';
26
20
 
27
21
  /**
28
22
  * Shipment options modal. Opened by clicking the "Create" button in the "Labels" column in the orders list.
@@ -31,9 +25,7 @@ import {
31
25
  // eslint-disable-next-line @typescript-eslint/naming-convention
32
26
  const ShipmentOptionsModalForm = defineAsyncComponent(() => import('./ShipmentOptionsModalForm.vue'));
33
27
 
34
- const pluginSettings = usePluginSettings();
35
-
36
- const {orderMode} = pluginSettings.order;
28
+ const orderMode = useOrderMode();
37
29
 
38
30
  const ordersData = computed(() => useOrdersData());
39
31
 
@@ -42,15 +34,6 @@ const orderIds = computed(() => toValue(ordersData).map((data) => toValue(data.o
42
34
  const actions = computed(() => {
43
35
  const disabled = toValue(ordersData).some((data) => toValue(data.query.isLoading));
44
36
 
45
- const actions = [
46
- modalCloseAction,
47
- ordersUpdateAction,
48
- ...(orderMode ? [orderExportAction] : [orderExportToShipmentsAction, ordersExportPrintShipmentsAction]),
49
- ];
50
-
51
- // TODO: figure out why this throws an error in build
52
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
53
- // @ts-ignore
54
- return instantiateActions(actions, {disabled});
37
+ return instantiateActions([modalCloseAction, ordersUpdateAction, ...MODAL_MODE_ACTIONS[orderMode.value]], {disabled});
55
38
  });
56
39
  </script>
@@ -22,8 +22,8 @@ export const useToggleInputContext: UseToggleInputContext = (props, emit) => {
22
22
  });
23
23
 
24
24
  // When the model is changed manually, like from another element, the toggle is updated
25
- watch(model, (model) => {
26
- toggleModel.value = triStateToBoolean(model);
25
+ watch(model, (modelVal) => {
26
+ toggleModel.value = triStateToBoolean(modelVal);
27
27
  });
28
28
 
29
29
  return {
@@ -99,12 +99,12 @@ export const useTriStateInputContext: UseTriStateInputContext = (props, emit) =>
99
99
  });
100
100
 
101
101
  // When the model is changed manually, like from another element, the toggle is updated if inherit is disabled.
102
- watch(model, (model) => {
102
+ watch(model, (modelVal) => {
103
103
  if (inheritModel.value) {
104
104
  return;
105
105
  }
106
106
 
107
- toggleModel.value = triStateToBoolean(model);
107
+ toggleModel.value = triStateToBoolean(modelVal);
108
108
  });
109
109
 
110
110
  return {
@@ -4,4 +4,5 @@ export * from './useGlobalContext';
4
4
  export * from './useInstanceContext';
5
5
  export * from './useModalContext';
6
6
  export * from './useModalOrder';
7
+ export * from './useOrderMode';
7
8
  export * from './usePluginSettings';
@@ -0,0 +1,75 @@
1
+ import {describe, expect, it, vi} from 'vitest';
2
+ import {OrderMode, SubscriptionFeature} from '../../data';
3
+ import {useOrderMode} from './useOrderMode';
4
+ import {useContext} from './useContext';
5
+
6
+ vi.mock('./useContext', () => ({
7
+ useContext: vi.fn(),
8
+ }));
9
+
10
+ const mockedUseContext = vi.mocked(useContext);
11
+
12
+ const mockAccount = (subscriptionFeatures: string[], effectiveOrderMode?: unknown) => {
13
+ mockedUseContext.mockReturnValue({account: {subscriptionFeatures, effectiveOrderMode}} as any);
14
+ };
15
+
16
+ describe('useOrderMode', () => {
17
+ it('returns OrderV2 when both ORDER_MANAGEMENT and LEGACY_ORDER_MANAGEMENT are present', () => {
18
+ mockAccount([SubscriptionFeature.OrderManagement, SubscriptionFeature.LegacyOrderManagement]);
19
+ expect(useOrderMode().value).toBe(OrderMode.OrderV2);
20
+ });
21
+
22
+ it('returns OrderV2 when only ORDER_MANAGEMENT is present', () => {
23
+ mockAccount([SubscriptionFeature.OrderManagement]);
24
+ expect(useOrderMode().value).toBe(OrderMode.OrderV2);
25
+ });
26
+
27
+ it('returns OrderV1 when only LEGACY_ORDER_MANAGEMENT is present', () => {
28
+ mockAccount([SubscriptionFeature.LegacyOrderManagement]);
29
+ expect(useOrderMode().value).toBe(OrderMode.OrderV1);
30
+ });
31
+
32
+ it('returns Shipments when no order management features are present', () => {
33
+ mockAccount([]);
34
+ expect(useOrderMode().value).toBe(OrderMode.Shipments);
35
+ });
36
+
37
+ it('returns Shipments when subscriptionFeatures contains unrelated features', () => {
38
+ mockAccount(['SOME_OTHER_FEATURE', 'ANOTHER_FEATURE']);
39
+ expect(useOrderMode().value).toBe(OrderMode.Shipments);
40
+ });
41
+
42
+ it('returns Shipments when subscriptionFeatures is undefined', () => {
43
+ mockedUseContext.mockReturnValue({account: {}} as any);
44
+ expect(useOrderMode().value).toBe(OrderMode.Shipments);
45
+ });
46
+
47
+ it('returns Shipments when account is undefined', () => {
48
+ mockedUseContext.mockReturnValue({} as any);
49
+ expect(useOrderMode().value).toBe(OrderMode.Shipments);
50
+ });
51
+
52
+ it('prefers a PHP-supplied effectiveOrderMode of 2 (V2) over the feature derivation', () => {
53
+ // Feature would resolve to Shipments here; effectiveOrderMode overrides it.
54
+ mockAccount([], 2);
55
+ expect(useOrderMode().value).toBe(OrderMode.OrderV2);
56
+ });
57
+
58
+ it('prefers a PHP-supplied effectiveOrderMode of 1 (V1) over the feature derivation', () => {
59
+ // Feature would resolve to OrderV2; effectiveOrderMode overrides to V1.
60
+ mockAccount([SubscriptionFeature.OrderManagement], 1);
61
+ expect(useOrderMode().value).toBe(OrderMode.OrderV1);
62
+ });
63
+
64
+ it('prefers a PHP-supplied effectiveOrderMode of 0 (Shipments) over the feature derivation', () => {
65
+ // Feature would resolve to OrderV2; effectiveOrderMode downgrades to Shipments
66
+ // (the shape INT-1590 will produce).
67
+ mockAccount([SubscriptionFeature.OrderManagement], 0);
68
+ expect(useOrderMode().value).toBe(OrderMode.Shipments);
69
+ });
70
+
71
+ it('falls back to feature derivation when effectiveOrderMode is not a known numeric mode', () => {
72
+ mockAccount([SubscriptionFeature.LegacyOrderManagement], 'unexpected-string');
73
+ expect(useOrderMode().value).toBe(OrderMode.OrderV1);
74
+ });
75
+ });
@@ -0,0 +1,26 @@
1
+ import {type ComputedRef, computed} from 'vue';
2
+ import {type OrderMode, orderModeFromContextValue, resolveOrderMode} from '../../data';
3
+ import {useContext} from './useContext';
4
+
5
+ /**
6
+ * Resolve the order mode the admin UI should adapt to.
7
+ *
8
+ * Prefers the pre-computed `effectiveOrderMode` emitted by the PDK admin context
9
+ * (so any business rules applied on the PHP side — e.g. INT-1590's
10
+ * sales-channel-conditional downgrade — naturally flow through). Falls back to
11
+ * resolving from the raw IAM subscription features when the context does not
12
+ * (yet) carry that value, which keeps older PDK versions working.
13
+ */
14
+ export const useOrderMode = (): ComputedRef<OrderMode> => {
15
+ const context = useContext();
16
+
17
+ return computed(() => {
18
+ // `effectiveOrderMode` is forward-looking — the PHP context generator may not
19
+ // emit it yet. Cast locally rather than augmenting the generated type.
20
+ const effective = orderModeFromContextValue(
21
+ (context.account as {effectiveOrderMode?: unknown} | undefined)?.effectiveOrderMode,
22
+ );
23
+
24
+ return effective ?? resolveOrderMode(context.account?.subscriptionFeatures ?? []);
25
+ });
26
+ };
@@ -21,8 +21,8 @@ describe('useLanguage', () => {
21
21
  beforeAll(() => {
22
22
  mockDefaultTranslations.mockReturnValue({
23
23
  my_translation: 'My translation',
24
- my_translation_with_replacement: 'My translation with replacement: {platform.backofficeUrl}',
25
- translation_with_custom_replacer: '{platform.name} said {word}',
24
+ my_translation_with_replacement: 'My translation with replacement: {proposition.backofficeUrl}',
25
+ translation_with_custom_replacer: '{proposition.name} said {word}',
26
26
  });
27
27
  });
28
28