Răsfoiți Sursa

feat(admin-ui): Add filter inheritance control to Collection detail view

Relates to #1382.
Michael Bromley 3 ani în urmă
părinte
comite
7f1b01ec1f
20 a modificat fișierele cu 115 adăugiri și 51 ștergeri
  1. 18 23
      packages/admin-ui/i18n-coverage.json
  2. 34 11
      packages/admin-ui/src/lib/catalog/src/components/collection-detail/collection-detail.component.html
  3. 2 0
      packages/admin-ui/src/lib/catalog/src/components/collection-detail/collection-detail.component.ts
  4. 1 0
      packages/admin-ui/src/lib/catalog/src/providers/routing/collection-resolver.ts
  5. 9 5
      packages/admin-ui/src/lib/core/src/common/generated-types.ts
  6. 1 0
      packages/admin-ui/src/lib/core/src/data/definitions/collection-definitions.ts
  7. 2 0
      packages/admin-ui/src/lib/core/src/data/providers/collection-data.service.ts
  8. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/cs.json
  9. 1 1
      packages/admin-ui/src/lib/static/i18n-messages/de.json
  10. 3 0
      packages/admin-ui/src/lib/static/i18n-messages/en.json
  11. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/es.json
  12. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/fr.json
  13. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/it.json
  14. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/pl.json
  15. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json
  16. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/pt_PT.json
  17. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/ru.json
  18. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/uk.json
  19. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json
  20. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

+ 18 - 23
packages/admin-ui/i18n-coverage.json

@@ -1,71 +1,66 @@
 {
-  "generatedOn": "2022-02-15T19:48:25.835Z",
-  "lastCommit": "f3a265411399551d08b71173ba493744f28f7219",
+  "generatedOn": "2022-03-03T10:38:41.224Z",
+  "lastCommit": "08d339378d3d16daee27f003eb187243816869e5",
   "translationStatus": {
     "cs": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 591,
-      "percentage": 93
-    },
-    "de": {
-      "tokenCount": 638,
-      "translatedCount": 570,
-      "percentage": 89
+      "percentage": 92
     },
     "en": {
-      "tokenCount": 638,
-      "translatedCount": 637,
+      "tokenCount": 641,
+      "translatedCount": 638,
       "percentage": 100
     },
     "es": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 623,
-      "percentage": 98
+      "percentage": 97
     },
     "fr": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 613,
       "percentage": 96
     },
     "it": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 621,
       "percentage": 97
     },
     "pl": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 405,
       "percentage": 63
     },
     "pt_BR": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 589,
       "percentage": 92
     },
     "pt_PT": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 634,
       "percentage": 99
     },
     "ru": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 620,
       "percentage": 97
     },
     "uk": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 620,
       "percentage": 97
     },
     "zh_Hans": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 557,
       "percentage": 87
     },
     "zh_Hant": {
-      "tokenCount": 638,
+      "tokenCount": 641,
       "translatedCount": 385,
       "percentage": 60
     }
   }
-}
+}

+ 34 - 11
packages/admin-ui/src/lib/catalog/src/components/collection-detail/collection-detail.component.html

@@ -45,7 +45,9 @@
                         [vdrDisabled]="!(updatePermission | hasPermission)"
                     />
                     <label class="visible-toggle">
-                        <ng-container *ngIf="detailForm.value.visible; else private">{{ 'catalog.public' | translate }}</ng-container>
+                        <ng-container *ngIf="detailForm.value.visible; else private">{{
+                            'catalog.public' | translate
+                        }}</ng-container>
                         <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>
                     </label>
                 </clr-toggle-wrapper>
@@ -101,18 +103,39 @@
             ></vdr-assets>
         </div>
     </div>
-    <div class="clr-row" formArrayName="filters">
+    <div class="clr-row">
         <div class="clr-col">
             <label>{{ 'catalog.filters' | translate }}</label>
-            <ng-container *ngFor="let filter of filters; index as i">
-                <vdr-configurable-input
-                    (remove)="removeFilter($event)"
-                    [operation]="filter"
-                    [operationDefinition]="getFilterDefinition(filter)"
-                    [formControlName]="i"
-                    [readonly]="!(updatePermission | hasPermission)"
-                ></vdr-configurable-input>
-            </ng-container>
+            <vdr-form-field [label]="'catalog.filter-inheritance' | translate" for="inheritFilters">
+                <clr-toggle-wrapper>
+                    <input
+                        type="checkbox"
+                        clrToggle
+                        formControlName="inheritFilters"
+                        id="inheritFilters"
+                        [vdrDisabled]="!(updatePermission | hasPermission)"
+                    />
+                    <label class="visible-toggle">
+                        <ng-container *ngIf="detailForm.value.inheritFilters; else noInherit">{{
+                            'catalog.inherit-filters-from-parent' | translate
+                        }}</ng-container>
+                        <ng-template #noInherit>{{
+                            'catalog.do-not-inherit-filters' | translate
+                        }}</ng-template>
+                    </label>
+                </clr-toggle-wrapper>
+            </vdr-form-field>
+            <div formArrayName="filters">
+                <ng-container *ngFor="let filter of filters; index as i">
+                    <vdr-configurable-input
+                        (remove)="removeFilter($event)"
+                        [operation]="filter"
+                        [operationDefinition]="getFilterDefinition(filter)"
+                        [formControlName]="i"
+                        [readonly]="!(updatePermission | hasPermission)"
+                    ></vdr-configurable-input>
+                </ng-container>
+            </div>
 
             <div *vdrIfPermissions="updatePermission">
                 <vdr-dropdown>

+ 2 - 0
packages/admin-ui/src/lib/catalog/src/components/collection-detail/collection-detail.component.ts

@@ -73,6 +73,7 @@ export class CollectionDetailComponent
             slug: ['', unicodePatternValidator(/^[\p{Letter}0-9_-]+$/)],
             description: '',
             visible: false,
+            inheritFilters: true,
             filters: this.formBuilder.array([]),
             customFields: this.formBuilder.group(
                 this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),
@@ -232,6 +233,7 @@ export class CollectionDetailComponent
             slug: currentTranslation ? currentTranslation.slug : '',
             description: currentTranslation ? currentTranslation.description : '',
             visible: !entity.isPrivate,
+            inheritFilters: entity.inheritFilters,
         });
 
         entity.filters.forEach(f => this.addFilter(f));

+ 1 - 0
packages/admin-ui/src/lib/catalog/src/providers/routing/collection-resolver.ts

@@ -27,6 +27,7 @@ export class CollectionResolver extends BaseEntityResolver<CollectionFragment> {
                 featuredAsset: null,
                 assets: [],
                 translations: [],
+                inheritFilters: true,
                 filters: [],
                 parent: {} as any,
                 children: null,

+ 9 - 5
packages/admin-ui/src/lib/core/src/common/generated-types.ts

@@ -356,6 +356,7 @@ export type Collection = Node & {
   featuredAsset?: Maybe<Asset>;
   filters: Array<ConfigurableOperation>;
   id: Scalars['ID'];
+  inheritFilters: Scalars['Boolean'];
   isPrivate: Scalars['Boolean'];
   languageCode?: Maybe<LanguageCode>;
   name: Scalars['String'];
@@ -383,6 +384,7 @@ export type CollectionFilterParameter = {
   createdAt?: InputMaybe<DateOperators>;
   description?: InputMaybe<StringOperators>;
   id?: InputMaybe<IdOperators>;
+  inheritFilters?: InputMaybe<BooleanOperators>;
   isPrivate?: InputMaybe<BooleanOperators>;
   languageCode?: InputMaybe<StringOperators>;
   name?: InputMaybe<StringOperators>;
@@ -610,6 +612,7 @@ export type CreateCollectionInput = {
   customFields?: InputMaybe<Scalars['JSON']>;
   featuredAssetId?: InputMaybe<Scalars['ID']>;
   filters: Array<ConfigurableOperationInput>;
+  inheritFilters?: InputMaybe<Scalars['Boolean']>;
   isPrivate?: InputMaybe<Scalars['Boolean']>;
   parentId?: InputMaybe<Scalars['ID']>;
   translations: Array<CreateCollectionTranslationInput>;
@@ -5065,6 +5068,7 @@ export type UpdateCollectionInput = {
   featuredAssetId?: InputMaybe<Scalars['ID']>;
   filters?: InputMaybe<Array<ConfigurableOperationInput>>;
   id: Scalars['ID'];
+  inheritFilters?: InputMaybe<Scalars['Boolean']>;
   isPrivate?: InputMaybe<Scalars['Boolean']>;
   parentId?: InputMaybe<Scalars['ID']>;
   translations?: InputMaybe<Array<UpdateCollectionTranslationInput>>;
@@ -5525,7 +5529,7 @@ export type GetCollectionFiltersQueryVariables = Exact<{ [key: string]: never; }
 
 export type GetCollectionFiltersQuery = { collectionFilters: Array<{ __typename?: 'ConfigurableOperationDefinition', code: string, description: string, args: Array<{ __typename?: 'ConfigArgDefinition', name: string, type: string, required: boolean, defaultValue?: any | null, list: boolean, ui?: any | null, label?: string | null }> }> };
 
-export type CollectionFragment = { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null };
+export type CollectionFragment = { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, inheritFilters: boolean, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null };
 
 export type GetCollectionListQueryVariables = Exact<{
   options?: InputMaybe<CollectionListOptions>;
@@ -5539,28 +5543,28 @@ export type GetCollectionQueryVariables = Exact<{
 }>;
 
 
-export type GetCollectionQuery = { collection?: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } | null };
+export type GetCollectionQuery = { collection?: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, inheritFilters: boolean, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } | null };
 
 export type CreateCollectionMutationVariables = Exact<{
   input: CreateCollectionInput;
 }>;
 
 
-export type CreateCollectionMutation = { createCollection: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } };
+export type CreateCollectionMutation = { createCollection: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, inheritFilters: boolean, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } };
 
 export type UpdateCollectionMutationVariables = Exact<{
   input: UpdateCollectionInput;
 }>;
 
 
-export type UpdateCollectionMutation = { updateCollection: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } };
+export type UpdateCollectionMutation = { updateCollection: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, inheritFilters: boolean, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } };
 
 export type MoveCollectionMutationVariables = Exact<{
   input: MoveCollectionInput;
 }>;
 
 
-export type MoveCollectionMutation = { moveCollection: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } };
+export type MoveCollectionMutation = { moveCollection: { __typename?: 'Collection', id: string, createdAt: any, updatedAt: any, name: string, slug: string, description: string, isPrivate: boolean, languageCode?: LanguageCode | null, inheritFilters: boolean, featuredAsset?: { __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null } | null, assets: Array<{ __typename?: 'Asset', id: string, createdAt: any, updatedAt: any, name: string, fileSize: number, mimeType: string, type: AssetType, preview: string, source: string, width: number, height: number, focalPoint?: { __typename?: 'Coordinate', x: number, y: number } | null }>, filters: Array<{ __typename?: 'ConfigurableOperation', code: string, args: Array<{ __typename?: 'ConfigArg', name: string, value: string }> }>, translations: Array<{ __typename?: 'CollectionTranslation', id: string, languageCode: LanguageCode, name: string, slug: string, description: string }>, parent?: { __typename?: 'Collection', id: string, name: string } | null, children?: Array<{ __typename?: 'Collection', id: string, name: string }> | null } };
 
 export type DeleteCollectionMutationVariables = Exact<{
   id: Scalars['ID'];

+ 1 - 0
packages/admin-ui/src/lib/core/src/data/definitions/collection-definitions.ts

@@ -28,6 +28,7 @@ export const COLLECTION_FRAGMENT = gql`
         assets {
             ...Asset
         }
+        inheritFilters
         filters {
             ...ConfigurableOperation
         }

+ 2 - 0
packages/admin-ui/src/lib/core/src/data/providers/collection-data.service.ts

@@ -54,6 +54,7 @@ export class CollectionDataService {
                 'parentId',
                 'assetIds',
                 'featuredAssetId',
+                'inheritFilters',
                 'filters',
                 'customFields',
             ]),
@@ -71,6 +72,7 @@ export class CollectionDataService {
                 'translations',
                 'assetIds',
                 'featuredAssetId',
+                'inheritFilters',
                 'filters',
                 'customFields',
             ]),

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/cs.json

@@ -89,6 +89,7 @@
     "default-variant": "Výchozí varianta",
     "display-variant-cards": "Zobrazit jako karty",
     "display-variant-table": "Zobrazit jako tabulku",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Přetáhněte soubory k nahrávání",
     "duplicate-sku-warning": "",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Hodnoty atributů",
     "filter-by-name": "Filtrovat dle jména",
     "filter-by-name-or-sku": "Filtrovat dle jména nebo SKU",
+    "filter-inheritance": "",
     "filters": "Filtry",
     "group-by-product": "Seskupovat varianty",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Správa variant",
     "move-down": "Posunout dolů",
     "move-to": "Posunout",
@@ -669,4 +672,4 @@
     "job-result": "Výsledek úlohy",
     "job-state": "Stav úlohy"
   }
-}
+}

+ 1 - 1
packages/admin-ui/src/lib/static/i18n-messages/de.json

@@ -669,4 +669,4 @@
     "job-result": "Job-Ergebnis",
     "job-state": "Job-Status"
   }
-}
+}

+ 3 - 0
packages/admin-ui/src/lib/static/i18n-messages/en.json

@@ -89,6 +89,7 @@
     "default-variant": "Default variant",
     "display-variant-cards": "View details",
     "display-variant-table": "View as table",
+    "do-not-inherit-filters": "Do not inherit filters",
     "drop-files-to-upload": "Drop files to upload",
     "duplicate-sku-warning": "Please ensure all SKUs are unique",
     "edit-options": "Edit options",
@@ -96,8 +97,10 @@
     "facet-values": "Facet values",
     "filter-by-name": "Filter by name",
     "filter-by-name-or-sku": "Filter by name or SKU",
+    "filter-inheritance": "Filter inheritance",
     "filters": "Filters",
     "group-by-product": "Group by product",
+    "inherit-filters-from-parent": "Inherit filters from parent",
     "manage-variants": "Manage variants",
     "move-down": "Move down",
     "move-to": "Move to",

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/es.json

@@ -89,6 +89,7 @@
     "default-variant": "Variante por defecto",
     "display-variant-cards": "Ver detalles",
     "display-variant-table": "Ver como tabla",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Arrastra recursos para subirlos",
     "duplicate-sku-warning": "Por favor, asegúrese de que todos los códigos de referencia son únicos",
     "edit-options": "Editar opciones",
@@ -96,8 +97,10 @@
     "facet-values": "Valores de faceta",
     "filter-by-name": "Filtrar por nombre",
     "filter-by-name-or-sku": "Filtrar por código de referencia",
+    "filter-inheritance": "",
     "filters": "Filtros",
     "group-by-product": "Agrupar por producto",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Gestionar variantes",
     "move-down": "Mover abajo",
     "move-to": "Mover a",
@@ -669,4 +672,4 @@
     "job-result": "Resultado",
     "job-state": "Estado"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/fr.json

@@ -89,6 +89,7 @@
     "default-variant": "Variation par défault",
     "display-variant-cards": "Voir détails",
     "display-variant-table": "Voir en tant que tableau",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Déposer des fichiers pour téléverser",
     "duplicate-sku-warning": "",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Valeurs de composant",
     "filter-by-name": "Filtrer par nom",
     "filter-by-name-or-sku": "Filtrer par nom ou UGS",
+    "filter-inheritance": "",
     "filters": "Filtres",
     "group-by-product": "Grouper par produit",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Gérer les variations",
     "move-down": "Déplacer vers le bas",
     "move-to": "Déplacer à",
@@ -669,4 +672,4 @@
     "job-result": "Résultat de la tâche",
     "job-state": "Etat de la tâche"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/it.json

@@ -89,6 +89,7 @@
     "default-variant": "Variante predefinita",
     "display-variant-cards": "Visualizza dettagli",
     "display-variant-table": "Visualizza come tabella",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Trascina file da caricare",
     "duplicate-sku-warning": "Per favore assicurati che tutte le SKU siano univoche",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Valori attributo",
     "filter-by-name": "Filtra per nome",
     "filter-by-name-or-sku": "Filtra per nome o SKU",
+    "filter-inheritance": "",
     "filters": "Filtri",
     "group-by-product": "Raggruppa per prodotto",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Gestione varianti",
     "move-down": "Sposta in basso",
     "move-to": "Sposta in",
@@ -669,4 +672,4 @@
     "job-result": "Risultato operazione",
     "job-state": "Stato operazione"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/pl.json

@@ -89,6 +89,7 @@
     "default-variant": "Domyślny wariant",
     "display-variant-cards": "Wyświetl szczegóły",
     "display-variant-table": "Wyświetl jako tabele",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Upuść pliki do uploadu",
     "duplicate-sku-warning": "",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Wartości faseta",
     "filter-by-name": "Filtruj po nazwie",
     "filter-by-name-or-sku": "",
+    "filter-inheritance": "",
     "filters": "Filtry",
     "group-by-product": "Grupuj po produkcie",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Zarządzaj wariantami",
     "move-down": "Przesuń w dół",
     "move-to": "Przesuń do",
@@ -669,4 +672,4 @@
     "job-result": "Rezultat zlecenia",
     "job-state": "Status zlecenia"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json

@@ -89,6 +89,7 @@
     "default-variant": "Variação padrão",
     "display-variant-cards": "Ver como detalhes",
     "display-variant-table": "Ver como tabela",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Soltar arquivos para envio",
     "duplicate-sku-warning": "",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Valor da Etiqueta",
     "filter-by-name": "Filtrar por nome",
     "filter-by-name-or-sku": "Filtrar por nome ou SKU",
+    "filter-inheritance": "",
     "filters": "Filtros",
     "group-by-product": "Agrupar por produto",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Gerência das variações",
     "move-down": "Mover para baixo",
     "move-to": "Mover para",
@@ -669,4 +672,4 @@
     "job-result": "Resultado do trabalho",
     "job-state": "Estado do trabalho"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/pt_PT.json

@@ -89,6 +89,7 @@
     "default-variant": "Variante padrão",
     "display-variant-cards": "Lista com detalhes",
     "display-variant-table": "Lista simplificada",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Colocar ficheiros para enviar",
     "duplicate-sku-warning": "Certifique-se de que todos os SKUs sejam únicos",
     "edit-options": "Editar opções",
@@ -96,8 +97,10 @@
     "facet-values": "Valor da Etiqueta",
     "filter-by-name": "Filtrar por nome",
     "filter-by-name-or-sku": "Filtrar por nome ou SKU",
+    "filter-inheritance": "",
     "filters": "Filtros",
     "group-by-product": "Agrupar por produto",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Gerir variações",
     "move-down": "Mover para baixo",
     "move-to": "Mover para",
@@ -669,4 +672,4 @@
     "job-result": "Resultado do trabalho",
     "job-state": "Estado do trabalho"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/ru.json

@@ -89,6 +89,7 @@
     "default-variant": "Вариант товара по умолчанию",
     "display-variant-cards": "Просмотр карточек вариантов",
     "display-variant-table": "Просмотр в виде таблицы",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Перетащите файлы для загрузки",
     "duplicate-sku-warning": "Убедитесь, что все артикулы (SKU) уникальны",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Значения тега",
     "filter-by-name": "Фильтр по имени",
     "filter-by-name-or-sku": "Фильтр по имени или артикулу (SKU)",
+    "filter-inheritance": "",
     "filters": "Фильтры",
     "group-by-product": "Группировать по товару",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Управление вариантами",
     "move-down": "Двигать вниз",
     "move-to": "Двигать к",
@@ -669,4 +672,4 @@
     "job-result": "Результат задания",
     "job-state": "Состояние задания"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/uk.json

@@ -89,6 +89,7 @@
     "default-variant": "Варіант товару за замовчуванням",
     "display-variant-cards": "Перегляд карток варіантів",
     "display-variant-table": "Перегляд у вигляді таблиці",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "Перетягніть файли для завантаження",
     "duplicate-sku-warning": "Переконайтесь, що всі артикули (SKU) унікальні",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "Значення тегу",
     "filter-by-name": "Фільтр по імені",
     "filter-by-name-or-sku": "Фільтр по імені або артикулу (SKU)",
+    "filter-inheritance": "",
     "filters": "Фільтри",
     "group-by-product": "Групувати по товару",
+    "inherit-filters-from-parent": "",
     "manage-variants": "Управління варіантами",
     "move-down": "Рухати вниз",
     "move-to": "Рухати до",
@@ -669,4 +672,4 @@
     "job-result": "Результат завдання",
     "job-state": "Стан завдання"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json

@@ -89,6 +89,7 @@
     "default-variant": "默认商品规格",
     "display-variant-cards": "卡片显示",
     "display-variant-table": "表格显示",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "拖拽文件上传",
     "duplicate-sku-warning": "",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "特征值列表",
     "filter-by-name": "按名字过滤",
     "filter-by-name-or-sku": "按名字或商品编码过滤",
+    "filter-inheritance": "",
     "filters": "过滤条件",
     "group-by-product": "按商品分组显示",
+    "inherit-filters-from-parent": "",
     "manage-variants": "商品规格管理",
     "move-down": "向下移",
     "move-to": "移至",
@@ -669,4 +672,4 @@
     "job-result": "任务结果",
     "job-state": "任务状态"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

@@ -89,6 +89,7 @@
     "default-variant": "默認商品規格",
     "display-variant-cards": "卡片顯示",
     "display-variant-table": "表格顯示",
+    "do-not-inherit-filters": "",
     "drop-files-to-upload": "拖拽文件上傳",
     "duplicate-sku-warning": "",
     "edit-options": "",
@@ -96,8 +97,10 @@
     "facet-values": "特徵值列表",
     "filter-by-name": "按名字篩選",
     "filter-by-name-or-sku": "",
+    "filter-inheritance": "",
     "filters": "篩選條件",
     "group-by-product": "按商品分组顯示",
+    "inherit-filters-from-parent": "",
     "manage-variants": "商品規格管理",
     "move-down": "下移",
     "move-to": "移至",
@@ -669,4 +672,4 @@
     "job-result": "",
     "job-state": ""
   }
-}
+}