@vendure/admin-ui 1.0.0-beta.9 → 1.0.3

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 (138) hide show
  1. package/bundles/vendure-admin-ui-catalog.umd.js +37 -17
  2. package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
  3. package/bundles/vendure-admin-ui-catalog.umd.min.js +2 -2
  4. package/bundles/vendure-admin-ui-catalog.umd.min.js.map +1 -1
  5. package/bundles/vendure-admin-ui-core.umd.js +233 -38
  6. package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
  7. package/bundles/vendure-admin-ui-core.umd.min.js +2 -2
  8. package/bundles/vendure-admin-ui-core.umd.min.js.map +1 -1
  9. package/bundles/vendure-admin-ui-customer.umd.js +8 -6
  10. package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
  11. package/bundles/vendure-admin-ui-customer.umd.min.js +2 -2
  12. package/bundles/vendure-admin-ui-customer.umd.min.js.map +1 -1
  13. package/bundles/vendure-admin-ui-order.umd.js +113 -39
  14. package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
  15. package/bundles/vendure-admin-ui-order.umd.min.js +2 -2
  16. package/bundles/vendure-admin-ui-order.umd.min.js.map +1 -1
  17. package/bundles/vendure-admin-ui-settings.umd.js +71 -46
  18. package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
  19. package/bundles/vendure-admin-ui-settings.umd.min.js +2 -2
  20. package/bundles/vendure-admin-ui-settings.umd.min.js.map +1 -1
  21. package/bundles/vendure-admin-ui-system.umd.js +1 -1
  22. package/bundles/vendure-admin-ui-system.umd.js.map +1 -1
  23. package/bundles/vendure-admin-ui-system.umd.min.js +1 -1
  24. package/bundles/vendure-admin-ui-system.umd.min.js.map +1 -1
  25. package/catalog/components/collection-detail/collection-detail.component.d.ts +2 -1
  26. package/catalog/components/facet-detail/facet-detail.component.d.ts +2 -1
  27. package/catalog/components/product-assets/product-assets.component.d.ts +7 -2
  28. package/catalog/components/product-variants-list/product-variants-list.component.d.ts +2 -1
  29. package/catalog/components/product-variants-table/product-variants-table.component.d.ts +2 -1
  30. package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
  31. package/core/common/generated-types.d.ts +242 -148
  32. package/core/common/version.d.ts +1 -1
  33. package/core/components/main-nav/main-nav.component.d.ts +1 -1
  34. package/core/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +3 -2
  35. package/core/shared/components/product-selector/product-selector.component.d.ts +1 -1
  36. package/core/shared/pipes/has-permission.pipe.d.ts +3 -2
  37. package/core/vendure-admin-ui-core.metadata.json +1 -1
  38. package/customer/components/address-card/address-card.component.d.ts +1 -0
  39. package/customer/vendure-admin-ui-customer.metadata.json +1 -1
  40. package/esm2015/catalog/components/asset-detail/asset-detail.component.js +2 -2
  41. package/esm2015/catalog/components/asset-list/asset-list.component.js +2 -2
  42. package/esm2015/catalog/components/collection-detail/collection-detail.component.js +4 -3
  43. package/esm2015/catalog/components/collection-list/collection-list.component.js +2 -2
  44. package/esm2015/catalog/components/collection-tree/collection-tree-node.component.js +5 -6
  45. package/esm2015/catalog/components/facet-detail/facet-detail.component.js +4 -3
  46. package/esm2015/catalog/components/facet-list/facet-list.component.js +2 -2
  47. package/esm2015/catalog/components/product-assets/product-assets.component.js +19 -6
  48. package/esm2015/catalog/components/product-detail/product-detail.component.js +2 -2
  49. package/esm2015/catalog/components/product-list/product-list.component.js +2 -2
  50. package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +4 -3
  51. package/esm2015/catalog/components/product-variants-table/product-variants-table.component.js +4 -2
  52. package/esm2015/catalog/components/update-product-option-dialog/update-product-option-dialog.component.js +2 -2
  53. package/esm2015/core/common/generated-types.js +123 -9
  54. package/esm2015/core/common/utilities/configurable-operation-utils.js +1 -1
  55. package/esm2015/core/common/version.js +2 -2
  56. package/esm2015/core/components/main-nav/main-nav.component.js +36 -9
  57. package/esm2015/core/data/definitions/order-definitions.js +11 -1
  58. package/esm2015/core/data/definitions/product-definitions.js +696 -697
  59. package/esm2015/core/shared/components/asset-preview/asset-preview.component.js +2 -2
  60. package/esm2015/core/shared/components/channel-assignment-control/channel-assignment-control.component.js +25 -7
  61. package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +13 -10
  62. package/esm2015/core/shared/directives/if-permissions.directive.js +4 -4
  63. package/esm2015/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.js +2 -2
  64. package/esm2015/core/shared/pipes/has-permission.pipe.js +16 -6
  65. package/esm2015/customer/components/address-card/address-card.component.js +4 -2
  66. package/esm2015/customer/components/customer-detail/customer-detail.component.js +2 -2
  67. package/esm2015/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.js +2 -2
  68. package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +2 -2
  69. package/esm2015/customer/components/customer-group-member-list/customer-group-member-list.component.js +2 -2
  70. package/esm2015/customer/components/customer-history/customer-history.component.js +2 -2
  71. package/esm2015/order/components/line-refunds/line-refunds.component.js +20 -3
  72. package/esm2015/order/components/order-detail/order-detail.component.js +30 -9
  73. package/esm2015/order/components/order-editor/order-editor.component.js +2 -2
  74. package/esm2015/order/components/order-payment-card/order-payment-card.component.js +2 -2
  75. package/esm2015/order/components/order-table/order-table.component.js +2 -2
  76. package/esm2015/order/components/refund-order-dialog/refund-order-dialog.component.js +27 -6
  77. package/esm2015/settings/components/admin-detail/admin-detail.component.js +5 -2
  78. package/esm2015/settings/components/channel-detail/channel-detail.component.js +5 -3
  79. package/esm2015/settings/components/channel-list/channel-list.component.js +2 -2
  80. package/esm2015/settings/components/country-detail/country-detail.component.js +4 -3
  81. package/esm2015/settings/components/country-list/country-list.component.js +2 -2
  82. package/esm2015/settings/components/global-settings/global-settings.component.js +3 -2
  83. package/esm2015/settings/components/payment-method-detail/payment-method-detail.component.js +16 -15
  84. package/esm2015/settings/components/payment-method-list/payment-method-list.component.js +2 -2
  85. package/esm2015/settings/components/permission-grid/permission-grid.component.js +8 -3
  86. package/esm2015/settings/components/role-detail/role-detail.component.js +2 -2
  87. package/esm2015/settings/components/role-list/role-list.component.js +9 -5
  88. package/esm2015/settings/components/shipping-method-detail/shipping-method-detail.component.js +16 -11
  89. package/esm2015/settings/components/shipping-method-list/shipping-method-list.component.js +2 -2
  90. package/esm2015/settings/components/tax-category-detail/tax-category-detail.component.js +4 -3
  91. package/esm2015/settings/components/tax-category-list/tax-category-list.component.js +2 -2
  92. package/esm2015/settings/components/tax-rate-detail/tax-rate-detail.component.js +11 -10
  93. package/esm2015/settings/components/tax-rate-list/tax-rate-list.component.js +2 -2
  94. package/esm2015/settings/components/test-order-builder/test-order-builder.component.js +3 -2
  95. package/esm2015/settings/components/zone-detail-dialog/zone-detail-dialog.component.js +2 -2
  96. package/esm2015/settings/components/zone-list/zone-list.component.js +2 -2
  97. package/esm2015/settings/components/zone-member-list/zone-member-list.component.js +2 -2
  98. package/esm2015/system/components/job-list/job-list.component.js +2 -2
  99. package/fesm2015/vendure-admin-ui-catalog.js +34 -18
  100. package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
  101. package/fesm2015/vendure-admin-ui-core.js +884 -705
  102. package/fesm2015/vendure-admin-ui-core.js.map +1 -1
  103. package/fesm2015/vendure-admin-ui-customer.js +8 -6
  104. package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
  105. package/fesm2015/vendure-admin-ui-order.js +76 -18
  106. package/fesm2015/vendure-admin-ui-order.js.map +1 -1
  107. package/fesm2015/vendure-admin-ui-settings.js +74 -50
  108. package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
  109. package/fesm2015/vendure-admin-ui-system.js +1 -1
  110. package/fesm2015/vendure-admin-ui-system.js.map +1 -1
  111. package/order/components/line-refunds/line-refunds.component.d.ts +1 -0
  112. package/order/components/refund-order-dialog/refund-order-dialog.component.d.ts +1 -0
  113. package/order/vendure-admin-ui-order.metadata.json +1 -1
  114. package/package.json +2 -2
  115. package/settings/components/channel-detail/channel-detail.component.d.ts +2 -1
  116. package/settings/components/country-detail/country-detail.component.d.ts +2 -1
  117. package/settings/components/global-settings/global-settings.component.d.ts +2 -1
  118. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +2 -2
  119. package/settings/components/permission-grid/permission-grid.component.d.ts +2 -0
  120. package/settings/components/role-list/role-list.component.d.ts +5 -1
  121. package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +2 -1
  122. package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +2 -1
  123. package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +2 -1
  124. package/settings/vendure-admin-ui-settings.metadata.json +1 -1
  125. package/static/i18n-messages/cs.json +2 -0
  126. package/static/i18n-messages/de.json +8 -6
  127. package/static/i18n-messages/en.json +2 -0
  128. package/static/i18n-messages/es.json +2 -0
  129. package/static/i18n-messages/fr.json +89 -89
  130. package/static/i18n-messages/pl.json +2 -0
  131. package/static/i18n-messages/pt_BR.json +2 -0
  132. package/static/i18n-messages/ru.json +811 -0
  133. package/static/i18n-messages/zh_Hans.json +178 -176
  134. package/static/i18n-messages/zh_Hant.json +2 -0
  135. package/static/styles/_variables.scss +0 -65
  136. package/static/styles/theme/default.scss +54 -54
  137. package/static/vendure-ui-config.json +1 -1
  138. package/system/vendure-admin-ui-system.metadata.json +1 -1
@@ -1138,7 +1138,7 @@
1138
1138
  var UPDATE_ASSET = apolloAngular.gql(templateObject_25$1 || (templateObject_25$1 = __makeTemplateObject(["\n mutation UpdateAsset($input: UpdateAssetInput!) {\n updateAsset(input: $input) {\n ...Asset\n tags {\n ...Tag\n }\n }\n }\n ", "\n ", "\n"], ["\n mutation UpdateAsset($input: UpdateAssetInput!) {\n updateAsset(input: $input) {\n ...Asset\n tags {\n ...Tag\n }\n }\n }\n ", "\n ", "\n"])), ASSET_FRAGMENT, TAG_FRAGMENT);
1139
1139
  var DELETE_ASSETS = apolloAngular.gql(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n mutation DeleteAssets($input: DeleteAssetsInput!) {\n deleteAssets(input: $input) {\n result\n message\n }\n }\n"], ["\n mutation DeleteAssets($input: DeleteAssetsInput!) {\n deleteAssets(input: $input) {\n result\n message\n }\n }\n"])));
1140
1140
  var SEARCH_PRODUCTS = apolloAngular.gql(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n query SearchProducts($input: SearchInput!) {\n search(input: $input) {\n totalItems\n items {\n enabled\n productId\n productName\n productAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n productVariantId\n productVariantName\n productVariantAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n sku\n channelIds\n }\n facetValues {\n count\n facetValue {\n id\n createdAt\n updatedAt\n name\n facet {\n id\n createdAt\n updatedAt\n name\n }\n }\n }\n }\n }\n"], ["\n query SearchProducts($input: SearchInput!) {\n search(input: $input) {\n totalItems\n items {\n enabled\n productId\n productName\n productAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n productVariantId\n productVariantName\n productVariantAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n sku\n channelIds\n }\n facetValues {\n count\n facetValue {\n id\n createdAt\n updatedAt\n name\n facet {\n id\n createdAt\n updatedAt\n name\n }\n }\n }\n }\n }\n"])));
1141
- var PRODUCT_SELECTOR_SEARCH = apolloAngular.gql(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n query ProductSelectorSearch($term: String!, $take: Int!) {\n search(input: { groupByProduct: false, term: $term, take: $take }) {\n items {\n productVariantId\n productVariantName\n productPreview\n productAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n price {\n ... on SinglePrice {\n value\n }\n }\n priceWithTax {\n ... on SinglePrice {\n value\n }\n }\n sku\n }\n }\n }\n"], ["\n query ProductSelectorSearch($term: String!, $take: Int!) {\n search(input: { groupByProduct: false, term: $term, take: $take }) {\n items {\n productVariantId\n productVariantName\n productPreview\n productAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n price {\n ... on SinglePrice {\n value\n }\n }\n priceWithTax {\n ... on SinglePrice {\n value\n }\n }\n sku\n }\n }\n }\n"])));
1141
+ var PRODUCT_SELECTOR_SEARCH = apolloAngular.gql(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n query ProductSelectorSearch($term: String!, $take: Int!) {\n search(input: { groupByProduct: false, term: $term, take: $take }) {\n items {\n productVariantId\n productVariantName\n productAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n price {\n ... on SinglePrice {\n value\n }\n }\n priceWithTax {\n ... on SinglePrice {\n value\n }\n }\n sku\n }\n }\n }\n"], ["\n query ProductSelectorSearch($term: String!, $take: Int!) {\n search(input: { groupByProduct: false, term: $term, take: $take }) {\n items {\n productVariantId\n productVariantName\n productAsset {\n id\n preview\n focalPoint {\n x\n y\n }\n }\n price {\n ... on SinglePrice {\n value\n }\n }\n priceWithTax {\n ... on SinglePrice {\n value\n }\n }\n sku\n }\n }\n }\n"])));
1142
1142
  var UPDATE_PRODUCT_OPTION = apolloAngular.gql(templateObject_29 || (templateObject_29 = __makeTemplateObject(["\n mutation UpdateProductOption($input: UpdateProductOptionInput!) {\n updateProductOption(input: $input) {\n ...ProductOption\n }\n }\n ", "\n"], ["\n mutation UpdateProductOption($input: UpdateProductOptionInput!) {\n updateProductOption(input: $input) {\n ...ProductOption\n }\n }\n ", "\n"])), PRODUCT_OPTION_FRAGMENT);
1143
1143
  var DELETE_PRODUCT_VARIANT = apolloAngular.gql(templateObject_30 || (templateObject_30 = __makeTemplateObject(["\n mutation DeleteProductVariant($id: ID!) {\n deleteProductVariant(id: $id) {\n result\n message\n }\n }\n"], ["\n mutation DeleteProductVariant($id: ID!) {\n deleteProductVariant(id: $id) {\n result\n message\n }\n }\n"])));
1144
1144
  var GET_PRODUCT_VARIANT_OPTIONS = apolloAngular.gql(templateObject_31 || (templateObject_31 = __makeTemplateObject(["\n query GetProductVariantOptions($id: ID!) {\n product(id: $id) {\n id\n createdAt\n updatedAt\n name\n optionGroups {\n id\n name\n code\n options {\n ...ProductOption\n }\n }\n variants {\n id\n createdAt\n updatedAt\n enabled\n name\n sku\n price\n stockOnHand\n enabled\n options {\n id\n createdAt\n updatedAt\n name\n code\n groupId\n }\n }\n }\n }\n ", "\n"], ["\n query GetProductVariantOptions($id: ID!) {\n product(id: $id) {\n id\n createdAt\n updatedAt\n name\n optionGroups {\n id\n name\n code\n options {\n ...ProductOption\n }\n }\n variants {\n id\n createdAt\n updatedAt\n enabled\n name\n sku\n price\n stockOnHand\n enabled\n options {\n id\n createdAt\n updatedAt\n name\n code\n groupId\n }\n }\n }\n }\n ", "\n"])), PRODUCT_OPTION_FRAGMENT);
@@ -1462,7 +1462,7 @@
1462
1462
  var GET_ORDER = apolloAngular.gql(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject(["\n query GetOrder($id: ID!) {\n order(id: $id) {\n ...OrderDetail\n }\n }\n ", "\n"], ["\n query GetOrder($id: ID!) {\n order(id: $id) {\n ...OrderDetail\n }\n }\n ", "\n"])), ORDER_DETAIL_FRAGMENT);
1463
1463
  var SETTLE_PAYMENT = apolloAngular.gql(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n mutation SettlePayment($id: ID!) {\n settlePayment(id: $id) {\n ... on Payment {\n id\n transactionId\n amount\n method\n state\n metadata\n }\n ...ErrorResult\n ... on SettlePaymentError {\n paymentErrorMessage\n }\n ... on PaymentStateTransitionError {\n transitionError\n }\n ... on OrderStateTransitionError {\n transitionError\n }\n }\n }\n ", "\n"], ["\n mutation SettlePayment($id: ID!) {\n settlePayment(id: $id) {\n ... on Payment {\n id\n transactionId\n amount\n method\n state\n metadata\n }\n ...ErrorResult\n ... on SettlePaymentError {\n paymentErrorMessage\n }\n ... on PaymentStateTransitionError {\n transitionError\n }\n ... on OrderStateTransitionError {\n transitionError\n }\n }\n }\n ", "\n"])), ERROR_RESULT_FRAGMENT);
1464
1464
  var TRANSITION_PAYMENT_TO_STATE = apolloAngular.gql(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n mutation TransitionPaymentToState($id: ID!, $state: String!) {\n transitionPaymentToState(id: $id, state: $state) {\n ... on Payment {\n id\n transactionId\n amount\n method\n state\n metadata\n }\n ...ErrorResult\n ... on PaymentStateTransitionError {\n transitionError\n }\n }\n }\n ", "\n"], ["\n mutation TransitionPaymentToState($id: ID!, $state: String!) {\n transitionPaymentToState(id: $id, state: $state) {\n ... on Payment {\n id\n transactionId\n amount\n method\n state\n metadata\n }\n ...ErrorResult\n ... on PaymentStateTransitionError {\n transitionError\n }\n }\n }\n ", "\n"])), ERROR_RESULT_FRAGMENT);
1465
- var CREATE_FULFILLMENT = apolloAngular.gql(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n mutation CreateFulfillment($input: FulfillOrderInput!) {\n addFulfillmentToOrder(input: $input) {\n ...Fulfillment\n ...ErrorResult\n }\n }\n ", "\n ", "\n"], ["\n mutation CreateFulfillment($input: FulfillOrderInput!) {\n addFulfillmentToOrder(input: $input) {\n ...Fulfillment\n ...ErrorResult\n }\n }\n ", "\n ", "\n"])), FULFILLMENT_FRAGMENT, ERROR_RESULT_FRAGMENT);
1465
+ var CREATE_FULFILLMENT = apolloAngular.gql(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n mutation CreateFulfillment($input: FulfillOrderInput!) {\n addFulfillmentToOrder(input: $input) {\n ...Fulfillment\n ... on CreateFulfillmentError {\n errorCode\n message\n fulfillmentHandlerError\n }\n ... on FulfillmentStateTransitionError {\n errorCode\n message\n transitionError\n }\n ...ErrorResult\n }\n }\n ", "\n ", "\n"], ["\n mutation CreateFulfillment($input: FulfillOrderInput!) {\n addFulfillmentToOrder(input: $input) {\n ...Fulfillment\n ... on CreateFulfillmentError {\n errorCode\n message\n fulfillmentHandlerError\n }\n ... on FulfillmentStateTransitionError {\n errorCode\n message\n transitionError\n }\n ...ErrorResult\n }\n }\n ", "\n ", "\n"])), FULFILLMENT_FRAGMENT, ERROR_RESULT_FRAGMENT);
1466
1466
  var CANCEL_ORDER = apolloAngular.gql(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n mutation CancelOrder($input: CancelOrderInput!) {\n cancelOrder(input: $input) {\n ...OrderDetail\n ...ErrorResult\n }\n }\n ", "\n ", "\n"], ["\n mutation CancelOrder($input: CancelOrderInput!) {\n cancelOrder(input: $input) {\n ...OrderDetail\n ...ErrorResult\n }\n }\n ", "\n ", "\n"])), ORDER_DETAIL_FRAGMENT, ERROR_RESULT_FRAGMENT);
1467
1467
  var REFUND_ORDER = apolloAngular.gql(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n mutation RefundOrder($input: RefundOrderInput!) {\n refundOrder(input: $input) {\n ...Refund\n ...ErrorResult\n }\n }\n ", "\n ", "\n"], ["\n mutation RefundOrder($input: RefundOrderInput!) {\n refundOrder(input: $input) {\n ...Refund\n ...ErrorResult\n }\n }\n ", "\n ", "\n"])), REFUND_FRAGMENT, ERROR_RESULT_FRAGMENT);
1468
1468
  var SETTLE_REFUND = apolloAngular.gql(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n mutation SettleRefund($input: SettleRefundInput!) {\n settleRefund(input: $input) {\n ...Refund\n ...ErrorResult\n }\n }\n ", "\n ", "\n"], ["\n mutation SettleRefund($input: SettleRefundInput!) {\n settleRefund(input: $input) {\n ...Refund\n ...ErrorResult\n }\n }\n ", "\n ", "\n"])), REFUND_FRAGMENT, ERROR_RESULT_FRAGMENT);
@@ -1638,28 +1638,84 @@
1638
1638
  Permission["Authenticated"] = "Authenticated";
1639
1639
  /** Grants permission to create Administrator */
1640
1640
  Permission["CreateAdministrator"] = "CreateAdministrator";
1641
- /** Grants permission to create Catalog */
1641
+ /** Grants permission to create Asset */
1642
+ Permission["CreateAsset"] = "CreateAsset";
1643
+ /** Grants permission to create Products, Facets, Assets, Collections */
1642
1644
  Permission["CreateCatalog"] = "CreateCatalog";
1645
+ /** Grants permission to create Channel */
1646
+ Permission["CreateChannel"] = "CreateChannel";
1647
+ /** Grants permission to create Collection */
1648
+ Permission["CreateCollection"] = "CreateCollection";
1649
+ /** Grants permission to create Country */
1650
+ Permission["CreateCountry"] = "CreateCountry";
1643
1651
  /** Grants permission to create Customer */
1644
1652
  Permission["CreateCustomer"] = "CreateCustomer";
1653
+ /** Grants permission to create CustomerGroup */
1654
+ Permission["CreateCustomerGroup"] = "CreateCustomerGroup";
1655
+ /** Grants permission to create Facet */
1656
+ Permission["CreateFacet"] = "CreateFacet";
1645
1657
  /** Grants permission to create Order */
1646
1658
  Permission["CreateOrder"] = "CreateOrder";
1659
+ /** Grants permission to create PaymentMethod */
1660
+ Permission["CreatePaymentMethod"] = "CreatePaymentMethod";
1661
+ /** Grants permission to create Product */
1662
+ Permission["CreateProduct"] = "CreateProduct";
1647
1663
  /** Grants permission to create Promotion */
1648
1664
  Permission["CreatePromotion"] = "CreatePromotion";
1649
- /** Grants permission to create Settings */
1665
+ /** Grants permission to create PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */
1650
1666
  Permission["CreateSettings"] = "CreateSettings";
1667
+ /** Grants permission to create ShippingMethod */
1668
+ Permission["CreateShippingMethod"] = "CreateShippingMethod";
1669
+ /** Grants permission to create System */
1670
+ Permission["CreateSystem"] = "CreateSystem";
1671
+ /** Grants permission to create Tag */
1672
+ Permission["CreateTag"] = "CreateTag";
1673
+ /** Grants permission to create TaxCategory */
1674
+ Permission["CreateTaxCategory"] = "CreateTaxCategory";
1675
+ /** Grants permission to create TaxRate */
1676
+ Permission["CreateTaxRate"] = "CreateTaxRate";
1677
+ /** Grants permission to create Zone */
1678
+ Permission["CreateZone"] = "CreateZone";
1651
1679
  /** Grants permission to delete Administrator */
1652
1680
  Permission["DeleteAdministrator"] = "DeleteAdministrator";
1653
- /** Grants permission to delete Catalog */
1681
+ /** Grants permission to delete Asset */
1682
+ Permission["DeleteAsset"] = "DeleteAsset";
1683
+ /** Grants permission to delete Products, Facets, Assets, Collections */
1654
1684
  Permission["DeleteCatalog"] = "DeleteCatalog";
1685
+ /** Grants permission to delete Channel */
1686
+ Permission["DeleteChannel"] = "DeleteChannel";
1687
+ /** Grants permission to delete Collection */
1688
+ Permission["DeleteCollection"] = "DeleteCollection";
1689
+ /** Grants permission to delete Country */
1690
+ Permission["DeleteCountry"] = "DeleteCountry";
1655
1691
  /** Grants permission to delete Customer */
1656
1692
  Permission["DeleteCustomer"] = "DeleteCustomer";
1693
+ /** Grants permission to delete CustomerGroup */
1694
+ Permission["DeleteCustomerGroup"] = "DeleteCustomerGroup";
1695
+ /** Grants permission to delete Facet */
1696
+ Permission["DeleteFacet"] = "DeleteFacet";
1657
1697
  /** Grants permission to delete Order */
1658
1698
  Permission["DeleteOrder"] = "DeleteOrder";
1699
+ /** Grants permission to delete PaymentMethod */
1700
+ Permission["DeletePaymentMethod"] = "DeletePaymentMethod";
1701
+ /** Grants permission to delete Product */
1702
+ Permission["DeleteProduct"] = "DeleteProduct";
1659
1703
  /** Grants permission to delete Promotion */
1660
1704
  Permission["DeletePromotion"] = "DeletePromotion";
1661
- /** Grants permission to delete Settings */
1705
+ /** Grants permission to delete PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */
1662
1706
  Permission["DeleteSettings"] = "DeleteSettings";
1707
+ /** Grants permission to delete ShippingMethod */
1708
+ Permission["DeleteShippingMethod"] = "DeleteShippingMethod";
1709
+ /** Grants permission to delete System */
1710
+ Permission["DeleteSystem"] = "DeleteSystem";
1711
+ /** Grants permission to delete Tag */
1712
+ Permission["DeleteTag"] = "DeleteTag";
1713
+ /** Grants permission to delete TaxCategory */
1714
+ Permission["DeleteTaxCategory"] = "DeleteTaxCategory";
1715
+ /** Grants permission to delete TaxRate */
1716
+ Permission["DeleteTaxRate"] = "DeleteTaxRate";
1717
+ /** Grants permission to delete Zone */
1718
+ Permission["DeleteZone"] = "DeleteZone";
1663
1719
  /** Owner means the user owns this entity, e.g. a Customer's own Order */
1664
1720
  Permission["Owner"] = "Owner";
1665
1721
  Permission["Placeholder"] = "Placeholder";
@@ -1667,30 +1723,88 @@
1667
1723
  Permission["Public"] = "Public";
1668
1724
  /** Grants permission to read Administrator */
1669
1725
  Permission["ReadAdministrator"] = "ReadAdministrator";
1670
- /** Grants permission to read Catalog */
1726
+ /** Grants permission to read Asset */
1727
+ Permission["ReadAsset"] = "ReadAsset";
1728
+ /** Grants permission to read Products, Facets, Assets, Collections */
1671
1729
  Permission["ReadCatalog"] = "ReadCatalog";
1730
+ /** Grants permission to read Channel */
1731
+ Permission["ReadChannel"] = "ReadChannel";
1732
+ /** Grants permission to read Collection */
1733
+ Permission["ReadCollection"] = "ReadCollection";
1734
+ /** Grants permission to read Country */
1735
+ Permission["ReadCountry"] = "ReadCountry";
1672
1736
  /** Grants permission to read Customer */
1673
1737
  Permission["ReadCustomer"] = "ReadCustomer";
1738
+ /** Grants permission to read CustomerGroup */
1739
+ Permission["ReadCustomerGroup"] = "ReadCustomerGroup";
1740
+ /** Grants permission to read Facet */
1741
+ Permission["ReadFacet"] = "ReadFacet";
1674
1742
  /** Grants permission to read Order */
1675
1743
  Permission["ReadOrder"] = "ReadOrder";
1744
+ /** Grants permission to read PaymentMethod */
1745
+ Permission["ReadPaymentMethod"] = "ReadPaymentMethod";
1746
+ /** Grants permission to read Product */
1747
+ Permission["ReadProduct"] = "ReadProduct";
1676
1748
  /** Grants permission to read Promotion */
1677
1749
  Permission["ReadPromotion"] = "ReadPromotion";
1678
- /** Grants permission to read Settings */
1750
+ /** Grants permission to read PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */
1679
1751
  Permission["ReadSettings"] = "ReadSettings";
1752
+ /** Grants permission to read ShippingMethod */
1753
+ Permission["ReadShippingMethod"] = "ReadShippingMethod";
1754
+ /** Grants permission to read System */
1755
+ Permission["ReadSystem"] = "ReadSystem";
1756
+ /** Grants permission to read Tag */
1757
+ Permission["ReadTag"] = "ReadTag";
1758
+ /** Grants permission to read TaxCategory */
1759
+ Permission["ReadTaxCategory"] = "ReadTaxCategory";
1760
+ /** Grants permission to read TaxRate */
1761
+ Permission["ReadTaxRate"] = "ReadTaxRate";
1762
+ /** Grants permission to read Zone */
1763
+ Permission["ReadZone"] = "ReadZone";
1680
1764
  /** SuperAdmin has unrestricted access to all operations */
1681
1765
  Permission["SuperAdmin"] = "SuperAdmin";
1682
1766
  /** Grants permission to update Administrator */
1683
1767
  Permission["UpdateAdministrator"] = "UpdateAdministrator";
1684
- /** Grants permission to update Catalog */
1768
+ /** Grants permission to update Asset */
1769
+ Permission["UpdateAsset"] = "UpdateAsset";
1770
+ /** Grants permission to update Products, Facets, Assets, Collections */
1685
1771
  Permission["UpdateCatalog"] = "UpdateCatalog";
1772
+ /** Grants permission to update Channel */
1773
+ Permission["UpdateChannel"] = "UpdateChannel";
1774
+ /** Grants permission to update Collection */
1775
+ Permission["UpdateCollection"] = "UpdateCollection";
1776
+ /** Grants permission to update Country */
1777
+ Permission["UpdateCountry"] = "UpdateCountry";
1686
1778
  /** Grants permission to update Customer */
1687
1779
  Permission["UpdateCustomer"] = "UpdateCustomer";
1780
+ /** Grants permission to update CustomerGroup */
1781
+ Permission["UpdateCustomerGroup"] = "UpdateCustomerGroup";
1782
+ /** Grants permission to update Facet */
1783
+ Permission["UpdateFacet"] = "UpdateFacet";
1784
+ /** Grants permission to update GlobalSettings */
1785
+ Permission["UpdateGlobalSettings"] = "UpdateGlobalSettings";
1688
1786
  /** Grants permission to update Order */
1689
1787
  Permission["UpdateOrder"] = "UpdateOrder";
1788
+ /** Grants permission to update PaymentMethod */
1789
+ Permission["UpdatePaymentMethod"] = "UpdatePaymentMethod";
1790
+ /** Grants permission to update Product */
1791
+ Permission["UpdateProduct"] = "UpdateProduct";
1690
1792
  /** Grants permission to update Promotion */
1691
1793
  Permission["UpdatePromotion"] = "UpdatePromotion";
1692
- /** Grants permission to update Settings */
1794
+ /** Grants permission to update PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */
1693
1795
  Permission["UpdateSettings"] = "UpdateSettings";
1796
+ /** Grants permission to update ShippingMethod */
1797
+ Permission["UpdateShippingMethod"] = "UpdateShippingMethod";
1798
+ /** Grants permission to update System */
1799
+ Permission["UpdateSystem"] = "UpdateSystem";
1800
+ /** Grants permission to update Tag */
1801
+ Permission["UpdateTag"] = "UpdateTag";
1802
+ /** Grants permission to update TaxCategory */
1803
+ Permission["UpdateTaxCategory"] = "UpdateTaxCategory";
1804
+ /** Grants permission to update TaxRate */
1805
+ Permission["UpdateTaxRate"] = "UpdateTaxRate";
1806
+ /** Grants permission to update Zone */
1807
+ Permission["UpdateZone"] = "UpdateZone";
1694
1808
  })(exports.Permission || (exports.Permission = {}));
1695
1809
  exports.SortOrder = void 0;
1696
1810
  (function (SortOrder) {
@@ -4174,31 +4288,60 @@
4174
4288
  return this.navBuilderService.getRouterLink(item, this.route);
4175
4289
  };
4176
4290
  MainNavComponent.prototype.defineNavMenu = function () {
4291
+ function allow() {
4292
+ var permissions = [];
4293
+ for (var _i = 0; _i < arguments.length; _i++) {
4294
+ permissions[_i] = arguments[_i];
4295
+ }
4296
+ return function (userPermissions) {
4297
+ var e_1, _a;
4298
+ try {
4299
+ for (var permissions_1 = __values(permissions), permissions_1_1 = permissions_1.next(); !permissions_1_1.done; permissions_1_1 = permissions_1.next()) {
4300
+ var permission = permissions_1_1.value;
4301
+ if (userPermissions.includes(permission)) {
4302
+ return true;
4303
+ }
4304
+ }
4305
+ }
4306
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
4307
+ finally {
4308
+ try {
4309
+ if (permissions_1_1 && !permissions_1_1.done && (_a = permissions_1.return)) _a.call(permissions_1);
4310
+ }
4311
+ finally { if (e_1) throw e_1.error; }
4312
+ }
4313
+ return false;
4314
+ };
4315
+ }
4177
4316
  this.navBuilderService.defineNavMenuSections([
4178
4317
  {
4179
- requiresPermission: 'ReadCatalog',
4318
+ requiresPermission: allow(exports.Permission.ReadCatalog, exports.Permission.ReadProduct, exports.Permission.ReadFacet, exports.Permission.ReadCollection, exports.Permission.ReadAsset),
4180
4319
  id: 'catalog',
4181
4320
  label: ngxTranslateExtractMarker.marker('nav.catalog'),
4182
4321
  items: [
4183
4322
  {
4323
+ requiresPermission: allow(exports.Permission.ReadCatalog, exports.Permission.ReadProduct),
4184
4324
  id: 'products',
4185
4325
  label: ngxTranslateExtractMarker.marker('nav.products'),
4186
4326
  icon: 'library',
4187
4327
  routerLink: ['/catalog', 'products'],
4188
4328
  },
4189
4329
  {
4330
+ requiresPermission: allow(exports.Permission.ReadCatalog, exports.Permission.ReadFacet),
4190
4331
  id: 'facets',
4191
4332
  label: ngxTranslateExtractMarker.marker('nav.facets'),
4192
4333
  icon: 'tag',
4193
4334
  routerLink: ['/catalog', 'facets'],
4194
4335
  },
4195
4336
  {
4337
+ requiresPermission: allow(exports.Permission.ReadCatalog, exports.Permission.ReadCollection),
4196
4338
  id: 'collections',
4197
4339
  label: ngxTranslateExtractMarker.marker('nav.collections'),
4198
4340
  icon: 'folder-open',
4199
4341
  routerLink: ['/catalog', 'collections'],
4200
4342
  },
4201
4343
  {
4344
+ requiresPermission: allow(exports.Permission.ReadCatalog, exports.Permission.ReadAsset),
4202
4345
  id: 'assets',
4203
4346
  label: ngxTranslateExtractMarker.marker('nav.assets'),
4204
4347
  icon: 'image-gallery',
@@ -4209,9 +4352,10 @@
4209
4352
  {
4210
4353
  id: 'sales',
4211
4354
  label: ngxTranslateExtractMarker.marker('nav.sales'),
4212
- requiresPermission: 'ReadOrder',
4355
+ requiresPermission: allow(exports.Permission.ReadOrder),
4213
4356
  items: [
4214
4357
  {
4358
+ requiresPermission: allow(exports.Permission.ReadOrder),
4215
4359
  id: 'orders',
4216
4360
  label: ngxTranslateExtractMarker.marker('nav.orders'),
4217
4361
  routerLink: ['/orders'],
@@ -4222,15 +4366,17 @@
4222
4366
  {
4223
4367
  id: 'customers',
4224
4368
  label: ngxTranslateExtractMarker.marker('nav.customers'),
4225
- requiresPermission: 'ReadCustomer',
4369
+ requiresPermission: allow(exports.Permission.ReadCustomer, exports.Permission.ReadCustomerGroup),
4226
4370
  items: [
4227
4371
  {
4372
+ requiresPermission: allow(exports.Permission.ReadCustomer),
4228
4373
  id: 'customers',
4229
4374
  label: ngxTranslateExtractMarker.marker('nav.customers'),
4230
4375
  routerLink: ['/customer', 'customers'],
4231
4376
  icon: 'user',
4232
4377
  },
4233
4378
  {
4379
+ requiresPermission: allow(exports.Permission.ReadCustomerGroup),
4234
4380
  id: 'customer-groups',
4235
4381
  label: ngxTranslateExtractMarker.marker('nav.customer-groups'),
4236
4382
  routerLink: ['/customer', 'groups'],
@@ -4241,9 +4387,10 @@
4241
4387
  {
4242
4388
  id: 'marketing',
4243
4389
  label: ngxTranslateExtractMarker.marker('nav.marketing'),
4244
- requiresPermission: 'ReadPromotion',
4390
+ requiresPermission: allow(exports.Permission.ReadPromotion),
4245
4391
  items: [
4246
4392
  {
4393
+ requiresPermission: allow(exports.Permission.ReadPromotion),
4247
4394
  id: 'promotions',
4248
4395
  label: ngxTranslateExtractMarker.marker('nav.promotions'),
4249
4396
  routerLink: ['/marketing', 'promotions'],
@@ -4254,67 +4401,75 @@
4254
4401
  {
4255
4402
  id: 'settings',
4256
4403
  label: ngxTranslateExtractMarker.marker('nav.settings'),
4257
- requiresPermission: 'ReadSettings',
4404
+ requiresPermission: allow(exports.Permission.ReadSettings, exports.Permission.ReadChannel, exports.Permission.ReadAdministrator, exports.Permission.ReadShippingMethod, exports.Permission.ReadPaymentMethod, exports.Permission.ReadTaxCategory, exports.Permission.ReadTaxRate, exports.Permission.ReadCountry, exports.Permission.ReadZone, exports.Permission.UpdateGlobalSettings),
4258
4405
  collapsible: true,
4259
4406
  collapsedByDefault: true,
4260
4407
  items: [
4261
4408
  {
4409
+ requiresPermission: allow(exports.Permission.ReadChannel),
4262
4410
  id: 'channels',
4263
4411
  label: ngxTranslateExtractMarker.marker('nav.channels'),
4264
4412
  routerLink: ['/settings', 'channels'],
4265
4413
  icon: 'layers',
4266
4414
  },
4267
4415
  {
4416
+ requiresPermission: allow(exports.Permission.ReadAdministrator),
4268
4417
  id: 'administrators',
4269
4418
  label: ngxTranslateExtractMarker.marker('nav.administrators'),
4270
- requiresPermission: 'ReadAdministrator',
4271
4419
  routerLink: ['/settings', 'administrators'],
4272
4420
  icon: 'administrator',
4273
4421
  },
4274
4422
  {
4423
+ requiresPermission: allow(exports.Permission.ReadAdministrator),
4275
4424
  id: 'roles',
4276
4425
  label: ngxTranslateExtractMarker.marker('nav.roles'),
4277
- requiresPermission: 'ReadAdministrator',
4278
4426
  routerLink: ['/settings', 'roles'],
4279
4427
  icon: 'users',
4280
4428
  },
4281
4429
  {
4430
+ requiresPermission: allow(exports.Permission.ReadShippingMethod),
4282
4431
  id: 'shipping-methods',
4283
4432
  label: ngxTranslateExtractMarker.marker('nav.shipping-methods'),
4284
4433
  routerLink: ['/settings', 'shipping-methods'],
4285
4434
  icon: 'truck',
4286
4435
  },
4287
4436
  {
4437
+ requiresPermission: allow(exports.Permission.ReadPaymentMethod),
4288
4438
  id: 'payment-methods',
4289
4439
  label: ngxTranslateExtractMarker.marker('nav.payment-methods'),
4290
4440
  routerLink: ['/settings', 'payment-methods'],
4291
4441
  icon: 'credit-card',
4292
4442
  },
4293
4443
  {
4444
+ requiresPermission: allow(exports.Permission.ReadTaxCategory),
4294
4445
  id: 'tax-categories',
4295
4446
  label: ngxTranslateExtractMarker.marker('nav.tax-categories'),
4296
4447
  routerLink: ['/settings', 'tax-categories'],
4297
4448
  icon: 'view-list',
4298
4449
  },
4299
4450
  {
4451
+ requiresPermission: allow(exports.Permission.ReadTaxRate),
4300
4452
  id: 'tax-rates',
4301
4453
  label: ngxTranslateExtractMarker.marker('nav.tax-rates'),
4302
4454
  routerLink: ['/settings', 'tax-rates'],
4303
4455
  icon: 'calculator',
4304
4456
  },
4305
4457
  {
4458
+ requiresPermission: allow(exports.Permission.ReadCountry),
4306
4459
  id: 'countries',
4307
4460
  label: ngxTranslateExtractMarker.marker('nav.countries'),
4308
4461
  routerLink: ['/settings', 'countries'],
4309
4462
  icon: 'flag',
4310
4463
  },
4311
4464
  {
4465
+ requiresPermission: allow(exports.Permission.ReadZone),
4312
4466
  id: 'zones',
4313
4467
  label: ngxTranslateExtractMarker.marker('nav.zones'),
4314
4468
  routerLink: ['/settings', 'zones'],
4315
4469
  icon: 'world',
4316
4470
  },
4317
4471
  {
4472
+ requiresPermission: allow(exports.Permission.UpdateGlobalSettings),
4318
4473
  id: 'global-settings',
4319
4474
  label: ngxTranslateExtractMarker.marker('nav.global-settings'),
4320
4475
  routerLink: ['/settings', 'global-settings'],
@@ -4325,7 +4480,7 @@
4325
4480
  {
4326
4481
  id: 'system',
4327
4482
  label: ngxTranslateExtractMarker.marker('nav.system'),
4328
- requiresPermission: 'ReadSettings',
4483
+ requiresPermission: exports.Permission.ReadSystem,
4329
4484
  collapsible: true,
4330
4485
  collapsedByDefault: true,
4331
4486
  items: [
@@ -6642,7 +6797,7 @@
6642
6797
  AssetPreviewComponent.decorators = [
6643
6798
  { type: i0.Component, args: [{
6644
6799
  selector: 'vdr-asset-preview',
6645
- template: "<div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview: size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"setFocalPointEnd()\" [disabled]=\"!lastFocalPoint\">\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"controls\" [class.fade]=\"settingFocalPoint\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container class=\"name-input\" *ngIf=\"editable\">\r\n <label>{{ 'common.name' | translate }}</label>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!('UpdateCatalog' | hasPermission) || settingFocalPoint\"\r\n />\r\n </clr-input-container>\r\n\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number: '1.2-2' }}, y:\r\n {{ fpy | number: '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <br />\r\n <button\r\n class=\"btn btn-secondary-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"btn btn-warning-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector formControlName=\"tags\"></vdr-tag-selector>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </form>\r\n <section *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <ng-container *ngFor=\"let customField of customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [customField]=\"customField\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </section>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"preview-select\">\r\n <clr-select-container>\r\n <label>{{ 'asset.preview' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </clr-select-container>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n </div>\r\n <a\r\n *ngIf=\"!editable\"\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon> {{ 'common.edit' | translate }}\r\n </a>\r\n</div>\r\n",
6800
+ template: "<div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview: size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"setFocalPointEnd()\" [disabled]=\"!lastFocalPoint\">\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"controls\" [class.fade]=\"settingFocalPoint\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container class=\"name-input\" *ngIf=\"editable\">\r\n <label>{{ 'common.name' | translate }}</label>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </clr-input-container>\r\n\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number: '1.2-2' }}, y:\r\n {{ fpy | number: '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <br />\r\n <button\r\n class=\"btn btn-secondary-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"btn btn-warning-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector formControlName=\"tags\"></vdr-tag-selector>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </form>\r\n <section *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <ng-container *ngFor=\"let customField of customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [customField]=\"customField\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </section>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"preview-select\">\r\n <clr-select-container>\r\n <label>{{ 'asset.preview' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </clr-select-container>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n </div>\r\n <a\r\n *ngIf=\"!editable\"\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon> {{ 'common.edit' | translate }}\r\n </a>\r\n</div>\r\n",
6646
6801
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6647
6802
  styles: [":host{display:flex;height:100%}.preview-image{width:100%;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px 0 rgba(0,0,0,.1);background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==\");flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px rgba(0,0,0,.15)}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-left:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container,.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center;margin-bottom:12px}.controls .preview-select clr-select-container{margin-right:12px}"]
6648
6803
  },] }
@@ -6834,12 +6989,10 @@
6834
6989
  }
6835
6990
  ChannelAssignmentControlComponent.prototype.ngOnInit = function () {
6836
6991
  var _this = this;
6837
- this.channels$ = this.dataService.client
6838
- .userStatus()
6839
- .single$.pipe(operators.map(function (_a) {
6840
- var userStatus = _a.userStatus;
6992
+ this.channels$ = this.dataService.client.userStatus().single$.pipe(operators.map(function (_b) {
6993
+ var userStatus = _b.userStatus;
6841
6994
  return userStatus.channels.filter(function (c) { return _this.includeDefaultChannel ? true : c.code !== sharedConstants.DEFAULT_CHANNEL_CODE; });
6842
- }));
6995
+ }), operators.tap(function (channels) { return (_this.channels = channels); }));
6843
6996
  };
6844
6997
  ChannelAssignmentControlComponent.prototype.registerOnChange = function (fn) {
6845
6998
  this.onChange = fn;
@@ -6851,8 +7004,26 @@
6851
7004
  this.disabled = isDisabled;
6852
7005
  };
6853
7006
  ChannelAssignmentControlComponent.prototype.writeValue = function (obj) {
7007
+ var _this = this;
7008
+ var _a;
6854
7009
  if (Array.isArray(obj)) {
6855
- this.value = obj;
7010
+ if (typeof obj[0] === 'string') {
7011
+ this.value = obj.map(function (id) { var _a; return (_a = _this.channels) === null || _a === void 0 ? void 0 : _a.find(function (c) { return c.id === id; }); }).filter(sharedUtils.notNullOrUndefined);
7012
+ }
7013
+ else {
7014
+ this.value = obj;
7015
+ }
7016
+ }
7017
+ else {
7018
+ if (typeof obj === 'string') {
7019
+ var channel = (_a = this.channels) === null || _a === void 0 ? void 0 : _a.find(function (c) { return c.id === obj; });
7020
+ if (channel) {
7021
+ this.value = [channel];
7022
+ }
7023
+ }
7024
+ else if (obj && obj.id) {
7025
+ this.value = [obj];
7026
+ }
6856
7027
  }
6857
7028
  };
6858
7029
  ChannelAssignmentControlComponent.prototype.focussed = function () {
@@ -6872,7 +7043,9 @@
6872
7043
  }
6873
7044
  };
6874
7045
  ChannelAssignmentControlComponent.prototype.compareFn = function (c1, c2) {
6875
- return c1 && c2 ? c1.id === c2.id : c1 === c2;
7046
+ var c1id = typeof c1 === 'string' ? c1 : c1.id;
7047
+ var c2id = typeof c2 === 'string' ? c2 : c2.id;
7048
+ return c1id === c2id;
6876
7049
  };
6877
7050
  return ChannelAssignmentControlComponent;
6878
7051
  }());
@@ -7963,6 +8136,7 @@
7963
8136
  hasBackdrop: true,
7964
8137
  backdropClass: 'clear-backdrop',
7965
8138
  positionStrategy: this.getPositionStrategy(),
8139
+ maxHeight: '70vh',
7966
8140
  });
7967
8141
  this.menuPortal = new portal.TemplatePortal(this.menuTemplate, this.viewContainerRef);
7968
8142
  this.backdropClickSub = this.overlayRef.backdropClick().subscribe(function () {
@@ -8025,9 +8199,9 @@
8025
8199
  DropdownMenuComponent.decorators = [
8026
8200
  { type: i0.Component, args: [{
8027
8201
  selector: 'vdr-dropdown-menu',
8028
- template: "\n <ng-template #menu>\n <div class=\"dropdown open\">\n <div class=\"dropdown-menu\">\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n ",
8202
+ template: "\n <ng-template #menu>\n <div class=\"dropdown open\">\n <div class=\"dropdown-menu\">\n <div class=\"dropdown-content-wrapper\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </ng-template>\n ",
8029
8203
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
8030
- styles: [".clear-backdrop{background-color:#ff69b4}.dropdown.open>.dropdown-menu{position:relative;top:0}:host{opacity:1;transition:opacity .3s}"]
8204
+ styles: [".clear-backdrop{background-color:#ff69b4}.dropdown.open>.dropdown-menu{position:relative;top:0;height:100%;overflow-y:auto}:host{opacity:1;transition:opacity .3s}"]
8031
8205
  },] }
8032
8206
  ];
8033
8207
  DropdownMenuComponent.ctorParameters = function () { return [
@@ -10130,8 +10304,8 @@
10130
10304
  try {
10131
10305
  for (var permissions_1 = __values(permissions), permissions_1_1 = permissions_1.next(); !permissions_1_1.done; permissions_1_1 = permissions_1.next()) {
10132
10306
  var permission = permissions_1_1.value;
10133
- if (!userStatus.permissions.includes(permission)) {
10134
- return false;
10307
+ if (userStatus.permissions.includes(permission)) {
10308
+ return true;
10135
10309
  }
10136
10310
  }
10137
10311
  }
@@ -10142,7 +10316,7 @@
10142
10316
  }
10143
10317
  finally { if (e_1) throw e_1.error; }
10144
10318
  }
10145
- return true;
10319
+ return false;
10146
10320
  })
10147
10321
  .pipe(operators.tap(function () { return _this.changeDetectorRef.markForCheck(); }));
10148
10322
  }) || this;
@@ -10433,7 +10607,7 @@
10433
10607
  DynamicFormInputComponent.decorators = [
10434
10608
  { type: i0.Component, args: [{
10435
10609
  selector: 'vdr-dynamic-form-input',
10436
- template: "<ng-container *ngIf=\"!renderAsList; else list\">\r\n <ng-container #single></ng-container>\r\n</ng-container>\r\n<ng-template #list>\r\n <div class=\"list-container\" cdkDropList (cdkDropListDropped)=\"moveListItem($event)\">\r\n <div class=\"list-item-row\" *ngFor=\"let item of listItems; trackBy: trackById\" cdkDrag [cdkDragData]=\"item\">\r\n <ng-container #listItem></ng-container>\r\n <button class=\"btn btn-link btn-sm btn-warning\" (click)=\"removeListItem(item)\" [title]=\"'common.remove-item-from-list' | translate\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"drag-handle\" cdkDragHandle *vdrIfPermissions=\"'UpdateCatalog'\">\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addListItem()\">\r\n <clr-icon shape=\"plus\"></clr-icon> {{ 'common.add-item-to-list' | translate }}\r\n </button>\r\n </div>\r\n</ng-template>\r\n",
10610
+ template: "<ng-container *ngIf=\"!renderAsList; else list\">\r\n <ng-container #single></ng-container>\r\n</ng-container>\r\n<ng-template #list>\r\n <div class=\"list-container\" cdkDropList (cdkDropListDropped)=\"moveListItem($event)\">\r\n <div class=\"list-item-row\" *ngFor=\"let item of listItems; trackBy: trackById\" cdkDrag [cdkDragData]=\"item\">\r\n <ng-container #listItem></ng-container>\r\n <button class=\"btn btn-link btn-sm btn-warning\" (click)=\"removeListItem(item)\" [title]=\"'common.remove-item-from-list' | translate\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"drag-handle\" cdkDragHandle *ngIf=\"!readonly\">\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addListItem()\">\r\n <clr-icon shape=\"plus\"></clr-icon> {{ 'common.add-item-to-list' | translate }}\r\n </button>\r\n </div>\r\n</ng-template>\r\n",
10437
10611
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
10438
10612
  providers: [
10439
10613
  {
@@ -10990,19 +11164,21 @@
10990
11164
  this.dataService = dataService;
10991
11165
  this.changeDetectorRef = changeDetectorRef;
10992
11166
  this.hasPermission = false;
10993
- this.permission = null;
11167
+ this.lastPermissions = null;
10994
11168
  this.currentPermissions$ = this.dataService.client
10995
11169
  .userStatus()
10996
11170
  .mapStream(function (data) { return data.userStatus.permissions; });
10997
11171
  }
10998
- HasPermissionPipe.prototype.transform = function (permission) {
11172
+ HasPermissionPipe.prototype.transform = function (input) {
10999
11173
  var _this = this;
11000
- if (this.permission !== permission) {
11001
- this.permission = permission;
11174
+ var requiredPermissions = Array.isArray(input) ? input : [input];
11175
+ var requiredPermissionsString = requiredPermissions.join(',');
11176
+ if (this.lastPermissions !== requiredPermissionsString) {
11177
+ this.lastPermissions = requiredPermissionsString;
11002
11178
  this.hasPermission = false;
11003
11179
  this.dispose();
11004
11180
  this.subscription = this.currentPermissions$.subscribe(function (permissions) {
11005
- _this.hasPermission = permissions.includes(permission);
11181
+ _this.hasPermission = _this.checkPermissions(permissions, requiredPermissions);
11006
11182
  _this.changeDetectorRef.markForCheck();
11007
11183
  });
11008
11184
  }
@@ -11011,6 +11187,25 @@
11011
11187
  HasPermissionPipe.prototype.ngOnDestroy = function () {
11012
11188
  this.dispose();
11013
11189
  };
11190
+ HasPermissionPipe.prototype.checkPermissions = function (userPermissions, requiredPermissions) {
11191
+ var e_1, _a;
11192
+ try {
11193
+ for (var requiredPermissions_1 = __values(requiredPermissions), requiredPermissions_1_1 = requiredPermissions_1.next(); !requiredPermissions_1_1.done; requiredPermissions_1_1 = requiredPermissions_1.next()) {
11194
+ var perm = requiredPermissions_1_1.value;
11195
+ if (userPermissions.includes(perm)) {
11196
+ return true;
11197
+ }
11198
+ }
11199
+ }
11200
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
11201
+ finally {
11202
+ try {
11203
+ if (requiredPermissions_1_1 && !requiredPermissions_1_1.done && (_a = requiredPermissions_1.return)) _a.call(requiredPermissions_1);
11204
+ }
11205
+ finally { if (e_1) throw e_1.error; }
11206
+ }
11207
+ return false;
11208
+ };
11014
11209
  HasPermissionPipe.prototype.dispose = function () {
11015
11210
  if (this.subscription) {
11016
11211
  this.subscription.unsubscribe();
@@ -12150,7 +12345,7 @@
12150
12345
  }
12151
12346
 
12152
12347
  // Auto-generated by the set-version.js script.
12153
- var ADMIN_UI_VERSION = '1.0.0-beta.9';
12348
+ var ADMIN_UI_VERSION = '1.0.3';
12154
12349
 
12155
12350
  /**
12156
12351
  * Responsible for registering dashboard widget components and querying for layouts.