Browse Source

Merge branch 'master' into minor

Michael Bromley 2 years ago
parent
commit
108b8d97b5
42 changed files with 5043 additions and 5073 deletions
  1. 16 0
      CHANGELOG.md
  2. 2 2
      docs/docs/guides/extending-the-admin-ui/custom-data-table-components/index.md
  3. 2 4
      docs/docs/guides/extending-the-admin-ui/custom-timeline-components/index.md
  4. 1 1
      docs/docs/reference/admin-ui-api/react-extensions/register-react-data-table-component.md
  5. 1 1
      lerna.json
  6. 3 3
      packages/admin-ui-plugin/package.json
  7. 1 1
      packages/admin-ui/package-lock.json
  8. 2 2
      packages/admin-ui/package.json
  9. 1 1
      packages/admin-ui/src/lib/core/src/common/version.ts
  10. 1 0
      packages/admin-ui/src/lib/core/src/shared/components/radio-card/radio-card-fieldset.component.scss
  11. 0 4
      packages/admin-ui/src/lib/core/src/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.scss
  12. 34 20
      packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.html
  13. 1 1
      packages/admin-ui/src/lib/react/src/react-hooks/use-query.ts
  14. 4 4
      packages/admin-ui/src/lib/react/src/register-react-data-table-component.ts
  15. 4 0
      packages/admin-ui/src/lib/static/styles/global/_overrides.scss
  16. 573 594
      packages/asset-server-plugin/e2e/graphql/generated-e2e-asset-server-plugin-types.ts
  17. 3 3
      packages/asset-server-plugin/package.json
  18. 2 2
      packages/cli/package.json
  19. 1 1
      packages/common/package.json
  20. 642 662
      packages/common/src/generated-shop-types.ts
  21. 90 0
      packages/core/e2e/asset-channel.e2e-spec.ts
  22. 2 10
      packages/core/e2e/collection.e2e-spec.ts
  23. 573 594
      packages/core/e2e/graphql/generated-e2e-admin-types.ts
  24. 614 634
      packages/core/e2e/graphql/generated-e2e-shop-types.ts
  25. 9 0
      packages/core/e2e/graphql/shared-definitions.ts
  26. 2 2
      packages/core/package.json
  27. 15 2
      packages/core/src/service/services/collection.service.ts
  28. 3 3
      packages/create/package.json
  29. 9 9
      packages/dev-server/package.json
  30. 2 2
      packages/dev-server/test-plugins/experimental-ui/components/SlugWithLink.tsx
  31. 573 594
      packages/elasticsearch-plugin/e2e/graphql/generated-e2e-elasticsearch-plugin-types.ts
  32. 3 3
      packages/elasticsearch-plugin/package.json
  33. 3 3
      packages/email-plugin/package.json
  34. 3 3
      packages/harden-plugin/package.json
  35. 3 3
      packages/job-queue-plugin/package.json
  36. 573 594
      packages/payments-plugin/e2e/graphql/generated-admin-types.ts
  37. 614 634
      packages/payments-plugin/e2e/graphql/generated-shop-types.ts
  38. 4 4
      packages/payments-plugin/package.json
  39. 646 666
      packages/payments-plugin/src/mollie/graphql/generated-shop-types.ts
  40. 1 0
      packages/payments-plugin/src/mollie/mollie-shop-schema.ts
  41. 3 3
      packages/testing/package.json
  42. 4 4
      packages/ui-devkit/package.json

+ 16 - 0
CHANGELOG.md

@@ -1,3 +1,19 @@
+## <small>2.1.2 (2023-11-03)</small>
+
+
+#### Fixes
+
+* **admin-ui** Add descriptive error when using getBreadcrumbs wrong ([b8c4a77](https://github.com/vendure-ecommerce/vendure/commit/b8c4a77))
+* **admin-ui** Add horizontal scrollbar support to address select dialog ([60d991b](https://github.com/vendure-ecommerce/vendure/commit/60d991b))
+* **admin-ui** Add some new ltr/rtl compatibility (#2466) ([e4d1545](https://github.com/vendure-ecommerce/vendure/commit/e4d1545)), closes [#2466](https://github.com/vendure-ecommerce/vendure/issues/2466)
+* **admin-ui** Fix layout of multiple addresses on custom detail page ([7a3e378](https://github.com/vendure-ecommerce/vendure/commit/7a3e378))
+* **admin-ui** Fix styling of some dialogs with tabs ([f601acc](https://github.com/vendure-ecommerce/vendure/commit/f601acc))
+* **admin-ui** Use generics in ReactDataTableComponentProps (#2500) ([730a103](https://github.com/vendure-ecommerce/vendure/commit/730a103)), closes [#2500](https://github.com/vendure-ecommerce/vendure/issues/2500)
+* **core** Assign assets when assigning Collection to channel ([a8481bf](https://github.com/vendure-ecommerce/vendure/commit/a8481bf)), closes [#2122](https://github.com/vendure-ecommerce/vendure/issues/2122) [#2478](https://github.com/vendure-ecommerce/vendure/issues/2478)
+* **core** Fix collection findBySlug issue (#2480) ([894ace7](https://github.com/vendure-ecommerce/vendure/commit/894ace7)), closes [#2480](https://github.com/vendure-ecommerce/vendure/issues/2480) [#2395](https://github.com/vendure-ecommerce/vendure/issues/2395)
+* **core** Fix configurable operation id decoding when using uuids (#2483) ([47f606c](https://github.com/vendure-ecommerce/vendure/commit/47f606c)), closes [#2483](https://github.com/vendure-ecommerce/vendure/issues/2483)
+* **payments-plugin** Expose `status` of Mollie payment methods (#2499) ([071aa9db](https://github.com/vendure-ecommerce/vendure/commit/071aa9db))
+
 ## <small>2.1.1 (2023-10-18)</small>
 
 

+ 2 - 2
docs/docs/guides/extending-the-admin-ui/custom-data-table-components/index.md

@@ -46,8 +46,8 @@ React components will receive the value of the current column as the `rowItem` p
 import { ReactDataTableComponentProps } from '@vendure/admin-ui/react';
 import React from 'react';
 
-export function SlugLink({ rowItem }: ReactDataTableComponentProps) {
-    const slug: string = rowItem.slug;
+export function SlugLink({ rowItem }: ReactDataTableComponentProps<{ slug: string }>) {
+    const slug = rowItem.slug;
     return (
         <a href={`https://example.com/category/${slug}`} target="_blank">
             {slug}

+ 2 - 4
docs/docs/guides/extending-the-admin-ui/custom-timeline-components/index.md

@@ -20,15 +20,13 @@ import { Component } from '@angular/core';
 import {
     CustomerFragment,
     CustomerHistoryEntryComponent,
-    registerHistoryEntryComponent,
     SharedModule,
     TimelineDisplayType,
     TimelineHistoryEntry,
-    SharedModule,
 } from '@vendure/admin-ui/core';
 
 @Component({
-    selector: 'tax-id-verification-component',
+    selector: 'tax-id-verification-entry',
     template: `
         <div *ngIf="entry.data.valid">
             Tax ID <strong>{{ entry.data.taxId }}</strong> was verified
@@ -41,7 +39,7 @@ import {
     standalone: true,
     imports: [SharedModule],
 })
-class TaxIdHistoryEntryComponent implements CustomerHistoryEntryComponent {
+export class TaxIdHistoryEntryComponent implements CustomerHistoryEntryComponent {
     entry: TimelineHistoryEntry;
     customer: CustomerFragment;
 

+ 1 - 1
docs/docs/reference/admin-ui-api/react-extensions/register-react-data-table-component.md

@@ -23,7 +23,7 @@ e.g. the `Product` object if used in the `product-list` table.
 import { ReactDataTableComponentProps } from '@vendure/admin-ui/react';
 import React from 'react';
 
-export function SlugWithLink({ rowItem }: ReactDataTableComponentProps) {
+export function SlugWithLink({ rowItem }: ReactDataTableComponentProps<{ slug: string }>) {
     return (
         <a href={`https://example.com/products/${rowItem.slug}`} target="_blank">
             {rowItem.slug}

+ 1 - 1
lerna.json

@@ -1,6 +1,6 @@
 {
     "packages": ["packages/*"],
-    "version": "2.1.1",
+    "version": "2.1.2",
     "npmClient": "yarn",
     "command": {
         "version": {

+ 3 - 3
packages/admin-ui-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/admin-ui-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "main": "lib/index.js",
     "types": "lib/index.d.ts",
     "files": [
@@ -21,8 +21,8 @@
     "devDependencies": {
         "@types/express": "^4.17.8",
         "@types/fs-extra": "^9.0.1",
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
         "express": "^4.17.1",
         "rimraf": "^3.0.2",
         "typescript": "4.9.5"

+ 1 - 1
packages/admin-ui/package-lock.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/admin-ui",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "lockfileVersion": 1,
     "requires": true,
     "dependencies": {

+ 2 - 2
packages/admin-ui/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/admin-ui",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "scripts": {
         "ng": "ng",
@@ -49,7 +49,7 @@
         "@ng-select/ng-select": "^11.1.1",
         "@ngx-translate/core": "^15.0.0",
         "@ngx-translate/http-loader": "^8.0.0",
-        "@vendure/common": "^2.1.1",
+        "@vendure/common": "^2.1.2",
         "@webcomponents/custom-elements": "^1.6.0",
         "apollo-angular": "^5.0.0",
         "apollo-upload-client": "^17.0.0",

+ 1 - 1
packages/admin-ui/src/lib/core/src/common/version.ts

@@ -1,2 +1,2 @@
 // Auto-generated by the set-version.js script.
-export const ADMIN_UI_VERSION = '2.1.1';
+export const ADMIN_UI_VERSION = '2.1.2';

+ 1 - 0
packages/admin-ui/src/lib/core/src/shared/components/radio-card/radio-card-fieldset.component.scss

@@ -1,4 +1,5 @@
 fieldset {
     display: flex;
     align-items: flex-start;
+    overflow-x: auto;
 }

+ 0 - 4
packages/admin-ui/src/lib/core/src/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.scss

@@ -1,7 +1,3 @@
 :host {
     display: contents;
 }
-
-::ng-deep clr-tabs .btn.btn-link {
-    box-shadow: none;
-}

+ 34 - 20
packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.html

@@ -52,7 +52,7 @@
             </div>
             <ng-template #noGroups>
                 <span class="color-weight-400">
-                {{ 'customer.not-a-member-of-any-groups' | translate }}
+                    {{ 'customer.not-a-member-of-any-groups' | translate }}
                 </span>
             </ng-template>
             <div>
@@ -138,23 +138,29 @@
         ></vdr-custom-detail-component-host>
         <ng-container *ngIf="!(isNew$ | async)">
             <vdr-card [title]="'customer.addresses' | translate">
-                <vdr-address-card
-                    *ngFor="let addressForm of getAddressFormControls()"
-                    [class.to-delete]="addressesToDeleteIds.has(addressForm.value.id)"
-                    [availableCountries]="availableCountries$ | async"
-                    [isDefaultBilling]="defaultBillingAddressId === addressForm.value.id"
-                    [isDefaultShipping]="defaultShippingAddressId === addressForm.value.id"
-                    [addressForm]="addressForm"
-                    [customFields]="addressCustomFields"
-                    [editable]="
-                        (['UpdateCustomer'] | hasPermission) &&
-                        !addressesToDeleteIds.has(addressForm.value.id)
-                    "
-                    (setAsDefaultBilling)="setDefaultBillingAddressId($event)"
-                    (setAsDefaultShipping)="setDefaultShippingAddressId($event)"
-                    (deleteAddress)="toggleDeleteAddress($event)"
-                ></vdr-address-card>
-                <button class="btn btn-secondary mt-2" (click)="addAddress()" *vdrIfPermissions="'UpdateCustomer'">
+                <div class="form-grid">
+                    <vdr-address-card
+                        *ngFor="let addressForm of getAddressFormControls()"
+                        [class.to-delete]="addressesToDeleteIds.has(addressForm.value.id)"
+                        [availableCountries]="availableCountries$ | async"
+                        [isDefaultBilling]="defaultBillingAddressId === addressForm.value.id"
+                        [isDefaultShipping]="defaultShippingAddressId === addressForm.value.id"
+                        [addressForm]="addressForm"
+                        [customFields]="addressCustomFields"
+                        [editable]="
+                            (['UpdateCustomer'] | hasPermission) &&
+                            !addressesToDeleteIds.has(addressForm.value.id)
+                        "
+                        (setAsDefaultBilling)="setDefaultBillingAddressId($event)"
+                        (setAsDefaultShipping)="setDefaultShippingAddressId($event)"
+                        (deleteAddress)="toggleDeleteAddress($event)"
+                    ></vdr-address-card>
+                </div>
+                <button
+                    class="btn btn-secondary mt-2"
+                    (click)="addAddress()"
+                    *vdrIfPermissions="'UpdateCustomer'"
+                >
                     <clr-icon shape="plus"></clr-icon>
                     {{ 'customer.create-new-address' | translate }}
                 </button>
@@ -175,7 +181,11 @@
                             {{ order.id }}
                         </ng-template>
                     </vdr-dt2-column>
-                    <vdr-dt2-column [heading]="'common.created-at' | translate" id="created-at" [hiddenByDefault]="true">
+                    <vdr-dt2-column
+                        [heading]="'common.created-at' | translate"
+                        id="created-at"
+                        [hiddenByDefault]="true"
+                    >
                         <ng-template let-order="item">
                             {{ order.createdAt | localeDate : 'short' }}
                         </ng-template>
@@ -188,7 +198,11 @@
                             </a>
                         </ng-template>
                     </vdr-dt2-column>
-                    <vdr-dt2-column [heading]="'order.order-type' | translate" id="order-type" [hiddenByDefault]="true">
+                    <vdr-dt2-column
+                        [heading]="'order.order-type' | translate"
+                        id="order-type"
+                        [hiddenByDefault]="true"
+                    >
                         <ng-template let-order="item">
                             <vdr-chip>{{ order.type }}</vdr-chip>
                         </ng-template>

+ 1 - 1
packages/admin-ui/src/lib/react/src/react-hooks/use-query.ts

@@ -177,7 +177,7 @@ export function useMutation<T, V extends Record<string, any> = Record<string, an
     return [execute, rest] as [typeof execute, typeof rest];
 }
 
-function useDataService<T, V extends Record<string, any> = Record<string, any>>(
+export function useDataService<T, V extends Record<string, any> = Record<string, any>>(
     operation: (dataService: DataService, variables?: V) => Observable<T>,
 ) {
     const context = useContext(HostedComponentContext);

+ 4 - 4
packages/admin-ui/src/lib/react/src/register-react-data-table-component.ts

@@ -44,8 +44,8 @@ export interface ReactDataTableComponentConfig {
  * @description
  * The props that will be passed to the React component registered via {@link registerReactDataTableComponent}.
  */
-export interface ReactDataTableComponentProps {
-    rowItem: any;
+export interface ReactDataTableComponentProps<T = any> {
+    rowItem: T;
     [prop: string]: any;
 }
 
@@ -60,7 +60,7 @@ export interface ReactDataTableComponentProps {
  * import { ReactDataTableComponentProps } from '\@vendure/admin-ui/react';
  * import React from 'react';
  *
- * export function SlugWithLink({ rowItem }: ReactDataTableComponentProps) {
+ * export function SlugWithLink({ rowItem }: ReactDataTableComponentProps<{ slug: string }>) {
  *     return (
  *         <a href={`https://example.com/products/${rowItem.slug}`} target="_blank">
  *             {rowItem.slug}
@@ -79,7 +79,7 @@ export interface ReactDataTableComponentProps {
  *         tableId: 'product-list',
  *         columnId: 'slug',
  *         props: {
- *         foo: 'bar',
+ *           foo: 'bar',
  *         },
  *     }),
  * ];

+ 4 - 0
packages/admin-ui/src/lib/static/styles/global/_overrides.scss

@@ -112,6 +112,10 @@ button.icon-button {
 .btn.btn-link.nav-link {
     background-color: transparent;
 }
+clr-tabs .btn.btn-link {
+    box-shadow: none;
+}
+
 
 .alert {
     border: 1px solid var(--color-primary-150);

File diff suppressed because it is too large
+ 573 - 594
packages/asset-server-plugin/e2e/graphql/generated-e2e-asset-server-plugin-types.ts


+ 3 - 3
packages/asset-server-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/asset-server-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "main": "lib/index.js",
     "types": "lib/index.d.ts",
     "files": [
@@ -27,8 +27,8 @@
         "@types/fs-extra": "^11.0.1",
         "@types/node-fetch": "^2.5.8",
         "@types/sharp": "^0.30.4",
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
         "express": "^4.17.1",
         "node-fetch": "^2.6.7",
         "rimraf": "^3.0.2",

+ 2 - 2
packages/cli/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/cli",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "description": "A modern, headless ecommerce framework",
     "repository": {
         "type": "git",
@@ -34,7 +34,7 @@
     ],
     "dependencies": {
         "@clack/prompts": "^0.7.0",
-        "@vendure/common": "^2.1.1",
+        "@vendure/common": "^2.1.2",
         "change-case": "^4.1.2",
         "commander": "^11.0.0",
         "fs-extra": "^11.1.1",

+ 1 - 1
packages/common/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/common",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "main": "index.js",
     "license": "MIT",
     "scripts": {

File diff suppressed because it is too large
+ 642 - 662
packages/common/src/generated-shop-types.ts


+ 90 - 0
packages/core/e2e/asset-channel.e2e-spec.ts

@@ -13,12 +13,14 @@ import { CurrencyCode, LanguageCode } from './graphql/generated-e2e-admin-types'
 import * as Codegen from './graphql/generated-e2e-admin-types';
 import { DeletionResult } from './graphql/generated-e2e-shop-types';
 import {
+    ASSIGN_COLLECTIONS_TO_CHANNEL,
     ASSIGN_PRODUCT_TO_CHANNEL,
     CREATE_ASSETS,
     CREATE_CHANNEL,
     DELETE_ASSET,
     GET_ASSET,
     GET_PRODUCT_WITH_VARIANTS,
+    UPDATE_COLLECTION,
     UPDATE_PRODUCT,
 } from './graphql/shared-definitions';
 import { assertThrowsWithMessage } from './utils/assert-throws-with-message';
@@ -299,6 +301,94 @@ describe('Product related assets', () => {
     });
 });
 
+describe('Collection related assets', () => {
+    let collectionFeaturedAssetId: string;
+    it('Featured asset is available in default channel', async () => {
+        adminClient.setChannelToken(E2E_DEFAULT_CHANNEL_TOKEN);
+
+        await adminClient.query<Codegen.UpdateCollectionMutation, Codegen.UpdateCollectionMutationVariables>(
+            UPDATE_COLLECTION,
+            {
+                input: {
+                    id: 'T_2',
+                    featuredAssetId: 'T_3',
+                    assetIds: ['T_3'],
+                },
+            },
+        );
+
+        const { collection } = await adminClient.query<
+            Codegen.GetCollectionWithAssetsQuery,
+            Codegen.GetCollectionWithAssetsQueryVariables
+        >(GET_COLLECTION_WITH_ASSETS, {
+            id: 'T_2',
+        });
+        collectionFeaturedAssetId = collection!.featuredAsset!.id;
+        expect(collectionFeaturedAssetId).toBeDefined();
+
+        adminClient.setChannelToken(E2E_DEFAULT_CHANNEL_TOKEN);
+        const { asset } = await adminClient.query<Codegen.GetAssetQuery, Codegen.GetAssetQueryVariables>(
+            GET_ASSET,
+            {
+                id: collectionFeaturedAssetId,
+            },
+        );
+        expect(asset?.id).toEqual(collectionFeaturedAssetId);
+    });
+
+    it('Featured asset is not available in channel2', async () => {
+        adminClient.setChannelToken(SECOND_CHANNEL_TOKEN);
+        const { asset } = await adminClient.query<Codegen.GetAssetQuery, Codegen.GetAssetQueryVariables>(
+            GET_ASSET,
+            {
+                id: collectionFeaturedAssetId,
+            },
+        );
+        expect(asset?.id).toBeUndefined();
+    });
+
+    it('Add Collection to channel2', async () => {
+        adminClient.setChannelToken(E2E_DEFAULT_CHANNEL_TOKEN);
+        const { assignCollectionsToChannel } = await adminClient.query<
+            Codegen.AssignCollectionsToChannelMutation,
+            Codegen.AssignCollectionsToChannelMutationVariables
+        >(ASSIGN_COLLECTIONS_TO_CHANNEL, {
+            input: {
+                channelId: channel2Id,
+                collectionIds: ['T_2'],
+            },
+        });
+        expect(assignCollectionsToChannel[0].id).toEqual('T_2');
+    });
+
+    it('Get featured asset from channel2', async () => {
+        adminClient.setChannelToken(SECOND_CHANNEL_TOKEN);
+        const { asset } = await adminClient.query<Codegen.GetAssetQuery, Codegen.GetAssetQueryVariables>(
+            GET_ASSET,
+            {
+                id: collectionFeaturedAssetId,
+            },
+        );
+        expect(asset?.id).toEqual(collectionFeaturedAssetId);
+    });
+});
+
+const GET_COLLECTION_WITH_ASSETS = gql`
+    query GetCollectionWithAssets($id: ID!) {
+        collection(id: $id) {
+            id
+            name
+            featuredAsset {
+                ...Asset
+            }
+            assets {
+                ...Asset
+            }
+        }
+    }
+    ${ASSET_FRAGMENT}
+`;
+
 export const ASSIGN_ASSET_TO_CHANNEL = gql`
     mutation assignAssetsToChannel($input: AssignAssetsToChannelInput!) {
         assignAssetsToChannel(input: $input) {

+ 2 - 10
packages/core/e2e/collection.e2e-spec.ts

@@ -13,7 +13,7 @@ import path from 'path';
 import { afterAll, beforeAll, describe, expect, it } from 'vitest';
 
 import { initialData } from '../../../e2e-common/e2e-initial-data';
-import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
+import { TEST_SETUP_TIMEOUT_MS, testConfig } from '../../../e2e-common/test-config';
 import { pick } from '../../common/lib/pick';
 
 import { COLLECTION_FRAGMENT, FACET_VALUE_FRAGMENT } from './graphql/fragments';
@@ -28,6 +28,7 @@ import {
     SortOrder,
 } from './graphql/generated-e2e-admin-types';
 import {
+    ASSIGN_COLLECTIONS_TO_CHANNEL,
     CREATE_CHANNEL,
     CREATE_COLLECTION,
     DELETE_PRODUCT,
@@ -2579,15 +2580,6 @@ const PREVIEW_COLLECTION_VARIANTS = gql`
     }
 `;
 
-const ASSIGN_COLLECTIONS_TO_CHANNEL = gql`
-    mutation AssignCollectionsToChannel($input: AssignCollectionsToChannelInput!) {
-        assignCollectionsToChannel(input: $input) {
-            ...Collection
-        }
-    }
-    ${COLLECTION_FRAGMENT}
-`;
-
 const REMOVE_COLLECTIONS_FROM_CHANNEL = gql`
     mutation RemoveCollectionsFromChannel($input: RemoveCollectionsFromChannelInput!) {
         removeCollectionsFromChannel(input: $input) {

File diff suppressed because it is too large
+ 573 - 594
packages/core/e2e/graphql/generated-e2e-admin-types.ts


File diff suppressed because it is too large
+ 614 - 634
packages/core/e2e/graphql/generated-e2e-shop-types.ts


+ 9 - 0
packages/core/e2e/graphql/shared-definitions.ts

@@ -1029,3 +1029,12 @@ export const UPDATE_ADMINISTRATOR = gql`
     }
     ${ADMINISTRATOR_FRAGMENT}
 `;
+
+export const ASSIGN_COLLECTIONS_TO_CHANNEL = gql`
+    mutation AssignCollectionsToChannel($input: AssignCollectionsToChannelInput!) {
+        assignCollectionsToChannel(input: $input) {
+            ...Collection
+        }
+    }
+    ${COLLECTION_FRAGMENT}
+`;

+ 2 - 2
packages/core/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/core",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "description": "A modern, headless ecommerce framework",
     "repository": {
         "type": "git",
@@ -50,7 +50,7 @@
         "@nestjs/testing": "10.2.1",
         "@nestjs/typeorm": "10.0.0",
         "@types/fs-extra": "^9.0.1",
-        "@vendure/common": "^2.1.1",
+        "@vendure/common": "^2.1.2",
         "bcrypt": "^5.1.1",
         "body-parser": "^1.20.2",
         "chalk": "^4.1.2",

+ 15 - 2
packages/core/src/service/services/collection.service.ts

@@ -15,6 +15,7 @@ import {
 import { pick } from '@vendure/common/lib/pick';
 import { ROOT_COLLECTION_NAME } from '@vendure/common/lib/shared-constants';
 import { ID, PaginatedList } from '@vendure/common/lib/shared-types';
+import { unique } from '@vendure/common/lib/unique';
 import { merge } from 'rxjs';
 import { debounceTime } from 'rxjs/operators';
 import { In, IsNull } from 'typeorm';
@@ -222,7 +223,14 @@ export class CollectionService implements OnModuleInit {
     ): Promise<Translated<Collection> | undefined> {
         const translations = await this.connection.getRepository(ctx, CollectionTranslation).find({
             relations: ['base'],
-            where: { slug },
+            where: {
+                slug,
+                base: {
+                    channels: {
+                        id: ctx.channelId,
+                    },
+                },
+            },
         });
 
         if (!translations?.length) {
@@ -798,7 +806,7 @@ export class CollectionService implements OnModuleInit {
         }
         const collectionsToAssign = await this.connection
             .getRepository(ctx, Collection)
-            .find({ where: { id: In(input.collectionIds) } });
+            .find({ where: { id: In(input.collectionIds) }, relations: { assets: true } });
 
         await Promise.all(
             collectionsToAssign.map(collection =>
@@ -806,6 +814,11 @@ export class CollectionService implements OnModuleInit {
             ),
         );
 
+        const assetIds: ID[] = unique(
+            ([] as ID[]).concat(...collectionsToAssign.map(c => c.assets.map(a => a.assetId))),
+        );
+        await this.assetService.assignToChannel(ctx, { channelId: input.channelId, assetIds });
+
         await this.applyFiltersQueue.add({
             ctx: ctx.serialize(),
             collectionIds: collectionsToAssign.map(collection => collection.id),

+ 3 - 3
packages/create/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/create",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "bin": {
         "create": "./index.js"
@@ -28,14 +28,14 @@
         "@types/fs-extra": "^9.0.1",
         "@types/handlebars": "^4.1.0",
         "@types/semver": "^6.2.2",
-        "@vendure/core": "^2.1.1",
+        "@vendure/core": "^2.1.2",
         "rimraf": "^3.0.2",
         "ts-node": "^10.9.1",
         "typescript": "4.9.5"
     },
     "dependencies": {
         "@clack/prompts": "^0.7.0",
-        "@vendure/common": "^2.1.1",
+        "@vendure/common": "^2.1.2",
         "commander": "^11.0.0",
         "cross-spawn": "^7.0.3",
         "detect-port": "^1.5.1",

+ 9 - 9
packages/dev-server/package.json

@@ -1,6 +1,6 @@
 {
     "name": "dev-server",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "main": "index.js",
     "license": "MIT",
     "private": true,
@@ -15,18 +15,18 @@
     },
     "dependencies": {
         "@nestjs/axios": "^3.0.0",
-        "@vendure/admin-ui-plugin": "^2.1.1",
-        "@vendure/asset-server-plugin": "^2.1.1",
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
-        "@vendure/elasticsearch-plugin": "^2.1.1",
-        "@vendure/email-plugin": "^2.1.1",
+        "@vendure/admin-ui-plugin": "^2.1.2",
+        "@vendure/asset-server-plugin": "^2.1.2",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
+        "@vendure/elasticsearch-plugin": "^2.1.2",
+        "@vendure/email-plugin": "^2.1.2",
         "typescript": "4.9.5"
     },
     "devDependencies": {
         "@types/csv-stringify": "^3.1.0",
-        "@vendure/testing": "^2.1.1",
-        "@vendure/ui-devkit": "^2.1.1",
+        "@vendure/testing": "^2.1.2",
+        "@vendure/ui-devkit": "^2.1.2",
         "commander": "^7.1.0",
         "concurrently": "^8.2.1",
         "csv-stringify": "^5.3.3",

+ 2 - 2
packages/dev-server/test-plugins/experimental-ui/components/SlugWithLink.tsx

@@ -1,8 +1,8 @@
 import { ReactDataTableComponentProps } from '@vendure/admin-ui/react';
 import React from 'react';
 
-export function SlugWithLink({ rowItem }: ReactDataTableComponentProps) {
-    const slug: string = rowItem.slug;
+export function SlugWithLink({ rowItem }: ReactDataTableComponentProps<{ slug: string }>) {
+    const slug = rowItem.slug;
     return (
         <a href={`https://example.com/category/${slug}`} target="_blank">
             {slug}

File diff suppressed because it is too large
+ 573 - 594
packages/elasticsearch-plugin/e2e/graphql/generated-e2e-elasticsearch-plugin-types.ts


+ 3 - 3
packages/elasticsearch-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/elasticsearch-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "main": "lib/index.js",
     "types": "lib/index.d.ts",
@@ -26,8 +26,8 @@
         "fast-deep-equal": "^3.1.3"
     },
     "devDependencies": {
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
         "rimraf": "^3.0.2",
         "typescript": "4.9.5"
     }

+ 3 - 3
packages/email-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/email-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "main": "lib/index.js",
     "types": "lib/index.d.ts",
@@ -35,8 +35,8 @@
         "@types/fs-extra": "^9.0.1",
         "@types/handlebars": "^4.1.0",
         "@types/mjml": "^4.0.4",
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
         "rimraf": "^3.0.2",
         "typescript": "4.9.5"
     }

+ 3 - 3
packages/harden-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/harden-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "main": "lib/index.js",
     "types": "lib/index.d.ts",
@@ -21,7 +21,7 @@
         "graphql-query-complexity": "^0.12.0"
     },
     "devDependencies": {
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1"
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2"
     }
 }

+ 3 - 3
packages/job-queue-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/job-queue-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "main": "package/index.js",
     "types": "package/index.d.ts",
@@ -23,8 +23,8 @@
     },
     "devDependencies": {
         "@google-cloud/pubsub": "^2.8.0",
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
         "bullmq": "^3.15.5",
         "ioredis": "^5.3.0",
         "rimraf": "^3.0.2",

File diff suppressed because it is too large
+ 573 - 594
packages/payments-plugin/e2e/graphql/generated-admin-types.ts


File diff suppressed because it is too large
+ 614 - 634
packages/payments-plugin/e2e/graphql/generated-shop-types.ts


+ 4 - 4
packages/payments-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/payments-plugin",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "license": "MIT",
     "main": "package/index.js",
     "types": "package/index.d.ts",
@@ -46,9 +46,9 @@
         "@mollie/api-client": "^3.7.0",
         "@types/braintree": "^2.22.15",
         "@types/localtunnel": "2.0.1",
-        "@vendure/common": "^2.1.1",
-        "@vendure/core": "^2.1.1",
-        "@vendure/testing": "^2.1.1",
+        "@vendure/common": "^2.1.2",
+        "@vendure/core": "^2.1.2",
+        "@vendure/testing": "^2.1.2",
         "braintree": "^3.16.0",
         "localtunnel": "2.0.2",
         "nock": "^13.1.4",

File diff suppressed because it is too large
+ 646 - 666
packages/payments-plugin/src/mollie/graphql/generated-shop-types.ts


+ 1 - 0
packages/payments-plugin/src/mollie/mollie-shop-schema.ts

@@ -21,6 +21,7 @@ export const shopSchema = gql`
         minimumAmount: MollieAmount
         maximumAmount: MollieAmount
         image: MolliePaymentMethodImages
+        status: String
     }
     type MolliePaymentIntent {
         url: String!

+ 3 - 3
packages/testing/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/testing",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "description": "End-to-end testing tools for Vendure projects",
     "keywords": [
         "vendure",
@@ -38,7 +38,7 @@
     "dependencies": {
         "@graphql-typed-document-node/core": "^3.2.0",
         "@types/node-fetch": "^2.6.4",
-        "@vendure/common": "^2.1.1",
+        "@vendure/common": "^2.1.2",
         "faker": "^4.1.0",
         "form-data": "^4.0.0",
         "graphql": "16.8.0",
@@ -49,7 +49,7 @@
     "devDependencies": {
         "@types/mysql": "^2.15.15",
         "@types/pg": "^7.14.5",
-        "@vendure/core": "^2.1.1",
+        "@vendure/core": "^2.1.2",
         "mysql": "^2.18.1",
         "pg": "^8.4.0",
         "rimraf": "^3.0.0",

+ 4 - 4
packages/ui-devkit/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/ui-devkit",
-    "version": "2.1.1",
+    "version": "2.1.2",
     "description": "A library for authoring Vendure Admin UI extensions",
     "keywords": [
         "vendure",
@@ -40,8 +40,8 @@
         "@angular/cli": "^16.2.0",
         "@angular/compiler": "^16.2.2",
         "@angular/compiler-cli": "^16.2.2",
-        "@vendure/admin-ui": "^2.1.1",
-        "@vendure/common": "^2.1.1",
+        "@vendure/admin-ui": "^2.1.2",
+        "@vendure/common": "^2.1.2",
         "chalk": "^4.1.0",
         "chokidar": "^3.5.3",
         "fs-extra": "^11.1.1",
@@ -51,7 +51,7 @@
     "devDependencies": {
         "@rollup/plugin-node-resolve": "^15.2.1",
         "@types/fs-extra": "^11.0.1",
-        "@vendure/core": "^2.1.1",
+        "@vendure/core": "^2.1.2",
         "react": "^18.2.0",
         "react-dom": "^18.2.0",
         "rimraf": "^3.0.2",

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