@vendure/admin-ui 2.0.0-next.4 → 2.0.0-next.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog/catalog.module.d.ts +10 -11
- package/catalog/components/collection-contents/collection-contents.component.d.ts +3 -1
- package/catalog/components/collection-detail/collection-detail.component.d.ts +2 -0
- package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +13 -10
- package/catalog/public_api.d.ts +0 -1
- package/core/common/generated-types.d.ts +5 -0
- package/core/common/utilities/selection-manager.d.ts +23 -0
- package/core/common/version.d.ts +1 -1
- package/core/components/app-shell/app-shell.component.d.ts +1 -0
- package/core/public_api.d.ts +5 -0
- package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +27 -3
- package/core/shared/components/configurable-input/configurable-input.component.d.ts +8 -3
- package/core/shared/components/data-table/data-table.component.d.ts +5 -2
- package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +38 -0
- package/{catalog → core/shared}/components/product-search-input/product-search-input.component.d.ts +1 -1
- package/core/shared/components/select-toggle/select-toggle.component.d.ts +2 -1
- package/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +28 -0
- package/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +23 -0
- package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +3 -1
- package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +6 -3
- package/core/shared/shared.module.d.ts +32 -28
- package/esm2020/catalog/catalog.module.mjs +1 -5
- package/esm2020/catalog/components/assets/assets.component.mjs +2 -2
- package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +12 -4
- package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +21 -6
- package/esm2020/catalog/components/collection-list/collection-list.component.mjs +1 -1
- package/esm2020/catalog/components/product-detail/product-detail.component.mjs +2 -2
- package/esm2020/catalog/components/product-list/product-list.component.mjs +7 -8
- package/esm2020/catalog/components/product-variants-editor/product-variants-editor.component.mjs +8 -3
- package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +2 -2
- package/esm2020/catalog/public_api.mjs +1 -2
- package/esm2020/core/common/generated-types.mjs +1 -1
- package/esm2020/core/common/utilities/configurable-operation-utils.mjs +2 -2
- package/esm2020/core/common/utilities/selection-manager.mjs +64 -0
- package/esm2020/core/common/version.mjs +2 -2
- package/esm2020/core/components/app-shell/app-shell.component.mjs +6 -5
- package/esm2020/core/components/main-nav/main-nav.component.mjs +3 -3
- package/esm2020/core/data/definitions/order-definitions.mjs +431 -430
- package/esm2020/core/public_api.mjs +6 -1
- package/esm2020/core/shared/components/address-form/address-form.component.mjs +3 -3
- package/esm2020/core/shared/components/asset-gallery/asset-gallery.component.mjs +33 -50
- package/esm2020/core/shared/components/configurable-input/configurable-input.component.mjs +15 -4
- package/esm2020/core/shared/components/data-table/data-table.component.mjs +10 -3
- package/esm2020/core/shared/components/formatted-address/formatted-address.component.mjs +3 -3
- package/esm2020/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +135 -0
- package/esm2020/core/shared/components/product-search-input/product-search-input.component.mjs +108 -0
- package/esm2020/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +2 -2
- package/esm2020/core/shared/components/select-toggle/select-toggle.component.mjs +6 -3
- package/esm2020/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +45 -0
- package/esm2020/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +48 -0
- package/esm2020/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +5 -1
- package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +11 -9
- package/esm2020/core/shared/shared.module.mjs +21 -5
- package/esm2020/dashboard/components/dashboard/dashboard.component.mjs +2 -2
- package/esm2020/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +2 -2
- package/esm2020/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +2 -2
- package/esm2020/login/components/login/login.component.mjs +3 -3
- package/esm2020/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
- package/esm2020/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +1 -1
- package/esm2020/order/components/order-list/order-list.component.mjs +3 -3
- package/esm2020/settings/components/payment-method-detail/payment-method-detail.component.mjs +1 -1
- package/esm2020/settings/components/permission-grid/permission-grid.component.mjs +1 -1
- package/esm2020/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +1 -1
- package/fesm2015/vendure-admin-ui-catalog.mjs +48 -123
- package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2015/vendure-admin-ui-core.mjs +2140 -1758
- package/fesm2015/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2015/vendure-admin-ui-dashboard.mjs +5 -5
- package/fesm2015/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2015/vendure-admin-ui-login.mjs +2 -2
- package/fesm2015/vendure-admin-ui-login.mjs.map +1 -1
- package/fesm2015/vendure-admin-ui-marketing.mjs +2 -2
- package/fesm2015/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2015/vendure-admin-ui-order.mjs +3 -3
- package/fesm2015/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.mjs +3 -3
- package/fesm2020/vendure-admin-ui-catalog.mjs +48 -123
- package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -1
- package/fesm2020/vendure-admin-ui-core.mjs +1942 -1564
- package/fesm2020/vendure-admin-ui-core.mjs.map +1 -1
- package/fesm2020/vendure-admin-ui-dashboard.mjs +5 -5
- package/fesm2020/vendure-admin-ui-dashboard.mjs.map +1 -1
- package/fesm2020/vendure-admin-ui-login.mjs +2 -2
- package/fesm2020/vendure-admin-ui-login.mjs.map +1 -1
- package/fesm2020/vendure-admin-ui-marketing.mjs +2 -2
- package/fesm2020/vendure-admin-ui-marketing.mjs.map +1 -1
- package/fesm2020/vendure-admin-ui-order.mjs +3 -3
- package/fesm2020/vendure-admin-ui-order.mjs.map +1 -1
- package/fesm2020/vendure-admin-ui-settings.mjs +3 -3
- package/package.json +2 -2
- package/static/i18n-messages/cs.json +11 -0
- package/static/i18n-messages/de.json +13 -0
- package/static/i18n-messages/en.json +12 -1
- package/static/i18n-messages/es.json +11 -0
- package/static/i18n-messages/fr.json +11 -0
- package/static/i18n-messages/it.json +11 -0
- package/static/i18n-messages/pl.json +11 -0
- package/static/i18n-messages/pt_BR.json +11 -0
- package/static/i18n-messages/pt_PT.json +11 -0
- package/static/i18n-messages/ru.json +11 -0
- package/static/i18n-messages/uk.json +11 -0
- package/static/i18n-messages/zh_Hans.json +11 -0
- package/static/i18n-messages/zh_Hant.json +11 -0
- package/static/styles/global/_forms.scss +1 -1
- package/static/styles/global/_overrides.scss +5 -1
- package/static/styles/global/_utilities.scss +9 -0
- package/static/styles/theme/default.scss +13 -1
- package/static/theme.min.css +1 -1
- package/esm2020/catalog/components/product-search-input/product-search-input.component.mjs +0 -107
|
@@ -15,18 +15,17 @@ import * as i13 from "./components/collection-tree/collection-tree.component";
|
|
|
15
15
|
import * as i14 from "./components/collection-tree/collection-tree-node.component";
|
|
16
16
|
import * as i15 from "./components/collection-contents/collection-contents.component";
|
|
17
17
|
import * as i16 from "./components/product-variants-table/product-variants-table.component";
|
|
18
|
-
import * as i17 from "./components/
|
|
19
|
-
import * as i18 from "./components/option-
|
|
20
|
-
import * as i19 from "./components/
|
|
21
|
-
import * as i20 from "./components/
|
|
22
|
-
import * as i21 from "./components/
|
|
23
|
-
import * as i22 from "./components/
|
|
24
|
-
import * as i23 from "./components/
|
|
25
|
-
import * as i24 from "
|
|
26
|
-
import * as i25 from "@
|
|
27
|
-
import * as i26 from "@angular/router";
|
|
18
|
+
import * as i17 from "./components/option-value-input/option-value-input.component";
|
|
19
|
+
import * as i18 from "./components/update-product-option-dialog/update-product-option-dialog.component";
|
|
20
|
+
import * as i19 from "./components/product-variants-editor/product-variants-editor.component";
|
|
21
|
+
import * as i20 from "./components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component";
|
|
22
|
+
import * as i21 from "./components/asset-detail/asset-detail.component";
|
|
23
|
+
import * as i22 from "./components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component";
|
|
24
|
+
import * as i23 from "./components/product-options-editor/product-options-editor.component";
|
|
25
|
+
import * as i24 from "@vendure/admin-ui/core";
|
|
26
|
+
import * as i25 from "@angular/router";
|
|
28
27
|
export declare class CatalogModule {
|
|
29
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<CatalogModule, never>;
|
|
30
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<CatalogModule, [typeof i1.ProductListComponent, typeof i2.ProductDetailComponent, typeof i3.FacetListComponent, typeof i4.FacetDetailComponent, typeof i5.GenerateProductVariantsComponent, typeof i6.ProductVariantsListComponent, typeof i7.ApplyFacetDialogComponent, typeof i8.AssetListComponent, typeof i9.AssetsComponent, typeof i10.VariantPriceDetailComponent, typeof i11.CollectionListComponent, typeof i12.CollectionDetailComponent, typeof i13.CollectionTreeComponent, typeof i14.CollectionTreeNodeComponent, typeof i15.CollectionContentsComponent, typeof i16.ProductVariantsTableComponent, typeof i17.
|
|
29
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CatalogModule, [typeof i1.ProductListComponent, typeof i2.ProductDetailComponent, typeof i3.FacetListComponent, typeof i4.FacetDetailComponent, typeof i5.GenerateProductVariantsComponent, typeof i6.ProductVariantsListComponent, typeof i7.ApplyFacetDialogComponent, typeof i8.AssetListComponent, typeof i9.AssetsComponent, typeof i10.VariantPriceDetailComponent, typeof i11.CollectionListComponent, typeof i12.CollectionDetailComponent, typeof i13.CollectionTreeComponent, typeof i14.CollectionTreeNodeComponent, typeof i15.CollectionContentsComponent, typeof i16.ProductVariantsTableComponent, typeof i17.OptionValueInputComponent, typeof i18.UpdateProductOptionDialogComponent, typeof i19.ProductVariantsEditorComponent, typeof i20.AssignProductsToChannelDialogComponent, typeof i21.AssetDetailComponent, typeof i22.ConfirmVariantDeletionDialogComponent, typeof i23.ProductOptionsEditorComponent], [typeof i24.SharedModule, typeof i25.RouterModule], [typeof i1.ProductListComponent, typeof i2.ProductDetailComponent, typeof i3.FacetListComponent, typeof i4.FacetDetailComponent, typeof i5.GenerateProductVariantsComponent, typeof i6.ProductVariantsListComponent, typeof i7.ApplyFacetDialogComponent, typeof i8.AssetListComponent, typeof i9.AssetsComponent, typeof i10.VariantPriceDetailComponent, typeof i11.CollectionListComponent, typeof i12.CollectionDetailComponent, typeof i13.CollectionTreeComponent, typeof i14.CollectionTreeNodeComponent, typeof i15.CollectionContentsComponent, typeof i16.ProductVariantsTableComponent, typeof i17.OptionValueInputComponent, typeof i18.UpdateProductOptionDialogComponent, typeof i19.ProductVariantsEditorComponent, typeof i20.AssignProductsToChannelDialogComponent, typeof i21.AssetDetailComponent, typeof i22.ConfirmVariantDeletionDialogComponent, typeof i23.ProductOptionsEditorComponent]>;
|
|
31
30
|
static ɵinj: i0.ɵɵInjectorDeclaration<CatalogModule>;
|
|
32
31
|
}
|
|
@@ -10,6 +10,7 @@ export declare class CollectionContentsComponent implements OnInit, OnChanges, O
|
|
|
10
10
|
private dataService;
|
|
11
11
|
collectionId: string;
|
|
12
12
|
parentId: string;
|
|
13
|
+
inheritFilters: boolean;
|
|
13
14
|
updatedFilters: ConfigurableOperationInput[] | undefined;
|
|
14
15
|
previewUpdatedFilters: boolean;
|
|
15
16
|
headerTemplate: TemplateRef<any>;
|
|
@@ -22,6 +23,7 @@ export declare class CollectionContentsComponent implements OnInit, OnChanges, O
|
|
|
22
23
|
private collectionIdChange$;
|
|
23
24
|
private parentIdChange$;
|
|
24
25
|
private filterChanges$;
|
|
26
|
+
private inheritFiltersChanges$;
|
|
25
27
|
private refresh$;
|
|
26
28
|
private destroy$;
|
|
27
29
|
constructor(route: ActivatedRoute, router: Router, dataService: DataService);
|
|
@@ -33,5 +35,5 @@ export declare class CollectionContentsComponent implements OnInit, OnChanges, O
|
|
|
33
35
|
refresh(): void;
|
|
34
36
|
private setParam;
|
|
35
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<CollectionContentsComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CollectionContentsComponent, "vdr-collection-contents", never, { "collectionId": "collectionId"; "parentId": "parentId"; "updatedFilters": "updatedFilters"; "previewUpdatedFilters": "previewUpdatedFilters"; }, {}, ["headerTemplate"], never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CollectionContentsComponent, "vdr-collection-contents", never, { "collectionId": "collectionId"; "parentId": "parentId"; "inheritFilters": "inheritFilters"; "updatedFilters": "updatedFilters"; "previewUpdatedFilters": "previewUpdatedFilters"; }, {}, ["headerTemplate"], never>;
|
|
37
39
|
}
|
|
@@ -21,9 +21,11 @@ export declare class CollectionDetailComponent extends BaseDetailComponent<Colle
|
|
|
21
21
|
filters: ConfigurableOperation[];
|
|
22
22
|
allFilters: ConfigurableOperationDefinition[];
|
|
23
23
|
updatedFilters$: Observable<ConfigurableOperationInput[]>;
|
|
24
|
+
inheritFilters$: Observable<boolean>;
|
|
24
25
|
livePreview: boolean;
|
|
25
26
|
parentId$: Observable<string | undefined>;
|
|
26
27
|
readonly updatePermission: Permission[];
|
|
28
|
+
private filterRemoved$;
|
|
27
29
|
contentsComponent: CollectionContentsComponent;
|
|
28
30
|
constructor(router: Router, route: ActivatedRoute, serverConfigService: ServerConfigService, changeDetector: ChangeDetectorRef, dataService: DataService, formBuilder: FormBuilder, notificationService: NotificationService, modalService: ModalService, localStorageService: LocalStorageService);
|
|
29
31
|
ngOnInit(): void;
|
|
@@ -17,6 +17,16 @@ export declare class GeneratedVariant {
|
|
|
17
17
|
stock: number;
|
|
18
18
|
constructor(config: Partial<GeneratedVariant>);
|
|
19
19
|
}
|
|
20
|
+
interface OptionGroupUiModel {
|
|
21
|
+
id?: string;
|
|
22
|
+
isNew: boolean;
|
|
23
|
+
name: string;
|
|
24
|
+
values: Array<{
|
|
25
|
+
id?: string;
|
|
26
|
+
name: string;
|
|
27
|
+
locked: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
20
30
|
export declare class ProductVariantsEditorComponent implements OnInit, DeactivateAware {
|
|
21
31
|
private route;
|
|
22
32
|
private dataService;
|
|
@@ -25,16 +35,7 @@ export declare class ProductVariantsEditorComponent implements OnInit, Deactivat
|
|
|
25
35
|
private modalService;
|
|
26
36
|
formValueChanged: boolean;
|
|
27
37
|
generatedVariants: GeneratedVariant[];
|
|
28
|
-
optionGroups:
|
|
29
|
-
id?: string;
|
|
30
|
-
isNew: boolean;
|
|
31
|
-
name: string;
|
|
32
|
-
values: Array<{
|
|
33
|
-
id?: string;
|
|
34
|
-
name: string;
|
|
35
|
-
locked: boolean;
|
|
36
|
-
}>;
|
|
37
|
-
}>;
|
|
38
|
+
optionGroups: OptionGroupUiModel[];
|
|
38
39
|
product: NonNullable<GetProductVariantOptionsQuery['product']>;
|
|
39
40
|
currencyCode: CurrencyCode;
|
|
40
41
|
private languageCode;
|
|
@@ -45,6 +46,7 @@ export declare class ProductVariantsEditorComponent implements OnInit, Deactivat
|
|
|
45
46
|
getVariantsToAdd(): GeneratedVariant[];
|
|
46
47
|
getVariantName(variant: GeneratedVariant): string;
|
|
47
48
|
addOption(): void;
|
|
49
|
+
removeOption(optionGroup: OptionGroupUiModel): void;
|
|
48
50
|
generateVariants(): void;
|
|
49
51
|
/**
|
|
50
52
|
* Returns one of the existing variants to base the newly-generated variant's
|
|
@@ -70,3 +72,4 @@ export declare class ProductVariantsEditorComponent implements OnInit, Deactivat
|
|
|
70
72
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProductVariantsEditorComponent, never>;
|
|
71
73
|
static ɵcmp: i0.ɵɵComponentDeclaration<ProductVariantsEditorComponent, "vdr-product-variants-editor", never, {}, {}, never, never>;
|
|
72
74
|
}
|
|
75
|
+
export {};
|
package/catalog/public_api.d.ts
CHANGED
|
@@ -22,7 +22,6 @@ export * from './components/product-detail/product-detail.component';
|
|
|
22
22
|
export * from './components/product-detail/product-detail.types';
|
|
23
23
|
export * from './components/product-list/product-list.component';
|
|
24
24
|
export * from './components/product-options-editor/product-options-editor.component';
|
|
25
|
-
export * from './components/product-search-input/product-search-input.component';
|
|
26
25
|
export * from './components/product-variants-editor/product-variants-editor.component';
|
|
27
26
|
export * from './components/product-variants-list/product-variants-list.component';
|
|
28
27
|
export * from './components/product-variants-table/product-variants-table.component';
|
|
@@ -3341,6 +3341,7 @@ export declare type PermissionDefinition = {
|
|
|
3341
3341
|
};
|
|
3342
3342
|
export declare type PreviewCollectionVariantsInput = {
|
|
3343
3343
|
filters: Array<ConfigurableOperationInput>;
|
|
3344
|
+
inheritFilters: Scalars['Boolean'];
|
|
3344
3345
|
parentId?: InputMaybe<Scalars['ID']>;
|
|
3345
3346
|
};
|
|
3346
3347
|
/** The price range where the result has more than one price */
|
|
@@ -6727,6 +6728,7 @@ export declare type OrderFragment = {
|
|
|
6727
6728
|
state: string;
|
|
6728
6729
|
nextStates: Array<string>;
|
|
6729
6730
|
total: number;
|
|
6731
|
+
totalWithTax: number;
|
|
6730
6732
|
currencyCode: CurrencyCode;
|
|
6731
6733
|
customer?: {
|
|
6732
6734
|
__typename?: 'Customer';
|
|
@@ -7048,6 +7050,7 @@ export declare type GetOrderListQuery = {
|
|
|
7048
7050
|
state: string;
|
|
7049
7051
|
nextStates: Array<string>;
|
|
7050
7052
|
total: number;
|
|
7053
|
+
totalWithTax: number;
|
|
7051
7054
|
currencyCode: CurrencyCode;
|
|
7052
7055
|
customer?: {
|
|
7053
7056
|
__typename?: 'Customer';
|
|
@@ -7764,6 +7767,7 @@ export declare type TransitionOrderToStateMutation = {
|
|
|
7764
7767
|
state: string;
|
|
7765
7768
|
nextStates: Array<string>;
|
|
7766
7769
|
total: number;
|
|
7770
|
+
totalWithTax: number;
|
|
7767
7771
|
currencyCode: CurrencyCode;
|
|
7768
7772
|
customer?: {
|
|
7769
7773
|
__typename?: 'Customer';
|
|
@@ -7799,6 +7803,7 @@ export declare type UpdateOrderCustomFieldsMutation = {
|
|
|
7799
7803
|
state: string;
|
|
7800
7804
|
nextStates: Array<string>;
|
|
7801
7805
|
total: number;
|
|
7806
|
+
totalWithTax: number;
|
|
7802
7807
|
currencyCode: CurrencyCode;
|
|
7803
7808
|
customer?: {
|
|
7804
7809
|
__typename?: 'Customer';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface SelectionManagerOptions<T> {
|
|
2
|
+
multiSelect: boolean;
|
|
3
|
+
itemsAreEqual: (a: T, b: T) => boolean;
|
|
4
|
+
additiveMode: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* @description
|
|
8
|
+
* A helper class used to manage selection of list items. Supports multiple selection via
|
|
9
|
+
* cmd/ctrl/shift key.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SelectionManager<T> {
|
|
12
|
+
private options;
|
|
13
|
+
constructor(options: SelectionManagerOptions<T>);
|
|
14
|
+
get selection(): T[];
|
|
15
|
+
private _selection;
|
|
16
|
+
private items;
|
|
17
|
+
setMultiSelect(isMultiSelect: boolean): void;
|
|
18
|
+
setCurrentItems(items: T[]): void;
|
|
19
|
+
toggleSelection(item: T, event?: MouseEvent): void;
|
|
20
|
+
selectMultiple(items: T[]): void;
|
|
21
|
+
isSelected(item: T): boolean;
|
|
22
|
+
lastSelected(): T;
|
|
23
|
+
}
|
package/core/common/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ADMIN_UI_VERSION = "2.0.0-next.
|
|
1
|
+
export declare const ADMIN_UI_VERSION = "2.0.0-next.8";
|
|
@@ -18,6 +18,7 @@ export declare class AppShellComponent implements OnInit {
|
|
|
18
18
|
userName$: Observable<string>;
|
|
19
19
|
uiLanguageAndLocale$: Observable<[LanguageCode, string | undefined]>;
|
|
20
20
|
availableLanguages: LanguageCode[];
|
|
21
|
+
hideVendureBranding: boolean | undefined;
|
|
21
22
|
constructor(authService: AuthService, dataService: DataService, router: Router, i18nService: I18nService, modalService: ModalService, localStorageService: LocalStorageService);
|
|
22
23
|
ngOnInit(): void;
|
|
23
24
|
selectUiLanguage(): void;
|
package/core/public_api.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './common/utilities/find-translation';
|
|
|
17
17
|
export * from './common/utilities/flatten-facet-values';
|
|
18
18
|
export * from './common/utilities/get-default-ui-language';
|
|
19
19
|
export * from './common/utilities/interpolate-description';
|
|
20
|
+
export * from './common/utilities/selection-manager';
|
|
20
21
|
export * from './common/utilities/string-to-color';
|
|
21
22
|
export * from './common/version';
|
|
22
23
|
export * from './components/app-shell/app-shell.component';
|
|
@@ -146,6 +147,8 @@ export * from './shared/components/modal-dialog/modal-dialog.component';
|
|
|
146
147
|
export * from './shared/components/object-tree/object-tree.component';
|
|
147
148
|
export * from './shared/components/order-state-label/order-state-label.component';
|
|
148
149
|
export * from './shared/components/pagination-controls/pagination-controls.component';
|
|
150
|
+
export * from './shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component';
|
|
151
|
+
export * from './shared/components/product-search-input/product-search-input.component';
|
|
149
152
|
export * from './shared/components/product-variant-selector/product-variant-selector.component';
|
|
150
153
|
export * from './shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component';
|
|
151
154
|
export * from './shared/components/rich-text-editor/link-dialog/link-dialog.component';
|
|
@@ -176,6 +179,7 @@ export * from './shared/directives/if-multichannel.directive';
|
|
|
176
179
|
export * from './shared/directives/if-permissions.directive';
|
|
177
180
|
export * from './shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component';
|
|
178
181
|
export * from './shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component';
|
|
182
|
+
export * from './shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component';
|
|
179
183
|
export * from './shared/dynamic-form-inputs/currency-form-input/currency-form-input.component';
|
|
180
184
|
export * from './shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component';
|
|
181
185
|
export * from './shared/dynamic-form-inputs/date-form-input/date-form-input.component';
|
|
@@ -183,6 +187,7 @@ export * from './shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-inpu
|
|
|
183
187
|
export * from './shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component';
|
|
184
188
|
export * from './shared/dynamic-form-inputs/number-form-input/number-form-input.component';
|
|
185
189
|
export * from './shared/dynamic-form-inputs/password-form-input/password-form-input.component';
|
|
190
|
+
export * from './shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component';
|
|
186
191
|
export * from './shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component';
|
|
187
192
|
export * from './shared/dynamic-form-inputs/register-dynamic-input-components';
|
|
188
193
|
export * from './shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { EventEmitter, OnChanges } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { ModalService } from '../../../providers/modal/modal.service';
|
|
3
|
+
import { SelectionManager } from '../../../common/utilities/selection-manager';
|
|
3
4
|
import { AssetLike } from './asset-gallery.types';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class AssetGalleryComponent implements OnChanges {
|
|
@@ -58,9 +59,32 @@ export declare class AssetGalleryComponent implements OnChanges {
|
|
|
58
59
|
y: number;
|
|
59
60
|
} | null | undefined;
|
|
60
61
|
}[]>;
|
|
61
|
-
|
|
62
|
+
selectionManager: SelectionManager<{
|
|
63
|
+
__typename?: "Asset" | undefined;
|
|
64
|
+
id: string;
|
|
65
|
+
createdAt: any;
|
|
66
|
+
updatedAt: any;
|
|
67
|
+
name: string;
|
|
68
|
+
fileSize: number;
|
|
69
|
+
mimeType: string;
|
|
70
|
+
type: import("@vendure/admin-ui/core").AssetType;
|
|
71
|
+
preview: string;
|
|
72
|
+
source: string;
|
|
73
|
+
width: number;
|
|
74
|
+
height: number;
|
|
75
|
+
tags: {
|
|
76
|
+
__typename?: "Tag" | undefined;
|
|
77
|
+
id: string;
|
|
78
|
+
value: string;
|
|
79
|
+
}[];
|
|
80
|
+
focalPoint?: {
|
|
81
|
+
__typename?: "Coordinate" | undefined;
|
|
82
|
+
x: number;
|
|
83
|
+
y: number;
|
|
84
|
+
} | null | undefined;
|
|
85
|
+
}>;
|
|
62
86
|
constructor(modalService: ModalService);
|
|
63
|
-
ngOnChanges(): void;
|
|
87
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
64
88
|
toggleSelection(asset: AssetLike, event?: MouseEvent): void;
|
|
65
89
|
selectMultiple(assets: AssetLike[]): void;
|
|
66
90
|
isSelected(asset: AssetLike): boolean;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { AbstractControl, ControlValueAccessor, FormGroup, ValidationErrors, Validator } from '@angular/forms';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
3
4
|
import { ConfigArg, ConfigArgDefinition, ConfigurableOperation, ConfigurableOperationDefinition } from '../../../common/generated-types';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
/**
|
|
6
7
|
* A form input which renders a card with the internal form fields of the given ConfigurableOperation.
|
|
7
8
|
*/
|
|
8
|
-
export declare class ConfigurableInputComponent implements OnChanges, OnDestroy, ControlValueAccessor, Validator {
|
|
9
|
+
export declare class ConfigurableInputComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor, Validator {
|
|
9
10
|
operation?: ConfigurableOperation;
|
|
10
11
|
operationDefinition?: ConfigurableOperationDefinition;
|
|
11
12
|
readonly: boolean;
|
|
12
13
|
removable: boolean;
|
|
14
|
+
position: number;
|
|
13
15
|
remove: EventEmitter<ConfigurableOperation>;
|
|
14
16
|
argValues: {
|
|
15
17
|
[name: string]: any;
|
|
@@ -17,8 +19,11 @@ export declare class ConfigurableInputComponent implements OnChanges, OnDestroy,
|
|
|
17
19
|
onChange: (val: any) => void;
|
|
18
20
|
onTouch: () => void;
|
|
19
21
|
form: FormGroup;
|
|
22
|
+
positionChange$: Observable<number>;
|
|
23
|
+
private positionChangeSubject;
|
|
20
24
|
private subscription;
|
|
21
25
|
interpolateDescription(): string;
|
|
26
|
+
ngOnInit(): void;
|
|
22
27
|
ngOnChanges(changes: SimpleChanges): void;
|
|
23
28
|
ngOnDestroy(): void;
|
|
24
29
|
registerOnChange(fn: any): void;
|
|
@@ -30,5 +35,5 @@ export declare class ConfigurableInputComponent implements OnChanges, OnDestroy,
|
|
|
30
35
|
private createForm;
|
|
31
36
|
validate(c: AbstractControl): ValidationErrors | null;
|
|
32
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurableInputComponent, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConfigurableInputComponent, "vdr-configurable-input", never, { "operation": "operation"; "operationDefinition": "operationDefinition"; "readonly": "readonly"; "removable": "removable"; }, { "remove": "remove"; }, never, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConfigurableInputComponent, "vdr-configurable-input", never, { "operation": "operation"; "operationDefinition": "operationDefinition"; "readonly": "readonly"; "removable": "removable"; "position": "position"; }, { "remove": "remove"; }, never, never>;
|
|
34
39
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AfterContentInit, EventEmitter, QueryList, TemplateRef } from '@angular/core';
|
|
1
|
+
import { AfterContentInit, EventEmitter, OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
|
|
2
2
|
import { DataTableColumnComponent } from './data-table-column.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
@@ -60,7 +60,7 @@ import * as i0 from "@angular/core";
|
|
|
60
60
|
*
|
|
61
61
|
* @docsCategory components
|
|
62
62
|
*/
|
|
63
|
-
export declare class DataTableComponent<T> implements AfterContentInit {
|
|
63
|
+
export declare class DataTableComponent<T> implements AfterContentInit, OnChanges {
|
|
64
64
|
items: T[];
|
|
65
65
|
itemsPerPage: number;
|
|
66
66
|
currentPage: number;
|
|
@@ -75,8 +75,11 @@ export declare class DataTableComponent<T> implements AfterContentInit {
|
|
|
75
75
|
columns: QueryList<DataTableColumnComponent>;
|
|
76
76
|
templateRefs: QueryList<TemplateRef<any>>;
|
|
77
77
|
rowTemplate: TemplateRef<any>;
|
|
78
|
+
currentStart: number;
|
|
79
|
+
currentEnd: number;
|
|
78
80
|
ngAfterContentInit(): void;
|
|
79
81
|
trackByFn(index: number, item: any): any;
|
|
82
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
80
83
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
|
|
81
84
|
static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent<any>, "vdr-data-table", never, { "items": "items"; "itemsPerPage": "itemsPerPage"; "currentPage": "currentPage"; "totalItems": "totalItems"; "allSelected": "allSelected"; "isRowSelectedFn": "isRowSelectedFn"; "emptyStateLabel": "emptyStateLabel"; }, { "allSelectChange": "allSelectChange"; "rowSelectChange": "rowSelectChange"; "pageChange": "pageChange"; "itemsPerPageChange": "itemsPerPageChange"; }, ["columns", "templateRefs"], never>;
|
|
82
85
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ChangeDetectorRef, OnInit } from '@angular/core';
|
|
2
|
+
import { PaginationInstance } from 'ngx-pagination';
|
|
3
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
4
|
+
import { SearchProductsQuery } from '../../../common/generated-types';
|
|
5
|
+
import { SelectionManager } from '../../../common/utilities/selection-manager';
|
|
6
|
+
import { DataService } from '../../../data/providers/data.service';
|
|
7
|
+
import { Dialog } from '../../../providers/modal/modal.types';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export declare type SearchItem = SearchProductsQuery['search']['items'][number];
|
|
10
|
+
export declare class ProductMultiSelectorDialogComponent implements OnInit, Dialog<SearchItem[]> {
|
|
11
|
+
private dataService;
|
|
12
|
+
private changeDetector;
|
|
13
|
+
mode: 'product' | 'variant';
|
|
14
|
+
initialSelectionIds: string[];
|
|
15
|
+
items$: Observable<SearchItem[]>;
|
|
16
|
+
facetValues$: Observable<SearchProductsQuery['search']['facetValues']>;
|
|
17
|
+
searchTerm$: BehaviorSubject<string>;
|
|
18
|
+
searchFacetValueIds$: BehaviorSubject<string[]>;
|
|
19
|
+
paginationConfig: PaginationInstance;
|
|
20
|
+
selectionManager: SelectionManager<SearchItem>;
|
|
21
|
+
resolveWith: (result?: SearchItem[]) => void;
|
|
22
|
+
private paginationConfig$;
|
|
23
|
+
constructor(dataService: DataService, changeDetector: ChangeDetectorRef);
|
|
24
|
+
ngOnInit(): void;
|
|
25
|
+
trackByFn(index: number, item: SearchItem): string;
|
|
26
|
+
setSearchTerm(term: string): void;
|
|
27
|
+
setFacetValueIds(ids: string[]): void;
|
|
28
|
+
toggleSelection(item: SearchItem, event: MouseEvent): void;
|
|
29
|
+
clearSelection(): void;
|
|
30
|
+
isSelected(item: SearchItem): boolean;
|
|
31
|
+
entityInfoClick(event: MouseEvent): void;
|
|
32
|
+
pageChange(page: number): void;
|
|
33
|
+
itemsPerPageChange(itemsPerPage: number): void;
|
|
34
|
+
select(): void;
|
|
35
|
+
cancel(): void;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ProductMultiSelectorDialogComponent, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ProductMultiSelectorDialogComponent, "vdr-product-multi-selector-dialog", never, {}, {}, never, never>;
|
|
38
|
+
}
|
package/{catalog → core/shared}/components/product-search-input/product-search-input.component.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
|
-
import { SearchProductsQuery } from '
|
|
2
|
+
import { SearchProductsQuery } from '../../../common/generated-types';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
declare type FacetValueResult = SearchProductsQuery['search']['facetValues'][number];
|
|
5
5
|
export declare class ProductSearchInputComponent {
|
|
@@ -6,9 +6,10 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
export declare class SelectToggleComponent {
|
|
7
7
|
size: 'small' | 'large';
|
|
8
8
|
selected: boolean;
|
|
9
|
+
hiddenWhenOff: boolean;
|
|
9
10
|
disabled: boolean;
|
|
10
11
|
label: string | undefined;
|
|
11
12
|
selectedChange: EventEmitter<boolean>;
|
|
12
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<SelectToggleComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SelectToggleComponent, "vdr-select-toggle", never, { "size": "size"; "selected": "selected"; "disabled": "disabled"; "label": "label"; }, { "selectedChange": "selectedChange"; }, never, never>;
|
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SelectToggleComponent, "vdr-select-toggle", never, { "size": "size"; "selected": "selected"; "hiddenWhenOff": "hiddenWhenOff"; "disabled": "disabled"; "label": "label"; }, { "selectedChange": "selectedChange"; }, never, never>;
|
|
14
15
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { DefaultFormComponentConfig, DefaultFormComponentId } from '@vendure/common/lib/shared-types';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
import { FormInputComponent } from '../../../common/component-registry-types';
|
|
6
|
+
import { ConfigurableInputComponent } from '../../components/configurable-input/configurable-input.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* @description
|
|
10
|
+
* A special input used to display the "Combination mode" AND/OR toggle.
|
|
11
|
+
*
|
|
12
|
+
* @docsCategory custom-input-components
|
|
13
|
+
* @docsPage default-inputs
|
|
14
|
+
*/
|
|
15
|
+
export declare class CombinationModeFormInputComponent implements FormInputComponent, OnInit {
|
|
16
|
+
private configurableInputComponent;
|
|
17
|
+
static readonly id: DefaultFormComponentId;
|
|
18
|
+
readonly: boolean;
|
|
19
|
+
formControl: FormControl;
|
|
20
|
+
config: DefaultFormComponentConfig<'combination-mode-form-input'>;
|
|
21
|
+
selectable$: Observable<boolean>;
|
|
22
|
+
constructor(configurableInputComponent: ConfigurableInputComponent);
|
|
23
|
+
ngOnInit(): void;
|
|
24
|
+
setCombinationModeAnd(): void;
|
|
25
|
+
setCombinationModeOr(): void;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CombinationModeFormInputComponent, [{ optional: true; }]>;
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CombinationModeFormInputComponent, "vdr-combination-mode-form-input", never, {}, {}, never, never>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ChangeDetectorRef, OnInit } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { DefaultFormComponentConfig, DefaultFormComponentId } from '@vendure/common/lib/shared-types';
|
|
4
|
+
import { FormInputComponent } from '../../../common/component-registry-types';
|
|
5
|
+
import { DataService } from '../../../data/providers/data.service';
|
|
6
|
+
import { ModalService } from '../../../providers/modal/modal.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class ProductMultiSelectorFormInputComponent implements OnInit, FormInputComponent {
|
|
9
|
+
private modalService;
|
|
10
|
+
private dataService;
|
|
11
|
+
private changeDetector;
|
|
12
|
+
config: DefaultFormComponentConfig<'product-multi-form-input'>;
|
|
13
|
+
formControl: FormControl;
|
|
14
|
+
readonly: boolean;
|
|
15
|
+
mode: 'product' | 'variant';
|
|
16
|
+
readonly isListInput = true;
|
|
17
|
+
static readonly id: DefaultFormComponentId;
|
|
18
|
+
constructor(modalService: ModalService, dataService: DataService, changeDetector: ChangeDetectorRef);
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
select(): void;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ProductMultiSelectorFormInputComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ProductMultiSelectorFormInputComponent, "vdr-product-multi-selector-form-input", never, { "config": "config"; "formControl": "formControl"; "readonly": "readonly"; }, {}, never, never>;
|
|
23
|
+
}
|
|
@@ -2,12 +2,14 @@ import { FactoryProvider, Type } from '@angular/core';
|
|
|
2
2
|
import { FormInputComponent } from '../../common/component-registry-types';
|
|
3
3
|
import { CustomFieldControl, CustomFieldEntityName } from '../../providers/custom-field-component/custom-field-component.service';
|
|
4
4
|
import { JsonEditorFormInputComponent } from './code-editor-form-input/json-editor-form-input.component';
|
|
5
|
+
import { CombinationModeFormInputComponent } from './combination-mode-form-input/combination-mode-form-input.component';
|
|
5
6
|
import { CurrencyFormInputComponent } from './currency-form-input/currency-form-input.component';
|
|
6
7
|
import { CustomerGroupFormInputComponent } from './customer-group-form-input/customer-group-form-input.component';
|
|
7
8
|
import { FacetValueFormInputComponent } from './facet-value-form-input/facet-value-form-input.component';
|
|
8
9
|
import { PasswordFormInputComponent } from './password-form-input/password-form-input.component';
|
|
10
|
+
import { ProductMultiSelectorFormInputComponent } from './product-multi-selector-form-input/product-multi-selector-form-input.component';
|
|
9
11
|
import { ProductSelectorFormInputComponent } from './product-selector-form-input/product-selector-form-input.component';
|
|
10
|
-
export declare const defaultFormInputs: (typeof JsonEditorFormInputComponent | typeof CurrencyFormInputComponent | typeof CustomerGroupFormInputComponent | typeof FacetValueFormInputComponent | typeof PasswordFormInputComponent | typeof ProductSelectorFormInputComponent)[];
|
|
12
|
+
export declare const defaultFormInputs: (typeof JsonEditorFormInputComponent | typeof CombinationModeFormInputComponent | typeof CurrencyFormInputComponent | typeof CustomerGroupFormInputComponent | typeof FacetValueFormInputComponent | typeof PasswordFormInputComponent | typeof ProductMultiSelectorFormInputComponent | typeof ProductSelectorFormInputComponent)[];
|
|
11
13
|
/**
|
|
12
14
|
* @description
|
|
13
15
|
* Registers a custom FormInputComponent which can be used to control the argument inputs
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { DefaultFormComponentId } from '@vendure/common/lib/shared-types';
|
|
3
4
|
import { Observable } from 'rxjs';
|
|
5
|
+
import { FormInputComponent } from '../../../../common/component-registry-types';
|
|
4
6
|
import { GetAssetQuery, RelationCustomFieldConfig } from '../../../../common/generated-types';
|
|
5
7
|
import { DataService } from '../../../../data/providers/data.service';
|
|
6
8
|
import { ModalService } from '../../../../providers/modal/modal.service';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
|
-
export declare class RelationAssetInputComponent implements OnInit {
|
|
10
|
+
export declare class RelationAssetInputComponent implements FormInputComponent, OnInit {
|
|
9
11
|
private modalService;
|
|
10
12
|
private dataService;
|
|
13
|
+
static readonly id: DefaultFormComponentId;
|
|
11
14
|
readonly: boolean;
|
|
12
|
-
|
|
15
|
+
formControl: FormControl;
|
|
13
16
|
config: RelationCustomFieldConfig;
|
|
14
17
|
asset$: Observable<GetAssetQuery['asset'] | undefined>;
|
|
15
18
|
constructor(modalService: ModalService, dataService: DataService);
|
|
@@ -18,5 +21,5 @@ export declare class RelationAssetInputComponent implements OnInit {
|
|
|
18
21
|
remove(): void;
|
|
19
22
|
previewAsset(asset: NonNullable<GetAssetQuery['asset']>): void;
|
|
20
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<RelationAssetInputComponent, never>;
|
|
21
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RelationAssetInputComponent, "vdr-relation-asset-input", never, { "readonly": "readonly"; "
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RelationAssetInputComponent, "vdr-relation-asset-input", never, { "readonly": "readonly"; "formControl": "parentFormControl"; "config": "config"; }, {}, never, never>;
|
|
22
25
|
}
|