@vendure/admin-ui 1.7.0 → 1.7.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"vendure-admin-ui-catalog.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/catalog/src/components/asset-detail/asset-detail.component.ts","../../src/lib/catalog/src/components/asset-list/asset-list.component.ts","../../src/lib/catalog/src/components/collection-detail/collection-detail.component.ts","../../src/lib/catalog/src/components/collection-list/collection-list.component.ts","../../src/lib/catalog/src/components/facet-detail/facet-detail.component.ts","../../src/lib/catalog/src/components/facet-list/facet-list.component.ts","../../src/lib/catalog/src/providers/product-detail/replace-last.ts","../../src/lib/catalog/src/providers/product-detail/product-detail.service.ts","../../src/lib/catalog/src/components/apply-facet-dialog/apply-facet-dialog.component.ts","../../src/lib/catalog/src/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.ts","../../src/lib/catalog/src/components/product-detail/product-detail.component.ts","../../src/lib/catalog/src/components/product-list/product-list.component.ts","../../src/lib/catalog/src/components/product-options-editor/product-options-editor.component.ts","../../src/lib/catalog/src/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.ts","../../src/lib/catalog/src/components/product-variants-editor/product-variants-editor.component.ts","../../src/lib/catalog/src/providers/routing/asset-resolver.ts","../../src/lib/catalog/src/providers/routing/collection-resolver.ts","../../src/lib/catalog/src/providers/routing/facet-resolver.ts","../../src/lib/catalog/src/providers/routing/product-resolver.ts","../../src/lib/catalog/src/providers/routing/product-variants-resolver.ts","../../src/lib/catalog/src/catalog.routes.ts","../../src/lib/catalog/src/components/assets/assets.component.ts","../../src/lib/catalog/src/components/collection-contents/collection-contents.component.ts","../../src/lib/catalog/src/components/collection-tree/array-to-tree.ts","../../src/lib/catalog/src/components/collection-tree/collection-tree.component.ts","../../src/lib/catalog/src/components/collection-tree/collection-tree-node.component.ts","../../src/lib/catalog/src/components/generate-product-variants/generate-product-variants.component.ts","../../src/lib/catalog/src/components/option-value-input/option-value-input.component.ts","../../src/lib/catalog/src/components/update-product-option-dialog/update-product-option-dialog.component.ts","../../src/lib/catalog/src/components/product-variants-list/product-variants-list.component.ts","../../src/lib/catalog/src/components/product-variants-table/product-variants-table.component.ts","../../src/lib/catalog/src/components/variant-price-detail/variant-price-detail.component.ts","../../src/lib/catalog/src/catalog.module.ts","../../src/lib/catalog/src/public_api.ts","../../src/lib/catalog/src/vendure-admin-ui-catalog.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseDetailComponent,\r\n CustomFieldConfig,\r\n GetAsset,\r\n LanguageCode,\r\n} from '@vendure/admin-ui/core';\r\nimport { DataService, NotificationService, ServerConfigService } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-asset-detail',\r\n templateUrl: './asset-detail.component.html',\r\n styleUrls: ['./asset-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssetDetailComponent extends BaseDetailComponent<GetAsset.Asset> implements OnInit, OnDestroy {\r\n detailForm = new FormGroup({});\r\n customFields: CustomFieldConfig[];\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private notificationService: NotificationService,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Asset');\r\n }\r\n\r\n ngOnInit() {\r\n this.detailForm = new FormGroup({\r\n name: new FormControl(''),\r\n tags: new FormControl([]),\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n this.init();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n onAssetChange(event: { id: string; name: string; tags: string[] }) {\r\n this.detailForm.get('name')?.setValue(event.name);\r\n this.detailForm.get('tags')?.setValue(event.tags);\r\n this.detailForm.markAsDirty();\r\n }\r\n\r\n save() {\r\n this.dataService.product\r\n .updateAsset({\r\n id: this.id,\r\n name: this.detailForm.value.name,\r\n tags: this.detailForm.value.tags,\r\n customFields: this.detailForm.value.customFields,\r\n })\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Asset' });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Asset',\r\n });\r\n },\r\n );\r\n }\r\n\r\n protected setFormValues(entity: GetAsset.Asset, languageCode: LanguageCode): void {\r\n this.detailForm.get('name')?.setValue(entity.name);\r\n this.detailForm.get('tags')?.setValue(entity.tags);\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseListComponent,\r\n DataService,\r\n DeletionResult,\r\n GetAssetList,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n SortOrder,\r\n TagFragment,\r\n} from '@vendure/admin-ui/core';\r\nimport { PaginationInstance } from 'ngx-pagination';\r\nimport { BehaviorSubject, combineLatest, EMPTY, Observable } from 'rxjs';\r\nimport { debounceTime, finalize, map, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-asset-list',\r\n templateUrl: './asset-list.component.html',\r\n styleUrls: ['./asset-list.component.scss'],\r\n})\r\nexport class AssetListComponent\r\n extends BaseListComponent<GetAssetList.Query, GetAssetList.Items, GetAssetList.Variables>\r\n implements OnInit {\r\n searchTerm$ = new BehaviorSubject<string | undefined>(undefined);\r\n filterByTags$ = new BehaviorSubject<TagFragment[] | undefined>(undefined);\r\n uploading = false;\r\n allTags$: Observable<TagFragment[]>;\r\n paginationConfig$: Observable<PaginationInstance>;\r\n\r\n constructor(\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private dataService: DataService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n ) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.product.getAssetList(...args),\r\n data => data.assets,\r\n (skip, take) => {\r\n const searchTerm = this.searchTerm$.value;\r\n const tags = this.filterByTags$.value?.map(t => t.value);\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n ...(searchTerm\r\n ? {\r\n filter: {\r\n name: { contains: searchTerm },\r\n },\r\n }\r\n : {}),\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n tags,\r\n tagsOperator: LogicalOperator.AND,\r\n },\r\n };\r\n },\r\n { take: 25, skip: 0 },\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.paginationConfig$ = combineLatest(this.itemsPerPage$, this.currentPage$, this.totalItems$).pipe(\r\n map(([itemsPerPage, currentPage, totalItems]) => ({ itemsPerPage, currentPage, totalItems })),\r\n );\r\n this.searchTerm$.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe(() => this.refresh());\r\n\r\n this.filterByTags$.pipe(takeUntil(this.destroy$)).subscribe(() => this.refresh());\r\n this.allTags$ = this.dataService.product.getTagList().mapStream(data => data.tags.items);\r\n }\r\n\r\n filesSelected(files: File[]) {\r\n if (files.length) {\r\n this.uploading = true;\r\n this.dataService.product\r\n .createAssets(files)\r\n .pipe(finalize(() => (this.uploading = false)))\r\n .subscribe(({ createAssets }) => {\r\n let successCount = 0;\r\n for (const result of createAssets) {\r\n switch (result.__typename) {\r\n case 'Asset':\r\n successCount++;\r\n break;\r\n case 'MimeTypeError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n if (0 < successCount) {\r\n super.refresh();\r\n this.notificationService.success(_('asset.notify-create-assets-success'), {\r\n count: successCount,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n deleteAssets(assets: Asset[]) {\r\n this.showModalAndDelete(assets.map(a => a.id))\r\n .pipe(\r\n switchMap(response => {\r\n if (response.result === DeletionResult.DELETED) {\r\n return [true];\r\n } else {\r\n return this.showModalAndDelete(\r\n assets.map(a => a.id),\r\n response.message || '',\r\n ).pipe(map(r => r.result === DeletionResult.DELETED));\r\n }\r\n }),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Assets',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Assets',\r\n });\r\n },\r\n );\r\n }\r\n\r\n private showModalAndDelete(assetIds: string[], message?: string) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-assets'),\r\n translationVars: {\r\n count: assetIds.length,\r\n },\r\n body: message,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(res => (res ? this.dataService.product.deleteAssets(assetIds, !!message) : EMPTY)),\r\n map(res => res.deleteAssets),\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseDetailComponent,\r\n Collection,\r\n ConfigurableOperation,\r\n ConfigurableOperationDefinition,\r\n ConfigurableOperationInput,\r\n CreateCollectionInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n encodeConfigArgValue,\r\n findTranslation,\r\n getConfigArgValue,\r\n LanguageCode,\r\n LocalStorageService,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n ServerConfigService,\r\n unicodePatternValidator,\r\n UpdateCollectionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { combineLatest, merge, Observable, of, Subject } from 'rxjs';\r\nimport { debounceTime, filter, map, mergeMap, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { CollectionContentsComponent } from '../collection-contents/collection-contents.component';\r\n\r\n@Component({\r\n selector: 'vdr-collection-detail',\r\n templateUrl: './collection-detail.component.html',\r\n styleUrls: ['./collection-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionDetailComponent\r\n extends BaseDetailComponent<Collection.Fragment>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields: CustomFieldConfig[];\r\n detailForm: FormGroup;\r\n assetChanges: { assets?: Asset[]; featuredAsset?: Asset } = {};\r\n filters: ConfigurableOperation[] = [];\r\n allFilters: ConfigurableOperationDefinition[] = [];\r\n updatedFilters$: Observable<ConfigurableOperationInput[]>;\r\n livePreview = false;\r\n parentId$: Observable<string | undefined>;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateCollection];\r\n private filterRemoved$ = new Subject<void>();\r\n @ViewChild('collectionContents') contentsComponent: CollectionContentsComponent;\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private localStorageService: LocalStorageService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Collection');\r\n this.detailForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n slug: ['', unicodePatternValidator(/^[\\p{Letter}0-9_-]+$/)],\r\n description: '',\r\n visible: false,\r\n filters: this.formBuilder.array([]),\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n this.livePreview = this.localStorageService.get('livePreviewCollectionContents') ?? false;\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.dataService.collection.getCollectionFilters().single$.subscribe(res => {\r\n this.allFilters = res.collectionFilters;\r\n });\r\n const filtersFormArray = this.detailForm.get('filters') as FormArray;\r\n this.updatedFilters$ = merge(filtersFormArray.statusChanges, this.filterRemoved$).pipe(\r\n debounceTime(200),\r\n filter(() => filtersFormArray.touched),\r\n map(() =>\r\n this.mapOperationsToInputs(this.filters, filtersFormArray.value).filter(_filter => {\r\n // ensure all the arguments have valid values. E.g. a newly-added\r\n // filter will not yet have valid values\r\n for (const arg of _filter.arguments) {\r\n if (arg.value === '') {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }),\r\n ),\r\n );\r\n this.parentId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('parentId') || undefined),\r\n switchMap(parentId => {\r\n if (parentId) {\r\n return of(parentId);\r\n } else {\r\n return this.entity$.pipe(map(collection => collection.parent?.id));\r\n }\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n getFilterDefinition(_filter: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\r\n return this.allFilters.find(f => f.code === _filter.code);\r\n }\r\n\r\n assetsChanged(): boolean {\r\n return !!Object.values(this.assetChanges).length;\r\n }\r\n\r\n /**\r\n * If creating a new Collection, automatically generate the slug based on the collection name.\r\n */\r\n updateSlug(nameValue: string) {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(take(1))\r\n .subscribe(([entity, languageCode]) => {\r\n const slugControl = this.detailForm.get(['slug']);\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n const currentSlugIsEmpty = !currentTranslation || !currentTranslation.slug;\r\n if (slugControl && slugControl.pristine && currentSlugIsEmpty) {\r\n slugControl.setValue(normalizeString(`${nameValue}`, '-'));\r\n }\r\n });\r\n }\r\n\r\n addFilter(collectionFilter: ConfigurableOperation) {\r\n const filtersArray = this.detailForm.get('filters') as FormArray;\r\n const argsHash = collectionFilter.args.reduce(\r\n (output, arg) => ({\r\n ...output,\r\n [arg.name]: getConfigArgValue(arg.value),\r\n }),\r\n {},\r\n );\r\n filtersArray.push(\r\n this.formBuilder.control({\r\n code: collectionFilter.code,\r\n args: argsHash,\r\n }),\r\n );\r\n this.filters.push({\r\n code: collectionFilter.code,\r\n args: collectionFilter.args.map(a => ({ name: a.name, value: getConfigArgValue(a.value) })),\r\n });\r\n }\r\n\r\n removeFilter(index: number) {\r\n const filtersArray = this.detailForm.get('filters') as FormArray;\r\n if (index !== -1) {\r\n filtersArray.removeAt(index);\r\n filtersArray.markAsDirty();\r\n filtersArray.markAsTouched();\r\n this.filters.splice(index, 1);\r\n this.filterRemoved$.next();\r\n }\r\n }\r\n\r\n create() {\r\n if (!this.detailForm.dirty) {\r\n return;\r\n }\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([category, languageCode]) => {\r\n const input = this.getUpdatedCollection(\r\n category,\r\n this.detailForm,\r\n languageCode,\r\n ) as CreateCollectionInput;\r\n const parentId = this.route.snapshot.paramMap.get('parentId');\r\n if (parentId) {\r\n input.parentId = parentId;\r\n }\r\n return this.dataService.collection.createCollection(input);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Collection',\r\n });\r\n this.assetChanges = {};\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', data.createCollection.id], { relativeTo: this.route });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Collection',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([category, languageCode]) => {\r\n const input = this.getUpdatedCollection(\r\n category,\r\n this.detailForm,\r\n languageCode,\r\n ) as UpdateCollectionInput;\r\n return this.dataService.collection.updateCollection(input);\r\n }),\r\n )\r\n .subscribe(\r\n () => {\r\n this.assetChanges = {};\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Collection',\r\n });\r\n this.contentsComponent.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Collection',\r\n });\r\n },\r\n );\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return super.canDeactivate() && !this.assetChanges.assets && !this.assetChanges.featuredAsset;\r\n }\r\n\r\n toggleLivePreview() {\r\n this.livePreview = !this.livePreview;\r\n this.localStorageService.set('livePreviewCollectionContents', this.livePreview);\r\n }\r\n\r\n trackByFn(index: number, item: ConfigurableOperation) {\r\n return JSON.stringify(item);\r\n }\r\n\r\n /**\r\n * Sets the values of the form on changes to the category or current language.\r\n */\r\n protected setFormValues(entity: Collection.Fragment, languageCode: LanguageCode) {\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n\r\n this.detailForm.patchValue({\r\n name: currentTranslation ? currentTranslation.name : '',\r\n slug: currentTranslation ? currentTranslation.slug : '',\r\n description: currentTranslation ? currentTranslation.description : '',\r\n visible: !entity.isPrivate,\r\n });\r\n\r\n const formArray = this.detailForm.get('filters') as FormArray;\r\n if (formArray.length !== entity.filters.length) {\r\n formArray.clear();\r\n this.filters = [];\r\n entity.filters.forEach(f => this.addFilter(f));\r\n }\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['customFields']),\r\n entity,\r\n currentTranslation,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Given a category and the value of the form, this method creates an updated copy of the category which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedCollection(\r\n category: Collection.Fragment,\r\n form: FormGroup,\r\n languageCode: LanguageCode,\r\n ): CreateCollectionInput | UpdateCollectionInput {\r\n const updatedCategory = createUpdatedTranslatable({\r\n translatable: category,\r\n updatedFields: form.value,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: category.name || '',\r\n slug: category.slug || '',\r\n description: category.description || '',\r\n },\r\n });\r\n return {\r\n ...updatedCategory,\r\n assetIds: this.assetChanges.assets?.map(a => a.id),\r\n featuredAssetId: this.assetChanges.featuredAsset?.id,\r\n isPrivate: !form.value.visible,\r\n filters: this.mapOperationsToInputs(this.filters, this.detailForm.value.filters),\r\n };\r\n }\r\n\r\n /**\r\n * Maps an array of conditions or actions to the input format expected by the GraphQL API.\r\n */\r\n private mapOperationsToInputs(\r\n operations: ConfigurableOperation[],\r\n formValueOperations: any,\r\n ): ConfigurableOperationInput[] {\r\n return operations.map((o, i) => {\r\n return {\r\n code: o.code,\r\n arguments: Object.entries(formValueOperations[i].args).map(([name, value], j) => {\r\n return {\r\n name,\r\n value: encodeConfigArgValue(value),\r\n };\r\n }),\r\n };\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n DataService,\r\n GetCollectionList,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n QueryResult,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { combineLatest, EMPTY, Observable, Subject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n map,\r\n shareReplay,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport { RearrangeEvent } from '../collection-tree/collection-tree.component';\r\n\r\n@Component({\r\n selector: 'vdr-collection-list',\r\n templateUrl: './collection-list.component.html',\r\n styleUrls: ['./collection-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionListComponent implements OnInit, OnDestroy {\r\n filterTermControl = new FormControl('');\r\n activeCollectionId$: Observable<string | null>;\r\n activeCollectionTitle$: Observable<string>;\r\n items$: Observable<GetCollectionList.Items[]>;\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n contentLanguage$: Observable<LanguageCode>;\r\n expandAll = false;\r\n expandedIds: string[] = [];\r\n private queryResult: QueryResult<any>;\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n private dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private serverConfigService: ServerConfigService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryResult = this.dataService.collection.getCollections(1000, 0).refetchOnChannelChange();\r\n this.items$ = this.queryResult.mapStream(data => data.collections.items).pipe(shareReplay(1));\r\n this.activeCollectionId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('contents')),\r\n distinctUntilChanged(),\r\n );\r\n this.expandedIds = this.route.snapshot.queryParamMap.get('expanded')?.split(',') ?? [];\r\n this.expandAll = this.route.snapshot.queryParamMap.get('expanded') === 'all';\r\n\r\n this.activeCollectionTitle$ = combineLatest(this.activeCollectionId$, this.items$).pipe(\r\n map(([id, collections]) => {\r\n if (id) {\r\n const match = collections.find(c => c.id === id);\r\n return match ? match.name : '';\r\n }\r\n return '';\r\n }),\r\n );\r\n this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();\r\n this.contentLanguage$ = this.dataService.client\r\n .uiState()\r\n .mapStream(({ uiState }) => uiState.contentLanguage)\r\n .pipe(tap(() => this.refresh()));\r\n\r\n this.filterTermControl.valueChanges\r\n .pipe(debounceTime(250), takeUntil(this.destroy$))\r\n .subscribe(term => {\r\n this.router.navigate(['./'], {\r\n queryParams: {\r\n q: term || undefined,\r\n },\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n });\r\n });\r\n\r\n this.route.queryParamMap\r\n .pipe(\r\n map(qpm => qpm.get('q')),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.refresh());\r\n this.filterTermControl.patchValue(this.route.snapshot.queryParamMap.get('q'));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryResult.completed$.next();\r\n this.destroy$.next(undefined);\r\n this.destroy$.complete();\r\n }\r\n\r\n toggleExpandAll() {\r\n this.router.navigate(['./'], {\r\n queryParams: {\r\n expanded: this.expandAll ? 'all' : undefined,\r\n },\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n });\r\n }\r\n\r\n onRearrange(event: RearrangeEvent) {\r\n this.dataService.collection.moveCollection([event]).subscribe({\r\n next: () => {\r\n this.notificationService.success(_('common.notify-saved-changes'));\r\n this.refresh();\r\n },\r\n error: err => {\r\n this.notificationService.error(_('common.notify-save-changes-error'));\r\n },\r\n });\r\n }\r\n\r\n deleteCollection(id: string) {\r\n this.items$\r\n .pipe(\r\n take(1),\r\n map(items => -1 < items.findIndex(i => i.parent && i.parent.id === id)),\r\n switchMap(hasChildren => {\r\n return this.modalService.dialog({\r\n title: _('catalog.confirm-delete-collection'),\r\n body: hasChildren\r\n ? _('catalog.confirm-delete-collection-and-children-body')\r\n : undefined,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n });\r\n }),\r\n switchMap(response => (response ? this.dataService.collection.deleteCollection(id) : EMPTY)),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Collection',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Collection',\r\n });\r\n },\r\n );\r\n }\r\n\r\n closeContents() {\r\n const params = { ...this.route.snapshot.params };\r\n delete params.contents;\r\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\r\n }\r\n\r\n setLanguage(code: LanguageCode) {\r\n this.dataService.client.setContentLanguage(code).subscribe();\r\n }\r\n\r\n private refresh() {\r\n const filterTerm = this.route.snapshot.queryParamMap.get('q');\r\n this.queryResult.ref.refetch({\r\n options: {\r\n skip: 0,\r\n take: 1000,\r\n ...(filterTerm\r\n ? {\r\n filter: {\r\n name: {\r\n contains: filterTerm,\r\n },\r\n },\r\n }\r\n : {}),\r\n },\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CreateFacetInput,\r\n CreateFacetValueInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n DeletionResult,\r\n FacetWithValues,\r\n findTranslation,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n ServerConfigService,\r\n UpdateFacetInput,\r\n UpdateFacetValueInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { combineLatest, EMPTY, forkJoin, Observable } from 'rxjs';\r\nimport { map, mapTo, mergeMap, switchMap, take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-facet-detail',\r\n templateUrl: './facet-detail.component.html',\r\n styleUrls: ['./facet-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FacetDetailComponent\r\n extends BaseDetailComponent<FacetWithValues.Fragment>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields: CustomFieldConfig[];\r\n customValueFields: CustomFieldConfig[];\r\n detailForm: FormGroup;\r\n values: Array<FacetWithValues.Values | { name: string; code: string }>;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateFacet];\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Facet');\r\n this.customValueFields = this.getCustomFieldConfig('FacetValue');\r\n this.detailForm = this.formBuilder.group({\r\n facet: this.formBuilder.group({\r\n code: ['', Validators.required],\r\n name: '',\r\n visible: true,\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n }),\r\n values: this.formBuilder.array([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n updateCode(currentCode: string, nameValue: string) {\r\n if (!currentCode) {\r\n const codeControl = this.detailForm.get(['facet', 'code']);\r\n if (codeControl && codeControl.pristine) {\r\n codeControl.setValue(normalizeString(nameValue, '-'));\r\n }\r\n }\r\n }\r\n\r\n updateValueCode(currentCode: string, nameValue: string, index: number) {\r\n if (!currentCode) {\r\n const codeControl = this.detailForm.get(['values', index, 'code']);\r\n if (codeControl && codeControl.pristine) {\r\n codeControl.setValue(normalizeString(nameValue, '-'));\r\n }\r\n }\r\n }\r\n\r\n customValueFieldIsSet(index: number, name: string): boolean {\r\n return !!this.detailForm.get(['values', index, 'customFields', name]);\r\n }\r\n\r\n getValuesFormArray(): FormArray {\r\n return this.detailForm.get('values') as FormArray;\r\n }\r\n\r\n addFacetValue() {\r\n const valuesFormArray = this.detailForm.get('values') as FormArray | null;\r\n if (valuesFormArray) {\r\n const valueGroup = this.formBuilder.group({\r\n id: '',\r\n name: ['', Validators.required],\r\n code: '',\r\n });\r\n const newValue: any = { name: '', code: '' };\r\n if (this.customValueFields.length) {\r\n const customValueFieldsGroup = new FormGroup({});\r\n newValue.customFields = {};\r\n\r\n for (const fieldDef of this.customValueFields) {\r\n const key = fieldDef.name;\r\n customValueFieldsGroup.addControl(key, new FormControl());\r\n }\r\n\r\n valueGroup.addControl('customFields', customValueFieldsGroup);\r\n }\r\n valuesFormArray.insert(valuesFormArray.length, valueGroup);\r\n this.values.push(newValue);\r\n }\r\n }\r\n\r\n create() {\r\n const facetForm = this.detailForm.get('facet');\r\n if (!facetForm || !facetForm.dirty) {\r\n return;\r\n }\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([facet, languageCode]) => {\r\n const newFacet = this.getUpdatedFacet(\r\n facet,\r\n facetForm as FormGroup,\r\n languageCode,\r\n ) as CreateFacetInput;\r\n return this.dataService.facet.createFacet(newFacet);\r\n }),\r\n switchMap(data => this.dataService.facet.getAllFacets().single$.pipe(mapTo(data))),\r\n )\r\n .subscribe(\r\n data => {\r\n this.notificationService.success(_('common.notify-create-success'), { entity: 'Facet' });\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', data.createFacet.id], { relativeTo: this.route });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Facet',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([facet, languageCode]) => {\r\n const facetGroup = this.detailForm.get('facet');\r\n const updateOperations: Array<Observable<any>> = [];\r\n\r\n if (facetGroup && facetGroup.dirty) {\r\n const newFacet = this.getUpdatedFacet(\r\n facet,\r\n facetGroup as FormGroup,\r\n languageCode,\r\n ) as UpdateFacetInput;\r\n if (newFacet) {\r\n updateOperations.push(this.dataService.facet.updateFacet(newFacet));\r\n }\r\n }\r\n const valuesArray = this.detailForm.get('values');\r\n if (valuesArray && valuesArray.dirty) {\r\n const createdValues = this.getCreatedFacetValues(\r\n facet,\r\n valuesArray as FormArray,\r\n languageCode,\r\n );\r\n if (createdValues.length) {\r\n updateOperations.push(\r\n this.dataService.facet\r\n .createFacetValues(createdValues)\r\n .pipe(switchMap(() => this.dataService.facet.getFacet(this.id).single$)),\r\n );\r\n }\r\n const updatedValues = this.getUpdatedFacetValues(\r\n facet,\r\n valuesArray as FormArray,\r\n languageCode,\r\n );\r\n if (updatedValues.length) {\r\n updateOperations.push(this.dataService.facet.updateFacetValues(updatedValues));\r\n }\r\n }\r\n\r\n return forkJoin(updateOperations);\r\n }),\r\n switchMap(() => this.dataService.facet.getAllFacets().single$),\r\n )\r\n .subscribe(\r\n () => {\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Facet' });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Facet',\r\n });\r\n },\r\n );\r\n }\r\n\r\n deleteFacetValue(facetValueId: string | undefined, index: number) {\r\n if (!facetValueId) {\r\n // deleting a newly-added (not persisted) FacetValue\r\n const valuesFormArray = this.detailForm.get('values') as FormArray | null;\r\n if (valuesFormArray) {\r\n valuesFormArray.removeAt(index);\r\n }\r\n this.values.splice(index, 1);\r\n return;\r\n }\r\n this.showModalAndDelete(facetValueId)\r\n .pipe(\r\n switchMap(response => {\r\n if (response.result === DeletionResult.DELETED) {\r\n return [true];\r\n } else {\r\n return this.showModalAndDelete(facetValueId, response.message || '').pipe(\r\n map(r => r.result === DeletionResult.DELETED),\r\n );\r\n }\r\n }),\r\n switchMap(deleted => (deleted ? this.dataService.facet.getFacet(this.id).single$ : [])),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'FacetValue',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'FacetValue',\r\n });\r\n },\r\n );\r\n }\r\n\r\n private showModalAndDelete(facetValueId: string, message?: string) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-facet-value'),\r\n body: message,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(result =>\r\n result ? this.dataService.facet.deleteFacetValues([facetValueId], !!message) : EMPTY,\r\n ),\r\n map(result => result.deleteFacetValues[0]),\r\n );\r\n }\r\n\r\n /**\r\n * Sets the values of the form on changes to the facet or current language.\r\n */\r\n protected setFormValues(facet: FacetWithValues.Fragment, languageCode: LanguageCode) {\r\n const currentTranslation = findTranslation(facet, languageCode);\r\n\r\n this.detailForm.patchValue({\r\n facet: {\r\n code: facet.code,\r\n visible: !facet.isPrivate,\r\n name: currentTranslation?.name ?? '',\r\n },\r\n });\r\n\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.detailForm.get(['facet', 'customFields']) as FormGroup;\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['facet', 'customFields']),\r\n facet,\r\n currentTranslation,\r\n );\r\n }\r\n\r\n const currentValuesFormArray = this.detailForm.get('values') as FormArray;\r\n this.values = [...facet.values];\r\n facet.values.forEach((value, i) => {\r\n const valueTranslation = findTranslation(value, languageCode);\r\n const group = {\r\n id: value.id,\r\n code: value.code,\r\n name: valueTranslation ? valueTranslation.name : '',\r\n };\r\n const valueControl = currentValuesFormArray.at(i);\r\n if (valueControl) {\r\n valueControl.get('id')?.setValue(group.id);\r\n valueControl.get('code')?.setValue(group.code);\r\n valueControl.get('name')?.setValue(group.name);\r\n } else {\r\n currentValuesFormArray.insert(i, this.formBuilder.group(group));\r\n }\r\n if (this.customValueFields.length) {\r\n let customValueFieldsGroup = this.detailForm.get(['values', i, 'customFields']) as FormGroup;\r\n if (!customValueFieldsGroup) {\r\n customValueFieldsGroup = new FormGroup({});\r\n (this.detailForm.get(['values', i]) as FormGroup).addControl(\r\n 'customFields',\r\n customValueFieldsGroup,\r\n );\r\n }\r\n\r\n if (customValueFieldsGroup) {\r\n for (const fieldDef of this.customValueFields) {\r\n const key = fieldDef.name;\r\n const fieldValue =\r\n fieldDef.type === 'localeString'\r\n ? (valueTranslation as any | undefined)?.customFields?.[key]\r\n : (value as any).customFields[key];\r\n const control = customValueFieldsGroup.get(key);\r\n if (control) {\r\n control.setValue(fieldValue);\r\n } else {\r\n customValueFieldsGroup.addControl(key, new FormControl(fieldValue));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Given a facet and the value of the detailForm, this method creates an updated copy of the facet which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedFacet(\r\n facet: FacetWithValues.Fragment,\r\n facetFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): CreateFacetInput | UpdateFacetInput {\r\n const input = createUpdatedTranslatable({\r\n translatable: facet,\r\n updatedFields: facetFormGroup.value,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: facet.name || '',\r\n },\r\n });\r\n input.isPrivate = !facetFormGroup.value.visible;\r\n return input;\r\n }\r\n\r\n /**\r\n * Given an array of facet values and the values from the detailForm, this method creates a new array\r\n * which can be persisted to the API via a createFacetValues mutation.\r\n */\r\n private getCreatedFacetValues(\r\n facet: FacetWithValues.Fragment,\r\n valuesFormArray: FormArray,\r\n languageCode: LanguageCode,\r\n ): CreateFacetValueInput[] {\r\n return valuesFormArray.controls\r\n .filter(c => !c.value.id)\r\n .map(c => c.value)\r\n .map(value =>\r\n createUpdatedTranslatable({\r\n translatable: { ...value, translations: [] as any },\r\n updatedFields: value,\r\n customFieldConfig: this.customValueFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: '',\r\n },\r\n }),\r\n )\r\n .map(input => ({\r\n facetId: facet.id,\r\n ...input,\r\n }));\r\n }\r\n\r\n /**\r\n * Given an array of facet values and the values from the detailForm, this method creates a new array\r\n * which can be persisted to the API via an updateFacetValues mutation.\r\n */\r\n private getUpdatedFacetValues(\r\n facet: FacetWithValues.Fragment,\r\n valuesFormArray: FormArray,\r\n languageCode: LanguageCode,\r\n ): UpdateFacetValueInput[] {\r\n const dirtyValues = facet.values.filter((v, i) => {\r\n const formRow = valuesFormArray.get(i.toString());\r\n return formRow && formRow.dirty && formRow.value.id;\r\n });\r\n const dirtyValueValues = valuesFormArray.controls\r\n .filter(c => c.dirty && c.value.id)\r\n .map(c => c.value);\r\n\r\n if (dirtyValues.length !== dirtyValueValues.length) {\r\n throw new Error(_(`error.facet-value-form-values-do-not-match`));\r\n }\r\n return dirtyValues\r\n .map((value, i) => {\r\n return createUpdatedTranslatable({\r\n translatable: value,\r\n updatedFields: dirtyValueValues[i],\r\n customFieldConfig: this.customValueFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: '',\r\n },\r\n });\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n DeletionResult,\r\n GetFacetList,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { SortOrder } from '@vendure/common/lib/generated-shop-types';\r\nimport { EMPTY, Observable } from 'rxjs';\r\nimport { debounceTime, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-facet-list',\r\n templateUrl: './facet-list.component.html',\r\n styleUrls: ['./facet-list.component.scss'],\r\n})\r\nexport class FacetListComponent\r\n extends BaseListComponent<GetFacetList.Query, GetFacetList.Items>\r\n implements OnInit\r\n{\r\n filterTermControl = new FormControl('');\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n contentLanguage$: Observable<LanguageCode>;\r\n readonly initialLimit = 3;\r\n displayLimit: { [id: string]: number } = {};\r\n constructor(\r\n private dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n private serverConfigService: ServerConfigService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n ) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.facet.getFacets(...args).refetchOnChannelChange(),\r\n data => data.facets,\r\n (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n name: {\r\n contains: this.filterTermControl.value,\r\n },\r\n },\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n },\r\n }),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();\r\n this.contentLanguage$ = this.dataService.client\r\n .uiState()\r\n .mapStream(({ uiState }) => uiState.contentLanguage)\r\n .pipe(tap(() => this.refresh()));\r\n this.filterTermControl.valueChanges\r\n .pipe(\r\n filter(value => 2 <= value.length || value.length === 0),\r\n debounceTime(250),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.refresh());\r\n }\r\n\r\n toggleDisplayLimit(facet: GetFacetList.Items) {\r\n if (this.displayLimit[facet.id] === facet.values.length) {\r\n this.displayLimit[facet.id] = this.initialLimit;\r\n } else {\r\n this.displayLimit[facet.id] = facet.values.length;\r\n }\r\n }\r\n\r\n deleteFacet(facetValueId: string) {\r\n this.showModalAndDelete(facetValueId)\r\n .pipe(\r\n switchMap(response => {\r\n if (response.result === DeletionResult.DELETED) {\r\n return [true];\r\n } else {\r\n return this.showModalAndDelete(facetValueId, response.message || '').pipe(\r\n map(r => r.result === DeletionResult.DELETED),\r\n );\r\n }\r\n }),\r\n // Refresh the cached facets to reflect the changes\r\n switchMap(() => this.dataService.facet.getAllFacets().single$),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'FacetValue',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'FacetValue',\r\n });\r\n },\r\n );\r\n }\r\n\r\n setLanguage(code: LanguageCode) {\r\n this.dataService.client.setContentLanguage(code).subscribe();\r\n }\r\n\r\n private showModalAndDelete(facetId: string, message?: string) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-facet'),\r\n body: message,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(res => (res ? this.dataService.facet.deleteFacet(facetId, !!message) : EMPTY)),\r\n map(res => res.deleteFacet),\r\n );\r\n }\r\n}\r\n","/**\r\n * @description\r\n * Like String.prototype.replace(), but replaces the last instance\r\n * rather than the first.\r\n */\r\nexport function replaceLast(target: string | undefined | null, search: string, replace: string): string {\r\n if (!target) {\r\n return '';\r\n }\r\n const lastIndex = target.lastIndexOf(search);\r\n if (lastIndex === -1) {\r\n return target;\r\n }\r\n const head = target.substr(0, lastIndex);\r\n const tail = target.substr(lastIndex).replace(search, replace);\r\n return head + tail;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n CreateProductInput,\r\n CreateProductVariantInput,\r\n DataService,\r\n DeletionResult,\r\n FacetWithValues,\r\n findTranslation,\r\n GetProductWithVariants,\r\n LanguageCode,\r\n UpdateProductInput,\r\n UpdateProductMutation,\r\n UpdateProductOptionInput,\r\n UpdateProductVariantInput,\r\n UpdateProductVariantsMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\r\nimport { map, mergeMap, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nimport { CreateProductVariantsConfig } from '../../components/generate-product-variants/generate-product-variants.component';\r\n\r\nimport { replaceLast } from './replace-last';\r\n\r\n/**\r\n * Handles the logic for making the API calls to perform CRUD operations on a Product and its related\r\n * entities. This logic was extracted out of the component because it became too large and hard to follow.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductDetailService {\r\n constructor(private dataService: DataService) {}\r\n\r\n getFacets(): Observable<FacetWithValues.Fragment[]> {\r\n return this.dataService.facet.getAllFacets().mapSingle(data => data.facets.items);\r\n }\r\n\r\n getTaxCategories() {\r\n return this.dataService.settings\r\n .getTaxCategories()\r\n .mapSingle(data => data.taxCategories)\r\n .pipe(shareReplay(1));\r\n }\r\n\r\n createProductWithVariants(\r\n input: CreateProductInput,\r\n createVariantsConfig: CreateProductVariantsConfig,\r\n languageCode: LanguageCode,\r\n ) {\r\n const createProduct$ = this.dataService.product.createProduct(input);\r\n const nonEmptyOptionGroups = createVariantsConfig.groups.filter(g => 0 < g.values.length);\r\n const createOptionGroups$ = this.createProductOptionGroups(nonEmptyOptionGroups, languageCode);\r\n\r\n return forkJoin(createProduct$, createOptionGroups$).pipe(\r\n mergeMap(([{ createProduct }, optionGroups]) => {\r\n const addOptionsToProduct$ = optionGroups.length\r\n ? forkJoin(\r\n optionGroups.map(optionGroup => {\r\n return this.dataService.product.addOptionGroupToProduct({\r\n productId: createProduct.id,\r\n optionGroupId: optionGroup.id,\r\n });\r\n }),\r\n )\r\n : of([]);\r\n return addOptionsToProduct$.pipe(\r\n map(() => {\r\n return { createProduct, optionGroups };\r\n }),\r\n );\r\n }),\r\n mergeMap(({ createProduct, optionGroups }) => {\r\n const variants = createVariantsConfig.variants.map(v => {\r\n const optionIds = optionGroups.length\r\n ? v.optionValues.map((optionName, index) => {\r\n const option = optionGroups[index].options.find(o => o.name === optionName);\r\n if (!option) {\r\n throw new Error(\r\n `Could not find a matching ProductOption \"${optionName}\" when creating variant`,\r\n );\r\n }\r\n return option.id;\r\n })\r\n : [];\r\n return {\r\n ...v,\r\n optionIds,\r\n };\r\n });\r\n const options = optionGroups.map(og => og.options).reduce((flat, o) => [...flat, ...o], []);\r\n return this.createProductVariants(createProduct, variants, options, languageCode);\r\n }),\r\n );\r\n }\r\n\r\n createProductOptionGroups(groups: Array<{ name: string; values: string[] }>, languageCode: LanguageCode) {\r\n return groups.length\r\n ? forkJoin(\r\n groups.map(c => {\r\n return this.dataService.product\r\n .createProductOptionGroups({\r\n code: normalizeString(c.name, '-'),\r\n translations: [{ languageCode, name: c.name }],\r\n options: c.values.map(v => ({\r\n code: normalizeString(v, '-'),\r\n translations: [{ languageCode, name: v }],\r\n })),\r\n })\r\n .pipe(map(data => data.createProductOptionGroup));\r\n }),\r\n )\r\n : of([]);\r\n }\r\n\r\n createProductVariants(\r\n product: { name: string; id: string },\r\n variantData: Array<{ price: number; sku: string; stock: number; optionIds: string[] }>,\r\n options: Array<{ id: string; name: string }>,\r\n languageCode: LanguageCode,\r\n ) {\r\n const variants: CreateProductVariantInput[] = variantData.map(v => {\r\n const name = options.length\r\n ? `${product.name} ${v.optionIds\r\n .map(id => options.find(o => o.id === id))\r\n .filter(notNullOrUndefined)\r\n .map(o => o.name)\r\n .join(' ')}`\r\n : product.name;\r\n return {\r\n productId: product.id,\r\n price: v.price,\r\n sku: v.sku,\r\n stockOnHand: v.stock,\r\n translations: [\r\n {\r\n languageCode,\r\n name,\r\n },\r\n ],\r\n optionIds: v.optionIds,\r\n };\r\n });\r\n return this.dataService.product.createProductVariants(variants).pipe(\r\n map(({ createProductVariants }) => ({\r\n createProductVariants,\r\n productId: product.id,\r\n })),\r\n );\r\n }\r\n\r\n updateProduct(updateOptions: {\r\n product: GetProductWithVariants.Product;\r\n languageCode: LanguageCode;\r\n autoUpdate: boolean;\r\n productInput?: UpdateProductInput;\r\n variantsInput?: UpdateProductVariantInput[];\r\n }) {\r\n const { product, languageCode, autoUpdate, productInput, variantsInput } = updateOptions;\r\n const updateOperations: Array<Observable<UpdateProductMutation | UpdateProductVariantsMutation>> = [];\r\n const updateVariantsInput = variantsInput || [];\r\n\r\n const variants$ = autoUpdate\r\n ? this.dataService.product\r\n .getProductVariants({}, product.id)\r\n .mapSingle(({ productVariants }) => productVariants.items)\r\n : of([]);\r\n\r\n return variants$.pipe(\r\n mergeMap(variants => {\r\n if (productInput) {\r\n updateOperations.push(this.dataService.product.updateProduct(productInput));\r\n const productOldName = findTranslation(product, languageCode)?.name ?? '';\r\n const productNewName = findTranslation(productInput, languageCode)?.name;\r\n if (productNewName && productOldName !== productNewName && autoUpdate) {\r\n for (const variant of variants) {\r\n const currentVariantName = findTranslation(variant, languageCode)?.name || '';\r\n let variantInput: UpdateProductVariantInput;\r\n const existingVariantInput = updateVariantsInput.find(i => i.id === variant.id);\r\n if (existingVariantInput) {\r\n variantInput = existingVariantInput;\r\n } else {\r\n variantInput = {\r\n id: variant.id,\r\n translations: [{ languageCode, name: currentVariantName }],\r\n };\r\n updateVariantsInput.push(variantInput);\r\n }\r\n const variantTranslation = findTranslation(variantInput, languageCode);\r\n if (variantTranslation) {\r\n if (variantTranslation.name) {\r\n variantTranslation.name = replaceLast(\r\n variantTranslation.name,\r\n productOldName,\r\n productNewName,\r\n );\r\n } else {\r\n // The variant translation was falsy, which occurs\r\n // when defining the product name for a new translation\r\n // language that had not yet been defined.\r\n variantTranslation.name = [\r\n productNewName,\r\n ...variant.options.map(o => o.name),\r\n ].join(' ');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (updateVariantsInput.length) {\r\n updateOperations.push(\r\n this.dataService.product.updateProductVariants(updateVariantsInput),\r\n );\r\n }\r\n return forkJoin(updateOperations);\r\n }),\r\n );\r\n }\r\n\r\n updateProductOption(\r\n input: UpdateProductOptionInput & { autoUpdate: boolean },\r\n product: GetProductWithVariants.Product,\r\n languageCode: LanguageCode,\r\n ) {\r\n const variants$ = input.autoUpdate\r\n ? this.dataService.product\r\n .getProductVariants({}, product.id)\r\n .mapSingle(({ productVariants }) => productVariants.items)\r\n : of([]);\r\n\r\n return variants$.pipe(\r\n mergeMap(variants => {\r\n let updateProductVariantNames$: Observable<any> = of([]);\r\n if (input.autoUpdate) {\r\n // Update any ProductVariants' names which include the option name\r\n let oldOptionName: string | undefined;\r\n const newOptionName = findTranslation(input, languageCode)?.name;\r\n if (!newOptionName) {\r\n updateProductVariantNames$ = of([]);\r\n }\r\n const variantsToUpdate: UpdateProductVariantInput[] = [];\r\n for (const variant of variants) {\r\n if (variant.options.map(o => o.id).includes(input.id)) {\r\n if (!oldOptionName) {\r\n oldOptionName = findTranslation(\r\n variant.options.find(o => o.id === input.id),\r\n languageCode,\r\n )?.name;\r\n }\r\n const variantName = findTranslation(variant, languageCode)?.name || '';\r\n if (oldOptionName && newOptionName && variantName.includes(oldOptionName)) {\r\n variantsToUpdate.push({\r\n id: variant.id,\r\n translations: [\r\n {\r\n languageCode,\r\n name: replaceLast(variantName, oldOptionName, newOptionName),\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n }\r\n if (variantsToUpdate.length) {\r\n updateProductVariantNames$ =\r\n this.dataService.product.updateProductVariants(variantsToUpdate);\r\n }\r\n }\r\n return this.dataService.product\r\n .updateProductOption(input)\r\n .pipe(mergeMap(() => updateProductVariantNames$));\r\n }),\r\n );\r\n }\r\n\r\n deleteProductVariant(id: string, productId: string) {\r\n return this.dataService.product.deleteProductVariant(id).pipe(\r\n switchMap(result => {\r\n if (result.deleteProductVariant.result === DeletionResult.DELETED) {\r\n return this.dataService.product.getProduct(productId).single$;\r\n } else {\r\n return throwError(result.deleteProductVariant.message);\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Dialog, FacetValue, FacetValueSelectorComponent, FacetWithValues } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-apply-facet-dialog',\r\n templateUrl: './apply-facet-dialog.component.html',\r\n styleUrls: ['./apply-facet-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ApplyFacetDialogComponent implements Dialog<FacetValue[]>, AfterViewInit {\r\n @ViewChild(FacetValueSelectorComponent) private selector: FacetValueSelectorComponent;\r\n resolveWith: (result?: FacetValue[]) => void;\r\n selectedValues: FacetValue[] = [];\r\n // Provided by caller\r\n facets: FacetWithValues.Fragment[];\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.selector.focus(), 0);\r\n }\r\n\r\n selectValues() {\r\n this.resolveWith(this.selectedValues);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { GetChannels, ProductVariantFragment } from '@vendure/admin-ui/core';\r\nimport { NotificationService } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\nimport { combineLatest, from, Observable } from 'rxjs';\r\nimport { map, startWith, switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-assign-products-to-channel-dialog',\r\n templateUrl: './assign-products-to-channel-dialog.component.html',\r\n styleUrls: ['./assign-products-to-channel-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssignProductsToChannelDialogComponent implements OnInit, Dialog<any> {\r\n selectedChannel: GetChannels.Channels | null | undefined;\r\n currentChannel: GetChannels.Channels;\r\n availableChannels: GetChannels.Channels[];\r\n resolveWith: (result?: any) => void;\r\n variantsPreview$: Observable<Array<{ id: string; name: string; price: number; pricePreview: number }>>;\r\n priceFactorControl = new FormControl(1);\r\n selectedChannelIdControl = new FormControl();\r\n\r\n // assigned by ModalService.fromComponent() call\r\n productIds: string[];\r\n productVariantIds: string[] | undefined;\r\n currentChannelIds: string[];\r\n\r\n get isProductVariantMode(): boolean {\r\n return this.productVariantIds != null;\r\n }\r\n\r\n constructor(private dataService: DataService, private notificationService: NotificationService) {}\r\n\r\n ngOnInit() {\r\n const activeChannelId$ = this.dataService.client\r\n .userStatus()\r\n .mapSingle(({ userStatus }) => userStatus.activeChannelId);\r\n const allChannels$ = this.dataService.settings.getChannels().mapSingle(data => data.channels);\r\n\r\n combineLatest(activeChannelId$, allChannels$).subscribe(([activeChannelId, channels]) => {\r\n // tslint:disable-next-line:no-non-null-assertion\r\n this.currentChannel = channels.find(c => c.id === activeChannelId)!;\r\n this.availableChannels = channels;\r\n });\r\n\r\n this.selectedChannelIdControl.valueChanges.subscribe(ids => {\r\n this.selectChannel(ids);\r\n });\r\n\r\n this.variantsPreview$ = combineLatest(\r\n from(this.getTopVariants(10)),\r\n this.priceFactorControl.valueChanges.pipe(startWith(1)),\r\n ).pipe(\r\n map(([variants, factor]) => {\r\n return variants.map(v => ({\r\n id: v.id,\r\n name: v.name,\r\n price: v.price,\r\n pricePreview: v.price * +factor,\r\n }));\r\n }),\r\n );\r\n }\r\n\r\n selectChannel(channelIds: string[]) {\r\n this.selectedChannel = this.availableChannels.find(c => c.id === channelIds[0]);\r\n }\r\n\r\n assign() {\r\n const selectedChannel = this.selectedChannel;\r\n if (selectedChannel) {\r\n if (!this.isProductVariantMode) {\r\n this.dataService.product\r\n .assignProductsToChannel({\r\n channelId: selectedChannel.id,\r\n productIds: this.productIds,\r\n priceFactor: +this.priceFactorControl.value,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('catalog.assign-product-to-channel-success'), {\r\n channel: selectedChannel.code,\r\n });\r\n this.resolveWith(true);\r\n });\r\n } else if (this.productVariantIds) {\r\n this.dataService.product\r\n .assignVariantsToChannel({\r\n channelId: selectedChannel.id,\r\n productVariantIds: this.productVariantIds,\r\n priceFactor: +this.priceFactorControl.value,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('catalog.assign-variant-to-channel-success'), {\r\n channel: selectedChannel.code,\r\n });\r\n this.resolveWith(true);\r\n });\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n private async getTopVariants(take: number): Promise<ProductVariantFragment[]> {\r\n const variants: ProductVariantFragment[] = [];\r\n\r\n for (let i = 0; i < this.productIds.length && variants.length < take; i++) {\r\n const productVariants = await this.dataService.product\r\n .getProduct(this.productIds[i], { take: this.isProductVariantMode ? undefined : take })\r\n .mapSingle(({ product }) => {\r\n const _variants = product ? product.variantList.items : [];\r\n return _variants.filter(v =>\r\n this.isProductVariantMode ? this.productVariantIds?.includes(v.id) : true,\r\n );\r\n })\r\n .toPromise();\r\n variants.push(...(productVariants || []));\r\n }\r\n return variants.slice(0, take);\r\n }\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseDetailComponent,\r\n CreateProductInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n FacetWithValues,\r\n findTranslation,\r\n flattenFacetValues,\r\n GetProductWithVariants,\r\n GlobalFlag,\r\n LanguageCode,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n ProductDetail,\r\n ProductVariant,\r\n ServerConfigService,\r\n TaxCategory,\r\n unicodePatternValidator,\r\n UpdateProductInput,\r\n UpdateProductMutation,\r\n UpdateProductOptionInput,\r\n UpdateProductVariantInput,\r\n UpdateProductVariantsMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { unique } from '@vendure/common/lib/unique';\r\nimport { BehaviorSubject, combineLatest, EMPTY, merge, Observable } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n map,\r\n mergeMap,\r\n shareReplay,\r\n skip,\r\n skipUntil,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n withLatestFrom,\r\n} from 'rxjs/operators';\r\n\r\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\r\nimport { ApplyFacetDialogComponent } from '../apply-facet-dialog/apply-facet-dialog.component';\r\nimport { AssignProductsToChannelDialogComponent } from '../assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\r\nimport { CreateProductVariantsConfig } from '../generate-product-variants/generate-product-variants.component';\r\nimport { VariantAssetChange } from '../product-variants-list/product-variants-list.component';\r\n\r\nexport type TabName = 'details' | 'variants';\r\n\r\nexport interface VariantFormValue {\r\n id: string;\r\n enabled: boolean;\r\n sku: string;\r\n name: string;\r\n price: number;\r\n priceWithTax: number;\r\n taxCategoryId: string;\r\n stockOnHand: number;\r\n useGlobalOutOfStockThreshold: boolean;\r\n outOfStockThreshold: number;\r\n trackInventory: GlobalFlag;\r\n facetValueIds: string[];\r\n customFields?: any;\r\n}\r\n\r\nexport interface SelectedAssets {\r\n assets?: Asset[];\r\n featuredAsset?: Asset;\r\n}\r\n\r\nexport interface PaginationConfig {\r\n totalItems: number;\r\n currentPage: number;\r\n itemsPerPage: number;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-product-detail',\r\n templateUrl: './product-detail.component.html',\r\n styleUrls: ['./product-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductDetailComponent\r\n extends BaseDetailComponent<GetProductWithVariants.Product>\r\n implements OnInit, OnDestroy\r\n{\r\n activeTab$: Observable<TabName>;\r\n product$: Observable<GetProductWithVariants.Product>;\r\n variants$: Observable<ProductVariant.Fragment[]>;\r\n taxCategories$: Observable<TaxCategory.Fragment[]>;\r\n customFields: CustomFieldConfig[];\r\n customVariantFields: CustomFieldConfig[];\r\n customOptionGroupFields: CustomFieldConfig[];\r\n customOptionFields: CustomFieldConfig[];\r\n detailForm: FormGroup;\r\n filterInput = new FormControl('');\r\n assetChanges: SelectedAssets = {};\r\n variantAssetChanges: { [variantId: string]: SelectedAssets } = {};\r\n variantFacetValueChanges: { [variantId: string]: string[] } = {};\r\n productChannels$: Observable<ProductDetail.Channels[]>;\r\n facetValues$: Observable<ProductDetail.FacetValues[]>;\r\n facets$: Observable<FacetWithValues.Fragment[]>;\r\n totalItems$: Observable<number>;\r\n currentPage$ = new BehaviorSubject(1);\r\n itemsPerPage$ = new BehaviorSubject(10);\r\n paginationConfig$: Observable<PaginationConfig>;\r\n selectedVariantIds: string[] = [];\r\n variantDisplayMode: 'card' | 'table' = 'card';\r\n createVariantsConfig: CreateProductVariantsConfig = { groups: [], variants: [] };\r\n channelPriceIncludesTax$: Observable<boolean>;\r\n // Used to store all ProductVariants which have been loaded.\r\n // It is needed when saving changes to variants.\r\n private productVariantMap = new Map<string, ProductVariant.Fragment>();\r\n public readonly updatePermissions = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n\r\n constructor(\r\n route: ActivatedRoute,\r\n router: Router,\r\n serverConfigService: ServerConfigService,\r\n private productDetailService: ProductDetailService,\r\n private formBuilder: FormBuilder,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n protected dataService: DataService,\r\n private location: Location,\r\n private changeDetector: ChangeDetectorRef,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Product');\r\n this.customVariantFields = this.getCustomFieldConfig('ProductVariant');\r\n this.customOptionGroupFields = this.getCustomFieldConfig('ProductOptionGroup');\r\n this.customOptionFields = this.getCustomFieldConfig('ProductOption');\r\n this.detailForm = this.formBuilder.group({\r\n product: this.formBuilder.group({\r\n enabled: true,\r\n name: ['', Validators.required],\r\n autoUpdateVariantNames: true,\r\n slug: ['', unicodePatternValidator(/^[\\p{Letter}0-9_-]+$/)],\r\n description: '',\r\n facetValueIds: [[]],\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n }),\r\n variants: this.formBuilder.array([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.product$ = this.entity$;\r\n this.totalItems$ = this.product$.pipe(map(product => product.variantList.totalItems));\r\n this.paginationConfig$ = combineLatest(this.totalItems$, this.itemsPerPage$, this.currentPage$).pipe(\r\n map(([totalItems, itemsPerPage, currentPage]) => ({\r\n totalItems,\r\n itemsPerPage,\r\n currentPage,\r\n })),\r\n );\r\n const variants$ = this.product$.pipe(map(product => product.variantList.items));\r\n const filterTerm$ = this.filterInput.valueChanges.pipe(\r\n startWith(''),\r\n debounceTime(200),\r\n shareReplay(),\r\n );\r\n const initialVariants$ = this.product$.pipe(map(p => p.variantList.items));\r\n const updatedVariants$ = combineLatest(filterTerm$, this.currentPage$, this.itemsPerPage$).pipe(\r\n skipUntil(initialVariants$),\r\n skip(1),\r\n switchMap(([term, currentPage, itemsPerPage]) => {\r\n return this.dataService.product\r\n .getProductVariants(\r\n {\r\n skip: (currentPage - 1) * itemsPerPage,\r\n take: itemsPerPage,\r\n ...(term\r\n ? { filter: { name: { contains: term }, sku: { contains: term } } }\r\n : {}),\r\n filterOperator: LogicalOperator.OR,\r\n },\r\n this.id,\r\n )\r\n .mapStream(({ productVariants }) => productVariants.items);\r\n }),\r\n shareReplay({ bufferSize: 1, refCount: true }),\r\n );\r\n this.variants$ = merge(initialVariants$, updatedVariants$).pipe(\r\n tap(variants => {\r\n for (const variant of variants) {\r\n this.productVariantMap.set(variant.id, variant);\r\n }\r\n }),\r\n );\r\n this.taxCategories$ = this.productDetailService.getTaxCategories().pipe(takeUntil(this.destroy$));\r\n this.activeTab$ = this.route.paramMap.pipe(map(qpm => qpm.get('tab') as any));\r\n\r\n combineLatest(updatedVariants$, this.languageCode$)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(([variants, languageCode]) => {\r\n this.buildVariantFormArray(variants, languageCode);\r\n });\r\n\r\n // FacetValues are provided initially by the nested array of the\r\n // Product entity, but once a fetch to get all Facets is made (as when\r\n // opening the FacetValue selector modal), then these additional values\r\n // are concatenated onto the initial array.\r\n this.facets$ = this.productDetailService.getFacets();\r\n const productFacetValues$ = this.product$.pipe(map(product => product.facetValues));\r\n const allFacetValues$ = this.facets$.pipe(map(flattenFacetValues));\r\n const productGroup = this.getProductFormGroup();\r\n\r\n const formFacetValueIdChanges$ = productGroup.valueChanges.pipe(\r\n map(val => val.facetValueIds as string[]),\r\n distinctUntilChanged(),\r\n );\r\n const formChangeFacetValues$ = combineLatest(\r\n formFacetValueIdChanges$,\r\n productFacetValues$,\r\n allFacetValues$,\r\n ).pipe(\r\n map(([ids, productFacetValues, allFacetValues]) => {\r\n const combined = [...productFacetValues, ...allFacetValues];\r\n return ids.map(id => combined.find(fv => fv.id === id)).filter(notNullOrUndefined);\r\n }),\r\n );\r\n\r\n this.facetValues$ = merge(productFacetValues$, formChangeFacetValues$);\r\n this.productChannels$ = this.product$.pipe(map(p => p.channels));\r\n this.channelPriceIncludesTax$ = this.dataService.settings\r\n .getActiveChannel('cache-first')\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.pricesIncludeTax)\r\n .pipe(shareReplay(1));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n navigateToTab(tabName: TabName) {\r\n this.location.replaceState(\r\n this.router\r\n .createUrlTree(['./', { ...this.route.snapshot.params, tab: tabName }], {\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n })\r\n .toString(),\r\n );\r\n }\r\n\r\n isDefaultChannel(channelCode: string): boolean {\r\n return channelCode === DEFAULT_CHANNEL_CODE;\r\n }\r\n\r\n setPage(page: number) {\r\n this.currentPage$.next(page);\r\n }\r\n\r\n setItemsPerPage(value: string) {\r\n this.itemsPerPage$.next(+value);\r\n this.currentPage$.next(1);\r\n }\r\n\r\n assignToChannel() {\r\n this.productChannels$\r\n .pipe(\r\n take(1),\r\n switchMap(channels => {\r\n return this.modalService.fromComponent(AssignProductsToChannelDialogComponent, {\r\n size: 'lg',\r\n locals: {\r\n productIds: [this.id],\r\n currentChannelIds: channels.map(c => c.id),\r\n },\r\n });\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n removeFromChannel(channelId: string) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.remove-product-from-channel'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('catalog.remove-from-channel'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.product.removeProductsFromChannel({\r\n channelId,\r\n productIds: [this.id],\r\n })\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('catalog.notify-remove-product-from-channel-success'));\r\n },\r\n err => {\r\n this.notificationService.error(_('catalog.notify-remove-product-from-channel-error'));\r\n },\r\n );\r\n }\r\n\r\n assignVariantToChannel(variant: ProductVariant.Fragment) {\r\n return this.modalService\r\n .fromComponent(AssignProductsToChannelDialogComponent, {\r\n size: 'lg',\r\n locals: {\r\n productIds: [this.id],\r\n productVariantIds: [variant.id],\r\n currentChannelIds: variant.channels.map(c => c.id),\r\n },\r\n })\r\n .subscribe();\r\n }\r\n\r\n removeVariantFromChannel({\r\n channelId,\r\n variant,\r\n }: {\r\n channelId: string;\r\n variant: ProductVariant.Fragment;\r\n }) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.remove-product-variant-from-channel'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('catalog.remove-from-channel'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.product.removeVariantsFromChannel({\r\n channelId,\r\n productVariantIds: [variant.id],\r\n })\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('catalog.notify-remove-variant-from-channel-success'));\r\n },\r\n err => {\r\n this.notificationService.error(_('catalog.notify-remove-variant-from-channel-error'));\r\n },\r\n );\r\n }\r\n\r\n assetsChanged(): boolean {\r\n return !!Object.values(this.assetChanges).length;\r\n }\r\n\r\n variantAssetsChanged(): boolean {\r\n return !!Object.keys(this.variantAssetChanges).length;\r\n }\r\n\r\n variantAssetChange(event: VariantAssetChange) {\r\n this.variantAssetChanges[event.variantId] = event;\r\n }\r\n\r\n /**\r\n * If creating a new product, automatically generate the slug based on the product name.\r\n */\r\n updateSlug(nameValue: string) {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(take(1))\r\n .subscribe(([entity, languageCode]) => {\r\n const slugControl = this.detailForm.get(['product', 'slug']);\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n const currentSlugIsEmpty = !currentTranslation || !currentTranslation.slug;\r\n if (slugControl && slugControl.pristine && currentSlugIsEmpty) {\r\n slugControl.setValue(normalizeString(`${nameValue}`, '-'));\r\n }\r\n });\r\n }\r\n\r\n selectProductFacetValue() {\r\n this.displayFacetValueModal().subscribe(facetValueIds => {\r\n if (facetValueIds) {\r\n const productGroup = this.getProductFormGroup();\r\n const currentFacetValueIds = productGroup.value.facetValueIds;\r\n productGroup.patchValue({\r\n facetValueIds: unique([...currentFacetValueIds, ...facetValueIds]),\r\n });\r\n productGroup.markAsDirty();\r\n }\r\n });\r\n }\r\n\r\n updateProductOption(input: UpdateProductOptionInput & { autoUpdate: boolean }) {\r\n combineLatest(this.product$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([product, languageCode]) =>\r\n this.productDetailService.updateProductOption(input, product, languageCode),\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'ProductOption',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'ProductOption',\r\n });\r\n },\r\n );\r\n }\r\n\r\n removeProductFacetValue(facetValueId: string) {\r\n const productGroup = this.getProductFormGroup();\r\n const currentFacetValueIds = productGroup.value.facetValueIds;\r\n productGroup.patchValue({\r\n facetValueIds: currentFacetValueIds.filter(id => id !== facetValueId),\r\n });\r\n productGroup.markAsDirty();\r\n }\r\n\r\n /**\r\n * Opens a dialog to select FacetValues to apply to the select ProductVariants.\r\n */\r\n selectVariantFacetValue(selectedVariantIds: string[]) {\r\n this.displayFacetValueModal()\r\n .pipe(withLatestFrom(this.variants$))\r\n .subscribe(([facetValueIds, variants]) => {\r\n if (facetValueIds) {\r\n for (const variantId of selectedVariantIds) {\r\n const index = variants.findIndex(v => v.id === variantId);\r\n const variant = variants[index];\r\n const existingFacetValueIds = variant ? variant.facetValues.map(fv => fv.id) : [];\r\n const variantFormGroup = (this.detailForm.get('variants') as FormArray).controls.find(\r\n c => c.value.id === variantId,\r\n );\r\n if (variantFormGroup) {\r\n const uniqueFacetValueIds = unique([...existingFacetValueIds, ...facetValueIds]);\r\n variantFormGroup.patchValue({\r\n facetValueIds: uniqueFacetValueIds,\r\n });\r\n variantFormGroup.markAsDirty();\r\n this.variantFacetValueChanges[variantId] = uniqueFacetValueIds;\r\n }\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n variantsToCreateAreValid(): boolean {\r\n return (\r\n 0 < this.createVariantsConfig.variants.length &&\r\n this.createVariantsConfig.variants.every(v => {\r\n return v.sku !== '';\r\n })\r\n );\r\n }\r\n\r\n private displayFacetValueModal(): Observable<string[] | undefined> {\r\n return this.productDetailService.getFacets().pipe(\r\n mergeMap(facets =>\r\n this.modalService.fromComponent(ApplyFacetDialogComponent, {\r\n size: 'md',\r\n closable: true,\r\n locals: { facets },\r\n }),\r\n ),\r\n map(facetValues => facetValues && facetValues.map(v => v.id)),\r\n );\r\n }\r\n\r\n create() {\r\n const productGroup = this.getProductFormGroup();\r\n if (!productGroup.dirty) {\r\n return;\r\n }\r\n combineLatest(this.product$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([product, languageCode]) => {\r\n const newProduct = this.getUpdatedProduct(\r\n product,\r\n productGroup as FormGroup,\r\n languageCode,\r\n ) as CreateProductInput;\r\n return this.productDetailService.createProductWithVariants(\r\n newProduct,\r\n this.createVariantsConfig,\r\n languageCode,\r\n );\r\n }),\r\n )\r\n .subscribe(\r\n ({ createProductVariants, productId }) => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Product',\r\n });\r\n this.assetChanges = {};\r\n this.variantAssetChanges = {};\r\n this.detailForm.markAsPristine();\r\n this.router.navigate(['../', productId], { relativeTo: this.route });\r\n },\r\n err => {\r\n // tslint:disable-next-line:no-console\r\n console.error(err);\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Product',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n combineLatest(this.product$, this.languageCode$, this.channelPriceIncludesTax$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([product, languageCode, priceIncludesTax]) => {\r\n const productGroup = this.getProductFormGroup();\r\n let productInput: UpdateProductInput | undefined;\r\n let variantsInput: UpdateProductVariantInput[] | undefined;\r\n\r\n if (productGroup.dirty || this.assetsChanged()) {\r\n productInput = this.getUpdatedProduct(\r\n product,\r\n productGroup as FormGroup,\r\n languageCode,\r\n ) as UpdateProductInput;\r\n }\r\n const variantsArray = this.detailForm.get('variants');\r\n if ((variantsArray && variantsArray.dirty) || this.variantAssetsChanged()) {\r\n variantsInput = this.getUpdatedProductVariants(\r\n product,\r\n variantsArray as FormArray,\r\n languageCode,\r\n priceIncludesTax,\r\n );\r\n }\r\n\r\n return this.productDetailService.updateProduct({\r\n product,\r\n languageCode,\r\n autoUpdate:\r\n this.detailForm.get(['product', 'autoUpdateVariantNames'])?.value ?? false,\r\n productInput,\r\n variantsInput,\r\n });\r\n }),\r\n )\r\n .subscribe(\r\n result => {\r\n this.updateSlugAfterSave(result);\r\n this.detailForm.markAsPristine();\r\n this.assetChanges = {};\r\n this.variantAssetChanges = {};\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Product',\r\n });\r\n this.changeDetector.markForCheck();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Product',\r\n });\r\n },\r\n );\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return super.canDeactivate() && !this.assetChanges.assets && !this.assetChanges.featuredAsset;\r\n }\r\n\r\n /**\r\n * Sets the values of the form on changes to the product or current language.\r\n */\r\n protected setFormValues(product: GetProductWithVariants.Product, languageCode: LanguageCode) {\r\n const currentTranslation = findTranslation(product, languageCode);\r\n this.detailForm.patchValue({\r\n product: {\r\n enabled: product.enabled,\r\n name: currentTranslation ? currentTranslation.name : '',\r\n slug: currentTranslation ? currentTranslation.slug : '',\r\n description: currentTranslation ? currentTranslation.description : '',\r\n facetValueIds: product.facetValues.map(fv => fv.id),\r\n },\r\n });\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['product', 'customFields']),\r\n product,\r\n currentTranslation,\r\n );\r\n }\r\n this.buildVariantFormArray(product.variantList.items, languageCode);\r\n }\r\n\r\n private buildVariantFormArray(variants: ProductVariant.Fragment[], languageCode: LanguageCode) {\r\n const variantsFormArray = this.detailForm.get('variants') as FormArray;\r\n variants.forEach((variant, i) => {\r\n const variantTranslation = findTranslation(variant, languageCode);\r\n const pendingFacetValueChanges = this.variantFacetValueChanges[variant.id];\r\n const facetValueIds = pendingFacetValueChanges\r\n ? pendingFacetValueChanges\r\n : variant.facetValues.map(fv => fv.id);\r\n const group: VariantFormValue = {\r\n id: variant.id,\r\n enabled: variant.enabled,\r\n sku: variant.sku,\r\n name: variantTranslation ? variantTranslation.name : '',\r\n price: variant.price,\r\n priceWithTax: variant.priceWithTax,\r\n taxCategoryId: variant.taxCategory.id,\r\n stockOnHand: variant.stockOnHand,\r\n useGlobalOutOfStockThreshold: variant.useGlobalOutOfStockThreshold,\r\n outOfStockThreshold: variant.outOfStockThreshold,\r\n trackInventory: variant.trackInventory,\r\n facetValueIds,\r\n };\r\n\r\n let variantFormGroup = variantsFormArray.controls.find(c => c.value.id === variant.id) as\r\n | FormGroup\r\n | undefined;\r\n if (variantFormGroup) {\r\n if (variantFormGroup.pristine) {\r\n variantFormGroup.patchValue(group);\r\n }\r\n } else {\r\n variantFormGroup = this.formBuilder.group({\r\n ...group,\r\n facetValueIds: this.formBuilder.control(facetValueIds),\r\n });\r\n variantsFormArray.insert(i, variantFormGroup);\r\n }\r\n if (this.customVariantFields.length) {\r\n let customFieldsGroup = variantFormGroup.get(['customFields']) as FormGroup | undefined;\r\n\r\n if (!customFieldsGroup) {\r\n customFieldsGroup = this.formBuilder.group(\r\n this.customVariantFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n );\r\n variantFormGroup.addControl('customFields', customFieldsGroup);\r\n }\r\n this.setCustomFieldFormValues(\r\n this.customVariantFields,\r\n customFieldsGroup,\r\n variant,\r\n variantTranslation,\r\n );\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Given a product and the value of the detailForm, this method creates an updated copy of the product which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedProduct(\r\n product: GetProductWithVariants.Product,\r\n productFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdateProductInput | CreateProductInput {\r\n const updatedProduct = createUpdatedTranslatable({\r\n translatable: product,\r\n updatedFields: productFormGroup.value,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: product.name || '',\r\n slug: product.slug || '',\r\n description: product.description || '',\r\n },\r\n });\r\n return {\r\n ...updatedProduct,\r\n assetIds: this.assetChanges.assets?.map(a => a.id),\r\n featuredAssetId: this.assetChanges.featuredAsset?.id,\r\n facetValueIds: productFormGroup.value.facetValueIds,\r\n } as UpdateProductInput | CreateProductInput;\r\n }\r\n\r\n /**\r\n * Given an array of product variants and the values from the detailForm, this method creates an new array\r\n * which can be persisted to the API.\r\n */\r\n private getUpdatedProductVariants(\r\n product: GetProductWithVariants.Product,\r\n variantsFormArray: FormArray,\r\n languageCode: LanguageCode,\r\n priceIncludesTax: boolean,\r\n ): UpdateProductVariantInput[] {\r\n const dirtyFormControls = variantsFormArray.controls.filter(c => c.dirty);\r\n const dirtyVariants = dirtyFormControls\r\n .map(c => this.productVariantMap.get(c.value.id))\r\n .filter(notNullOrUndefined);\r\n const dirtyVariantValues = dirtyFormControls.map(c => c.value);\r\n\r\n if (dirtyVariants.length !== dirtyVariantValues.length) {\r\n throw new Error(_(`error.product-variant-form-values-do-not-match`));\r\n }\r\n return dirtyVariants\r\n .map((variant, i) => {\r\n const formValue: VariantFormValue = dirtyVariantValues.find(value => value.id === variant.id);\r\n const result: UpdateProductVariantInput = createUpdatedTranslatable({\r\n translatable: variant,\r\n updatedFields: formValue,\r\n customFieldConfig: this.customVariantFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: '',\r\n },\r\n });\r\n result.taxCategoryId = formValue.taxCategoryId;\r\n result.facetValueIds = formValue.facetValueIds;\r\n result.price = priceIncludesTax ? formValue.priceWithTax : formValue.price;\r\n const assetChanges = this.variantAssetChanges[variant.id];\r\n if (assetChanges) {\r\n result.featuredAssetId = assetChanges.featuredAsset?.id;\r\n result.assetIds = assetChanges.assets?.map(a => a.id);\r\n }\r\n return result;\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n private getProductFormGroup(): FormGroup {\r\n return this.detailForm.get('product') as FormGroup;\r\n }\r\n\r\n /**\r\n * The server may alter the slug value in order to normalize and ensure uniqueness upon saving.\r\n */\r\n private updateSlugAfterSave(results: Array<UpdateProductMutation | UpdateProductVariantsMutation>) {\r\n const firstResult = results[0];\r\n const slugControl = this.detailForm.get(['product', 'slug']);\r\n\r\n function isUpdateMutation(input: any): input is UpdateProductMutation {\r\n return input.hasOwnProperty('updateProduct');\r\n }\r\n\r\n if (slugControl && isUpdateMutation(firstResult)) {\r\n slugControl.setValue(firstResult.updateProduct.slug, { emitEvent: false });\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n JobQueueService,\r\n JobState,\r\n LanguageCode,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n ProductSearchInputComponent,\r\n SearchInput,\r\n SearchProducts,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { EMPTY, Observable, of } from 'rxjs';\r\nimport {\r\n delay,\r\n distinctUntilChanged,\r\n map,\r\n shareReplay,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n withLatestFrom,\r\n} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-products-list',\r\n templateUrl: './product-list.component.html',\r\n styleUrls: ['./product-list.component.scss'],\r\n})\r\nexport class ProductListComponent\r\n extends BaseListComponent<SearchProducts.Query, SearchProducts.Items, SearchProducts.Variables>\r\n implements OnInit, AfterViewInit\r\n{\r\n searchTerm = '';\r\n facetValueIds: string[] = [];\r\n groupByProduct = true;\r\n selectedFacetValueIds$: Observable<string[]>;\r\n facetValues$: Observable<SearchProducts.FacetValues[]>;\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n contentLanguage$: Observable<LanguageCode>;\r\n pendingSearchIndexUpdates = 0;\r\n\r\n @ViewChild('productSearchInputComponent', { static: true })\r\n private productSearchInput: ProductSearchInputComponent;\r\n constructor(\r\n private dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n private jobQueueService: JobQueueService,\r\n private serverConfigService: ServerConfigService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n ) {\r\n super(router, route);\r\n this.route.queryParamMap\r\n .pipe(\r\n map(qpm => qpm.get('q')),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(term => {\r\n this.searchTerm = term || '';\r\n if (this.productSearchInput) {\r\n this.productSearchInput.setSearchTerm(term);\r\n }\r\n });\r\n this.selectedFacetValueIds$ = this.route.queryParamMap.pipe(map(qpm => qpm.getAll('fvids')));\r\n\r\n this.selectedFacetValueIds$.pipe(takeUntil(this.destroy$)).subscribe(ids => {\r\n this.facetValueIds = ids;\r\n if (this.productSearchInput) {\r\n this.productSearchInput.setFacetValues(ids);\r\n }\r\n });\r\n super.setQueryFn(\r\n (...args: any[]) =>\r\n this.dataService.product.searchProducts(this.searchTerm, ...args).refetchOnChannelChange(),\r\n data => data.search,\r\n // tslint:disable-next-line:no-shadowed-variable\r\n (skip, take) => ({\r\n input: {\r\n skip,\r\n take,\r\n term: this.searchTerm,\r\n facetValueIds: this.facetValueIds,\r\n facetValueOperator: LogicalOperator.AND,\r\n groupByProduct: this.groupByProduct,\r\n } as SearchInput,\r\n }),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.facetValues$ = this.result$.pipe(map(data => data.search.facetValues));\r\n\r\n this.facetValues$\r\n .pipe(take(1), delay(100), withLatestFrom(this.selectedFacetValueIds$))\r\n .subscribe(([__, ids]) => {\r\n this.productSearchInput.setFacetValues(ids);\r\n });\r\n this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();\r\n this.contentLanguage$ = this.dataService.client\r\n .uiState()\r\n .mapStream(({ uiState }) => uiState.contentLanguage)\r\n .pipe(tap(() => this.refresh()));\r\n\r\n this.dataService.product\r\n .getPendingSearchIndexUpdates()\r\n .mapSingle(({ pendingSearchIndexUpdates }) => pendingSearchIndexUpdates)\r\n .subscribe(value => (this.pendingSearchIndexUpdates = value));\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.productSearchInput && this.searchTerm) {\r\n setTimeout(() => this.productSearchInput.setSearchTerm(this.searchTerm));\r\n }\r\n }\r\n\r\n setSearchTerm(term: string) {\r\n this.searchTerm = term;\r\n this.setQueryParam({ q: term || null, page: 1 });\r\n this.refresh();\r\n }\r\n\r\n setFacetValueIds(ids: string[]) {\r\n this.facetValueIds = ids;\r\n this.setQueryParam({ fvids: ids, page: 1 });\r\n this.refresh();\r\n }\r\n\r\n rebuildSearchIndex() {\r\n this.dataService.product.reindex().subscribe(({ reindex }) => {\r\n this.notificationService.info(_('catalog.reindexing'));\r\n this.jobQueueService.addJob(reindex.id, job => {\r\n if (job.state === JobState.COMPLETED) {\r\n const time = new Intl.NumberFormat().format(job.duration || 0);\r\n this.notificationService.success(_('catalog.reindex-successful'), {\r\n count: job.result.indexedItemCount,\r\n time,\r\n });\r\n this.refresh();\r\n } else {\r\n this.notificationService.error(_('catalog.reindex-error'));\r\n }\r\n });\r\n });\r\n }\r\n\r\n runPendingSearchIndexUpdates() {\r\n this.dataService.product.runPendingSearchIndexUpdates().subscribe(value => {\r\n this.notificationService.info(_('catalog.running-search-index-updates'), {\r\n count: this.pendingSearchIndexUpdates,\r\n });\r\n this.pendingSearchIndexUpdates = 0;\r\n });\r\n }\r\n\r\n deleteProduct(productId: string) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response => (response ? this.dataService.product.deleteProduct(productId) : EMPTY)),\r\n // Short delay to allow the product to be removed from the search index before\r\n // refreshing.\r\n delay(500),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Product',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Product',\r\n });\r\n },\r\n );\r\n }\r\n\r\n setLanguage(code: LanguageCode) {\r\n this.dataService.client.setContentLanguage(code).subscribe();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CreateFacetInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n FacetWithValues,\r\n findTranslation,\r\n GetProductVariantOptions,\r\n LanguageCode,\r\n NotificationService,\r\n Permission,\r\n ProductOption,\r\n ProductOptionGroup,\r\n ServerConfigService,\r\n UpdateFacetInput,\r\n UpdateProductOptionGroupInput,\r\n UpdateProductOptionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { combineLatest, forkJoin, Observable } from 'rxjs';\r\nimport { map, mergeMap, take } from 'rxjs/operators';\r\n\r\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\r\n\r\n@Component({\r\n selector: 'vdr-product-options-editor',\r\n templateUrl: './product-options-editor.component.html',\r\n styleUrls: ['./product-options-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductOptionsEditorComponent\r\n extends BaseDetailComponent<GetProductVariantOptions.Product>\r\n implements OnInit\r\n{\r\n detailForm: FormGroup;\r\n optionGroups$: Observable<GetProductVariantOptions.OptionGroups[]>;\r\n languageCode$: Observable<LanguageCode>;\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n optionGroupCustomFields: CustomFieldConfig[];\r\n optionCustomFields: CustomFieldConfig[];\r\n autoUpdateVariantNames = true;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected serverConfigService: ServerConfigService,\r\n protected dataService: DataService,\r\n private productDetailService: ProductDetailService,\r\n private formBuilder: FormBuilder,\r\n private changeDetector: ChangeDetectorRef,\r\n private notificationService: NotificationService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.optionGroupCustomFields = this.getCustomFieldConfig('ProductOptionGroup');\r\n this.optionCustomFields = this.getCustomFieldConfig('ProductOption');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.optionGroups$ = this.route.snapshot.data.entity.pipe(\r\n map((product: GetProductVariantOptions.Product) => product.optionGroups),\r\n );\r\n this.detailForm = new FormGroup({\r\n optionGroups: new FormArray([]),\r\n });\r\n super.init();\r\n }\r\n\r\n getOptionGroups(): FormGroup[] {\r\n const optionGroups = this.detailForm.get('optionGroups');\r\n return (optionGroups as FormArray).controls as FormGroup[];\r\n }\r\n\r\n getOptions(optionGroup: FormGroup): FormGroup[] {\r\n const options = optionGroup.get('options');\r\n return (options as FormArray).controls as FormGroup[];\r\n }\r\n\r\n save() {\r\n if (this.detailForm.invalid || this.detailForm.pristine) {\r\n return;\r\n }\r\n // tslint:disable-next-line:no-non-null-assertion\r\n const $product = this.dataService.product.getProduct(this.id).mapSingle(data => data.product!);\r\n combineLatest(this.entity$, this.languageCode$, $product)\r\n .pipe(\r\n take(1),\r\n mergeMap(([{ optionGroups }, languageCode, product]) => {\r\n const updateOperations: Array<Observable<any>> = [];\r\n for (const optionGroupForm of this.getOptionGroups()) {\r\n if (optionGroupForm.get('name')?.dirty || optionGroupForm.get('code')?.dirty) {\r\n const optionGroupEntity = optionGroups.find(\r\n og => og.id === optionGroupForm.value.id,\r\n );\r\n if (optionGroupEntity) {\r\n const input = this.getUpdatedOptionGroup(\r\n optionGroupEntity,\r\n optionGroupForm,\r\n languageCode,\r\n );\r\n updateOperations.push(\r\n this.dataService.product.updateProductOptionGroup(input),\r\n );\r\n }\r\n }\r\n\r\n for (const optionForm of this.getOptions(optionGroupForm)) {\r\n if (optionForm.get('name')?.dirty || optionForm.get('code')?.dirty) {\r\n const optionGroup = optionGroups\r\n .find(og => og.id === optionGroupForm.value.id)\r\n ?.options.find(o => o.id === optionForm.value.id);\r\n if (optionGroup) {\r\n const input = this.getUpdatedOption(\r\n optionGroup,\r\n optionForm,\r\n languageCode,\r\n );\r\n updateOperations.push(\r\n this.productDetailService.updateProductOption(\r\n { ...input, autoUpdate: this.autoUpdateVariantNames },\r\n product,\r\n languageCode,\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n return forkJoin(updateOperations);\r\n }),\r\n )\r\n .subscribe(\r\n () => {\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'ProductOptionGroup',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'ProductOptionGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n private getUpdatedOptionGroup(\r\n optionGroup: ProductOptionGroup.Fragment,\r\n optionGroupFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdateProductOptionGroupInput {\r\n const input = createUpdatedTranslatable({\r\n translatable: optionGroup,\r\n updatedFields: optionGroupFormGroup.value,\r\n customFieldConfig: this.optionGroupCustomFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: optionGroup.name || '',\r\n },\r\n });\r\n return input;\r\n }\r\n\r\n private getUpdatedOption(\r\n option: ProductOption.Fragment,\r\n optionFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdateProductOptionInput {\r\n const input = createUpdatedTranslatable({\r\n translatable: option,\r\n updatedFields: optionFormGroup.value,\r\n customFieldConfig: this.optionGroupCustomFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: option.name || '',\r\n },\r\n });\r\n return input;\r\n }\r\n\r\n protected setFormValues(entity: GetProductVariantOptions.Product, languageCode: LanguageCode): void {\r\n const groupsFormArray = new FormArray([]);\r\n for (const optionGroup of entity.optionGroups) {\r\n const groupTranslation = findTranslation(optionGroup, languageCode);\r\n const group = {\r\n id: optionGroup.id,\r\n createdAt: optionGroup.createdAt,\r\n updatedAt: optionGroup.updatedAt,\r\n code: optionGroup.code,\r\n name: groupTranslation ? groupTranslation.name : '',\r\n };\r\n const optionsFormArray = new FormArray([]);\r\n\r\n for (const option of optionGroup.options) {\r\n const optionTranslation = findTranslation(option, languageCode);\r\n const optionControl = this.formBuilder.group({\r\n id: option.id,\r\n createdAt: option.createdAt,\r\n updatedAt: option.updatedAt,\r\n code: option.code,\r\n name: optionTranslation ? optionTranslation.name : '',\r\n });\r\n optionsFormArray.push(optionControl);\r\n }\r\n\r\n const groupControl = this.formBuilder.group(group);\r\n groupControl.addControl('options', optionsFormArray);\r\n groupsFormArray.push(groupControl);\r\n }\r\n this.detailForm.setControl('optionGroups', groupsFormArray);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { Dialog, GetProductVariantOptions } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-confirm-variant-deletion-dialog',\r\n templateUrl: './confirm-variant-deletion-dialog.component.html',\r\n styleUrls: ['./confirm-variant-deletion-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ConfirmVariantDeletionDialogComponent implements Dialog<boolean> {\r\n resolveWith: (result?: boolean) => void;\r\n variants: GetProductVariantOptions.Variants[] = [];\r\n\r\n confirm() {\r\n this.resolveWith(true);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CreateProductOptionGroup,\r\n CreateProductOptionInput,\r\n CurrencyCode,\r\n DataService,\r\n DeactivateAware,\r\n DeletionResult,\r\n getDefaultUiLanguage,\r\n GetProductVariantOptions,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n ProductOptionGroupWithOptionsFragment,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { pick } from '@vendure/common/lib/pick';\r\nimport { generateAllCombinations, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { unique } from '@vendure/common/lib/unique';\r\nimport { EMPTY, forkJoin, Observable, of } from 'rxjs';\r\nimport { defaultIfEmpty, filter, map, mergeMap, switchMap } from 'rxjs/operators';\r\n\r\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\r\nimport { ConfirmVariantDeletionDialogComponent } from '../confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\r\n\r\nexport class GeneratedVariant {\r\n isDefault: boolean;\r\n options: Array<{ name: string; id?: string }>;\r\n productVariantId?: string;\r\n enabled: boolean;\r\n existing: boolean;\r\n sku: string;\r\n price: number;\r\n stock: number;\r\n\r\n constructor(config: Partial<GeneratedVariant>) {\r\n for (const key of Object.keys(config)) {\r\n this[key] = config[key];\r\n }\r\n }\r\n}\r\n\r\ninterface OptionGroupUiModel {\r\n id?: string;\r\n isNew: boolean;\r\n name: string;\r\n locked: boolean;\r\n values: Array<{\r\n id?: string;\r\n name: string;\r\n locked: boolean;\r\n }>;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-product-variants-editor',\r\n templateUrl: './product-variants-editor.component.html',\r\n styleUrls: ['./product-variants-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n})\r\nexport class ProductVariantsEditorComponent implements OnInit, DeactivateAware {\r\n formValueChanged = false;\r\n optionsChanged = false;\r\n generatedVariants: GeneratedVariant[] = [];\r\n optionGroups: OptionGroupUiModel[];\r\n product: GetProductVariantOptions.Product;\r\n currencyCode: CurrencyCode;\r\n private languageCode: LanguageCode;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private dataService: DataService,\r\n private productDetailService: ProductDetailService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.initOptionsAndVariants();\r\n this.languageCode =\r\n (this.route.snapshot.paramMap.get('lang') as LanguageCode) || getDefaultUiLanguage();\r\n this.dataService.settings.getActiveChannel().single$.subscribe(data => {\r\n this.currencyCode = data.activeChannel.currencyCode;\r\n });\r\n }\r\n\r\n onFormChanged(variantInfo: GeneratedVariant) {\r\n this.formValueChanged = true;\r\n variantInfo.enabled = true;\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return !this.formValueChanged;\r\n }\r\n\r\n getVariantsToAdd() {\r\n return this.generatedVariants.filter(v => !v.existing && v.enabled);\r\n }\r\n\r\n getVariantName(variant: GeneratedVariant) {\r\n return variant.options.length === 0\r\n ? _('catalog.default-variant')\r\n : variant.options.map(o => o.name).join(' ');\r\n }\r\n\r\n addOptionGroup() {\r\n this.optionGroups.push({\r\n isNew: true,\r\n locked: false,\r\n name: '',\r\n values: [],\r\n });\r\n this.optionsChanged = true;\r\n }\r\n\r\n removeOptionGroup(optionGroup: OptionGroupUiModel) {\r\n const id = optionGroup.id;\r\n if (optionGroup.isNew) {\r\n this.optionGroups = this.optionGroups.filter(og => og !== optionGroup);\r\n this.generateVariants();\r\n this.optionsChanged = true;\r\n } else if (id) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product-option-group'),\r\n translationVars: { name: optionGroup.name },\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(val => {\r\n if (val) {\r\n return this.dataService.product.removeOptionGroupFromProduct({\r\n optionGroupId: id,\r\n productId: this.product.id,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(({ removeOptionGroupFromProduct }) => {\r\n if (removeOptionGroupFromProduct.__typename === 'Product') {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'ProductOptionGroup',\r\n });\r\n this.initOptionsAndVariants();\r\n this.optionsChanged = true;\r\n } else if (removeOptionGroupFromProduct.__typename === 'ProductOptionInUseError') {\r\n this.notificationService.error(removeOptionGroupFromProduct.message ?? '');\r\n }\r\n });\r\n }\r\n }\r\n\r\n addOption(groupId: string, optionName: string) {\r\n this.optionGroups.find(g => g.id === groupId)?.values.push({ name: optionName, locked: false });\r\n this.generateVariants();\r\n this.optionsChanged = true;\r\n }\r\n\r\n removeOption(groupId: string, { id, name }: { id?: string; name: string }) {\r\n const optionGroup = this.optionGroups.find(g => g.id === groupId);\r\n if (optionGroup) {\r\n if (!id) {\r\n optionGroup.values = optionGroup.values.filter(v => v.name !== name);\r\n this.generateVariants();\r\n } else {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product-option'),\r\n translationVars: { name },\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(val => {\r\n if (val) {\r\n return this.dataService.product.deleteProductOption(id);\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(({ deleteProductOption }) => {\r\n if (deleteProductOption.result === DeletionResult.DELETED) {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'ProductOption',\r\n });\r\n optionGroup.values = optionGroup.values.filter(v => v.id !== id);\r\n this.generateVariants();\r\n this.optionsChanged = true;\r\n } else {\r\n this.notificationService.error(deleteProductOption.message ?? '');\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n generateVariants() {\r\n const groups = this.optionGroups.map(g => g.values);\r\n const previousVariants = this.generatedVariants;\r\n const generatedVariantFactory = (\r\n isDefault: boolean,\r\n options: GeneratedVariant['options'],\r\n existingVariant?: GetProductVariantOptions.Variants,\r\n prototypeVariant?: GetProductVariantOptions.Variants,\r\n ): GeneratedVariant => {\r\n const prototype = this.getVariantPrototype(options, previousVariants);\r\n return new GeneratedVariant({\r\n enabled: true,\r\n existing: !!existingVariant,\r\n productVariantId: existingVariant?.id,\r\n isDefault,\r\n options,\r\n price: existingVariant?.price ?? prototypeVariant?.price ?? prototype.price,\r\n sku: existingVariant?.sku ?? prototypeVariant?.sku ?? prototype.sku,\r\n stock: existingVariant?.stockOnHand ?? prototypeVariant?.stockOnHand ?? prototype.stock,\r\n });\r\n };\r\n this.generatedVariants = groups.length\r\n ? generateAllCombinations(groups).map(options => {\r\n const existingVariant = this.product.variants.find(v =>\r\n this.optionsAreEqual(v.options, options),\r\n );\r\n const prototypeVariant = this.product.variants.find(v =>\r\n this.optionsAreSubset(v.options, options),\r\n );\r\n return generatedVariantFactory(false, options, existingVariant, prototypeVariant);\r\n })\r\n : [generatedVariantFactory(true, [], this.product.variants[0])];\r\n }\r\n\r\n /**\r\n * Returns one of the existing variants to base the newly-generated variant's\r\n * details off.\r\n */\r\n private getVariantPrototype(\r\n options: GeneratedVariant['options'],\r\n previousVariants: GeneratedVariant[],\r\n ): Pick<GeneratedVariant, 'sku' | 'price' | 'stock'> {\r\n const variantsWithSimilarOptions = previousVariants.filter(v =>\r\n options.map(o => o.name).filter(name => v.options.map(o => o.name).includes(name)),\r\n );\r\n if (variantsWithSimilarOptions.length) {\r\n return pick(previousVariants[0], ['sku', 'price', 'stock']);\r\n }\r\n return {\r\n sku: '',\r\n price: 0,\r\n stock: 0,\r\n };\r\n }\r\n\r\n deleteVariant(id: string, options: GeneratedVariant['options']) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product-variant'),\r\n translationVars: { name: options.map(o => o.name).join(' ') },\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response ? this.productDetailService.deleteProductVariant(id, this.product.id) : EMPTY,\r\n ),\r\n switchMap(() => this.reFetchProduct(null)),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'ProductVariant',\r\n });\r\n this.initOptionsAndVariants();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'ProductVariant',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n this.optionGroups = this.optionGroups.filter(g => g.values.length);\r\n const newOptionGroups = this.optionGroups\r\n .filter(og => og.isNew)\r\n .map(og => ({\r\n name: og.name,\r\n values: [],\r\n }));\r\n\r\n this.checkUniqueSkus()\r\n .pipe(\r\n mergeMap(() => this.confirmDeletionOfObsoleteVariants()),\r\n mergeMap(() =>\r\n this.productDetailService.createProductOptionGroups(newOptionGroups, this.languageCode),\r\n ),\r\n mergeMap(createdOptionGroups => this.addOptionGroupsToProduct(createdOptionGroups)),\r\n mergeMap(createdOptionGroups => this.addNewOptionsToGroups(createdOptionGroups)),\r\n mergeMap(groupsIds => this.fetchOptionGroups(groupsIds)),\r\n mergeMap(groups => this.createNewProductVariants(groups)),\r\n mergeMap(res => this.deleteObsoleteVariants(res.createProductVariants)),\r\n mergeMap(variants => this.reFetchProduct(variants)),\r\n )\r\n .subscribe({\r\n next: variants => {\r\n this.formValueChanged = false;\r\n this.notificationService.success(_('catalog.created-new-variants-success'), {\r\n count: variants.length,\r\n });\r\n this.initOptionsAndVariants();\r\n this.optionsChanged = false;\r\n },\r\n });\r\n }\r\n\r\n private checkUniqueSkus() {\r\n const withDuplicateSkus = this.generatedVariants.filter((variant, index) => {\r\n return (\r\n variant.enabled &&\r\n this.generatedVariants.find(gv => gv.sku.trim() === variant.sku.trim() && gv !== variant)\r\n );\r\n });\r\n if (withDuplicateSkus.length) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.duplicate-sku-warning'),\r\n body: unique(withDuplicateSkus.map(v => `${v.sku}`)).join(', '),\r\n buttons: [{ label: _('common.close'), returnValue: false, type: 'primary' }],\r\n })\r\n .pipe(mergeMap(res => EMPTY));\r\n } else {\r\n return of(true);\r\n }\r\n }\r\n\r\n private confirmDeletionOfObsoleteVariants(): Observable<boolean> {\r\n const obsoleteVariants = this.getObsoleteVariants();\r\n if (obsoleteVariants.length) {\r\n return this.modalService\r\n .fromComponent(ConfirmVariantDeletionDialogComponent, {\r\n locals: {\r\n variants: obsoleteVariants,\r\n },\r\n })\r\n .pipe(\r\n mergeMap(res => {\r\n return res === true ? of(true) : EMPTY;\r\n }),\r\n );\r\n } else {\r\n return of(true);\r\n }\r\n }\r\n\r\n private getObsoleteVariants() {\r\n return this.product.variants.filter(\r\n variant => !this.generatedVariants.find(gv => gv.productVariantId === variant.id),\r\n );\r\n }\r\n\r\n private hasOnlyDefaultVariant(product: GetProductVariantOptions.Product): boolean {\r\n return product.variants.length === 1 && product.optionGroups.length === 0;\r\n }\r\n\r\n private addOptionGroupsToProduct(\r\n createdOptionGroups: CreateProductOptionGroup.CreateProductOptionGroup[],\r\n ): Observable<CreateProductOptionGroup.CreateProductOptionGroup[]> {\r\n if (createdOptionGroups.length) {\r\n return forkJoin(\r\n createdOptionGroups.map(optionGroup => {\r\n return this.dataService.product.addOptionGroupToProduct({\r\n productId: this.product.id,\r\n optionGroupId: optionGroup.id,\r\n });\r\n }),\r\n ).pipe(map(() => createdOptionGroups));\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n\r\n private addNewOptionsToGroups(\r\n createdOptionGroups: CreateProductOptionGroup.CreateProductOptionGroup[],\r\n ): Observable<string[]> {\r\n const newOptions: CreateProductOptionInput[] = this.optionGroups\r\n .map(og => {\r\n const createdGroup = createdOptionGroups.find(cog => cog.name === og.name);\r\n const productOptionGroupId = createdGroup ? createdGroup.id : og.id;\r\n if (!productOptionGroupId) {\r\n throw new Error('Could not get a productOptionGroupId');\r\n }\r\n return og.values\r\n .filter(v => !v.locked)\r\n .map(v => ({\r\n productOptionGroupId,\r\n code: normalizeString(v.name, '-'),\r\n translations: [{ name: v.name, languageCode: this.languageCode }],\r\n }));\r\n })\r\n .reduce((flat, options) => [...flat, ...options], []);\r\n\r\n const allGroupIds = [\r\n ...createdOptionGroups.map(g => g.id),\r\n ...this.optionGroups.map(g => g.id).filter(notNullOrUndefined),\r\n ];\r\n\r\n if (newOptions.length) {\r\n return forkJoin(newOptions.map(input => this.dataService.product.addOptionToGroup(input))).pipe(\r\n map(() => allGroupIds),\r\n );\r\n } else {\r\n return of(allGroupIds);\r\n }\r\n }\r\n\r\n private fetchOptionGroups(groupsIds: string[]): Observable<ProductOptionGroupWithOptionsFragment[]> {\r\n return forkJoin(\r\n groupsIds.map(id =>\r\n this.dataService.product\r\n .getProductOptionGroup(id)\r\n .mapSingle(data => data.productOptionGroup)\r\n .pipe(filter(notNullOrUndefined)),\r\n ),\r\n ).pipe(defaultIfEmpty([] as ProductOptionGroupWithOptionsFragment[]));\r\n }\r\n\r\n private createNewProductVariants(groups: ProductOptionGroupWithOptionsFragment[]) {\r\n const options = groups\r\n .filter(notNullOrUndefined)\r\n .map(og => og.options)\r\n .reduce((flat, o) => [...flat, ...o], []);\r\n const variants = this.generatedVariants\r\n .filter(v => v.enabled && !v.existing)\r\n .map(v => ({\r\n price: v.price,\r\n sku: v.sku,\r\n stock: v.stock,\r\n optionIds: v.options\r\n .map(name => options.find(o => o.name === name.name))\r\n .filter(notNullOrUndefined)\r\n .map(o => o.id),\r\n }));\r\n return this.productDetailService.createProductVariants(\r\n this.product,\r\n variants,\r\n options,\r\n this.languageCode,\r\n );\r\n }\r\n\r\n private deleteObsoleteVariants<T>(input: T): Observable<T> {\r\n const obsoleteVariants = this.getObsoleteVariants();\r\n if (obsoleteVariants.length) {\r\n const deleteOperations = obsoleteVariants.map(v =>\r\n this.dataService.product.deleteProductVariant(v.id).pipe(map(() => input)),\r\n );\r\n return forkJoin(...deleteOperations);\r\n } else {\r\n return of(input);\r\n }\r\n }\r\n\r\n private reFetchProduct<T>(input: T): Observable<T> {\r\n // Re-fetch the Product to force an update to the view.\r\n const id = this.route.snapshot.paramMap.get('id');\r\n if (id) {\r\n return this.dataService.product.getProduct(id).single$.pipe(map(() => input));\r\n } else {\r\n return of(input);\r\n }\r\n }\r\n\r\n initOptionsAndVariants() {\r\n this.dataService.product\r\n // tslint:disable-next-line:no-non-null-assertion\r\n .getProductVariantsOptions(this.route.snapshot.paramMap.get('id')!)\r\n // tslint:disable-next-line:no-non-null-assertion\r\n .mapSingle(({ product }) => product!)\r\n .subscribe(p => {\r\n this.product = p;\r\n const allUsedOptionIds = p.variants.map(v => v.options.map(option => option.id)).flat();\r\n const allUsedOptionGroupIds = p.variants\r\n .map(v => v.options.map(option => option.groupId))\r\n .flat();\r\n this.optionGroups = p.optionGroups.map(og => {\r\n return {\r\n id: og.id,\r\n isNew: false,\r\n name: og.name,\r\n locked: allUsedOptionGroupIds.includes(og.id),\r\n values: og.options.map(o => ({\r\n id: o.id,\r\n name: o.name,\r\n locked: allUsedOptionIds.includes(o.id),\r\n })),\r\n };\r\n });\r\n this.generateVariants();\r\n });\r\n }\r\n\r\n private optionsAreEqual(a: Array<{ name: string }>, b: Array<{ name: string }>): boolean {\r\n return this.toOptionString(a) === this.toOptionString(b);\r\n }\r\n\r\n private optionsAreSubset(a: Array<{ name: string }>, b: Array<{ name: string }>): boolean {\r\n return this.toOptionString(b).includes(this.toOptionString(a));\r\n }\r\n\r\n private toOptionString(o: Array<{ name: string }>): string {\r\n return o\r\n .map(x => x.name)\r\n .sort()\r\n .join('|');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Asset, AssetType, BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AssetResolver extends BaseEntityResolver<Asset.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Asset' as const,\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n name: '',\r\n type: AssetType.IMAGE,\r\n fileSize: 0,\r\n mimeType: '',\r\n width: 0,\r\n height: 0,\r\n source: '',\r\n preview: '',\r\n focalPoint: null,\r\n },\r\n id => dataService.product.getAsset(id).mapStream(data => data.asset),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver, Collection, DataService, getDefaultUiLanguage } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CollectionResolver extends BaseEntityResolver<Collection.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Collection' as 'Collection',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n languageCode: getDefaultUiLanguage(),\r\n name: '',\r\n slug: '',\r\n isPrivate: false,\r\n description: '',\r\n featuredAsset: null,\r\n assets: [],\r\n translations: [],\r\n filters: [],\r\n parent: {} as any,\r\n children: null,\r\n },\r\n id => dataService.collection.getCollection(id).mapStream(data => data.collection),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { FacetWithValues } from '@vendure/admin-ui/core';\r\nimport { getDefaultUiLanguage } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FacetResolver extends BaseEntityResolver<FacetWithValues.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Facet' as 'Facet',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n isPrivate: false,\r\n languageCode: getDefaultUiLanguage(),\r\n name: '',\r\n code: '',\r\n translations: [],\r\n values: [],\r\n },\r\n (id) => dataService.facet.getFacet(id).mapStream((data) => data.facet),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n BaseEntityResolver,\r\n DataService,\r\n getDefaultUiLanguage,\r\n GetProductWithVariants,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductResolver extends BaseEntityResolver<GetProductWithVariants.Product> {\r\n constructor(dataService: DataService, router: Router) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Product' as 'Product',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n enabled: true,\r\n languageCode: getDefaultUiLanguage(),\r\n name: '',\r\n slug: '',\r\n featuredAsset: null,\r\n assets: [],\r\n description: '',\r\n translations: [],\r\n optionGroups: [],\r\n facetValues: [],\r\n variantList: { items: [], totalItems: 0 },\r\n channels: [],\r\n },\r\n id =>\r\n dataService.product\r\n .getProduct(id, { take: 10 })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.product),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { GetProductVariantOptions } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductVariantsResolver extends BaseEntityResolver<GetProductVariantOptions.Product> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Product' as 'Product',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n name: '',\r\n optionGroups: [],\r\n variants: [],\r\n },\r\n id => dataService.product.getProductVariantsOptions(id).mapStream(data => data.product),\r\n );\r\n }\r\n}\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n CanDeactivateDetailGuard,\r\n Collection,\r\n createResolveData,\r\n detailBreadcrumb,\r\n FacetWithValues,\r\n GetProductWithVariants,\r\n} from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { AssetDetailComponent } from './components/asset-detail/asset-detail.component';\r\nimport { AssetListComponent } from './components/asset-list/asset-list.component';\r\nimport { CollectionDetailComponent } from './components/collection-detail/collection-detail.component';\r\nimport { CollectionListComponent } from './components/collection-list/collection-list.component';\r\nimport { FacetDetailComponent } from './components/facet-detail/facet-detail.component';\r\nimport { FacetListComponent } from './components/facet-list/facet-list.component';\r\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\r\nimport { ProductListComponent } from './components/product-list/product-list.component';\r\nimport { ProductOptionsEditorComponent } from './components/product-options-editor/product-options-editor.component';\r\nimport { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';\r\nimport { AssetResolver } from './providers/routing/asset-resolver';\r\nimport { CollectionResolver } from './providers/routing/collection-resolver';\r\nimport { FacetResolver } from './providers/routing/facet-resolver';\r\nimport { ProductResolver } from './providers/routing/product-resolver';\r\nimport { ProductVariantsResolver } from './providers/routing/product-variants-resolver';\r\n\r\nexport const catalogRoutes: Route[] = [\r\n {\r\n path: 'products',\r\n component: ProductListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.products'),\r\n },\r\n },\r\n {\r\n path: 'products/:id',\r\n component: ProductDetailComponent,\r\n resolve: createResolveData(ProductResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: productBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'products/:id/manage-variants',\r\n component: ProductVariantsEditorComponent,\r\n resolve: createResolveData(ProductVariantsResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: productVariantEditorBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'products/:id/options',\r\n component: ProductOptionsEditorComponent,\r\n resolve: createResolveData(ProductVariantsResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: productOptionsEditorBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'facets',\r\n component: FacetListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.facets'),\r\n },\r\n },\r\n {\r\n path: 'facets/:id',\r\n component: FacetDetailComponent,\r\n resolve: createResolveData(FacetResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: facetBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'collections',\r\n component: CollectionListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.collections'),\r\n },\r\n },\r\n {\r\n path: 'collections/:id',\r\n component: CollectionDetailComponent,\r\n resolve: createResolveData(CollectionResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: collectionBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'assets',\r\n component: AssetListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.assets'),\r\n },\r\n },\r\n {\r\n path: 'assets/:id',\r\n component: AssetDetailComponent,\r\n resolve: createResolveData(AssetResolver),\r\n data: {\r\n breadcrumb: assetBreadcrumb,\r\n },\r\n },\r\n];\r\n\r\nexport function productBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<GetProductWithVariants.Product>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.products',\r\n getName: product => product.name,\r\n route: 'products',\r\n });\r\n}\r\n\r\nexport function productVariantEditorBreadcrumb(data: any, params: any) {\r\n return data.entity.pipe(\r\n map((entity: any) => {\r\n return [\r\n {\r\n label: _('breadcrumb.products'),\r\n link: ['../', 'products'],\r\n },\r\n {\r\n label: `${entity.name}`,\r\n link: ['../', 'products', params.id, { tab: 'variants' }],\r\n },\r\n {\r\n label: _('breadcrumb.manage-variants'),\r\n link: ['manage-variants'],\r\n },\r\n ];\r\n }),\r\n );\r\n}\r\n\r\nexport function productOptionsEditorBreadcrumb(data: any, params: any) {\r\n return data.entity.pipe(\r\n map((entity: any) => {\r\n return [\r\n {\r\n label: _('breadcrumb.products'),\r\n link: ['../', 'products'],\r\n },\r\n {\r\n label: `${entity.name}`,\r\n link: ['../', 'products', params.id, { tab: 'variants' }],\r\n },\r\n {\r\n label: _('breadcrumb.product-options'),\r\n link: ['options'],\r\n },\r\n ];\r\n }),\r\n );\r\n}\r\n\r\nexport function facetBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<FacetWithValues.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.facets',\r\n getName: facet => facet.name,\r\n route: 'facets',\r\n });\r\n}\r\n\r\nexport function collectionBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<Collection.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.collections',\r\n getName: collection => collection.name,\r\n route: 'collections',\r\n });\r\n}\r\n\r\nexport function assetBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<Asset.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.assets',\r\n getName: asset => asset.name,\r\n route: 'assets',\r\n });\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n Asset,\r\n AssetPickerDialogComponent,\r\n AssetPreviewDialogComponent,\r\n ModalService,\r\n Permission,\r\n} from '@vendure/admin-ui/core';\r\nimport { unique } from '@vendure/common/lib/unique';\r\n\r\nexport interface AssetChange {\r\n assets: Asset[];\r\n featuredAsset: Asset | undefined;\r\n}\r\n\r\n/**\r\n * A component which displays the Assets, and allows assets to be removed and\r\n * added, and for the featured asset to be set.\r\n *\r\n * Note: rather complex code for drag drop is due to a limitation of the default CDK implementation\r\n * which is addressed by a work-around from here: https://github.com/angular/components/issues/13372#issuecomment-483998378\r\n */\r\n@Component({\r\n selector: 'vdr-assets',\r\n templateUrl: './assets.component.html',\r\n styleUrls: ['./assets.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssetsComponent {\r\n @Input('assets') set assetsSetter(val: Asset[]) {\r\n // create a new non-readonly array of assets\r\n this.assets = (val || []).slice();\r\n }\r\n\r\n @Input() featuredAsset: Asset | undefined;\r\n @HostBinding('class.compact')\r\n @Input()\r\n compact = false;\r\n @Output() change = new EventEmitter<AssetChange>();\r\n\r\n public assets: Asset[] = [];\r\n\r\n @Input()\r\n updatePermissions: string | string[] | Permission | Permission[];\r\n\r\n constructor(private modalService: ModalService, private changeDetector: ChangeDetectorRef) {}\r\n\r\n selectAssets() {\r\n this.modalService\r\n .fromComponent(AssetPickerDialogComponent, {\r\n size: 'xl',\r\n })\r\n .subscribe(result => {\r\n if (result && result.length) {\r\n this.assets = unique(this.assets.concat(result), 'id');\r\n if (!this.featuredAsset) {\r\n this.featuredAsset = result[0];\r\n }\r\n this.emitChangeEvent(this.assets, this.featuredAsset);\r\n this.changeDetector.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n setAsFeatured(asset: Asset) {\r\n this.featuredAsset = asset;\r\n this.emitChangeEvent(this.assets, asset);\r\n }\r\n\r\n isFeatured(asset: Asset): boolean {\r\n return !!this.featuredAsset && this.featuredAsset.id === asset.id;\r\n }\r\n\r\n previewAsset(asset: Asset) {\r\n this.modalService\r\n .fromComponent(AssetPreviewDialogComponent, {\r\n size: 'xl',\r\n closable: true,\r\n locals: { asset },\r\n })\r\n .subscribe();\r\n }\r\n\r\n removeAsset(asset: Asset) {\r\n this.assets = this.assets.filter(a => a.id !== asset.id);\r\n if (this.featuredAsset && this.featuredAsset.id === asset.id) {\r\n this.featuredAsset = this.assets.length > 0 ? this.assets[0] : undefined;\r\n }\r\n this.emitChangeEvent(this.assets, this.featuredAsset);\r\n }\r\n\r\n private emitChangeEvent(assets: Asset[], featuredAsset: Asset | undefined) {\r\n this.change.emit({\r\n assets,\r\n featuredAsset,\r\n });\r\n }\r\n\r\n dropListDropped(event: CdkDragDrop<number>) {\r\n moveItemInArray(this.assets, event.previousContainer.data, event.container.data);\r\n this.emitChangeEvent(this.assets, this.featuredAsset);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n CollectionFilterParameter,\r\n ConfigurableOperationInput,\r\n DataService,\r\n GetCollectionContents,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n finalize,\r\n map,\r\n startWith,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-collection-contents',\r\n templateUrl: './collection-contents.component.html',\r\n styleUrls: ['./collection-contents.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionContentsComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() collectionId: string;\r\n @Input() parentId: string;\r\n @Input() updatedFilters: ConfigurableOperationInput[] | undefined;\r\n @Input() previewUpdatedFilters = false;\r\n @ContentChild(TemplateRef, { static: true }) headerTemplate: TemplateRef<any>;\r\n\r\n contents$: Observable<GetCollectionContents.Items[]>;\r\n contentsTotalItems$: Observable<number>;\r\n contentsItemsPerPage$: Observable<number>;\r\n contentsCurrentPage$: Observable<number>;\r\n filterTermControl = new FormControl('');\r\n isLoading = false;\r\n private collectionIdChange$ = new BehaviorSubject<string>('');\r\n private parentIdChange$ = new BehaviorSubject<string>('');\r\n private filterChanges$ = new BehaviorSubject<ConfigurableOperationInput[]>([]);\r\n private refresh$ = new BehaviorSubject<boolean>(true);\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private route: ActivatedRoute, private router: Router, private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.contentsCurrentPage$ = this.route.queryParamMap.pipe(\r\n map(qpm => qpm.get('contentsPage')),\r\n map(page => (!page ? 1 : +page)),\r\n startWith(1),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this.contentsItemsPerPage$ = this.route.queryParamMap.pipe(\r\n map(qpm => qpm.get('contentsPerPage')),\r\n map(perPage => (!perPage ? 10 : +perPage)),\r\n startWith(10),\r\n distinctUntilChanged(),\r\n );\r\n\r\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\r\n debounceTime(250),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith(''),\r\n );\r\n\r\n const filterChanges$ = this.filterChanges$.asObservable().pipe(\r\n filter(() => this.previewUpdatedFilters),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith([]),\r\n );\r\n\r\n const fetchUpdate$ = combineLatest(\r\n this.collectionIdChange$,\r\n this.parentIdChange$,\r\n this.contentsCurrentPage$,\r\n this.contentsItemsPerPage$,\r\n filterTerm$,\r\n filterChanges$,\r\n this.refresh$,\r\n );\r\n\r\n const collection$ = fetchUpdate$.pipe(\r\n takeUntil(this.destroy$),\r\n tap(() => (this.isLoading = true)),\r\n debounceTime(50),\r\n switchMap(([id, parentId, currentPage, itemsPerPage, filterTerm, filters]) => {\r\n const take = itemsPerPage;\r\n const skip = (currentPage - 1) * itemsPerPage;\r\n if (filters.length && this.previewUpdatedFilters) {\r\n const filterClause = filterTerm\r\n ? ({ name: { contains: filterTerm } } as CollectionFilterParameter)\r\n : undefined;\r\n return this.dataService.collection\r\n .previewCollectionVariants(\r\n {\r\n parentId,\r\n filters,\r\n },\r\n {\r\n take,\r\n skip,\r\n filter: filterClause,\r\n },\r\n )\r\n .mapSingle(data => data.previewCollectionVariants)\r\n .pipe(catchError(() => of({ items: [], totalItems: 0 })));\r\n } else if (id) {\r\n return this.dataService.collection\r\n .getCollectionContents(id, take, skip, filterTerm)\r\n .mapSingle(data => data.collection?.productVariants);\r\n } else {\r\n return of(null);\r\n }\r\n }),\r\n tap(() => (this.isLoading = false)),\r\n finalize(() => (this.isLoading = false)),\r\n );\r\n\r\n this.contents$ = collection$.pipe(map(result => (result ? result.items : [])));\r\n this.contentsTotalItems$ = collection$.pipe(map(result => (result ? result.totalItems : 0)));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ('collectionId' in changes) {\r\n this.collectionIdChange$.next(changes.collectionId.currentValue);\r\n }\r\n if ('parentId' in changes) {\r\n this.parentIdChange$.next(changes.parentId.currentValue);\r\n }\r\n if ('updatedFilters' in changes) {\r\n if (this.updatedFilters) {\r\n this.filterChanges$.next(this.updatedFilters);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setContentsPageNumber(page: number) {\r\n this.setParam('contentsPage', page);\r\n }\r\n\r\n setContentsItemsPerPage(perPage: number) {\r\n this.setParam('contentsPerPage', perPage);\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n\r\n private setParam(key: string, value: any) {\r\n this.router.navigate(['./'], {\r\n relativeTo: this.route,\r\n queryParams: {\r\n [key]: value,\r\n },\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n}\r\n","export type HasParent = { id: string; parent?: { id: string } | null };\r\nexport type TreeNode<T extends HasParent> = T & { children: Array<TreeNode<T>>; expanded: boolean };\r\nexport type RootNode<T extends HasParent> = { id?: string; children: Array<TreeNode<T>> };\r\n\r\n/**\r\n * Builds a tree from an array of nodes which have a parent.\r\n * Based on https://stackoverflow.com/a/31247960/772859, modified to preserve ordering.\r\n */\r\nexport function arrayToTree<T extends HasParent>(\r\n nodes: T[],\r\n currentState?: RootNode<T>,\r\n expandedIds: string[] = [],\r\n): RootNode<T> {\r\n const topLevelNodes: Array<TreeNode<T>> = [];\r\n const mappedArr: { [id: string]: TreeNode<T> } = {};\r\n const currentStateMap = treeToMap(currentState);\r\n\r\n // First map the nodes of the array to an object -> create a hash table.\r\n for (const node of nodes) {\r\n mappedArr[node.id] = { ...(node as any), children: [] };\r\n }\r\n\r\n for (const id of nodes.map(n => n.id)) {\r\n if (mappedArr.hasOwnProperty(id)) {\r\n const mappedElem = mappedArr[id];\r\n mappedElem.expanded = currentStateMap.get(id)?.expanded ?? expandedIds.includes(id);\r\n const parent = mappedElem.parent;\r\n if (!parent) {\r\n continue;\r\n }\r\n // If the element is not at the root level, add it to its parent array of children.\r\n const parentIsRoot = !mappedArr[parent.id];\r\n if (!parentIsRoot) {\r\n if (mappedArr[parent.id]) {\r\n mappedArr[parent.id].children.push(mappedElem);\r\n } else {\r\n mappedArr[parent.id] = { children: [mappedElem] } as any;\r\n }\r\n } else {\r\n topLevelNodes.push(mappedElem);\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:no-non-null-assertion\r\n const rootId = topLevelNodes.length ? topLevelNodes[0].parent!.id : undefined;\r\n return { id: rootId, children: topLevelNodes };\r\n}\r\n\r\n/**\r\n * Converts an existing tree (as generated by the arrayToTree function) into a flat\r\n * Map. This is used to persist certain states (e.g. `expanded`) when re-building the\r\n * tree.\r\n */\r\nfunction treeToMap<T extends HasParent>(tree?: RootNode<T>): Map<string, TreeNode<T>> {\r\n const nodeMap = new Map<string, TreeNode<T>>();\r\n function visit(node: TreeNode<T>) {\r\n nodeMap.set(node.id, node);\r\n node.children.forEach(visit);\r\n }\r\n if (tree) {\r\n visit(tree as TreeNode<T>);\r\n }\r\n return nodeMap;\r\n}\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { Collection } from '@vendure/admin-ui/core';\r\n\r\nimport { arrayToTree, HasParent, RootNode, TreeNode } from './array-to-tree';\r\n\r\nexport type RearrangeEvent = { collectionId: string; parentId: string; index: number };\r\nexport type CollectionPartial = Pick<Collection.Fragment, 'id' | 'parent' | 'name'>;\r\n\r\n@Component({\r\n selector: 'vdr-collection-tree',\r\n templateUrl: 'collection-tree.component.html',\r\n styleUrls: ['./collection-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionTreeComponent implements OnChanges {\r\n @Input() collections: CollectionPartial[];\r\n @Input() activeCollectionId: string;\r\n @Input() expandAll = false;\r\n @Input() expandedIds: string[] = [];\r\n @Output() rearrange = new EventEmitter<RearrangeEvent>();\r\n @Output() deleteCollection = new EventEmitter<string>();\r\n collectionTree: RootNode<CollectionPartial>;\r\n private allMoveListItems: Array<{ path: string; id: string; ancestorIdPath: Set<string> }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('collections' in changes && this.collections) {\r\n this.collectionTree = arrayToTree(this.collections, this.collectionTree, this.expandedIds);\r\n this.allMoveListItems = [];\r\n }\r\n }\r\n\r\n onDrop(event: CdkDragDrop<CollectionPartial | RootNode<CollectionPartial>>) {\r\n const item = event.item.data as CollectionPartial;\r\n const newParent = event.container.data;\r\n const newParentId = newParent.id;\r\n if (newParentId == null) {\r\n throw new Error(`Could not determine the ID of the root Collection`);\r\n }\r\n this.rearrange.emit({\r\n collectionId: item.id,\r\n parentId: newParentId,\r\n index: event.currentIndex,\r\n });\r\n }\r\n\r\n onMove(event: RearrangeEvent) {\r\n this.rearrange.emit(event);\r\n }\r\n\r\n onDelete(id: string) {\r\n this.deleteCollection.emit(id);\r\n }\r\n\r\n getMoveListItems(collection: CollectionPartial) {\r\n if (this.allMoveListItems.length === 0) {\r\n this.allMoveListItems = this.calculateAllMoveListItems();\r\n }\r\n return this.allMoveListItems.filter(\r\n item =>\r\n item.id !== collection.id &&\r\n !item.ancestorIdPath.has(collection.id) &&\r\n item.id !== collection.parent?.id,\r\n );\r\n }\r\n\r\n calculateAllMoveListItems() {\r\n const visit = (\r\n node: TreeNode<any>,\r\n parentPath: string[],\r\n ancestorIdPath: Set<string>,\r\n output: Array<{ path: string; id: string; ancestorIdPath: Set<string> }>,\r\n ) => {\r\n const path = parentPath.concat(node.name);\r\n output.push({ path: path.slice(1).join(' / ') || 'root', id: node.id, ancestorIdPath });\r\n node.children.forEach(child =>\r\n visit(child, path, new Set<string>([...ancestorIdPath, node.id]), output),\r\n );\r\n return output;\r\n };\r\n return visit(this.collectionTree, [], new Set<string>(), []);\r\n }\r\n\r\n private isRootNode<T extends HasParent>(node: T | RootNode<T>): node is RootNode<T> {\r\n return !node.hasOwnProperty('parent');\r\n }\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DataService, Permission } from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\n\r\nimport { RootNode, TreeNode } from './array-to-tree';\r\nimport { CollectionPartial, CollectionTreeComponent } from './collection-tree.component';\r\n\r\n@Component({\r\n selector: 'vdr-collection-tree-node',\r\n templateUrl: './collection-tree-node.component.html',\r\n styleUrls: ['./collection-tree-node.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionTreeNodeComponent implements OnInit, OnChanges {\r\n depth = 0;\r\n parentName: string;\r\n @Input() collectionTree: TreeNode<CollectionPartial>;\r\n @Input() activeCollectionId: string;\r\n @Input() expandAll = false;\r\n hasUpdatePermission$: Observable<boolean>;\r\n hasDeletePermission$: Observable<boolean>;\r\n moveListItems: Array<{ path: string; id: string }> = [];\r\n\r\n constructor(\r\n @SkipSelf() @Optional() private parent: CollectionTreeNodeComponent,\r\n private root: CollectionTreeComponent,\r\n private dataService: DataService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n ) {\r\n if (parent) {\r\n this.depth = parent.depth + 1;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentName = this.collectionTree.name || '<root>';\r\n const permissions$ = this.dataService.client\r\n .userStatus()\r\n .mapStream(data => data.userStatus.permissions)\r\n .pipe(shareReplay(1));\r\n this.hasUpdatePermission$ = permissions$.pipe(\r\n map(\r\n perms =>\r\n perms.includes(Permission.UpdateCatalog) || perms.includes(Permission.UpdateCollection),\r\n ),\r\n );\r\n this.hasDeletePermission$ = permissions$.pipe(\r\n map(\r\n perms =>\r\n perms.includes(Permission.DeleteCatalog) || perms.includes(Permission.DeleteCollection),\r\n ),\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const expandAllChange = changes['expandAll'];\r\n if (expandAllChange) {\r\n if (expandAllChange.previousValue === true && expandAllChange.currentValue === false) {\r\n this.collectionTree.children.forEach(c => (c.expanded = false));\r\n }\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: CollectionPartial) {\r\n return item.id;\r\n }\r\n\r\n toggleExpanded(collection: TreeNode<CollectionPartial>) {\r\n collection.expanded = !collection.expanded;\r\n let expandedIds = this.route.snapshot.queryParamMap.get('expanded')?.split(',') ?? [];\r\n if (collection.expanded) {\r\n expandedIds.push(collection.id);\r\n } else {\r\n expandedIds = expandedIds.filter(id => id !== collection.id);\r\n }\r\n this.router.navigate(['./'], {\r\n queryParams: {\r\n expanded: expandedIds.filter(id => !!id).join(','),\r\n },\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n });\r\n }\r\n\r\n getMoveListItems(collection: CollectionPartial) {\r\n this.moveListItems = this.root.getMoveListItems(collection);\r\n }\r\n\r\n move(collection: CollectionPartial, parentId: string) {\r\n this.root.onMove({\r\n index: 0,\r\n parentId,\r\n collectionId: collection.id,\r\n });\r\n }\r\n\r\n moveUp(collection: CollectionPartial, currentIndex: number) {\r\n if (!collection.parent) {\r\n return;\r\n }\r\n this.root.onMove({\r\n index: currentIndex - 1,\r\n parentId: collection.parent.id,\r\n collectionId: collection.id,\r\n });\r\n }\r\n\r\n moveDown(collection: CollectionPartial, currentIndex: number) {\r\n if (!collection.parent) {\r\n return;\r\n }\r\n this.root.onMove({\r\n index: currentIndex + 1,\r\n parentId: collection.parent.id,\r\n collectionId: collection.id,\r\n });\r\n }\r\n\r\n drop(event: CdkDragDrop<CollectionPartial | RootNode<CollectionPartial>>) {\r\n moveItemInArray(this.collectionTree.children, event.previousIndex, event.currentIndex);\r\n this.root.onDrop(event);\r\n }\r\n\r\n delete(id: string) {\r\n this.root.onDelete(id);\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { CurrencyCode, DataService } from '@vendure/admin-ui/core';\r\nimport { generateAllCombinations } from '@vendure/common/lib/shared-utils';\r\n\r\nimport { OptionValueInputComponent } from '../option-value-input/option-value-input.component';\r\n\r\nconst DEFAULT_VARIANT_CODE = '__DEFAULT_VARIANT__';\r\nexport type CreateVariantValues = {\r\n optionValues: string[];\r\n enabled: boolean;\r\n sku: string;\r\n price: number;\r\n stock: number;\r\n};\r\nexport type CreateProductVariantsConfig = {\r\n groups: Array<{ name: string; values: string[] }>;\r\n variants: CreateVariantValues[];\r\n};\r\n\r\n@Component({\r\n selector: 'vdr-generate-product-variants',\r\n templateUrl: './generate-product-variants.component.html',\r\n styleUrls: ['./generate-product-variants.component.scss'],\r\n})\r\nexport class GenerateProductVariantsComponent implements OnInit {\r\n @Output() variantsChange = new EventEmitter<CreateProductVariantsConfig>();\r\n @ViewChildren('optionGroupName', { read: ElementRef }) groupNameInputs: QueryList<ElementRef>;\r\n optionGroups: Array<{ name: string; values: Array<{ name: string; locked: boolean }> }> = [];\r\n currencyCode: CurrencyCode;\r\n variants: Array<{ id: string; values: string[] }>;\r\n variantFormValues: { [id: string]: CreateVariantValues } = {};\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.dataService.settings.getActiveChannel().single$.subscribe(data => {\r\n this.currencyCode = data.activeChannel.currencyCode;\r\n });\r\n\r\n this.generateVariants();\r\n }\r\n\r\n addOption() {\r\n this.optionGroups.push({ name: '', values: [] });\r\n const index = this.optionGroups.length - 1;\r\n setTimeout(() => {\r\n const input = this.groupNameInputs.get(index)?.nativeElement;\r\n input?.focus();\r\n });\r\n }\r\n\r\n removeOption(name: string) {\r\n this.optionGroups = this.optionGroups.filter(g => g.name !== name);\r\n this.generateVariants();\r\n }\r\n\r\n generateVariants() {\r\n const totalValuesCount = this.optionGroups.reduce((sum, group) => sum + group.values.length, 0);\r\n const groups = totalValuesCount\r\n ? this.optionGroups.map(g => g.values.map(v => v.name))\r\n : [[DEFAULT_VARIANT_CODE]];\r\n this.variants = generateAllCombinations(groups).map(values => ({ id: values.join('|'), values }));\r\n\r\n this.variants.forEach(variant => {\r\n if (!this.variantFormValues[variant.id]) {\r\n this.variantFormValues[variant.id] = {\r\n optionValues: variant.values,\r\n enabled: true,\r\n price: this.copyFromDefault(variant.id, 'price', 0),\r\n sku: this.copyFromDefault(variant.id, 'sku', ''),\r\n stock: this.copyFromDefault(variant.id, 'stock', 0),\r\n };\r\n }\r\n });\r\n this.onFormChange();\r\n }\r\n\r\n trackByFn(index: number, variant: { name: string; values: string[] }) {\r\n return variant.values.join('|');\r\n }\r\n\r\n handleEnter(event: KeyboardEvent, optionValueInputComponent: OptionValueInputComponent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n optionValueInputComponent.focus();\r\n }\r\n\r\n onFormChange() {\r\n const variantsToCreate = this.variants.map(v => this.variantFormValues[v.id]).filter(v => v.enabled);\r\n this.variantsChange.emit({\r\n groups: this.optionGroups.map(og => ({ name: og.name, values: og.values.map(v => v.name) })),\r\n variants: variantsToCreate,\r\n });\r\n }\r\n\r\n private copyFromDefault<T extends keyof CreateVariantValues>(\r\n variantId: string,\r\n prop: T,\r\n value: CreateVariantValues[T],\r\n ): CreateVariantValues[T] {\r\n return variantId !== DEFAULT_VARIANT_CODE\r\n ? this.variantFormValues[DEFAULT_VARIANT_CODE][prop]\r\n : value;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n Provider,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { unique } from '@vendure/common/lib/unique';\r\n\r\nexport const OPTION_VALUE_INPUT_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => OptionValueInputComponent),\r\n multi: true,\r\n};\r\n\r\ninterface Option {\r\n id?: string;\r\n name: string;\r\n locked: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-option-value-input',\r\n templateUrl: './option-value-input.component.html',\r\n styleUrls: ['./option-value-input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n providers: [OPTION_VALUE_INPUT_VALUE_ACCESSOR],\r\n})\r\nexport class OptionValueInputComponent implements ControlValueAccessor {\r\n @Input() groupName = '';\r\n @ViewChild('textArea', { static: true }) textArea: ElementRef<HTMLTextAreaElement>;\r\n @ViewChildren('editNameInput', { read: ElementRef }) nameInputs: QueryList<ElementRef>;\r\n @Input() options: Option[];\r\n @Output() add = new EventEmitter<Option>();\r\n @Output() remove = new EventEmitter<Option>();\r\n @Output() edit = new EventEmitter<{ index: number; option: Option }>();\r\n @Input() disabled = false;\r\n input = '';\r\n isFocussed = false;\r\n lastSelected = false;\r\n formValue: Option[];\r\n editingIndex = -1;\r\n onChangeFn: (value: any) => void;\r\n onTouchFn: (value: any) => void;\r\n\r\n get optionValues(): Option[] {\r\n return this.formValue ?? this.options ?? [];\r\n }\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchFn = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.formValue = obj || [];\r\n }\r\n\r\n focus() {\r\n this.textArea.nativeElement.focus();\r\n }\r\n\r\n editName(index: number, event: MouseEvent) {\r\n const optionValue = this.optionValues[index];\r\n if (!optionValue.locked && !optionValue.id) {\r\n event.cancelBubble = true;\r\n this.editingIndex = index;\r\n const input = this.nameInputs.get(index)?.nativeElement;\r\n setTimeout(() => input?.focus());\r\n }\r\n }\r\n\r\n updateOption(index: number, event: InputEvent) {\r\n const optionValue = this.optionValues[index];\r\n const newName = (event.target as HTMLInputElement).value;\r\n if (optionValue) {\r\n if (newName) {\r\n optionValue.name = newName;\r\n this.edit.emit({ index, option: optionValue });\r\n }\r\n this.editingIndex = -1;\r\n }\r\n }\r\n\r\n removeOption(option: Option) {\r\n if (!option.locked) {\r\n if (this.formValue) {\r\n this.formValue = this.formValue?.filter(o => o.name !== option.name);\r\n this.onChangeFn(this.formValue);\r\n } else {\r\n this.remove.emit(option);\r\n }\r\n }\r\n }\r\n\r\n handleKey(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case ',':\r\n case 'Enter':\r\n this.addOptionValue();\r\n event.preventDefault();\r\n break;\r\n case 'Backspace':\r\n if (this.lastSelected) {\r\n this.removeLastOption();\r\n this.lastSelected = false;\r\n } else if (this.input === '') {\r\n this.lastSelected = true;\r\n }\r\n break;\r\n default:\r\n this.lastSelected = false;\r\n }\r\n }\r\n\r\n handleBlur() {\r\n this.isFocussed = false;\r\n this.addOptionValue();\r\n }\r\n\r\n private addOptionValue() {\r\n const options = this.parseInputIntoOptions(this.input);\r\n if (!this.formValue && this.options) {\r\n for (const option of options) {\r\n this.add.emit(option);\r\n }\r\n } else {\r\n this.formValue = unique([...this.formValue, ...options]);\r\n this.onChangeFn(this.formValue);\r\n }\r\n this.input = '';\r\n }\r\n\r\n private parseInputIntoOptions(input: string): Option[] {\r\n return input\r\n .split(/[,\\n]/)\r\n .map(s => s.trim())\r\n .filter(s => s !== '')\r\n .map(s => ({ name: s, locked: false }));\r\n }\r\n\r\n private removeLastOption() {\r\n if (this.optionValues.length) {\r\n const option = this.optionValues[this.optionValues.length - 1];\r\n this.removeOption(option);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport {\r\n CustomFieldConfig,\r\n LanguageCode,\r\n ProductVariant,\r\n UpdateProductOptionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { createUpdatedTranslatable } from '@vendure/admin-ui/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\n\r\n@Component({\r\n selector: 'vdr-update-product-option-dialog',\r\n templateUrl: './update-product-option-dialog.component.html',\r\n styleUrls: ['./update-product-option-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UpdateProductOptionDialogComponent\r\n implements Dialog<UpdateProductOptionInput & { autoUpdate: boolean }>, OnInit {\r\n resolveWith: (result?: UpdateProductOptionInput & { autoUpdate: boolean }) => void;\r\n updateVariantName = true;\r\n // Provided by caller\r\n productOption: ProductVariant.Options;\r\n activeLanguage: LanguageCode;\r\n name: string;\r\n code: string;\r\n customFields: CustomFieldConfig[];\r\n codeInputTouched = false;\r\n customFieldsForm: FormGroup;\r\n\r\n ngOnInit(): void {\r\n const currentTranslation = this.productOption.translations.find(\r\n t => t.languageCode === this.activeLanguage,\r\n );\r\n this.name = currentTranslation?.name ?? '';\r\n this.code = this.productOption.code;\r\n this.customFieldsForm = new FormGroup({});\r\n if (this.customFields) {\r\n const cfCurrentTranslation =\r\n (currentTranslation && (currentTranslation as any).customFields) || {};\r\n\r\n for (const fieldDef of this.customFields) {\r\n const key = fieldDef.name;\r\n const value =\r\n fieldDef.type === 'localeString'\r\n ? cfCurrentTranslation[key]\r\n : (this.productOption as any).customFields[key];\r\n this.customFieldsForm.addControl(fieldDef.name, new FormControl(value));\r\n }\r\n }\r\n }\r\n\r\n update() {\r\n const result = createUpdatedTranslatable({\r\n translatable: this.productOption,\r\n languageCode: this.activeLanguage,\r\n updatedFields: {\r\n code: this.code,\r\n name: this.name,\r\n customFields: this.customFieldsForm.value,\r\n },\r\n customFieldConfig: this.customFields,\r\n defaultTranslation: {\r\n languageCode: this.activeLanguage,\r\n name: '',\r\n },\r\n });\r\n this.resolveWith({ ...result, autoUpdate: this.updateVariantName });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n updateCode(nameValue: string) {\r\n if (!this.codeInputTouched && !this.productOption.code) {\r\n this.code = normalizeString(nameValue, '-');\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { FormArray, FormGroup } from '@angular/forms';\r\nimport {\r\n CustomFieldConfig,\r\n DataService,\r\n FacetValue,\r\n FacetWithValues,\r\n flattenFacetValues,\r\n GlobalFlag,\r\n LanguageCode,\r\n ModalService,\r\n Permission,\r\n ProductDetail,\r\n ProductOptionFragment,\r\n ProductVariant,\r\n TaxCategory,\r\n UpdateProductOptionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { PaginationInstance } from 'ngx-pagination';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport { AssetChange } from '../assets/assets.component';\r\nimport {\r\n PaginationConfig,\r\n SelectedAssets,\r\n VariantFormValue,\r\n} from '../product-detail/product-detail.component';\r\nimport { UpdateProductOptionDialogComponent } from '../update-product-option-dialog/update-product-option-dialog.component';\r\n\r\nexport interface VariantAssetChange extends AssetChange {\r\n variantId: string;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-product-variants-list',\r\n templateUrl: './product-variants-list.component.html',\r\n styleUrls: ['./product-variants-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductVariantsListComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input('productVariantsFormArray') formArray: FormArray;\r\n @Input() variants: ProductVariant.Fragment[];\r\n @Input() paginationConfig: PaginationConfig;\r\n @Input() channelPriceIncludesTax: boolean;\r\n @Input() taxCategories: TaxCategory[];\r\n @Input() facets: FacetWithValues.Fragment[];\r\n @Input() optionGroups: ProductDetail.OptionGroups[];\r\n @Input() customFields: CustomFieldConfig[];\r\n @Input() customOptionFields: CustomFieldConfig[];\r\n @Input() activeLanguage: LanguageCode;\r\n @Input() pendingAssetChanges: { [variantId: string]: SelectedAssets };\r\n @Output() assignToChannel = new EventEmitter<ProductVariant.Fragment>();\r\n @Output() removeFromChannel = new EventEmitter<{\r\n channelId: string;\r\n variant: ProductVariant.Fragment;\r\n }>();\r\n @Output() assetChange = new EventEmitter<VariantAssetChange>();\r\n @Output() selectionChange = new EventEmitter<string[]>();\r\n @Output() selectFacetValueClick = new EventEmitter<string[]>();\r\n @Output() updateProductOption = new EventEmitter<UpdateProductOptionInput & { autoUpdate: boolean }>();\r\n selectedVariantIds: string[] = [];\r\n formGroupMap = new Map<string, FormGroup>();\r\n GlobalFlag = GlobalFlag;\r\n globalTrackInventory: boolean;\r\n globalOutOfStockThreshold: number;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n private facetValues: FacetValue.Fragment[];\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private modalService: ModalService,\r\n private dataService: DataService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.dataService.settings.getGlobalSettings('cache-first').single$.subscribe(({ globalSettings }) => {\r\n this.globalTrackInventory = globalSettings.trackInventory;\r\n this.globalOutOfStockThreshold = globalSettings.outOfStockThreshold;\r\n this.changeDetector.markForCheck();\r\n });\r\n this.subscription = this.formArray.valueChanges.subscribe(() => this.changeDetector.markForCheck());\r\n\r\n this.subscription.add(\r\n this.formArray.valueChanges\r\n .pipe(\r\n map(value => value.length),\r\n debounceTime(1),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.buildFormGroupMap();\r\n }),\r\n );\r\n\r\n this.buildFormGroupMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('facets' in changes && !!changes['facets'].currentValue) {\r\n this.facetValues = flattenFacetValues(this.facets);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n isDefaultChannel(channelCode: string): boolean {\r\n return channelCode === DEFAULT_CHANNEL_CODE;\r\n }\r\n\r\n trackById(index: number, item: ProductVariant.Fragment) {\r\n return item.id;\r\n }\r\n\r\n inventoryIsNotTracked(formGroup: FormGroup): boolean {\r\n const trackInventory = formGroup.get('trackInventory')?.value;\r\n return (\r\n trackInventory === GlobalFlag.FALSE ||\r\n (trackInventory === GlobalFlag.INHERIT && this.globalTrackInventory === false)\r\n );\r\n }\r\n\r\n getTaxCategoryName(group: FormGroup): string {\r\n const control = group.get(['taxCategoryId']);\r\n if (control && this.taxCategories) {\r\n const match = this.taxCategories.find(t => t.id === control.value);\r\n return match ? match.name : '';\r\n }\r\n return '';\r\n }\r\n\r\n getStockOnHandMinValue(variant: FormGroup) {\r\n const effectiveOutOfStockThreshold = variant.get('useGlobalOutOfStockThreshold')?.value\r\n ? this.globalOutOfStockThreshold\r\n : variant.get('outOfStockThreshold')?.value;\r\n return effectiveOutOfStockThreshold;\r\n }\r\n\r\n getSaleableStockLevel(variant: ProductVariant.Fragment) {\r\n const effectiveOutOfStockThreshold = variant.useGlobalOutOfStockThreshold\r\n ? this.globalOutOfStockThreshold\r\n : variant.outOfStockThreshold;\r\n return variant.stockOnHand - variant.stockAllocated - effectiveOutOfStockThreshold;\r\n }\r\n\r\n areAllSelected(): boolean {\r\n return !!this.variants && this.selectedVariantIds.length === this.variants.length;\r\n }\r\n\r\n onAssetChange(variantId: string, event: AssetChange) {\r\n this.assetChange.emit({\r\n variantId,\r\n ...event,\r\n });\r\n const index = this.variants.findIndex(v => v.id === variantId);\r\n this.formArray.at(index).markAsDirty();\r\n }\r\n\r\n toggleSelectAll() {\r\n if (this.areAllSelected()) {\r\n this.selectedVariantIds = [];\r\n } else {\r\n this.selectedVariantIds = this.variants.map(v => v.id);\r\n }\r\n this.selectionChange.emit(this.selectedVariantIds);\r\n }\r\n\r\n toggleSelectVariant(variantId: string) {\r\n const index = this.selectedVariantIds.indexOf(variantId);\r\n if (-1 < index) {\r\n this.selectedVariantIds.splice(index, 1);\r\n } else {\r\n this.selectedVariantIds.push(variantId);\r\n }\r\n this.selectionChange.emit(this.selectedVariantIds);\r\n }\r\n\r\n optionGroupName(optionGroupId: string): string | undefined {\r\n const group = this.optionGroups.find(g => g.id === optionGroupId);\r\n if (group) {\r\n const translation =\r\n group?.translations.find(t => t.languageCode === this.activeLanguage) ??\r\n group.translations[0];\r\n return translation.name;\r\n }\r\n }\r\n\r\n optionName(option: ProductOptionFragment) {\r\n const translation =\r\n option.translations.find(t => t.languageCode === this.activeLanguage) ?? option.translations[0];\r\n return translation.name;\r\n }\r\n\r\n pendingFacetValues(variant: ProductVariant.Fragment) {\r\n if (this.facets) {\r\n const formFacetValueIds = this.getFacetValueIds(variant.id);\r\n const variantFacetValueIds = variant.facetValues.map(fv => fv.id);\r\n return formFacetValueIds\r\n .filter(x => !variantFacetValueIds.includes(x))\r\n .map(id => this.facetValues.find(fv => fv.id === id))\r\n .filter(notNullOrUndefined);\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n existingFacetValues(variant: ProductVariant.Fragment) {\r\n const formFacetValueIds = this.getFacetValueIds(variant.id);\r\n const intersection = [...formFacetValueIds].filter(x =>\r\n variant.facetValues.map(fv => fv.id).includes(x),\r\n );\r\n return intersection\r\n .map(id => variant.facetValues.find(fv => fv.id === id))\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n removeFacetValue(variant: ProductVariant.Fragment, facetValueId: string) {\r\n const formGroup = this.formGroupMap.get(variant.id);\r\n if (formGroup) {\r\n const newValue = (formGroup.value as VariantFormValue).facetValueIds.filter(\r\n id => id !== facetValueId,\r\n );\r\n formGroup.patchValue({\r\n facetValueIds: newValue,\r\n });\r\n formGroup.markAsDirty();\r\n }\r\n }\r\n\r\n isVariantSelected(variantId: string): boolean {\r\n return -1 < this.selectedVariantIds.indexOf(variantId);\r\n }\r\n\r\n editOption(option: ProductVariant.Options) {\r\n this.modalService\r\n .fromComponent(UpdateProductOptionDialogComponent, {\r\n size: 'md',\r\n locals: {\r\n productOption: option,\r\n activeLanguage: this.activeLanguage,\r\n customFields: this.customOptionFields,\r\n },\r\n })\r\n .subscribe(result => {\r\n if (result) {\r\n this.updateProductOption.emit(result);\r\n }\r\n });\r\n }\r\n\r\n private buildFormGroupMap() {\r\n this.formGroupMap.clear();\r\n for (const controlGroup of this.formArray.controls) {\r\n this.formGroupMap.set(controlGroup.value.id, controlGroup as FormGroup);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n private getFacetValueIds(id: string): string[] {\r\n const formValue: VariantFormValue = this.formGroupMap.get(id)?.value;\r\n return formValue.facetValueIds;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { FormArray, FormGroup } from '@angular/forms';\r\nimport { Permission, ProductDetail, ProductVariant } from '@vendure/admin-ui/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport { PaginationConfig, SelectedAssets } from '../product-detail/product-detail.component';\r\n\r\n@Component({\r\n selector: 'vdr-product-variants-table',\r\n templateUrl: './product-variants-table.component.html',\r\n styleUrls: ['./product-variants-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductVariantsTableComponent implements OnInit, OnDestroy {\r\n @Input('productVariantsFormArray') formArray: FormArray;\r\n @Input() variants: ProductVariant.Fragment[];\r\n @Input() paginationConfig: PaginationConfig;\r\n @Input() channelPriceIncludesTax: boolean;\r\n @Input() optionGroups: ProductDetail.OptionGroups[];\r\n @Input() pendingAssetChanges: { [variantId: string]: SelectedAssets };\r\n formGroupMap = new Map<string, FormGroup>();\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n private subscription: Subscription;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.subscription = this.formArray.valueChanges\r\n .pipe(\r\n map(value => value.length),\r\n debounceTime(1),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.buildFormGroupMap();\r\n });\r\n\r\n this.buildFormGroupMap();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: any) {\r\n if ((item as any).id != null) {\r\n return (item as any).id;\r\n } else {\r\n return index;\r\n }\r\n }\r\n\r\n getFeaturedAsset(variant: ProductVariant.Fragment) {\r\n return this.pendingAssetChanges[variant.id]?.featuredAsset || variant.featuredAsset;\r\n }\r\n\r\n optionGroupName(optionGroupId: string): string | undefined {\r\n const group = this.optionGroups.find(g => g.id === optionGroupId);\r\n return group && group.name;\r\n }\r\n\r\n private buildFormGroupMap() {\r\n this.formGroupMap.clear();\r\n for (const controlGroup of this.formArray.controls) {\r\n this.formGroupMap.set(controlGroup.value.id, controlGroup as FormGroup);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-variant-price-detail',\r\n templateUrl: './variant-price-detail.component.html',\r\n styleUrls: ['./variant-price-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class VariantPriceDetailComponent implements OnInit, OnChanges {\r\n @Input() priceIncludesTax: boolean;\r\n @Input() price: number;\r\n @Input() currencyCode: string;\r\n @Input() taxCategoryId: string;\r\n\r\n grossPrice$: Observable<number>;\r\n taxRate$: Observable<number>;\r\n\r\n private priceChange$ = new BehaviorSubject<number>(0);\r\n private taxCategoryIdChange$ = new BehaviorSubject<string>('');\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n const taxRates$ = this.dataService.settings\r\n .getTaxRatesSimple(999, 0, 'cache-first')\r\n .mapStream(data => data.taxRates.items);\r\n const activeChannel$ = this.dataService.settings\r\n .getActiveChannel('cache-first')\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel);\r\n\r\n this.taxRate$ = combineLatest(activeChannel$, taxRates$, this.taxCategoryIdChange$).pipe(\r\n map(([channel, taxRates, taxCategoryId]) => {\r\n const defaultTaxZone = channel.defaultTaxZone;\r\n if (!defaultTaxZone) {\r\n return 0;\r\n }\r\n const applicableRate = taxRates.find(\r\n taxRate => taxRate.zone.id === defaultTaxZone.id && taxRate.category.id === taxCategoryId,\r\n );\r\n\r\n if (!applicableRate) {\r\n return 0;\r\n }\r\n return applicableRate.value;\r\n }),\r\n );\r\n\r\n this.grossPrice$ = combineLatest(this.taxRate$, this.priceChange$).pipe(\r\n map(([taxRate, price]) => {\r\n return Math.round(price * ((100 + taxRate) / 100));\r\n }),\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ('price' in changes) {\r\n this.priceChange$.next(changes.price.currentValue);\r\n }\r\n if ('taxCategoryId' in changes) {\r\n this.taxCategoryIdChange$.next(changes.taxCategoryId.currentValue);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { catalogRoutes } from './catalog.routes';\r\nimport { ApplyFacetDialogComponent } from './components/apply-facet-dialog/apply-facet-dialog.component';\r\nimport { AssetDetailComponent } from './components/asset-detail/asset-detail.component';\r\nimport { AssetListComponent } from './components/asset-list/asset-list.component';\r\nimport { AssetsComponent } from './components/assets/assets.component';\r\nimport { AssignProductsToChannelDialogComponent } from './components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\r\nimport { CollectionContentsComponent } from './components/collection-contents/collection-contents.component';\r\nimport { CollectionDetailComponent } from './components/collection-detail/collection-detail.component';\r\nimport { CollectionListComponent } from './components/collection-list/collection-list.component';\r\nimport { CollectionTreeNodeComponent } from './components/collection-tree/collection-tree-node.component';\r\nimport { CollectionTreeComponent } from './components/collection-tree/collection-tree.component';\r\nimport { ConfirmVariantDeletionDialogComponent } from './components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\r\nimport { FacetDetailComponent } from './components/facet-detail/facet-detail.component';\r\nimport { FacetListComponent } from './components/facet-list/facet-list.component';\r\nimport { GenerateProductVariantsComponent } from './components/generate-product-variants/generate-product-variants.component';\r\nimport { OptionValueInputComponent } from './components/option-value-input/option-value-input.component';\r\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\r\nimport { ProductListComponent } from './components/product-list/product-list.component';\r\nimport { ProductOptionsEditorComponent } from './components/product-options-editor/product-options-editor.component';\r\nimport { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';\r\nimport { ProductVariantsListComponent } from './components/product-variants-list/product-variants-list.component';\r\nimport { ProductVariantsTableComponent } from './components/product-variants-table/product-variants-table.component';\r\nimport { UpdateProductOptionDialogComponent } from './components/update-product-option-dialog/update-product-option-dialog.component';\r\nimport { VariantPriceDetailComponent } from './components/variant-price-detail/variant-price-detail.component';\r\n\r\nconst CATALOG_COMPONENTS = [\r\n ProductListComponent,\r\n ProductDetailComponent,\r\n FacetListComponent,\r\n FacetDetailComponent,\r\n GenerateProductVariantsComponent,\r\n ProductVariantsListComponent,\r\n ApplyFacetDialogComponent,\r\n AssetListComponent,\r\n AssetsComponent,\r\n VariantPriceDetailComponent,\r\n CollectionListComponent,\r\n CollectionDetailComponent,\r\n CollectionTreeComponent,\r\n CollectionTreeNodeComponent,\r\n CollectionContentsComponent,\r\n ProductVariantsTableComponent,\r\n OptionValueInputComponent,\r\n UpdateProductOptionDialogComponent,\r\n ProductVariantsEditorComponent,\r\n AssignProductsToChannelDialogComponent,\r\n AssetDetailComponent,\r\n ConfirmVariantDeletionDialogComponent,\r\n ProductOptionsEditorComponent,\r\n];\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(catalogRoutes)],\r\n exports: [...CATALOG_COMPONENTS],\r\n declarations: [...CATALOG_COMPONENTS],\r\n})\r\nexport class CatalogModule {}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './catalog.module';\nexport * from './catalog.routes';\nexport * from './components/apply-facet-dialog/apply-facet-dialog.component';\nexport * from './components/asset-detail/asset-detail.component';\nexport * from './components/asset-list/asset-list.component';\nexport * from './components/assets/assets.component';\nexport * from './components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\nexport * from './components/collection-contents/collection-contents.component';\nexport * from './components/collection-detail/collection-detail.component';\nexport * from './components/collection-list/collection-list.component';\nexport * from './components/collection-tree/array-to-tree';\nexport * from './components/collection-tree/collection-tree-node.component';\nexport * from './components/collection-tree/collection-tree.component';\nexport * from './components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\nexport * from './components/facet-detail/facet-detail.component';\nexport * from './components/facet-list/facet-list.component';\nexport * from './components/generate-product-variants/generate-product-variants.component';\nexport * from './components/option-value-input/option-value-input.component';\nexport * from './components/product-detail/product-detail.component';\nexport * from './components/product-list/product-list.component';\nexport * from './components/product-options-editor/product-options-editor.component';\nexport * from './components/product-variants-editor/product-variants-editor.component';\nexport * from './components/product-variants-list/product-variants-list.component';\nexport * from './components/product-variants-table/product-variants-table.component';\nexport * from './components/update-product-option-dialog/update-product-option-dialog.component';\nexport * from './components/variant-price-detail/variant-price-detail.component';\nexport * from './providers/product-detail/product-detail.service';\nexport * from './providers/product-detail/replace-last';\nexport * from './providers/routing/asset-resolver';\nexport * from './providers/routing/collection-resolver';\nexport * from './providers/routing/facet-resolver';\nexport * from './providers/routing/product-resolver';\nexport * from './providers/routing/product-variants-resolver';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["FormGroup","FormControl","_","BaseDetailComponent","Component","ChangeDetectionStrategy","Router","ActivatedRoute","ServerConfigService","NotificationService","DataService","FormBuilder","BehaviorSubject","SortOrder","LogicalOperator","combineLatest","map","debounceTime","takeUntil","finalize","switchMap","DeletionResult","EMPTY","BaseListComponent","ModalService","Permission","Subject","Validators","unicodePatternValidator","merge","filter","of","take","findTranslation","normalizeString","getConfigArgValue","mergeMap","createUpdatedTranslatable","encodeConfigArgValue","ChangeDetectorRef","LocalStorageService","ViewChild","shareReplay","distinctUntilChanged","tap","mapTo","forkJoin","notNullOrUndefined","throwError","Injectable","FacetValueSelectorComponent","from","startWith","skipUntil","skip","flattenFacetValues","DEFAULT_CHANNEL_CODE","unique","withLatestFrom","Location","delay","JobState","JobQueueService","FormArray","getDefaultUiLanguage","generateAllCombinations","pick","defaultIfEmpty","AssetType","BaseEntityResolver","createResolveData","CanDeactivateDetailGuard","detailBreadcrumb","EventEmitter","AssetPickerDialogComponent","AssetPreviewDialogComponent","moveItemInArray","Input","HostBinding","Output","catchError","ContentChild","TemplateRef","SkipSelf","Optional","ViewChildren","ElementRef","NG_VALUE_ACCESSOR","forwardRef","GlobalFlag","NgModule","SharedModule","RouterModule"],"mappings":"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"}
1
+ {"version":3,"file":"vendure-admin-ui-catalog.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/catalog/src/components/asset-detail/asset-detail.component.ts","../../src/lib/catalog/src/components/asset-list/asset-list.component.ts","../../src/lib/catalog/src/components/collection-detail/collection-detail.component.ts","../../src/lib/catalog/src/components/collection-list/collection-list.component.ts","../../src/lib/catalog/src/components/facet-detail/facet-detail.component.ts","../../src/lib/catalog/src/components/facet-list/facet-list.component.ts","../../src/lib/catalog/src/providers/product-detail/replace-last.ts","../../src/lib/catalog/src/providers/product-detail/product-detail.service.ts","../../src/lib/catalog/src/components/apply-facet-dialog/apply-facet-dialog.component.ts","../../src/lib/catalog/src/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.ts","../../src/lib/catalog/src/components/product-detail/product-detail.component.ts","../../src/lib/catalog/src/components/product-list/product-list.component.ts","../../src/lib/catalog/src/components/product-options-editor/product-options-editor.component.ts","../../src/lib/catalog/src/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.ts","../../src/lib/catalog/src/components/product-variants-editor/product-variants-editor.component.ts","../../src/lib/catalog/src/providers/routing/asset-resolver.ts","../../src/lib/catalog/src/providers/routing/collection-resolver.ts","../../src/lib/catalog/src/providers/routing/facet-resolver.ts","../../src/lib/catalog/src/providers/routing/product-resolver.ts","../../src/lib/catalog/src/providers/routing/product-variants-resolver.ts","../../src/lib/catalog/src/catalog.routes.ts","../../src/lib/catalog/src/components/assets/assets.component.ts","../../src/lib/catalog/src/components/collection-contents/collection-contents.component.ts","../../src/lib/catalog/src/components/collection-tree/array-to-tree.ts","../../src/lib/catalog/src/components/collection-tree/collection-tree.component.ts","../../src/lib/catalog/src/components/collection-tree/collection-tree-node.component.ts","../../src/lib/catalog/src/components/generate-product-variants/generate-product-variants.component.ts","../../src/lib/catalog/src/components/option-value-input/option-value-input.component.ts","../../src/lib/catalog/src/components/update-product-option-dialog/update-product-option-dialog.component.ts","../../src/lib/catalog/src/components/product-variants-list/product-variants-list.component.ts","../../src/lib/catalog/src/components/product-variants-table/product-variants-table.component.ts","../../src/lib/catalog/src/components/variant-price-detail/variant-price-detail.component.ts","../../src/lib/catalog/src/catalog.module.ts","../../src/lib/catalog/src/public_api.ts","../../src/lib/catalog/src/vendure-admin-ui-catalog.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseDetailComponent,\r\n CustomFieldConfig,\r\n GetAsset,\r\n LanguageCode,\r\n} from '@vendure/admin-ui/core';\r\nimport { DataService, NotificationService, ServerConfigService } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-asset-detail',\r\n templateUrl: './asset-detail.component.html',\r\n styleUrls: ['./asset-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssetDetailComponent extends BaseDetailComponent<GetAsset.Asset> implements OnInit, OnDestroy {\r\n detailForm = new FormGroup({});\r\n customFields: CustomFieldConfig[];\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private notificationService: NotificationService,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Asset');\r\n }\r\n\r\n ngOnInit() {\r\n this.detailForm = new FormGroup({\r\n name: new FormControl(''),\r\n tags: new FormControl([]),\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n this.init();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n onAssetChange(event: { id: string; name: string; tags: string[] }) {\r\n this.detailForm.get('name')?.setValue(event.name);\r\n this.detailForm.get('tags')?.setValue(event.tags);\r\n this.detailForm.markAsDirty();\r\n }\r\n\r\n save() {\r\n this.dataService.product\r\n .updateAsset({\r\n id: this.id,\r\n name: this.detailForm.value.name,\r\n tags: this.detailForm.value.tags,\r\n customFields: this.detailForm.value.customFields,\r\n })\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Asset' });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Asset',\r\n });\r\n },\r\n );\r\n }\r\n\r\n protected setFormValues(entity: GetAsset.Asset, languageCode: LanguageCode): void {\r\n this.detailForm.get('name')?.setValue(entity.name);\r\n this.detailForm.get('tags')?.setValue(entity.tags);\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseListComponent,\r\n DataService,\r\n DeletionResult,\r\n GetAssetList,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n SortOrder,\r\n TagFragment,\r\n} from '@vendure/admin-ui/core';\r\nimport { PaginationInstance } from 'ngx-pagination';\r\nimport { BehaviorSubject, combineLatest, EMPTY, Observable } from 'rxjs';\r\nimport { debounceTime, finalize, map, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-asset-list',\r\n templateUrl: './asset-list.component.html',\r\n styleUrls: ['./asset-list.component.scss'],\r\n})\r\nexport class AssetListComponent\r\n extends BaseListComponent<GetAssetList.Query, GetAssetList.Items, GetAssetList.Variables>\r\n implements OnInit {\r\n searchTerm$ = new BehaviorSubject<string | undefined>(undefined);\r\n filterByTags$ = new BehaviorSubject<TagFragment[] | undefined>(undefined);\r\n uploading = false;\r\n allTags$: Observable<TagFragment[]>;\r\n paginationConfig$: Observable<PaginationInstance>;\r\n\r\n constructor(\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private dataService: DataService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n ) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.product.getAssetList(...args),\r\n data => data.assets,\r\n (skip, take) => {\r\n const searchTerm = this.searchTerm$.value;\r\n const tags = this.filterByTags$.value?.map(t => t.value);\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n ...(searchTerm\r\n ? {\r\n filter: {\r\n name: { contains: searchTerm },\r\n },\r\n }\r\n : {}),\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n tags,\r\n tagsOperator: LogicalOperator.AND,\r\n },\r\n };\r\n },\r\n { take: 25, skip: 0 },\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.paginationConfig$ = combineLatest(this.itemsPerPage$, this.currentPage$, this.totalItems$).pipe(\r\n map(([itemsPerPage, currentPage, totalItems]) => ({ itemsPerPage, currentPage, totalItems })),\r\n );\r\n this.searchTerm$.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe(() => this.refresh());\r\n\r\n this.filterByTags$.pipe(takeUntil(this.destroy$)).subscribe(() => this.refresh());\r\n this.allTags$ = this.dataService.product.getTagList().mapStream(data => data.tags.items);\r\n }\r\n\r\n filesSelected(files: File[]) {\r\n if (files.length) {\r\n this.uploading = true;\r\n this.dataService.product\r\n .createAssets(files)\r\n .pipe(finalize(() => (this.uploading = false)))\r\n .subscribe(({ createAssets }) => {\r\n let successCount = 0;\r\n for (const result of createAssets) {\r\n switch (result.__typename) {\r\n case 'Asset':\r\n successCount++;\r\n break;\r\n case 'MimeTypeError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n if (0 < successCount) {\r\n super.refresh();\r\n this.notificationService.success(_('asset.notify-create-assets-success'), {\r\n count: successCount,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n deleteAssets(assets: Asset[]) {\r\n this.showModalAndDelete(assets.map(a => a.id))\r\n .pipe(\r\n switchMap(response => {\r\n if (response.result === DeletionResult.DELETED) {\r\n return [true];\r\n } else {\r\n return this.showModalAndDelete(\r\n assets.map(a => a.id),\r\n response.message || '',\r\n ).pipe(map(r => r.result === DeletionResult.DELETED));\r\n }\r\n }),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Assets',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Assets',\r\n });\r\n },\r\n );\r\n }\r\n\r\n private showModalAndDelete(assetIds: string[], message?: string) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-assets'),\r\n translationVars: {\r\n count: assetIds.length,\r\n },\r\n body: message,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(res => (res ? this.dataService.product.deleteAssets(assetIds, !!message) : EMPTY)),\r\n map(res => res.deleteAssets),\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseDetailComponent,\r\n Collection,\r\n ConfigurableOperation,\r\n ConfigurableOperationDefinition,\r\n ConfigurableOperationInput,\r\n CreateCollectionInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n encodeConfigArgValue,\r\n findTranslation,\r\n getConfigArgValue,\r\n LanguageCode,\r\n LocalStorageService,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n ServerConfigService,\r\n unicodePatternValidator,\r\n UpdateCollectionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { combineLatest, merge, Observable, of, Subject } from 'rxjs';\r\nimport { debounceTime, filter, map, mergeMap, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { CollectionContentsComponent } from '../collection-contents/collection-contents.component';\r\n\r\n@Component({\r\n selector: 'vdr-collection-detail',\r\n templateUrl: './collection-detail.component.html',\r\n styleUrls: ['./collection-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionDetailComponent\r\n extends BaseDetailComponent<Collection.Fragment>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields: CustomFieldConfig[];\r\n detailForm: FormGroup;\r\n assetChanges: { assets?: Asset[]; featuredAsset?: Asset } = {};\r\n filters: ConfigurableOperation[] = [];\r\n allFilters: ConfigurableOperationDefinition[] = [];\r\n updatedFilters$: Observable<ConfigurableOperationInput[]>;\r\n livePreview = false;\r\n parentId$: Observable<string | undefined>;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateCollection];\r\n private filterRemoved$ = new Subject<void>();\r\n @ViewChild('collectionContents') contentsComponent: CollectionContentsComponent;\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private localStorageService: LocalStorageService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Collection');\r\n this.detailForm = this.formBuilder.group({\r\n name: ['', Validators.required],\r\n slug: ['', unicodePatternValidator(/^[\\p{Letter}0-9_-]+$/)],\r\n description: '',\r\n visible: false,\r\n filters: this.formBuilder.array([]),\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n });\r\n this.livePreview = this.localStorageService.get('livePreviewCollectionContents') ?? false;\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.dataService.collection.getCollectionFilters().single$.subscribe(res => {\r\n this.allFilters = res.collectionFilters;\r\n });\r\n const filtersFormArray = this.detailForm.get('filters') as FormArray;\r\n this.updatedFilters$ = merge(filtersFormArray.statusChanges, this.filterRemoved$).pipe(\r\n debounceTime(200),\r\n filter(() => filtersFormArray.touched),\r\n map(() =>\r\n this.mapOperationsToInputs(this.filters, filtersFormArray.value).filter(_filter => {\r\n // ensure all the arguments have valid values. E.g. a newly-added\r\n // filter will not yet have valid values\r\n for (const arg of _filter.arguments) {\r\n if (arg.value === '') {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }),\r\n ),\r\n );\r\n this.parentId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('parentId') || undefined),\r\n switchMap(parentId => {\r\n if (parentId) {\r\n return of(parentId);\r\n } else {\r\n return this.entity$.pipe(map(collection => collection.parent?.id));\r\n }\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n getFilterDefinition(_filter: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\r\n return this.allFilters.find(f => f.code === _filter.code);\r\n }\r\n\r\n assetsChanged(): boolean {\r\n return !!Object.values(this.assetChanges).length;\r\n }\r\n\r\n /**\r\n * If creating a new Collection, automatically generate the slug based on the collection name.\r\n */\r\n updateSlug(nameValue: string) {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(take(1))\r\n .subscribe(([entity, languageCode]) => {\r\n const slugControl = this.detailForm.get(['slug']);\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n const currentSlugIsEmpty = !currentTranslation || !currentTranslation.slug;\r\n if (slugControl && slugControl.pristine && currentSlugIsEmpty) {\r\n slugControl.setValue(normalizeString(`${nameValue}`, '-'));\r\n }\r\n });\r\n }\r\n\r\n addFilter(collectionFilter: ConfigurableOperation) {\r\n const filtersArray = this.detailForm.get('filters') as FormArray;\r\n const argsHash = collectionFilter.args.reduce(\r\n (output, arg) => ({\r\n ...output,\r\n [arg.name]: getConfigArgValue(arg.value),\r\n }),\r\n {},\r\n );\r\n filtersArray.push(\r\n this.formBuilder.control({\r\n code: collectionFilter.code,\r\n args: argsHash,\r\n }),\r\n );\r\n this.filters.push({\r\n code: collectionFilter.code,\r\n args: collectionFilter.args.map(a => ({ name: a.name, value: getConfigArgValue(a.value) })),\r\n });\r\n }\r\n\r\n removeFilter(index: number) {\r\n const filtersArray = this.detailForm.get('filters') as FormArray;\r\n if (index !== -1) {\r\n filtersArray.removeAt(index);\r\n filtersArray.markAsDirty();\r\n filtersArray.markAsTouched();\r\n this.filters.splice(index, 1);\r\n this.filterRemoved$.next();\r\n }\r\n }\r\n\r\n create() {\r\n if (!this.detailForm.dirty) {\r\n return;\r\n }\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([category, languageCode]) => {\r\n const input = this.getUpdatedCollection(\r\n category,\r\n this.detailForm,\r\n languageCode,\r\n ) as CreateCollectionInput;\r\n const parentId = this.route.snapshot.paramMap.get('parentId');\r\n if (parentId) {\r\n input.parentId = parentId;\r\n }\r\n return this.dataService.collection.createCollection(input);\r\n }),\r\n )\r\n .subscribe(\r\n data => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Collection',\r\n });\r\n this.assetChanges = {};\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', data.createCollection.id], { relativeTo: this.route });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Collection',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([category, languageCode]) => {\r\n const input = this.getUpdatedCollection(\r\n category,\r\n this.detailForm,\r\n languageCode,\r\n ) as UpdateCollectionInput;\r\n return this.dataService.collection.updateCollection(input);\r\n }),\r\n )\r\n .subscribe(\r\n () => {\r\n this.assetChanges = {};\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Collection',\r\n });\r\n this.contentsComponent.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Collection',\r\n });\r\n },\r\n );\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return super.canDeactivate() && !this.assetChanges.assets && !this.assetChanges.featuredAsset;\r\n }\r\n\r\n toggleLivePreview() {\r\n this.livePreview = !this.livePreview;\r\n this.localStorageService.set('livePreviewCollectionContents', this.livePreview);\r\n }\r\n\r\n trackByFn(index: number, item: ConfigurableOperation) {\r\n return JSON.stringify(item);\r\n }\r\n\r\n /**\r\n * Sets the values of the form on changes to the category or current language.\r\n */\r\n protected setFormValues(entity: Collection.Fragment, languageCode: LanguageCode) {\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n\r\n this.detailForm.patchValue({\r\n name: currentTranslation ? currentTranslation.name : '',\r\n slug: currentTranslation ? currentTranslation.slug : '',\r\n description: currentTranslation ? currentTranslation.description : '',\r\n visible: !entity.isPrivate,\r\n });\r\n\r\n const formArray = this.detailForm.get('filters') as FormArray;\r\n if (formArray.length !== entity.filters.length) {\r\n formArray.clear();\r\n this.filters = [];\r\n entity.filters.forEach(f => this.addFilter(f));\r\n }\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['customFields']),\r\n entity,\r\n currentTranslation,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Given a category and the value of the form, this method creates an updated copy of the category which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedCollection(\r\n category: Collection.Fragment,\r\n form: FormGroup,\r\n languageCode: LanguageCode,\r\n ): CreateCollectionInput | UpdateCollectionInput {\r\n const updatedCategory = createUpdatedTranslatable({\r\n translatable: category,\r\n updatedFields: form.value,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: category.name || '',\r\n slug: category.slug || '',\r\n description: category.description || '',\r\n },\r\n });\r\n return {\r\n ...updatedCategory,\r\n assetIds: this.assetChanges.assets?.map(a => a.id),\r\n featuredAssetId: this.assetChanges.featuredAsset?.id,\r\n isPrivate: !form.value.visible,\r\n filters: this.mapOperationsToInputs(this.filters, this.detailForm.value.filters),\r\n };\r\n }\r\n\r\n /**\r\n * Maps an array of conditions or actions to the input format expected by the GraphQL API.\r\n */\r\n private mapOperationsToInputs(\r\n operations: ConfigurableOperation[],\r\n formValueOperations: any,\r\n ): ConfigurableOperationInput[] {\r\n return operations.map((o, i) => {\r\n return {\r\n code: o.code,\r\n arguments: Object.entries(formValueOperations[i].args).map(([name, value], j) => {\r\n return {\r\n name,\r\n value: encodeConfigArgValue(value),\r\n };\r\n }),\r\n };\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n DataService,\r\n GetCollectionList,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n QueryResult,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { combineLatest, EMPTY, Observable, Subject } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n map,\r\n shareReplay,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport { RearrangeEvent } from '../collection-tree/collection-tree.component';\r\n\r\n@Component({\r\n selector: 'vdr-collection-list',\r\n templateUrl: './collection-list.component.html',\r\n styleUrls: ['./collection-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionListComponent implements OnInit, OnDestroy {\r\n filterTermControl = new FormControl('');\r\n activeCollectionId$: Observable<string | null>;\r\n activeCollectionTitle$: Observable<string>;\r\n items$: Observable<GetCollectionList.Items[]>;\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n contentLanguage$: Observable<LanguageCode>;\r\n expandAll = false;\r\n expandedIds: string[] = [];\r\n private queryResult: QueryResult<any>;\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n private dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private serverConfigService: ServerConfigService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryResult = this.dataService.collection.getCollections(1000, 0).refetchOnChannelChange();\r\n this.items$ = this.queryResult.mapStream(data => data.collections.items).pipe(shareReplay(1));\r\n this.activeCollectionId$ = this.route.paramMap.pipe(\r\n map(pm => pm.get('contents')),\r\n distinctUntilChanged(),\r\n );\r\n this.expandedIds = this.route.snapshot.queryParamMap.get('expanded')?.split(',') ?? [];\r\n this.expandAll = this.route.snapshot.queryParamMap.get('expanded') === 'all';\r\n\r\n this.activeCollectionTitle$ = combineLatest(this.activeCollectionId$, this.items$).pipe(\r\n map(([id, collections]) => {\r\n if (id) {\r\n const match = collections.find(c => c.id === id);\r\n return match ? match.name : '';\r\n }\r\n return '';\r\n }),\r\n );\r\n this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();\r\n this.contentLanguage$ = this.dataService.client\r\n .uiState()\r\n .mapStream(({ uiState }) => uiState.contentLanguage)\r\n .pipe(tap(() => this.refresh()));\r\n\r\n this.filterTermControl.valueChanges\r\n .pipe(debounceTime(250), takeUntil(this.destroy$))\r\n .subscribe(term => {\r\n this.router.navigate(['./'], {\r\n queryParams: {\r\n q: term || undefined,\r\n },\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n });\r\n });\r\n\r\n this.route.queryParamMap\r\n .pipe(\r\n map(qpm => qpm.get('q')),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.refresh());\r\n this.filterTermControl.patchValue(this.route.snapshot.queryParamMap.get('q'));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryResult.completed$.next();\r\n this.destroy$.next(undefined);\r\n this.destroy$.complete();\r\n }\r\n\r\n toggleExpandAll() {\r\n this.router.navigate(['./'], {\r\n queryParams: {\r\n expanded: this.expandAll ? 'all' : undefined,\r\n },\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n });\r\n }\r\n\r\n onRearrange(event: RearrangeEvent) {\r\n this.dataService.collection.moveCollection([event]).subscribe({\r\n next: () => {\r\n this.notificationService.success(_('common.notify-saved-changes'));\r\n this.refresh();\r\n },\r\n error: err => {\r\n this.notificationService.error(_('common.notify-save-changes-error'));\r\n },\r\n });\r\n }\r\n\r\n deleteCollection(id: string) {\r\n this.items$\r\n .pipe(\r\n take(1),\r\n map(items => -1 < items.findIndex(i => i.parent && i.parent.id === id)),\r\n switchMap(hasChildren => {\r\n return this.modalService.dialog({\r\n title: _('catalog.confirm-delete-collection'),\r\n body: hasChildren\r\n ? _('catalog.confirm-delete-collection-and-children-body')\r\n : undefined,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n });\r\n }),\r\n switchMap(response => (response ? this.dataService.collection.deleteCollection(id) : EMPTY)),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Collection',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Collection',\r\n });\r\n },\r\n );\r\n }\r\n\r\n closeContents() {\r\n const params = { ...this.route.snapshot.params };\r\n delete params.contents;\r\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\r\n }\r\n\r\n setLanguage(code: LanguageCode) {\r\n this.dataService.client.setContentLanguage(code).subscribe();\r\n }\r\n\r\n private refresh() {\r\n const filterTerm = this.route.snapshot.queryParamMap.get('q');\r\n this.queryResult.ref.refetch({\r\n options: {\r\n skip: 0,\r\n take: 1000,\r\n ...(filterTerm\r\n ? {\r\n filter: {\r\n name: {\r\n contains: filterTerm,\r\n },\r\n },\r\n }\r\n : {}),\r\n },\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CreateFacetInput,\r\n CreateFacetValueInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n DeletionResult,\r\n FacetWithValues,\r\n findTranslation,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n ServerConfigService,\r\n UpdateFacetInput,\r\n UpdateFacetValueInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { combineLatest, EMPTY, forkJoin, Observable } from 'rxjs';\r\nimport { map, mapTo, mergeMap, switchMap, take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-facet-detail',\r\n templateUrl: './facet-detail.component.html',\r\n styleUrls: ['./facet-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FacetDetailComponent\r\n extends BaseDetailComponent<FacetWithValues.Fragment>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields: CustomFieldConfig[];\r\n customValueFields: CustomFieldConfig[];\r\n detailForm: FormGroup;\r\n values: Array<FacetWithValues.Values | { name: string; code: string }>;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateFacet];\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private formBuilder: FormBuilder,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Facet');\r\n this.customValueFields = this.getCustomFieldConfig('FacetValue');\r\n this.detailForm = this.formBuilder.group({\r\n facet: this.formBuilder.group({\r\n code: ['', Validators.required],\r\n name: '',\r\n visible: true,\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n }),\r\n values: this.formBuilder.array([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n updateCode(currentCode: string, nameValue: string) {\r\n if (!currentCode) {\r\n const codeControl = this.detailForm.get(['facet', 'code']);\r\n if (codeControl && codeControl.pristine) {\r\n codeControl.setValue(normalizeString(nameValue, '-'));\r\n }\r\n }\r\n }\r\n\r\n updateValueCode(currentCode: string, nameValue: string, index: number) {\r\n if (!currentCode) {\r\n const codeControl = this.detailForm.get(['values', index, 'code']);\r\n if (codeControl && codeControl.pristine) {\r\n codeControl.setValue(normalizeString(nameValue, '-'));\r\n }\r\n }\r\n }\r\n\r\n customValueFieldIsSet(index: number, name: string): boolean {\r\n return !!this.detailForm.get(['values', index, 'customFields', name]);\r\n }\r\n\r\n getValuesFormArray(): FormArray {\r\n return this.detailForm.get('values') as FormArray;\r\n }\r\n\r\n addFacetValue() {\r\n const valuesFormArray = this.detailForm.get('values') as FormArray | null;\r\n if (valuesFormArray) {\r\n const valueGroup = this.formBuilder.group({\r\n id: '',\r\n name: ['', Validators.required],\r\n code: '',\r\n });\r\n const newValue: any = { name: '', code: '' };\r\n if (this.customValueFields.length) {\r\n const customValueFieldsGroup = new FormGroup({});\r\n newValue.customFields = {};\r\n\r\n for (const fieldDef of this.customValueFields) {\r\n const key = fieldDef.name;\r\n customValueFieldsGroup.addControl(key, new FormControl());\r\n }\r\n\r\n valueGroup.addControl('customFields', customValueFieldsGroup);\r\n }\r\n valuesFormArray.insert(valuesFormArray.length, valueGroup);\r\n this.values.push(newValue);\r\n }\r\n }\r\n\r\n create() {\r\n const facetForm = this.detailForm.get('facet');\r\n if (!facetForm || !facetForm.dirty) {\r\n return;\r\n }\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([facet, languageCode]) => {\r\n const newFacet = this.getUpdatedFacet(\r\n facet,\r\n facetForm as FormGroup,\r\n languageCode,\r\n ) as CreateFacetInput;\r\n return this.dataService.facet.createFacet(newFacet);\r\n }),\r\n switchMap(data => this.dataService.facet.getAllFacets().single$.pipe(mapTo(data))),\r\n )\r\n .subscribe(\r\n data => {\r\n this.notificationService.success(_('common.notify-create-success'), { entity: 'Facet' });\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.router.navigate(['../', data.createFacet.id], { relativeTo: this.route });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Facet',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([facet, languageCode]) => {\r\n const facetGroup = this.detailForm.get('facet');\r\n const updateOperations: Array<Observable<any>> = [];\r\n\r\n if (facetGroup && facetGroup.dirty) {\r\n const newFacet = this.getUpdatedFacet(\r\n facet,\r\n facetGroup as FormGroup,\r\n languageCode,\r\n ) as UpdateFacetInput;\r\n if (newFacet) {\r\n updateOperations.push(this.dataService.facet.updateFacet(newFacet));\r\n }\r\n }\r\n const valuesArray = this.detailForm.get('values');\r\n if (valuesArray && valuesArray.dirty) {\r\n const createdValues = this.getCreatedFacetValues(\r\n facet,\r\n valuesArray as FormArray,\r\n languageCode,\r\n );\r\n if (createdValues.length) {\r\n updateOperations.push(\r\n this.dataService.facet\r\n .createFacetValues(createdValues)\r\n .pipe(switchMap(() => this.dataService.facet.getFacet(this.id).single$)),\r\n );\r\n }\r\n const updatedValues = this.getUpdatedFacetValues(\r\n facet,\r\n valuesArray as FormArray,\r\n languageCode,\r\n );\r\n if (updatedValues.length) {\r\n updateOperations.push(this.dataService.facet.updateFacetValues(updatedValues));\r\n }\r\n }\r\n\r\n return forkJoin(updateOperations);\r\n }),\r\n switchMap(() => this.dataService.facet.getAllFacets().single$),\r\n )\r\n .subscribe(\r\n () => {\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Facet' });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Facet',\r\n });\r\n },\r\n );\r\n }\r\n\r\n deleteFacetValue(facetValueId: string | undefined, index: number) {\r\n if (!facetValueId) {\r\n // deleting a newly-added (not persisted) FacetValue\r\n const valuesFormArray = this.detailForm.get('values') as FormArray | null;\r\n if (valuesFormArray) {\r\n valuesFormArray.removeAt(index);\r\n }\r\n this.values.splice(index, 1);\r\n return;\r\n }\r\n this.showModalAndDelete(facetValueId)\r\n .pipe(\r\n switchMap(response => {\r\n if (response.result === DeletionResult.DELETED) {\r\n return [true];\r\n } else {\r\n return this.showModalAndDelete(facetValueId, response.message || '').pipe(\r\n map(r => r.result === DeletionResult.DELETED),\r\n );\r\n }\r\n }),\r\n switchMap(deleted => (deleted ? this.dataService.facet.getFacet(this.id).single$ : [])),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'FacetValue',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'FacetValue',\r\n });\r\n },\r\n );\r\n }\r\n\r\n private showModalAndDelete(facetValueId: string, message?: string) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-facet-value'),\r\n body: message,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(result =>\r\n result ? this.dataService.facet.deleteFacetValues([facetValueId], !!message) : EMPTY,\r\n ),\r\n map(result => result.deleteFacetValues[0]),\r\n );\r\n }\r\n\r\n /**\r\n * Sets the values of the form on changes to the facet or current language.\r\n */\r\n protected setFormValues(facet: FacetWithValues.Fragment, languageCode: LanguageCode) {\r\n const currentTranslation = findTranslation(facet, languageCode);\r\n\r\n this.detailForm.patchValue({\r\n facet: {\r\n code: facet.code,\r\n visible: !facet.isPrivate,\r\n name: currentTranslation?.name ?? '',\r\n },\r\n });\r\n\r\n if (this.customFields.length) {\r\n const customFieldsGroup = this.detailForm.get(['facet', 'customFields']) as FormGroup;\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['facet', 'customFields']),\r\n facet,\r\n currentTranslation,\r\n );\r\n }\r\n\r\n const currentValuesFormArray = this.detailForm.get('values') as FormArray;\r\n this.values = [...facet.values];\r\n facet.values.forEach((value, i) => {\r\n const valueTranslation = findTranslation(value, languageCode);\r\n const group = {\r\n id: value.id,\r\n code: value.code,\r\n name: valueTranslation ? valueTranslation.name : '',\r\n };\r\n const valueControl = currentValuesFormArray.at(i);\r\n if (valueControl) {\r\n valueControl.get('id')?.setValue(group.id);\r\n valueControl.get('code')?.setValue(group.code);\r\n valueControl.get('name')?.setValue(group.name);\r\n } else {\r\n currentValuesFormArray.insert(i, this.formBuilder.group(group));\r\n }\r\n if (this.customValueFields.length) {\r\n let customValueFieldsGroup = this.detailForm.get(['values', i, 'customFields']) as FormGroup;\r\n if (!customValueFieldsGroup) {\r\n customValueFieldsGroup = new FormGroup({});\r\n (this.detailForm.get(['values', i]) as FormGroup).addControl(\r\n 'customFields',\r\n customValueFieldsGroup,\r\n );\r\n }\r\n\r\n if (customValueFieldsGroup) {\r\n for (const fieldDef of this.customValueFields) {\r\n const key = fieldDef.name;\r\n const fieldValue =\r\n fieldDef.type === 'localeString'\r\n ? (valueTranslation as any | undefined)?.customFields?.[key]\r\n : (value as any).customFields[key];\r\n const control = customValueFieldsGroup.get(key);\r\n if (control) {\r\n control.setValue(fieldValue);\r\n } else {\r\n customValueFieldsGroup.addControl(key, new FormControl(fieldValue));\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Given a facet and the value of the detailForm, this method creates an updated copy of the facet which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedFacet(\r\n facet: FacetWithValues.Fragment,\r\n facetFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): CreateFacetInput | UpdateFacetInput {\r\n const input = createUpdatedTranslatable({\r\n translatable: facet,\r\n updatedFields: facetFormGroup.value,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: facet.name || '',\r\n },\r\n });\r\n input.isPrivate = !facetFormGroup.value.visible;\r\n return input;\r\n }\r\n\r\n /**\r\n * Given an array of facet values and the values from the detailForm, this method creates a new array\r\n * which can be persisted to the API via a createFacetValues mutation.\r\n */\r\n private getCreatedFacetValues(\r\n facet: FacetWithValues.Fragment,\r\n valuesFormArray: FormArray,\r\n languageCode: LanguageCode,\r\n ): CreateFacetValueInput[] {\r\n return valuesFormArray.controls\r\n .filter(c => !c.value.id)\r\n .map(c => c.value)\r\n .map(value =>\r\n createUpdatedTranslatable({\r\n translatable: { ...value, translations: [] as any },\r\n updatedFields: value,\r\n customFieldConfig: this.customValueFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: '',\r\n },\r\n }),\r\n )\r\n .map(input => ({\r\n facetId: facet.id,\r\n ...input,\r\n }));\r\n }\r\n\r\n /**\r\n * Given an array of facet values and the values from the detailForm, this method creates a new array\r\n * which can be persisted to the API via an updateFacetValues mutation.\r\n */\r\n private getUpdatedFacetValues(\r\n facet: FacetWithValues.Fragment,\r\n valuesFormArray: FormArray,\r\n languageCode: LanguageCode,\r\n ): UpdateFacetValueInput[] {\r\n const dirtyValues = facet.values.filter((v, i) => {\r\n const formRow = valuesFormArray.get(i.toString());\r\n return formRow && formRow.dirty && formRow.value.id;\r\n });\r\n const dirtyValueValues = valuesFormArray.controls\r\n .filter(c => c.dirty && c.value.id)\r\n .map(c => c.value);\r\n\r\n if (dirtyValues.length !== dirtyValueValues.length) {\r\n throw new Error(_(`error.facet-value-form-values-do-not-match`));\r\n }\r\n return dirtyValues\r\n .map((value, i) => {\r\n return createUpdatedTranslatable({\r\n translatable: value,\r\n updatedFields: dirtyValueValues[i],\r\n customFieldConfig: this.customValueFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: '',\r\n },\r\n });\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n DeletionResult,\r\n GetFacetList,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { SortOrder } from '@vendure/common/lib/generated-shop-types';\r\nimport { EMPTY, Observable } from 'rxjs';\r\nimport { debounceTime, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-facet-list',\r\n templateUrl: './facet-list.component.html',\r\n styleUrls: ['./facet-list.component.scss'],\r\n})\r\nexport class FacetListComponent\r\n extends BaseListComponent<GetFacetList.Query, GetFacetList.Items>\r\n implements OnInit\r\n{\r\n filterTermControl = new FormControl('');\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n contentLanguage$: Observable<LanguageCode>;\r\n readonly initialLimit = 3;\r\n displayLimit: { [id: string]: number } = {};\r\n constructor(\r\n private dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n private serverConfigService: ServerConfigService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n ) {\r\n super(router, route);\r\n super.setQueryFn(\r\n (...args: any[]) => this.dataService.facet.getFacets(...args).refetchOnChannelChange(),\r\n data => data.facets,\r\n (skip, take) => ({\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n name: {\r\n contains: this.filterTermControl.value,\r\n },\r\n },\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n },\r\n }),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();\r\n this.contentLanguage$ = this.dataService.client\r\n .uiState()\r\n .mapStream(({ uiState }) => uiState.contentLanguage)\r\n .pipe(tap(() => this.refresh()));\r\n this.filterTermControl.valueChanges\r\n .pipe(\r\n filter(value => 2 <= value.length || value.length === 0),\r\n debounceTime(250),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.refresh());\r\n }\r\n\r\n toggleDisplayLimit(facet: GetFacetList.Items) {\r\n if (this.displayLimit[facet.id] === facet.values.length) {\r\n this.displayLimit[facet.id] = this.initialLimit;\r\n } else {\r\n this.displayLimit[facet.id] = facet.values.length;\r\n }\r\n }\r\n\r\n deleteFacet(facetValueId: string) {\r\n this.showModalAndDelete(facetValueId)\r\n .pipe(\r\n switchMap(response => {\r\n if (response.result === DeletionResult.DELETED) {\r\n return [true];\r\n } else {\r\n return this.showModalAndDelete(facetValueId, response.message || '').pipe(\r\n map(r => r.result === DeletionResult.DELETED),\r\n );\r\n }\r\n }),\r\n // Refresh the cached facets to reflect the changes\r\n switchMap(() => this.dataService.facet.getAllFacets().single$),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'FacetValue',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'FacetValue',\r\n });\r\n },\r\n );\r\n }\r\n\r\n setLanguage(code: LanguageCode) {\r\n this.dataService.client.setContentLanguage(code).subscribe();\r\n }\r\n\r\n private showModalAndDelete(facetId: string, message?: string) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-facet'),\r\n body: message,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(res => (res ? this.dataService.facet.deleteFacet(facetId, !!message) : EMPTY)),\r\n map(res => res.deleteFacet),\r\n );\r\n }\r\n}\r\n","/**\r\n * @description\r\n * Like String.prototype.replace(), but replaces the last instance\r\n * rather than the first.\r\n */\r\nexport function replaceLast(target: string | undefined | null, search: string, replace: string): string {\r\n if (!target) {\r\n return '';\r\n }\r\n const lastIndex = target.lastIndexOf(search);\r\n if (lastIndex === -1) {\r\n return target;\r\n }\r\n const head = target.substr(0, lastIndex);\r\n const tail = target.substr(lastIndex).replace(search, replace);\r\n return head + tail;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n CreateProductInput,\r\n CreateProductVariantInput,\r\n DataService,\r\n DeletionResult,\r\n FacetWithValues,\r\n findTranslation,\r\n GetProductWithVariants,\r\n LanguageCode,\r\n UpdateProductInput,\r\n UpdateProductMutation,\r\n UpdateProductOptionInput,\r\n UpdateProductVariantInput,\r\n UpdateProductVariantsMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\r\nimport { map, mergeMap, shareReplay, switchMap } from 'rxjs/operators';\r\n\r\nimport { CreateProductVariantsConfig } from '../../components/generate-product-variants/generate-product-variants.component';\r\n\r\nimport { replaceLast } from './replace-last';\r\n\r\n/**\r\n * Handles the logic for making the API calls to perform CRUD operations on a Product and its related\r\n * entities. This logic was extracted out of the component because it became too large and hard to follow.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductDetailService {\r\n constructor(private dataService: DataService) {}\r\n\r\n getFacets(): Observable<FacetWithValues.Fragment[]> {\r\n return this.dataService.facet.getAllFacets().mapSingle(data => data.facets.items);\r\n }\r\n\r\n getTaxCategories() {\r\n return this.dataService.settings\r\n .getTaxCategories()\r\n .mapSingle(data => data.taxCategories)\r\n .pipe(shareReplay(1));\r\n }\r\n\r\n createProductWithVariants(\r\n input: CreateProductInput,\r\n createVariantsConfig: CreateProductVariantsConfig,\r\n languageCode: LanguageCode,\r\n ) {\r\n const createProduct$ = this.dataService.product.createProduct(input);\r\n const nonEmptyOptionGroups = createVariantsConfig.groups.filter(g => 0 < g.values.length);\r\n const createOptionGroups$ = this.createProductOptionGroups(nonEmptyOptionGroups, languageCode);\r\n\r\n return forkJoin(createProduct$, createOptionGroups$).pipe(\r\n mergeMap(([{ createProduct }, optionGroups]) => {\r\n const addOptionsToProduct$ = optionGroups.length\r\n ? forkJoin(\r\n optionGroups.map(optionGroup => {\r\n return this.dataService.product.addOptionGroupToProduct({\r\n productId: createProduct.id,\r\n optionGroupId: optionGroup.id,\r\n });\r\n }),\r\n )\r\n : of([]);\r\n return addOptionsToProduct$.pipe(\r\n map(() => {\r\n return { createProduct, optionGroups };\r\n }),\r\n );\r\n }),\r\n mergeMap(({ createProduct, optionGroups }) => {\r\n const variants = createVariantsConfig.variants.map(v => {\r\n const optionIds = optionGroups.length\r\n ? v.optionValues.map((optionName, index) => {\r\n const option = optionGroups[index].options.find(o => o.name === optionName);\r\n if (!option) {\r\n throw new Error(\r\n `Could not find a matching ProductOption \"${optionName}\" when creating variant`,\r\n );\r\n }\r\n return option.id;\r\n })\r\n : [];\r\n return {\r\n ...v,\r\n optionIds,\r\n };\r\n });\r\n const options = optionGroups.map(og => og.options).reduce((flat, o) => [...flat, ...o], []);\r\n return this.createProductVariants(createProduct, variants, options, languageCode);\r\n }),\r\n );\r\n }\r\n\r\n createProductOptionGroups(groups: Array<{ name: string; values: string[] }>, languageCode: LanguageCode) {\r\n return groups.length\r\n ? forkJoin(\r\n groups.map(c => {\r\n return this.dataService.product\r\n .createProductOptionGroups({\r\n code: normalizeString(c.name, '-'),\r\n translations: [{ languageCode, name: c.name }],\r\n options: c.values.map(v => ({\r\n code: normalizeString(v, '-'),\r\n translations: [{ languageCode, name: v }],\r\n })),\r\n })\r\n .pipe(map(data => data.createProductOptionGroup));\r\n }),\r\n )\r\n : of([]);\r\n }\r\n\r\n createProductVariants(\r\n product: { name: string; id: string },\r\n variantData: Array<{ price: number; sku: string; stock: number; optionIds: string[] }>,\r\n options: Array<{ id: string; name: string }>,\r\n languageCode: LanguageCode,\r\n ) {\r\n const variants: CreateProductVariantInput[] = variantData.map(v => {\r\n const name = options.length\r\n ? `${product.name} ${v.optionIds\r\n .map(id => options.find(o => o.id === id))\r\n .filter(notNullOrUndefined)\r\n .map(o => o.name)\r\n .join(' ')}`\r\n : product.name;\r\n return {\r\n productId: product.id,\r\n price: v.price,\r\n sku: v.sku,\r\n stockOnHand: v.stock,\r\n translations: [\r\n {\r\n languageCode,\r\n name,\r\n },\r\n ],\r\n optionIds: v.optionIds,\r\n };\r\n });\r\n return this.dataService.product.createProductVariants(variants).pipe(\r\n map(({ createProductVariants }) => ({\r\n createProductVariants,\r\n productId: product.id,\r\n })),\r\n );\r\n }\r\n\r\n updateProduct(updateOptions: {\r\n product: GetProductWithVariants.Product;\r\n languageCode: LanguageCode;\r\n autoUpdate: boolean;\r\n productInput?: UpdateProductInput;\r\n variantsInput?: UpdateProductVariantInput[];\r\n }) {\r\n const { product, languageCode, autoUpdate, productInput, variantsInput } = updateOptions;\r\n const updateOperations: Array<Observable<UpdateProductMutation | UpdateProductVariantsMutation>> = [];\r\n const updateVariantsInput = variantsInput || [];\r\n\r\n const variants$ = autoUpdate\r\n ? this.dataService.product\r\n .getProductVariants({}, product.id)\r\n .mapSingle(({ productVariants }) => productVariants.items)\r\n : of([]);\r\n\r\n return variants$.pipe(\r\n mergeMap(variants => {\r\n if (productInput) {\r\n updateOperations.push(this.dataService.product.updateProduct(productInput));\r\n const productOldName = findTranslation(product, languageCode)?.name ?? '';\r\n const productNewName = findTranslation(productInput, languageCode)?.name;\r\n if (productNewName && productOldName !== productNewName && autoUpdate) {\r\n for (const variant of variants) {\r\n const currentVariantName = findTranslation(variant, languageCode)?.name || '';\r\n let variantInput: UpdateProductVariantInput;\r\n const existingVariantInput = updateVariantsInput.find(i => i.id === variant.id);\r\n if (existingVariantInput) {\r\n variantInput = existingVariantInput;\r\n } else {\r\n variantInput = {\r\n id: variant.id,\r\n translations: [{ languageCode, name: currentVariantName }],\r\n };\r\n updateVariantsInput.push(variantInput);\r\n }\r\n const variantTranslation = findTranslation(variantInput, languageCode);\r\n if (variantTranslation) {\r\n if (variantTranslation.name) {\r\n variantTranslation.name = replaceLast(\r\n variantTranslation.name,\r\n productOldName,\r\n productNewName,\r\n );\r\n } else {\r\n // The variant translation was falsy, which occurs\r\n // when defining the product name for a new translation\r\n // language that had not yet been defined.\r\n variantTranslation.name = [\r\n productNewName,\r\n ...variant.options.map(o => o.name),\r\n ].join(' ');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (updateVariantsInput.length) {\r\n updateOperations.push(\r\n this.dataService.product.updateProductVariants(updateVariantsInput),\r\n );\r\n }\r\n return forkJoin(updateOperations);\r\n }),\r\n );\r\n }\r\n\r\n updateProductOption(\r\n input: UpdateProductOptionInput & { autoUpdate: boolean },\r\n product: GetProductWithVariants.Product,\r\n languageCode: LanguageCode,\r\n ) {\r\n const variants$ = input.autoUpdate\r\n ? this.dataService.product\r\n .getProductVariants({}, product.id)\r\n .mapSingle(({ productVariants }) => productVariants.items)\r\n : of([]);\r\n\r\n return variants$.pipe(\r\n mergeMap(variants => {\r\n let updateProductVariantNames$: Observable<any> = of([]);\r\n if (input.autoUpdate) {\r\n // Update any ProductVariants' names which include the option name\r\n let oldOptionName: string | undefined;\r\n const newOptionName = findTranslation(input, languageCode)?.name;\r\n if (!newOptionName) {\r\n updateProductVariantNames$ = of([]);\r\n }\r\n const variantsToUpdate: UpdateProductVariantInput[] = [];\r\n for (const variant of variants) {\r\n if (variant.options.map(o => o.id).includes(input.id)) {\r\n if (!oldOptionName) {\r\n oldOptionName = findTranslation(\r\n variant.options.find(o => o.id === input.id),\r\n languageCode,\r\n )?.name;\r\n }\r\n const variantName = findTranslation(variant, languageCode)?.name || '';\r\n if (oldOptionName && newOptionName && variantName.includes(oldOptionName)) {\r\n variantsToUpdate.push({\r\n id: variant.id,\r\n translations: [\r\n {\r\n languageCode,\r\n name: replaceLast(variantName, oldOptionName, newOptionName),\r\n },\r\n ],\r\n });\r\n }\r\n }\r\n }\r\n if (variantsToUpdate.length) {\r\n updateProductVariantNames$ =\r\n this.dataService.product.updateProductVariants(variantsToUpdate);\r\n }\r\n }\r\n return this.dataService.product\r\n .updateProductOption(input)\r\n .pipe(mergeMap(() => updateProductVariantNames$));\r\n }),\r\n );\r\n }\r\n\r\n deleteProductVariant(id: string, productId: string) {\r\n return this.dataService.product.deleteProductVariant(id).pipe(\r\n switchMap(result => {\r\n if (result.deleteProductVariant.result === DeletionResult.DELETED) {\r\n return this.dataService.product.getProduct(productId).single$;\r\n } else {\r\n return throwError(result.deleteProductVariant.message);\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Dialog, FacetValue, FacetValueSelectorComponent, FacetWithValues } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-apply-facet-dialog',\r\n templateUrl: './apply-facet-dialog.component.html',\r\n styleUrls: ['./apply-facet-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ApplyFacetDialogComponent implements Dialog<FacetValue[]>, AfterViewInit {\r\n @ViewChild(FacetValueSelectorComponent) private selector: FacetValueSelectorComponent;\r\n resolveWith: (result?: FacetValue[]) => void;\r\n selectedValues: FacetValue[] = [];\r\n // Provided by caller\r\n facets: FacetWithValues.Fragment[];\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.selector.focus(), 0);\r\n }\r\n\r\n selectValues() {\r\n this.resolveWith(this.selectedValues);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { GetChannels, ProductVariantFragment } from '@vendure/admin-ui/core';\r\nimport { NotificationService } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\nimport { combineLatest, from, Observable } from 'rxjs';\r\nimport { map, startWith, switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-assign-products-to-channel-dialog',\r\n templateUrl: './assign-products-to-channel-dialog.component.html',\r\n styleUrls: ['./assign-products-to-channel-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssignProductsToChannelDialogComponent implements OnInit, Dialog<any> {\r\n selectedChannel: GetChannels.Channels | null | undefined;\r\n currentChannel: GetChannels.Channels;\r\n availableChannels: GetChannels.Channels[];\r\n resolveWith: (result?: any) => void;\r\n variantsPreview$: Observable<Array<{ id: string; name: string; price: number; pricePreview: number }>>;\r\n priceFactorControl = new FormControl(1);\r\n selectedChannelIdControl = new FormControl();\r\n\r\n // assigned by ModalService.fromComponent() call\r\n productIds: string[];\r\n productVariantIds: string[] | undefined;\r\n currentChannelIds: string[];\r\n\r\n get isProductVariantMode(): boolean {\r\n return this.productVariantIds != null;\r\n }\r\n\r\n constructor(private dataService: DataService, private notificationService: NotificationService) {}\r\n\r\n ngOnInit() {\r\n const activeChannelId$ = this.dataService.client\r\n .userStatus()\r\n .mapSingle(({ userStatus }) => userStatus.activeChannelId);\r\n const allChannels$ = this.dataService.settings.getChannels().mapSingle(data => data.channels);\r\n\r\n combineLatest(activeChannelId$, allChannels$).subscribe(([activeChannelId, channels]) => {\r\n // tslint:disable-next-line:no-non-null-assertion\r\n this.currentChannel = channels.find(c => c.id === activeChannelId)!;\r\n this.availableChannels = channels;\r\n });\r\n\r\n this.selectedChannelIdControl.valueChanges.subscribe(ids => {\r\n this.selectChannel(ids);\r\n });\r\n\r\n this.variantsPreview$ = combineLatest(\r\n from(this.getTopVariants(10)),\r\n this.priceFactorControl.valueChanges.pipe(startWith(1)),\r\n ).pipe(\r\n map(([variants, factor]) => {\r\n return variants.map(v => ({\r\n id: v.id,\r\n name: v.name,\r\n price: v.price,\r\n pricePreview: v.price * +factor,\r\n }));\r\n }),\r\n );\r\n }\r\n\r\n selectChannel(channelIds: string[]) {\r\n this.selectedChannel = this.availableChannels.find(c => c.id === channelIds[0]);\r\n }\r\n\r\n assign() {\r\n const selectedChannel = this.selectedChannel;\r\n if (selectedChannel) {\r\n if (!this.isProductVariantMode) {\r\n this.dataService.product\r\n .assignProductsToChannel({\r\n channelId: selectedChannel.id,\r\n productIds: this.productIds,\r\n priceFactor: +this.priceFactorControl.value,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('catalog.assign-product-to-channel-success'), {\r\n channel: selectedChannel.code,\r\n });\r\n this.resolveWith(true);\r\n });\r\n } else if (this.productVariantIds) {\r\n this.dataService.product\r\n .assignVariantsToChannel({\r\n channelId: selectedChannel.id,\r\n productVariantIds: this.productVariantIds,\r\n priceFactor: +this.priceFactorControl.value,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('catalog.assign-variant-to-channel-success'), {\r\n channel: selectedChannel.code,\r\n });\r\n this.resolveWith(true);\r\n });\r\n }\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n private async getTopVariants(take: number): Promise<ProductVariantFragment[]> {\r\n const variants: ProductVariantFragment[] = [];\r\n\r\n for (let i = 0; i < this.productIds.length && variants.length < take; i++) {\r\n const productVariants = await this.dataService.product\r\n .getProduct(this.productIds[i], { take: this.isProductVariantMode ? undefined : take })\r\n .mapSingle(({ product }) => {\r\n const _variants = product ? product.variantList.items : [];\r\n return _variants.filter(v =>\r\n this.isProductVariantMode ? this.productVariantIds?.includes(v.id) : true,\r\n );\r\n })\r\n .toPromise();\r\n variants.push(...(productVariants || []));\r\n }\r\n return variants.slice(0, take);\r\n }\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n BaseDetailComponent,\r\n CreateProductInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n FacetWithValues,\r\n findTranslation,\r\n flattenFacetValues,\r\n GetProductWithVariants,\r\n GlobalFlag,\r\n LanguageCode,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n Permission,\r\n ProductDetail,\r\n ProductVariant,\r\n ServerConfigService,\r\n TaxCategory,\r\n unicodePatternValidator,\r\n UpdateProductInput,\r\n UpdateProductMutation,\r\n UpdateProductOptionInput,\r\n UpdateProductVariantInput,\r\n UpdateProductVariantsMutation,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { unique } from '@vendure/common/lib/unique';\r\nimport { BehaviorSubject, combineLatest, EMPTY, merge, Observable } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n map,\r\n mergeMap,\r\n shareReplay,\r\n skip,\r\n skipUntil,\r\n startWith,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n withLatestFrom,\r\n} from 'rxjs/operators';\r\n\r\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\r\nimport { ApplyFacetDialogComponent } from '../apply-facet-dialog/apply-facet-dialog.component';\r\nimport { AssignProductsToChannelDialogComponent } from '../assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\r\nimport { CreateProductVariantsConfig } from '../generate-product-variants/generate-product-variants.component';\r\nimport { VariantAssetChange } from '../product-variants-list/product-variants-list.component';\r\n\r\nexport type TabName = 'details' | 'variants';\r\n\r\nexport interface VariantFormValue {\r\n id: string;\r\n enabled: boolean;\r\n sku: string;\r\n name: string;\r\n price: number;\r\n priceWithTax: number;\r\n taxCategoryId: string;\r\n stockOnHand: number;\r\n useGlobalOutOfStockThreshold: boolean;\r\n outOfStockThreshold: number;\r\n trackInventory: GlobalFlag;\r\n facetValueIds: string[];\r\n customFields?: any;\r\n}\r\n\r\nexport interface SelectedAssets {\r\n assets?: Asset[];\r\n featuredAsset?: Asset;\r\n}\r\n\r\nexport interface PaginationConfig {\r\n totalItems: number;\r\n currentPage: number;\r\n itemsPerPage: number;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-product-detail',\r\n templateUrl: './product-detail.component.html',\r\n styleUrls: ['./product-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductDetailComponent\r\n extends BaseDetailComponent<GetProductWithVariants.Product>\r\n implements OnInit, OnDestroy\r\n{\r\n activeTab$: Observable<TabName>;\r\n product$: Observable<GetProductWithVariants.Product>;\r\n variants$: Observable<ProductVariant.Fragment[]>;\r\n taxCategories$: Observable<TaxCategory.Fragment[]>;\r\n customFields: CustomFieldConfig[];\r\n customVariantFields: CustomFieldConfig[];\r\n customOptionGroupFields: CustomFieldConfig[];\r\n customOptionFields: CustomFieldConfig[];\r\n detailForm: FormGroup;\r\n filterInput = new FormControl('');\r\n assetChanges: SelectedAssets = {};\r\n variantAssetChanges: { [variantId: string]: SelectedAssets } = {};\r\n variantFacetValueChanges: { [variantId: string]: string[] } = {};\r\n productChannels$: Observable<ProductDetail.Channels[]>;\r\n facetValues$: Observable<ProductDetail.FacetValues[]>;\r\n facets$: Observable<FacetWithValues.Fragment[]>;\r\n totalItems$: Observable<number>;\r\n currentPage$ = new BehaviorSubject(1);\r\n itemsPerPage$ = new BehaviorSubject(10);\r\n paginationConfig$: Observable<PaginationConfig>;\r\n selectedVariantIds: string[] = [];\r\n variantDisplayMode: 'card' | 'table' = 'card';\r\n createVariantsConfig: CreateProductVariantsConfig = { groups: [], variants: [] };\r\n channelPriceIncludesTax$: Observable<boolean>;\r\n // Used to store all ProductVariants which have been loaded.\r\n // It is needed when saving changes to variants.\r\n private productVariantMap = new Map<string, ProductVariant.Fragment>();\r\n public readonly updatePermissions = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n\r\n constructor(\r\n route: ActivatedRoute,\r\n router: Router,\r\n serverConfigService: ServerConfigService,\r\n private productDetailService: ProductDetailService,\r\n private formBuilder: FormBuilder,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n protected dataService: DataService,\r\n private location: Location,\r\n private changeDetector: ChangeDetectorRef,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.customFields = this.getCustomFieldConfig('Product');\r\n this.customVariantFields = this.getCustomFieldConfig('ProductVariant');\r\n this.customOptionGroupFields = this.getCustomFieldConfig('ProductOptionGroup');\r\n this.customOptionFields = this.getCustomFieldConfig('ProductOption');\r\n this.detailForm = this.formBuilder.group({\r\n product: this.formBuilder.group({\r\n enabled: true,\r\n name: ['', Validators.required],\r\n autoUpdateVariantNames: true,\r\n slug: ['', unicodePatternValidator(/^[\\p{Letter}0-9_-]+$/)],\r\n description: '',\r\n facetValueIds: [[]],\r\n customFields: this.formBuilder.group(\r\n this.customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n ),\r\n }),\r\n variants: this.formBuilder.array([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.product$ = this.entity$;\r\n this.totalItems$ = this.product$.pipe(map(product => product.variantList.totalItems));\r\n this.paginationConfig$ = combineLatest(this.totalItems$, this.itemsPerPage$, this.currentPage$).pipe(\r\n map(([totalItems, itemsPerPage, currentPage]) => ({\r\n totalItems,\r\n itemsPerPage,\r\n currentPage,\r\n })),\r\n );\r\n const variants$ = this.product$.pipe(map(product => product.variantList.items));\r\n const filterTerm$ = this.filterInput.valueChanges.pipe(\r\n startWith(''),\r\n debounceTime(200),\r\n shareReplay(),\r\n );\r\n const initialVariants$ = this.product$.pipe(map(p => p.variantList.items));\r\n const updatedVariants$ = combineLatest(filterTerm$, this.currentPage$, this.itemsPerPage$).pipe(\r\n skipUntil(initialVariants$),\r\n skip(1),\r\n switchMap(([term, currentPage, itemsPerPage]) => {\r\n return this.dataService.product\r\n .getProductVariants(\r\n {\r\n skip: (currentPage - 1) * itemsPerPage,\r\n take: itemsPerPage,\r\n ...(term\r\n ? { filter: { name: { contains: term }, sku: { contains: term } } }\r\n : {}),\r\n filterOperator: LogicalOperator.OR,\r\n },\r\n this.id,\r\n )\r\n .mapStream(({ productVariants }) => productVariants.items);\r\n }),\r\n shareReplay({ bufferSize: 1, refCount: true }),\r\n );\r\n this.variants$ = merge(initialVariants$, updatedVariants$).pipe(\r\n tap(variants => {\r\n for (const variant of variants) {\r\n this.productVariantMap.set(variant.id, variant);\r\n }\r\n }),\r\n );\r\n this.taxCategories$ = this.productDetailService.getTaxCategories().pipe(takeUntil(this.destroy$));\r\n this.activeTab$ = this.route.paramMap.pipe(map(qpm => qpm.get('tab') as any));\r\n\r\n combineLatest(updatedVariants$, this.languageCode$)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(([variants, languageCode]) => {\r\n this.buildVariantFormArray(variants, languageCode);\r\n });\r\n\r\n // FacetValues are provided initially by the nested array of the\r\n // Product entity, but once a fetch to get all Facets is made (as when\r\n // opening the FacetValue selector modal), then these additional values\r\n // are concatenated onto the initial array.\r\n this.facets$ = this.productDetailService.getFacets();\r\n const productFacetValues$ = this.product$.pipe(map(product => product.facetValues));\r\n const allFacetValues$ = this.facets$.pipe(map(flattenFacetValues));\r\n const productGroup = this.getProductFormGroup();\r\n\r\n const formFacetValueIdChanges$ = productGroup.valueChanges.pipe(\r\n map(val => val.facetValueIds as string[]),\r\n distinctUntilChanged(),\r\n );\r\n const formChangeFacetValues$ = combineLatest(\r\n formFacetValueIdChanges$,\r\n productFacetValues$,\r\n allFacetValues$,\r\n ).pipe(\r\n map(([ids, productFacetValues, allFacetValues]) => {\r\n const combined = [...productFacetValues, ...allFacetValues];\r\n return ids.map(id => combined.find(fv => fv.id === id)).filter(notNullOrUndefined);\r\n }),\r\n );\r\n\r\n this.facetValues$ = merge(productFacetValues$, formChangeFacetValues$);\r\n this.productChannels$ = this.product$.pipe(map(p => p.channels));\r\n this.channelPriceIncludesTax$ = this.dataService.settings\r\n .getActiveChannel('cache-first')\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel.pricesIncludeTax)\r\n .pipe(shareReplay(1));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n navigateToTab(tabName: TabName) {\r\n this.location.replaceState(\r\n this.router\r\n .createUrlTree(['./', { ...this.route.snapshot.params, tab: tabName }], {\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n })\r\n .toString(),\r\n );\r\n }\r\n\r\n isDefaultChannel(channelCode: string): boolean {\r\n return channelCode === DEFAULT_CHANNEL_CODE;\r\n }\r\n\r\n setPage(page: number) {\r\n this.currentPage$.next(page);\r\n }\r\n\r\n setItemsPerPage(value: string) {\r\n this.itemsPerPage$.next(+value);\r\n this.currentPage$.next(1);\r\n }\r\n\r\n assignToChannel() {\r\n this.productChannels$\r\n .pipe(\r\n take(1),\r\n switchMap(channels => {\r\n return this.modalService.fromComponent(AssignProductsToChannelDialogComponent, {\r\n size: 'lg',\r\n locals: {\r\n productIds: [this.id],\r\n currentChannelIds: channels.map(c => c.id),\r\n },\r\n });\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n removeFromChannel(channelId: string) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.remove-product-from-channel'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('catalog.remove-from-channel'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.product.removeProductsFromChannel({\r\n channelId,\r\n productIds: [this.id],\r\n })\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('catalog.notify-remove-product-from-channel-success'));\r\n },\r\n err => {\r\n this.notificationService.error(_('catalog.notify-remove-product-from-channel-error'));\r\n },\r\n );\r\n }\r\n\r\n assignVariantToChannel(variant: ProductVariant.Fragment) {\r\n return this.modalService\r\n .fromComponent(AssignProductsToChannelDialogComponent, {\r\n size: 'lg',\r\n locals: {\r\n productIds: [this.id],\r\n productVariantIds: [variant.id],\r\n currentChannelIds: variant.channels.map(c => c.id),\r\n },\r\n })\r\n .subscribe();\r\n }\r\n\r\n removeVariantFromChannel({\r\n channelId,\r\n variant,\r\n }: {\r\n channelId: string;\r\n variant: ProductVariant.Fragment;\r\n }) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.remove-product-variant-from-channel'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('catalog.remove-from-channel'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response\r\n ? this.dataService.product.removeVariantsFromChannel({\r\n channelId,\r\n productVariantIds: [variant.id],\r\n })\r\n : EMPTY,\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('catalog.notify-remove-variant-from-channel-success'));\r\n },\r\n err => {\r\n this.notificationService.error(_('catalog.notify-remove-variant-from-channel-error'));\r\n },\r\n );\r\n }\r\n\r\n assetsChanged(): boolean {\r\n return !!Object.values(this.assetChanges).length;\r\n }\r\n\r\n variantAssetsChanged(): boolean {\r\n return !!Object.keys(this.variantAssetChanges).length;\r\n }\r\n\r\n variantAssetChange(event: VariantAssetChange) {\r\n this.variantAssetChanges[event.variantId] = event;\r\n }\r\n\r\n /**\r\n * If creating a new product, automatically generate the slug based on the product name.\r\n */\r\n updateSlug(nameValue: string) {\r\n combineLatest(this.entity$, this.languageCode$)\r\n .pipe(take(1))\r\n .subscribe(([entity, languageCode]) => {\r\n const slugControl = this.detailForm.get(['product', 'slug']);\r\n const currentTranslation = findTranslation(entity, languageCode);\r\n const currentSlugIsEmpty = !currentTranslation || !currentTranslation.slug;\r\n if (slugControl && slugControl.pristine && currentSlugIsEmpty) {\r\n slugControl.setValue(normalizeString(`${nameValue}`, '-'));\r\n }\r\n });\r\n }\r\n\r\n selectProductFacetValue() {\r\n this.displayFacetValueModal().subscribe(facetValueIds => {\r\n if (facetValueIds) {\r\n const productGroup = this.getProductFormGroup();\r\n const currentFacetValueIds = productGroup.value.facetValueIds;\r\n productGroup.patchValue({\r\n facetValueIds: unique([...currentFacetValueIds, ...facetValueIds]),\r\n });\r\n productGroup.markAsDirty();\r\n }\r\n });\r\n }\r\n\r\n updateProductOption(input: UpdateProductOptionInput & { autoUpdate: boolean }) {\r\n combineLatest(this.product$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([product, languageCode]) =>\r\n this.productDetailService.updateProductOption(input, product, languageCode),\r\n ),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'ProductOption',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'ProductOption',\r\n });\r\n },\r\n );\r\n }\r\n\r\n removeProductFacetValue(facetValueId: string) {\r\n const productGroup = this.getProductFormGroup();\r\n const currentFacetValueIds = productGroup.value.facetValueIds;\r\n productGroup.patchValue({\r\n facetValueIds: currentFacetValueIds.filter(id => id !== facetValueId),\r\n });\r\n productGroup.markAsDirty();\r\n }\r\n\r\n /**\r\n * Opens a dialog to select FacetValues to apply to the select ProductVariants.\r\n */\r\n selectVariantFacetValue(selectedVariantIds: string[]) {\r\n this.displayFacetValueModal()\r\n .pipe(withLatestFrom(this.variants$))\r\n .subscribe(([facetValueIds, variants]) => {\r\n if (facetValueIds) {\r\n for (const variantId of selectedVariantIds) {\r\n const index = variants.findIndex(v => v.id === variantId);\r\n const variant = variants[index];\r\n const existingFacetValueIds = variant ? variant.facetValues.map(fv => fv.id) : [];\r\n const variantFormGroup = (this.detailForm.get('variants') as FormArray).controls.find(\r\n c => c.value.id === variantId,\r\n );\r\n if (variantFormGroup) {\r\n const uniqueFacetValueIds = unique([...existingFacetValueIds, ...facetValueIds]);\r\n variantFormGroup.patchValue({\r\n facetValueIds: uniqueFacetValueIds,\r\n });\r\n variantFormGroup.markAsDirty();\r\n this.variantFacetValueChanges[variantId] = uniqueFacetValueIds;\r\n }\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n variantsToCreateAreValid(): boolean {\r\n return (\r\n 0 < this.createVariantsConfig.variants.length &&\r\n this.createVariantsConfig.variants.every(v => {\r\n return v.sku !== '';\r\n })\r\n );\r\n }\r\n\r\n private displayFacetValueModal(): Observable<string[] | undefined> {\r\n return this.productDetailService.getFacets().pipe(\r\n mergeMap(facets =>\r\n this.modalService.fromComponent(ApplyFacetDialogComponent, {\r\n size: 'md',\r\n closable: true,\r\n locals: { facets },\r\n }),\r\n ),\r\n map(facetValues => facetValues && facetValues.map(v => v.id)),\r\n );\r\n }\r\n\r\n create() {\r\n const productGroup = this.getProductFormGroup();\r\n if (!productGroup.dirty) {\r\n return;\r\n }\r\n combineLatest(this.product$, this.languageCode$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([product, languageCode]) => {\r\n const newProduct = this.getUpdatedProduct(\r\n product,\r\n productGroup as FormGroup,\r\n languageCode,\r\n ) as CreateProductInput;\r\n return this.productDetailService.createProductWithVariants(\r\n newProduct,\r\n this.createVariantsConfig,\r\n languageCode,\r\n );\r\n }),\r\n )\r\n .subscribe(\r\n ({ createProductVariants, productId }) => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Product',\r\n });\r\n this.assetChanges = {};\r\n this.variantAssetChanges = {};\r\n this.detailForm.markAsPristine();\r\n this.router.navigate(['../', productId], { relativeTo: this.route });\r\n },\r\n err => {\r\n // tslint:disable-next-line:no-console\r\n console.error(err);\r\n this.notificationService.error(_('common.notify-create-error'), {\r\n entity: 'Product',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n combineLatest(this.product$, this.languageCode$, this.channelPriceIncludesTax$)\r\n .pipe(\r\n take(1),\r\n mergeMap(([product, languageCode, priceIncludesTax]) => {\r\n const productGroup = this.getProductFormGroup();\r\n let productInput: UpdateProductInput | undefined;\r\n let variantsInput: UpdateProductVariantInput[] | undefined;\r\n\r\n if (productGroup.dirty || this.assetsChanged()) {\r\n productInput = this.getUpdatedProduct(\r\n product,\r\n productGroup as FormGroup,\r\n languageCode,\r\n ) as UpdateProductInput;\r\n }\r\n const variantsArray = this.detailForm.get('variants');\r\n if ((variantsArray && variantsArray.dirty) || this.variantAssetsChanged()) {\r\n variantsInput = this.getUpdatedProductVariants(\r\n product,\r\n variantsArray as FormArray,\r\n languageCode,\r\n priceIncludesTax,\r\n );\r\n }\r\n\r\n return this.productDetailService.updateProduct({\r\n product,\r\n languageCode,\r\n autoUpdate:\r\n this.detailForm.get(['product', 'autoUpdateVariantNames'])?.value ?? false,\r\n productInput,\r\n variantsInput,\r\n });\r\n }),\r\n )\r\n .subscribe(\r\n result => {\r\n this.updateSlugAfterSave(result);\r\n this.detailForm.markAsPristine();\r\n this.assetChanges = {};\r\n this.variantAssetChanges = {};\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Product',\r\n });\r\n this.changeDetector.markForCheck();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'Product',\r\n });\r\n },\r\n );\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return super.canDeactivate() && !this.assetChanges.assets && !this.assetChanges.featuredAsset;\r\n }\r\n\r\n /**\r\n * Sets the values of the form on changes to the product or current language.\r\n */\r\n protected setFormValues(product: GetProductWithVariants.Product, languageCode: LanguageCode) {\r\n const currentTranslation = findTranslation(product, languageCode);\r\n this.detailForm.patchValue({\r\n product: {\r\n enabled: product.enabled,\r\n name: currentTranslation ? currentTranslation.name : '',\r\n slug: currentTranslation ? currentTranslation.slug : '',\r\n description: currentTranslation ? currentTranslation.description : '',\r\n facetValueIds: product.facetValues.map(fv => fv.id),\r\n },\r\n });\r\n\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(\r\n this.customFields,\r\n this.detailForm.get(['product', 'customFields']),\r\n product,\r\n currentTranslation,\r\n );\r\n }\r\n this.buildVariantFormArray(product.variantList.items, languageCode);\r\n }\r\n\r\n private buildVariantFormArray(variants: ProductVariant.Fragment[], languageCode: LanguageCode) {\r\n const variantsFormArray = this.detailForm.get('variants') as FormArray;\r\n variants.forEach((variant, i) => {\r\n const variantTranslation = findTranslation(variant, languageCode);\r\n const pendingFacetValueChanges = this.variantFacetValueChanges[variant.id];\r\n const facetValueIds = pendingFacetValueChanges\r\n ? pendingFacetValueChanges\r\n : variant.facetValues.map(fv => fv.id);\r\n const group: VariantFormValue = {\r\n id: variant.id,\r\n enabled: variant.enabled,\r\n sku: variant.sku,\r\n name: variantTranslation ? variantTranslation.name : '',\r\n price: variant.price,\r\n priceWithTax: variant.priceWithTax,\r\n taxCategoryId: variant.taxCategory.id,\r\n stockOnHand: variant.stockOnHand,\r\n useGlobalOutOfStockThreshold: variant.useGlobalOutOfStockThreshold,\r\n outOfStockThreshold: variant.outOfStockThreshold,\r\n trackInventory: variant.trackInventory,\r\n facetValueIds,\r\n };\r\n\r\n let variantFormGroup = variantsFormArray.controls.find(c => c.value.id === variant.id) as\r\n | FormGroup\r\n | undefined;\r\n if (variantFormGroup) {\r\n if (variantFormGroup.pristine) {\r\n variantFormGroup.patchValue(group);\r\n }\r\n } else {\r\n variantFormGroup = this.formBuilder.group({\r\n ...group,\r\n facetValueIds: this.formBuilder.control(facetValueIds),\r\n });\r\n variantsFormArray.insert(i, variantFormGroup);\r\n }\r\n if (this.customVariantFields.length) {\r\n let customFieldsGroup = variantFormGroup.get(['customFields']) as FormGroup | undefined;\r\n\r\n if (!customFieldsGroup) {\r\n customFieldsGroup = this.formBuilder.group(\r\n this.customVariantFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\r\n );\r\n variantFormGroup.addControl('customFields', customFieldsGroup);\r\n }\r\n this.setCustomFieldFormValues(\r\n this.customVariantFields,\r\n customFieldsGroup,\r\n variant,\r\n variantTranslation,\r\n );\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Given a product and the value of the detailForm, this method creates an updated copy of the product which\r\n * can then be persisted to the API.\r\n */\r\n private getUpdatedProduct(\r\n product: GetProductWithVariants.Product,\r\n productFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdateProductInput | CreateProductInput {\r\n const updatedProduct = createUpdatedTranslatable({\r\n translatable: product,\r\n updatedFields: productFormGroup.value,\r\n customFieldConfig: this.customFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: product.name || '',\r\n slug: product.slug || '',\r\n description: product.description || '',\r\n },\r\n });\r\n return {\r\n ...updatedProduct,\r\n assetIds: this.assetChanges.assets?.map(a => a.id),\r\n featuredAssetId: this.assetChanges.featuredAsset?.id,\r\n facetValueIds: productFormGroup.value.facetValueIds,\r\n } as UpdateProductInput | CreateProductInput;\r\n }\r\n\r\n /**\r\n * Given an array of product variants and the values from the detailForm, this method creates an new array\r\n * which can be persisted to the API.\r\n */\r\n private getUpdatedProductVariants(\r\n product: GetProductWithVariants.Product,\r\n variantsFormArray: FormArray,\r\n languageCode: LanguageCode,\r\n priceIncludesTax: boolean,\r\n ): UpdateProductVariantInput[] {\r\n const dirtyFormControls = variantsFormArray.controls.filter(c => c.dirty);\r\n const dirtyVariants = dirtyFormControls\r\n .map(c => this.productVariantMap.get(c.value.id))\r\n .filter(notNullOrUndefined);\r\n const dirtyVariantValues = dirtyFormControls.map(c => c.value);\r\n\r\n if (dirtyVariants.length !== dirtyVariantValues.length) {\r\n throw new Error(_(`error.product-variant-form-values-do-not-match`));\r\n }\r\n return dirtyVariants\r\n .map((variant, i) => {\r\n const formValue: VariantFormValue = dirtyVariantValues.find(value => value.id === variant.id);\r\n const result: UpdateProductVariantInput = createUpdatedTranslatable({\r\n translatable: variant,\r\n updatedFields: formValue,\r\n customFieldConfig: this.customVariantFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: '',\r\n },\r\n });\r\n result.taxCategoryId = formValue.taxCategoryId;\r\n result.facetValueIds = formValue.facetValueIds;\r\n result.price = priceIncludesTax ? formValue.priceWithTax : formValue.price;\r\n const assetChanges = this.variantAssetChanges[variant.id];\r\n if (assetChanges) {\r\n result.featuredAssetId = assetChanges.featuredAsset?.id;\r\n result.assetIds = assetChanges.assets?.map(a => a.id);\r\n }\r\n return result;\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n private getProductFormGroup(): FormGroup {\r\n return this.detailForm.get('product') as FormGroup;\r\n }\r\n\r\n /**\r\n * The server may alter the slug value in order to normalize and ensure uniqueness upon saving.\r\n */\r\n private updateSlugAfterSave(results: Array<UpdateProductMutation | UpdateProductVariantsMutation>) {\r\n const firstResult = results[0];\r\n const slugControl = this.detailForm.get(['product', 'slug']);\r\n\r\n function isUpdateMutation(input: any): input is UpdateProductMutation {\r\n return input.hasOwnProperty('updateProduct');\r\n }\r\n\r\n if (slugControl && isUpdateMutation(firstResult)) {\r\n slugControl.setValue(firstResult.updateProduct.slug, { emitEvent: false });\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseListComponent,\r\n DataService,\r\n JobQueueService,\r\n JobState,\r\n LanguageCode,\r\n LogicalOperator,\r\n ModalService,\r\n NotificationService,\r\n ProductSearchInputComponent,\r\n SearchInput,\r\n SearchProducts,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { EMPTY, Observable, of } from 'rxjs';\r\nimport {\r\n delay,\r\n distinctUntilChanged,\r\n map,\r\n shareReplay,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n withLatestFrom,\r\n} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-products-list',\r\n templateUrl: './product-list.component.html',\r\n styleUrls: ['./product-list.component.scss'],\r\n})\r\nexport class ProductListComponent\r\n extends BaseListComponent<SearchProducts.Query, SearchProducts.Items, SearchProducts.Variables>\r\n implements OnInit, AfterViewInit\r\n{\r\n searchTerm = '';\r\n facetValueIds: string[] = [];\r\n groupByProduct = true;\r\n selectedFacetValueIds$: Observable<string[]>;\r\n facetValues$: Observable<SearchProducts.FacetValues[]>;\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n contentLanguage$: Observable<LanguageCode>;\r\n pendingSearchIndexUpdates = 0;\r\n\r\n @ViewChild('productSearchInputComponent', { static: true })\r\n private productSearchInput: ProductSearchInputComponent;\r\n constructor(\r\n private dataService: DataService,\r\n private modalService: ModalService,\r\n private notificationService: NotificationService,\r\n private jobQueueService: JobQueueService,\r\n private serverConfigService: ServerConfigService,\r\n router: Router,\r\n route: ActivatedRoute,\r\n ) {\r\n super(router, route);\r\n this.route.queryParamMap\r\n .pipe(\r\n map(qpm => qpm.get('q')),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(term => {\r\n this.searchTerm = term || '';\r\n if (this.productSearchInput) {\r\n this.productSearchInput.setSearchTerm(term);\r\n }\r\n });\r\n this.selectedFacetValueIds$ = this.route.queryParamMap.pipe(map(qpm => qpm.getAll('fvids')));\r\n\r\n this.selectedFacetValueIds$.pipe(takeUntil(this.destroy$)).subscribe(ids => {\r\n this.facetValueIds = ids;\r\n if (this.productSearchInput) {\r\n this.productSearchInput.setFacetValues(ids);\r\n }\r\n });\r\n super.setQueryFn(\r\n (...args: any[]) =>\r\n this.dataService.product.searchProducts(this.searchTerm, ...args).refetchOnChannelChange(),\r\n data => data.search,\r\n // tslint:disable-next-line:no-shadowed-variable\r\n (skip, take) => ({\r\n input: {\r\n skip,\r\n take,\r\n term: this.searchTerm,\r\n facetValueIds: this.facetValueIds,\r\n facetValueOperator: LogicalOperator.AND,\r\n groupByProduct: this.groupByProduct,\r\n } as SearchInput,\r\n }),\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.facetValues$ = this.result$.pipe(map(data => data.search.facetValues));\r\n\r\n this.facetValues$\r\n .pipe(take(1), delay(100), withLatestFrom(this.selectedFacetValueIds$))\r\n .subscribe(([__, ids]) => {\r\n this.productSearchInput.setFacetValues(ids);\r\n });\r\n this.availableLanguages$ = this.serverConfigService.getAvailableLanguages();\r\n this.contentLanguage$ = this.dataService.client\r\n .uiState()\r\n .mapStream(({ uiState }) => uiState.contentLanguage)\r\n .pipe(tap(() => this.refresh()));\r\n\r\n this.dataService.product\r\n .getPendingSearchIndexUpdates()\r\n .mapSingle(({ pendingSearchIndexUpdates }) => pendingSearchIndexUpdates)\r\n .subscribe(value => (this.pendingSearchIndexUpdates = value));\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.productSearchInput && this.searchTerm) {\r\n setTimeout(() => this.productSearchInput.setSearchTerm(this.searchTerm));\r\n }\r\n }\r\n\r\n setSearchTerm(term: string) {\r\n this.searchTerm = term;\r\n this.setQueryParam({ q: term || null, page: 1 });\r\n this.refresh();\r\n }\r\n\r\n setFacetValueIds(ids: string[]) {\r\n this.facetValueIds = ids;\r\n this.setQueryParam({ fvids: ids, page: 1 });\r\n this.refresh();\r\n }\r\n\r\n rebuildSearchIndex() {\r\n this.dataService.product.reindex().subscribe(({ reindex }) => {\r\n this.notificationService.info(_('catalog.reindexing'));\r\n this.jobQueueService.addJob(reindex.id, job => {\r\n if (job.state === JobState.COMPLETED) {\r\n const time = new Intl.NumberFormat().format(job.duration || 0);\r\n this.notificationService.success(_('catalog.reindex-successful'), {\r\n count: job.result.indexedItemCount,\r\n time,\r\n });\r\n this.refresh();\r\n } else {\r\n this.notificationService.error(_('catalog.reindex-error'));\r\n }\r\n });\r\n });\r\n }\r\n\r\n runPendingSearchIndexUpdates() {\r\n this.dataService.product.runPendingSearchIndexUpdates().subscribe(value => {\r\n this.notificationService.info(_('catalog.running-search-index-updates'), {\r\n count: this.pendingSearchIndexUpdates,\r\n });\r\n this.pendingSearchIndexUpdates = 0;\r\n });\r\n }\r\n\r\n deleteProduct(productId: string) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response => (response ? this.dataService.product.deleteProduct(productId) : EMPTY)),\r\n // Short delay to allow the product to be removed from the search index before\r\n // refreshing.\r\n delay(500),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Product',\r\n });\r\n this.refresh();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'Product',\r\n });\r\n },\r\n );\r\n }\r\n\r\n setLanguage(code: LanguageCode) {\r\n this.dataService.client.setContentLanguage(code).subscribe();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CreateFacetInput,\r\n createUpdatedTranslatable,\r\n CustomFieldConfig,\r\n DataService,\r\n FacetWithValues,\r\n findTranslation,\r\n GetProductVariantOptions,\r\n LanguageCode,\r\n NotificationService,\r\n Permission,\r\n ProductOption,\r\n ProductOptionGroup,\r\n ServerConfigService,\r\n UpdateFacetInput,\r\n UpdateProductOptionGroupInput,\r\n UpdateProductOptionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { combineLatest, forkJoin, Observable } from 'rxjs';\r\nimport { map, mergeMap, take } from 'rxjs/operators';\r\n\r\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\r\n\r\n@Component({\r\n selector: 'vdr-product-options-editor',\r\n templateUrl: './product-options-editor.component.html',\r\n styleUrls: ['./product-options-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductOptionsEditorComponent\r\n extends BaseDetailComponent<GetProductVariantOptions.Product>\r\n implements OnInit\r\n{\r\n detailForm: FormGroup;\r\n optionGroups$: Observable<GetProductVariantOptions.OptionGroups[]>;\r\n languageCode$: Observable<LanguageCode>;\r\n availableLanguages$: Observable<LanguageCode[]>;\r\n optionGroupCustomFields: CustomFieldConfig[];\r\n optionCustomFields: CustomFieldConfig[];\r\n autoUpdateVariantNames = true;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected serverConfigService: ServerConfigService,\r\n protected dataService: DataService,\r\n private productDetailService: ProductDetailService,\r\n private formBuilder: FormBuilder,\r\n private changeDetector: ChangeDetectorRef,\r\n private notificationService: NotificationService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n this.optionGroupCustomFields = this.getCustomFieldConfig('ProductOptionGroup');\r\n this.optionCustomFields = this.getCustomFieldConfig('ProductOption');\r\n }\r\n\r\n ngOnInit(): void {\r\n this.optionGroups$ = this.route.snapshot.data.entity.pipe(\r\n map((product: GetProductVariantOptions.Product) => product.optionGroups),\r\n );\r\n this.detailForm = new FormGroup({\r\n optionGroups: new FormArray([]),\r\n });\r\n super.init();\r\n }\r\n\r\n getOptionGroups(): FormGroup[] {\r\n const optionGroups = this.detailForm.get('optionGroups');\r\n return (optionGroups as FormArray).controls as FormGroup[];\r\n }\r\n\r\n getOptions(optionGroup: FormGroup): FormGroup[] {\r\n const options = optionGroup.get('options');\r\n return (options as FormArray).controls as FormGroup[];\r\n }\r\n\r\n save() {\r\n if (this.detailForm.invalid || this.detailForm.pristine) {\r\n return;\r\n }\r\n // tslint:disable-next-line:no-non-null-assertion\r\n const $product = this.dataService.product.getProduct(this.id).mapSingle(data => data.product!);\r\n combineLatest(this.entity$, this.languageCode$, $product)\r\n .pipe(\r\n take(1),\r\n mergeMap(([{ optionGroups }, languageCode, product]) => {\r\n const updateOperations: Array<Observable<any>> = [];\r\n for (const optionGroupForm of this.getOptionGroups()) {\r\n if (optionGroupForm.get('name')?.dirty || optionGroupForm.get('code')?.dirty) {\r\n const optionGroupEntity = optionGroups.find(\r\n og => og.id === optionGroupForm.value.id,\r\n );\r\n if (optionGroupEntity) {\r\n const input = this.getUpdatedOptionGroup(\r\n optionGroupEntity,\r\n optionGroupForm,\r\n languageCode,\r\n );\r\n updateOperations.push(\r\n this.dataService.product.updateProductOptionGroup(input),\r\n );\r\n }\r\n }\r\n\r\n for (const optionForm of this.getOptions(optionGroupForm)) {\r\n if (optionForm.get('name')?.dirty || optionForm.get('code')?.dirty) {\r\n const optionGroup = optionGroups\r\n .find(og => og.id === optionGroupForm.value.id)\r\n ?.options.find(o => o.id === optionForm.value.id);\r\n if (optionGroup) {\r\n const input = this.getUpdatedOption(\r\n optionGroup,\r\n optionForm,\r\n languageCode,\r\n );\r\n updateOperations.push(\r\n this.productDetailService.updateProductOption(\r\n { ...input, autoUpdate: this.autoUpdateVariantNames },\r\n product,\r\n languageCode,\r\n ),\r\n );\r\n }\r\n }\r\n }\r\n }\r\n return forkJoin(updateOperations);\r\n }),\r\n )\r\n .subscribe(\r\n () => {\r\n this.detailForm.markAsPristine();\r\n this.changeDetector.markForCheck();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'ProductOptionGroup',\r\n });\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-update-error'), {\r\n entity: 'ProductOptionGroup',\r\n });\r\n },\r\n );\r\n }\r\n\r\n private getUpdatedOptionGroup(\r\n optionGroup: ProductOptionGroup.Fragment,\r\n optionGroupFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdateProductOptionGroupInput {\r\n const input = createUpdatedTranslatable({\r\n translatable: optionGroup,\r\n updatedFields: optionGroupFormGroup.value,\r\n customFieldConfig: this.optionGroupCustomFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: optionGroup.name || '',\r\n },\r\n });\r\n return input;\r\n }\r\n\r\n private getUpdatedOption(\r\n option: ProductOption.Fragment,\r\n optionFormGroup: FormGroup,\r\n languageCode: LanguageCode,\r\n ): UpdateProductOptionInput {\r\n const input = createUpdatedTranslatable({\r\n translatable: option,\r\n updatedFields: optionFormGroup.value,\r\n customFieldConfig: this.optionGroupCustomFields,\r\n languageCode,\r\n defaultTranslation: {\r\n languageCode,\r\n name: option.name || '',\r\n },\r\n });\r\n return input;\r\n }\r\n\r\n protected setFormValues(entity: GetProductVariantOptions.Product, languageCode: LanguageCode): void {\r\n const groupsFormArray = new FormArray([]);\r\n for (const optionGroup of entity.optionGroups) {\r\n const groupTranslation = findTranslation(optionGroup, languageCode);\r\n const group = {\r\n id: optionGroup.id,\r\n createdAt: optionGroup.createdAt,\r\n updatedAt: optionGroup.updatedAt,\r\n code: optionGroup.code,\r\n name: groupTranslation ? groupTranslation.name : '',\r\n };\r\n const optionsFormArray = new FormArray([]);\r\n\r\n for (const option of optionGroup.options) {\r\n const optionTranslation = findTranslation(option, languageCode);\r\n const optionControl = this.formBuilder.group({\r\n id: option.id,\r\n createdAt: option.createdAt,\r\n updatedAt: option.updatedAt,\r\n code: option.code,\r\n name: optionTranslation ? optionTranslation.name : '',\r\n });\r\n optionsFormArray.push(optionControl);\r\n }\r\n\r\n const groupControl = this.formBuilder.group(group);\r\n groupControl.addControl('options', optionsFormArray);\r\n groupsFormArray.push(groupControl);\r\n }\r\n this.detailForm.setControl('optionGroups', groupsFormArray);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { Dialog, GetProductVariantOptions } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-confirm-variant-deletion-dialog',\r\n templateUrl: './confirm-variant-deletion-dialog.component.html',\r\n styleUrls: ['./confirm-variant-deletion-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ConfirmVariantDeletionDialogComponent implements Dialog<boolean> {\r\n resolveWith: (result?: boolean) => void;\r\n variants: GetProductVariantOptions.Variants[] = [];\r\n\r\n confirm() {\r\n this.resolveWith(true);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CreateProductOptionGroup,\r\n CreateProductOptionInput,\r\n CurrencyCode,\r\n DataService,\r\n DeactivateAware,\r\n DeletionResult,\r\n getDefaultUiLanguage,\r\n GetProductVariantOptions,\r\n LanguageCode,\r\n ModalService,\r\n NotificationService,\r\n ProductOptionGroupWithOptionsFragment,\r\n} from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\nimport { pick } from '@vendure/common/lib/pick';\r\nimport { generateAllCombinations, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { unique } from '@vendure/common/lib/unique';\r\nimport { EMPTY, forkJoin, Observable, of } from 'rxjs';\r\nimport { defaultIfEmpty, filter, map, mergeMap, switchMap } from 'rxjs/operators';\r\n\r\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\r\nimport { ConfirmVariantDeletionDialogComponent } from '../confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\r\n\r\nexport class GeneratedVariant {\r\n isDefault: boolean;\r\n options: Array<{ name: string; id?: string }>;\r\n productVariantId?: string;\r\n enabled: boolean;\r\n existing: boolean;\r\n sku: string;\r\n price: number;\r\n stock: number;\r\n\r\n constructor(config: Partial<GeneratedVariant>) {\r\n for (const key of Object.keys(config)) {\r\n this[key] = config[key];\r\n }\r\n }\r\n}\r\n\r\ninterface OptionGroupUiModel {\r\n id?: string;\r\n isNew: boolean;\r\n name: string;\r\n locked: boolean;\r\n values: Array<{\r\n id?: string;\r\n name: string;\r\n locked: boolean;\r\n }>;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-product-variants-editor',\r\n templateUrl: './product-variants-editor.component.html',\r\n styleUrls: ['./product-variants-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n})\r\nexport class ProductVariantsEditorComponent implements OnInit, DeactivateAware {\r\n formValueChanged = false;\r\n optionsChanged = false;\r\n generatedVariants: GeneratedVariant[] = [];\r\n optionGroups: OptionGroupUiModel[];\r\n product: GetProductVariantOptions.Product;\r\n currencyCode: CurrencyCode;\r\n private languageCode: LanguageCode;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private dataService: DataService,\r\n private productDetailService: ProductDetailService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.initOptionsAndVariants();\r\n this.languageCode =\r\n (this.route.snapshot.paramMap.get('lang') as LanguageCode) || getDefaultUiLanguage();\r\n this.dataService.settings.getActiveChannel().single$.subscribe(data => {\r\n this.currencyCode = data.activeChannel.currencyCode;\r\n });\r\n }\r\n\r\n onFormChanged(variantInfo: GeneratedVariant) {\r\n this.formValueChanged = true;\r\n variantInfo.enabled = true;\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return !this.formValueChanged;\r\n }\r\n\r\n getVariantsToAdd() {\r\n return this.generatedVariants.filter(v => !v.existing && v.enabled);\r\n }\r\n\r\n getVariantName(variant: GeneratedVariant) {\r\n return variant.options.length === 0\r\n ? _('catalog.default-variant')\r\n : variant.options.map(o => o.name).join(' ');\r\n }\r\n\r\n addOptionGroup() {\r\n this.optionGroups.push({\r\n isNew: true,\r\n locked: false,\r\n name: '',\r\n values: [],\r\n });\r\n this.optionsChanged = true;\r\n }\r\n\r\n removeOptionGroup(optionGroup: OptionGroupUiModel) {\r\n const id = optionGroup.id;\r\n if (optionGroup.isNew) {\r\n this.optionGroups = this.optionGroups.filter(og => og !== optionGroup);\r\n this.generateVariants();\r\n this.optionsChanged = true;\r\n } else if (id) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product-option-group'),\r\n translationVars: { name: optionGroup.name },\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(val => {\r\n if (val) {\r\n return this.dataService.product.removeOptionGroupFromProduct({\r\n optionGroupId: id,\r\n productId: this.product.id,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(({ removeOptionGroupFromProduct }) => {\r\n if (removeOptionGroupFromProduct.__typename === 'Product') {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'ProductOptionGroup',\r\n });\r\n this.initOptionsAndVariants();\r\n this.optionsChanged = true;\r\n } else if (removeOptionGroupFromProduct.__typename === 'ProductOptionInUseError') {\r\n this.notificationService.error(removeOptionGroupFromProduct.message ?? '');\r\n }\r\n });\r\n }\r\n }\r\n\r\n addOption(groupId: string, optionName: string) {\r\n this.optionGroups.find(g => g.id === groupId)?.values.push({ name: optionName, locked: false });\r\n this.generateVariants();\r\n this.optionsChanged = true;\r\n }\r\n\r\n removeOption(groupId: string, { id, name }: { id?: string; name: string }) {\r\n const optionGroup = this.optionGroups.find(g => g.id === groupId);\r\n if (optionGroup) {\r\n if (!id) {\r\n optionGroup.values = optionGroup.values.filter(v => v.name !== name);\r\n this.generateVariants();\r\n } else {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product-option'),\r\n translationVars: { name },\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(val => {\r\n if (val) {\r\n return this.dataService.product.deleteProductOption(id);\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(({ deleteProductOption }) => {\r\n if (deleteProductOption.result === DeletionResult.DELETED) {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'ProductOption',\r\n });\r\n optionGroup.values = optionGroup.values.filter(v => v.id !== id);\r\n this.generateVariants();\r\n this.optionsChanged = true;\r\n } else {\r\n this.notificationService.error(deleteProductOption.message ?? '');\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n generateVariants() {\r\n const groups = this.optionGroups.map(g => g.values);\r\n const previousVariants = this.generatedVariants;\r\n const generatedVariantFactory = (\r\n isDefault: boolean,\r\n options: GeneratedVariant['options'],\r\n existingVariant?: GetProductVariantOptions.Variants,\r\n prototypeVariant?: GetProductVariantOptions.Variants,\r\n ): GeneratedVariant => {\r\n const prototype = this.getVariantPrototype(options, previousVariants);\r\n return new GeneratedVariant({\r\n enabled: true,\r\n existing: !!existingVariant,\r\n productVariantId: existingVariant?.id,\r\n isDefault,\r\n options,\r\n price: existingVariant?.price ?? prototypeVariant?.price ?? prototype.price,\r\n sku: existingVariant?.sku ?? prototypeVariant?.sku ?? prototype.sku,\r\n stock: existingVariant?.stockOnHand ?? prototypeVariant?.stockOnHand ?? prototype.stock,\r\n });\r\n };\r\n this.generatedVariants = groups.length\r\n ? generateAllCombinations(groups).map(options => {\r\n const existingVariant = this.product.variants.find(v =>\r\n this.optionsAreEqual(v.options, options),\r\n );\r\n const prototypeVariant = this.product.variants.find(v =>\r\n this.optionsAreSubset(v.options, options),\r\n );\r\n return generatedVariantFactory(false, options, existingVariant, prototypeVariant);\r\n })\r\n : [generatedVariantFactory(true, [], this.product.variants[0])];\r\n }\r\n\r\n /**\r\n * Returns one of the existing variants to base the newly-generated variant's\r\n * details off.\r\n */\r\n private getVariantPrototype(\r\n options: GeneratedVariant['options'],\r\n previousVariants: GeneratedVariant[],\r\n ): Pick<GeneratedVariant, 'sku' | 'price' | 'stock'> {\r\n const variantsWithSimilarOptions = previousVariants.filter(v =>\r\n options.map(o => o.name).filter(name => v.options.map(o => o.name).includes(name)),\r\n );\r\n if (variantsWithSimilarOptions.length) {\r\n return pick(previousVariants[0], ['sku', 'price', 'stock']);\r\n }\r\n return {\r\n sku: '',\r\n price: 0,\r\n stock: 0,\r\n };\r\n }\r\n\r\n deleteVariant(id: string, options: GeneratedVariant['options']) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-delete-product-variant'),\r\n translationVars: { name: options.map(o => o.name).join(' ') },\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(\r\n switchMap(response =>\r\n response ? this.productDetailService.deleteProductVariant(id, this.product.id) : EMPTY,\r\n ),\r\n switchMap(() => this.reFetchProduct(null)),\r\n )\r\n .subscribe(\r\n () => {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'ProductVariant',\r\n });\r\n this.initOptionsAndVariants();\r\n },\r\n err => {\r\n this.notificationService.error(_('common.notify-delete-error'), {\r\n entity: 'ProductVariant',\r\n });\r\n },\r\n );\r\n }\r\n\r\n save() {\r\n this.optionGroups = this.optionGroups.filter(g => g.values.length);\r\n const newOptionGroups = this.optionGroups\r\n .filter(og => og.isNew)\r\n .map(og => ({\r\n name: og.name,\r\n values: [],\r\n }));\r\n\r\n this.checkUniqueSkus()\r\n .pipe(\r\n mergeMap(() => this.confirmDeletionOfObsoleteVariants()),\r\n mergeMap(() =>\r\n this.productDetailService.createProductOptionGroups(newOptionGroups, this.languageCode),\r\n ),\r\n mergeMap(createdOptionGroups => this.addOptionGroupsToProduct(createdOptionGroups)),\r\n mergeMap(createdOptionGroups => this.addNewOptionsToGroups(createdOptionGroups)),\r\n mergeMap(groupsIds => this.fetchOptionGroups(groupsIds)),\r\n mergeMap(groups => this.createNewProductVariants(groups)),\r\n mergeMap(res => this.deleteObsoleteVariants(res.createProductVariants)),\r\n mergeMap(variants => this.reFetchProduct(variants)),\r\n )\r\n .subscribe({\r\n next: variants => {\r\n this.formValueChanged = false;\r\n this.notificationService.success(_('catalog.created-new-variants-success'), {\r\n count: variants.length,\r\n });\r\n this.initOptionsAndVariants();\r\n this.optionsChanged = false;\r\n },\r\n });\r\n }\r\n\r\n private checkUniqueSkus() {\r\n const withDuplicateSkus = this.generatedVariants.filter((variant, index) => {\r\n return (\r\n variant.enabled &&\r\n this.generatedVariants.find(gv => gv.sku.trim() === variant.sku.trim() && gv !== variant)\r\n );\r\n });\r\n if (withDuplicateSkus.length) {\r\n return this.modalService\r\n .dialog({\r\n title: _('catalog.duplicate-sku-warning'),\r\n body: unique(withDuplicateSkus.map(v => `${v.sku}`)).join(', '),\r\n buttons: [{ label: _('common.close'), returnValue: false, type: 'primary' }],\r\n })\r\n .pipe(mergeMap(res => EMPTY));\r\n } else {\r\n return of(true);\r\n }\r\n }\r\n\r\n private confirmDeletionOfObsoleteVariants(): Observable<boolean> {\r\n const obsoleteVariants = this.getObsoleteVariants();\r\n if (obsoleteVariants.length) {\r\n return this.modalService\r\n .fromComponent(ConfirmVariantDeletionDialogComponent, {\r\n locals: {\r\n variants: obsoleteVariants,\r\n },\r\n })\r\n .pipe(\r\n mergeMap(res => {\r\n return res === true ? of(true) : EMPTY;\r\n }),\r\n );\r\n } else {\r\n return of(true);\r\n }\r\n }\r\n\r\n private getObsoleteVariants() {\r\n return this.product.variants.filter(\r\n variant => !this.generatedVariants.find(gv => gv.productVariantId === variant.id),\r\n );\r\n }\r\n\r\n private hasOnlyDefaultVariant(product: GetProductVariantOptions.Product): boolean {\r\n return product.variants.length === 1 && product.optionGroups.length === 0;\r\n }\r\n\r\n private addOptionGroupsToProduct(\r\n createdOptionGroups: CreateProductOptionGroup.CreateProductOptionGroup[],\r\n ): Observable<CreateProductOptionGroup.CreateProductOptionGroup[]> {\r\n if (createdOptionGroups.length) {\r\n return forkJoin(\r\n createdOptionGroups.map(optionGroup => {\r\n return this.dataService.product.addOptionGroupToProduct({\r\n productId: this.product.id,\r\n optionGroupId: optionGroup.id,\r\n });\r\n }),\r\n ).pipe(map(() => createdOptionGroups));\r\n } else {\r\n return of([]);\r\n }\r\n }\r\n\r\n private addNewOptionsToGroups(\r\n createdOptionGroups: CreateProductOptionGroup.CreateProductOptionGroup[],\r\n ): Observable<string[]> {\r\n const newOptions: CreateProductOptionInput[] = this.optionGroups\r\n .map(og => {\r\n const createdGroup = createdOptionGroups.find(cog => cog.name === og.name);\r\n const productOptionGroupId = createdGroup ? createdGroup.id : og.id;\r\n if (!productOptionGroupId) {\r\n throw new Error('Could not get a productOptionGroupId');\r\n }\r\n return og.values\r\n .filter(v => !v.locked)\r\n .map(v => ({\r\n productOptionGroupId,\r\n code: normalizeString(v.name, '-'),\r\n translations: [{ name: v.name, languageCode: this.languageCode }],\r\n }));\r\n })\r\n .reduce((flat, options) => [...flat, ...options], []);\r\n\r\n const allGroupIds = [\r\n ...createdOptionGroups.map(g => g.id),\r\n ...this.optionGroups.map(g => g.id).filter(notNullOrUndefined),\r\n ];\r\n\r\n if (newOptions.length) {\r\n return forkJoin(newOptions.map(input => this.dataService.product.addOptionToGroup(input))).pipe(\r\n map(() => allGroupIds),\r\n );\r\n } else {\r\n return of(allGroupIds);\r\n }\r\n }\r\n\r\n private fetchOptionGroups(groupsIds: string[]): Observable<ProductOptionGroupWithOptionsFragment[]> {\r\n return forkJoin(\r\n groupsIds.map(id =>\r\n this.dataService.product\r\n .getProductOptionGroup(id)\r\n .mapSingle(data => data.productOptionGroup)\r\n .pipe(filter(notNullOrUndefined)),\r\n ),\r\n ).pipe(defaultIfEmpty([] as ProductOptionGroupWithOptionsFragment[]));\r\n }\r\n\r\n private createNewProductVariants(groups: ProductOptionGroupWithOptionsFragment[]) {\r\n const options = groups\r\n .filter(notNullOrUndefined)\r\n .map(og => og.options)\r\n .reduce((flat, o) => [...flat, ...o], []);\r\n const variants = this.generatedVariants\r\n .filter(v => v.enabled && !v.existing)\r\n .map(v => ({\r\n price: v.price,\r\n sku: v.sku,\r\n stock: v.stock,\r\n optionIds: v.options\r\n .map(name => options.find(o => o.name === name.name))\r\n .filter(notNullOrUndefined)\r\n .map(o => o.id),\r\n }));\r\n return this.productDetailService.createProductVariants(\r\n this.product,\r\n variants,\r\n options,\r\n this.languageCode,\r\n );\r\n }\r\n\r\n private deleteObsoleteVariants<T>(input: T): Observable<T> {\r\n const obsoleteVariants = this.getObsoleteVariants();\r\n if (obsoleteVariants.length) {\r\n const deleteOperations = obsoleteVariants.map(v =>\r\n this.dataService.product.deleteProductVariant(v.id).pipe(map(() => input)),\r\n );\r\n return forkJoin(...deleteOperations);\r\n } else {\r\n return of(input);\r\n }\r\n }\r\n\r\n private reFetchProduct<T>(input: T): Observable<T> {\r\n // Re-fetch the Product to force an update to the view.\r\n const id = this.route.snapshot.paramMap.get('id');\r\n if (id) {\r\n return this.dataService.product.getProduct(id).single$.pipe(map(() => input));\r\n } else {\r\n return of(input);\r\n }\r\n }\r\n\r\n initOptionsAndVariants() {\r\n this.dataService.product\r\n // tslint:disable-next-line:no-non-null-assertion\r\n .getProductVariantsOptions(this.route.snapshot.paramMap.get('id')!)\r\n // tslint:disable-next-line:no-non-null-assertion\r\n .mapSingle(({ product }) => product!)\r\n .subscribe(p => {\r\n this.product = p;\r\n const allUsedOptionIds = p.variants.map(v => v.options.map(option => option.id)).flat();\r\n const allUsedOptionGroupIds = p.variants\r\n .map(v => v.options.map(option => option.groupId))\r\n .flat();\r\n this.optionGroups = p.optionGroups.map(og => {\r\n return {\r\n id: og.id,\r\n isNew: false,\r\n name: og.name,\r\n locked: allUsedOptionGroupIds.includes(og.id),\r\n values: og.options.map(o => ({\r\n id: o.id,\r\n name: o.name,\r\n locked: allUsedOptionIds.includes(o.id),\r\n })),\r\n };\r\n });\r\n this.generateVariants();\r\n });\r\n }\r\n\r\n private optionsAreEqual(a: Array<{ name: string }>, b: Array<{ name: string }>): boolean {\r\n return this.toOptionString(a) === this.toOptionString(b);\r\n }\r\n\r\n private optionsAreSubset(a: Array<{ name: string }>, b: Array<{ name: string }>): boolean {\r\n return this.toOptionString(b).includes(this.toOptionString(a));\r\n }\r\n\r\n private toOptionString(o: Array<{ name: string }>): string {\r\n return o\r\n .map(x => x.name)\r\n .sort()\r\n .join('|');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Asset, AssetType, BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AssetResolver extends BaseEntityResolver<Asset.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Asset' as const,\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n name: '',\r\n type: AssetType.IMAGE,\r\n fileSize: 0,\r\n mimeType: '',\r\n width: 0,\r\n height: 0,\r\n source: '',\r\n preview: '',\r\n focalPoint: null,\r\n },\r\n id => dataService.product.getAsset(id).mapStream(data => data.asset),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver, Collection, DataService, getDefaultUiLanguage } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CollectionResolver extends BaseEntityResolver<Collection.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Collection' as 'Collection',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n languageCode: getDefaultUiLanguage(),\r\n name: '',\r\n slug: '',\r\n isPrivate: false,\r\n description: '',\r\n featuredAsset: null,\r\n assets: [],\r\n translations: [],\r\n filters: [],\r\n parent: {} as any,\r\n children: null,\r\n },\r\n id => dataService.collection.getCollection(id).mapStream(data => data.collection),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { FacetWithValues } from '@vendure/admin-ui/core';\r\nimport { getDefaultUiLanguage } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FacetResolver extends BaseEntityResolver<FacetWithValues.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Facet' as 'Facet',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n isPrivate: false,\r\n languageCode: getDefaultUiLanguage(),\r\n name: '',\r\n code: '',\r\n translations: [],\r\n values: [],\r\n },\r\n (id) => dataService.facet.getFacet(id).mapStream((data) => data.facet),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n BaseEntityResolver,\r\n DataService,\r\n getDefaultUiLanguage,\r\n GetProductWithVariants,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductResolver extends BaseEntityResolver<GetProductWithVariants.Product> {\r\n constructor(dataService: DataService, router: Router) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Product' as 'Product',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n enabled: true,\r\n languageCode: getDefaultUiLanguage(),\r\n name: '',\r\n slug: '',\r\n featuredAsset: null,\r\n assets: [],\r\n description: '',\r\n translations: [],\r\n optionGroups: [],\r\n facetValues: [],\r\n variantList: { items: [], totalItems: 0 },\r\n channels: [],\r\n },\r\n id =>\r\n dataService.product\r\n .getProduct(id, { take: 10 })\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.product),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { GetProductVariantOptions } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProductVariantsResolver extends BaseEntityResolver<GetProductVariantOptions.Product> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Product' as 'Product',\r\n id: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n name: '',\r\n optionGroups: [],\r\n variants: [],\r\n },\r\n id => dataService.product.getProductVariantsOptions(id).mapStream(data => data.product),\r\n );\r\n }\r\n}\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n Asset,\r\n CanDeactivateDetailGuard,\r\n Collection,\r\n createResolveData,\r\n detailBreadcrumb,\r\n FacetWithValues,\r\n GetProductWithVariants,\r\n} from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { AssetDetailComponent } from './components/asset-detail/asset-detail.component';\r\nimport { AssetListComponent } from './components/asset-list/asset-list.component';\r\nimport { CollectionDetailComponent } from './components/collection-detail/collection-detail.component';\r\nimport { CollectionListComponent } from './components/collection-list/collection-list.component';\r\nimport { FacetDetailComponent } from './components/facet-detail/facet-detail.component';\r\nimport { FacetListComponent } from './components/facet-list/facet-list.component';\r\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\r\nimport { ProductListComponent } from './components/product-list/product-list.component';\r\nimport { ProductOptionsEditorComponent } from './components/product-options-editor/product-options-editor.component';\r\nimport { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';\r\nimport { AssetResolver } from './providers/routing/asset-resolver';\r\nimport { CollectionResolver } from './providers/routing/collection-resolver';\r\nimport { FacetResolver } from './providers/routing/facet-resolver';\r\nimport { ProductResolver } from './providers/routing/product-resolver';\r\nimport { ProductVariantsResolver } from './providers/routing/product-variants-resolver';\r\n\r\nexport const catalogRoutes: Route[] = [\r\n {\r\n path: 'products',\r\n component: ProductListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.products'),\r\n },\r\n },\r\n {\r\n path: 'products/:id',\r\n component: ProductDetailComponent,\r\n resolve: createResolveData(ProductResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: productBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'products/:id/manage-variants',\r\n component: ProductVariantsEditorComponent,\r\n resolve: createResolveData(ProductVariantsResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: productVariantEditorBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'products/:id/options',\r\n component: ProductOptionsEditorComponent,\r\n resolve: createResolveData(ProductVariantsResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: productOptionsEditorBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'facets',\r\n component: FacetListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.facets'),\r\n },\r\n },\r\n {\r\n path: 'facets/:id',\r\n component: FacetDetailComponent,\r\n resolve: createResolveData(FacetResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: facetBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'collections',\r\n component: CollectionListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.collections'),\r\n },\r\n },\r\n {\r\n path: 'collections/:id',\r\n component: CollectionDetailComponent,\r\n resolve: createResolveData(CollectionResolver),\r\n canDeactivate: [CanDeactivateDetailGuard],\r\n data: {\r\n breadcrumb: collectionBreadcrumb,\r\n },\r\n },\r\n {\r\n path: 'assets',\r\n component: AssetListComponent,\r\n data: {\r\n breadcrumb: _('breadcrumb.assets'),\r\n },\r\n },\r\n {\r\n path: 'assets/:id',\r\n component: AssetDetailComponent,\r\n resolve: createResolveData(AssetResolver),\r\n data: {\r\n breadcrumb: assetBreadcrumb,\r\n },\r\n },\r\n];\r\n\r\nexport function productBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<GetProductWithVariants.Product>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.products',\r\n getName: product => product.name,\r\n route: 'products',\r\n });\r\n}\r\n\r\nexport function productVariantEditorBreadcrumb(data: any, params: any) {\r\n return data.entity.pipe(\r\n map((entity: any) => {\r\n return [\r\n {\r\n label: _('breadcrumb.products'),\r\n link: ['../', 'products'],\r\n },\r\n {\r\n label: `${entity.name}`,\r\n link: ['../', 'products', params.id, { tab: 'variants' }],\r\n },\r\n {\r\n label: _('breadcrumb.manage-variants'),\r\n link: ['manage-variants'],\r\n },\r\n ];\r\n }),\r\n );\r\n}\r\n\r\nexport function productOptionsEditorBreadcrumb(data: any, params: any) {\r\n return data.entity.pipe(\r\n map((entity: any) => {\r\n return [\r\n {\r\n label: _('breadcrumb.products'),\r\n link: ['../', 'products'],\r\n },\r\n {\r\n label: `${entity.name}`,\r\n link: ['../', 'products', params.id, { tab: 'variants' }],\r\n },\r\n {\r\n label: _('breadcrumb.product-options'),\r\n link: ['options'],\r\n },\r\n ];\r\n }),\r\n );\r\n}\r\n\r\nexport function facetBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<FacetWithValues.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.facets',\r\n getName: facet => facet.name,\r\n route: 'facets',\r\n });\r\n}\r\n\r\nexport function collectionBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<Collection.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.collections',\r\n getName: collection => collection.name,\r\n route: 'collections',\r\n });\r\n}\r\n\r\nexport function assetBreadcrumb(data: any, params: any) {\r\n return detailBreadcrumb<Asset.Fragment>({\r\n entity: data.entity,\r\n id: params.id,\r\n breadcrumbKey: 'breadcrumb.assets',\r\n getName: asset => asset.name,\r\n route: 'assets',\r\n });\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n Asset,\r\n AssetPickerDialogComponent,\r\n AssetPreviewDialogComponent,\r\n ModalService,\r\n Permission,\r\n} from '@vendure/admin-ui/core';\r\nimport { unique } from '@vendure/common/lib/unique';\r\n\r\nexport interface AssetChange {\r\n assets: Asset[];\r\n featuredAsset: Asset | undefined;\r\n}\r\n\r\n/**\r\n * A component which displays the Assets, and allows assets to be removed and\r\n * added, and for the featured asset to be set.\r\n *\r\n * Note: rather complex code for drag drop is due to a limitation of the default CDK implementation\r\n * which is addressed by a work-around from here: https://github.com/angular/components/issues/13372#issuecomment-483998378\r\n */\r\n@Component({\r\n selector: 'vdr-assets',\r\n templateUrl: './assets.component.html',\r\n styleUrls: ['./assets.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssetsComponent {\r\n @Input('assets') set assetsSetter(val: Asset[]) {\r\n // create a new non-readonly array of assets\r\n this.assets = (val || []).slice();\r\n }\r\n\r\n @Input() featuredAsset: Asset | undefined;\r\n @HostBinding('class.compact')\r\n @Input()\r\n compact = false;\r\n @Output() change = new EventEmitter<AssetChange>();\r\n\r\n public assets: Asset[] = [];\r\n\r\n @Input()\r\n updatePermissions: string | string[] | Permission | Permission[];\r\n\r\n constructor(private modalService: ModalService, private changeDetector: ChangeDetectorRef) {}\r\n\r\n selectAssets() {\r\n this.modalService\r\n .fromComponent(AssetPickerDialogComponent, {\r\n size: 'xl',\r\n })\r\n .subscribe(result => {\r\n if (result && result.length) {\r\n this.assets = unique(this.assets.concat(result), 'id');\r\n if (!this.featuredAsset) {\r\n this.featuredAsset = result[0];\r\n }\r\n this.emitChangeEvent(this.assets, this.featuredAsset);\r\n this.changeDetector.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n setAsFeatured(asset: Asset) {\r\n this.featuredAsset = asset;\r\n this.emitChangeEvent(this.assets, asset);\r\n }\r\n\r\n isFeatured(asset: Asset): boolean {\r\n return !!this.featuredAsset && this.featuredAsset.id === asset.id;\r\n }\r\n\r\n previewAsset(asset: Asset) {\r\n this.modalService\r\n .fromComponent(AssetPreviewDialogComponent, {\r\n size: 'xl',\r\n closable: true,\r\n locals: { asset },\r\n })\r\n .subscribe();\r\n }\r\n\r\n removeAsset(asset: Asset) {\r\n this.assets = this.assets.filter(a => a.id !== asset.id);\r\n if (this.featuredAsset && this.featuredAsset.id === asset.id) {\r\n this.featuredAsset = this.assets.length > 0 ? this.assets[0] : undefined;\r\n }\r\n this.emitChangeEvent(this.assets, this.featuredAsset);\r\n }\r\n\r\n private emitChangeEvent(assets: Asset[], featuredAsset: Asset | undefined) {\r\n this.change.emit({\r\n assets,\r\n featuredAsset,\r\n });\r\n }\r\n\r\n dropListDropped(event: CdkDragDrop<number>) {\r\n moveItemInArray(this.assets, event.previousContainer.data, event.container.data);\r\n this.emitChangeEvent(this.assets, this.featuredAsset);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n CollectionFilterParameter,\r\n ConfigurableOperationInput,\r\n DataService,\r\n GetCollectionContents,\r\n} from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n finalize,\r\n map,\r\n startWith,\r\n switchMap,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-collection-contents',\r\n templateUrl: './collection-contents.component.html',\r\n styleUrls: ['./collection-contents.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionContentsComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() collectionId: string;\r\n @Input() parentId: string;\r\n @Input() updatedFilters: ConfigurableOperationInput[] | undefined;\r\n @Input() previewUpdatedFilters = false;\r\n @ContentChild(TemplateRef, { static: true }) headerTemplate: TemplateRef<any>;\r\n\r\n contents$: Observable<GetCollectionContents.Items[]>;\r\n contentsTotalItems$: Observable<number>;\r\n contentsItemsPerPage$: Observable<number>;\r\n contentsCurrentPage$: Observable<number>;\r\n filterTermControl = new FormControl('');\r\n isLoading = false;\r\n private collectionIdChange$ = new BehaviorSubject<string>('');\r\n private parentIdChange$ = new BehaviorSubject<string>('');\r\n private filterChanges$ = new BehaviorSubject<ConfigurableOperationInput[]>([]);\r\n private refresh$ = new BehaviorSubject<boolean>(true);\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(private route: ActivatedRoute, private router: Router, private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n this.contentsCurrentPage$ = this.route.queryParamMap.pipe(\r\n map(qpm => qpm.get('contentsPage')),\r\n map(page => (!page ? 1 : +page)),\r\n startWith(1),\r\n distinctUntilChanged(),\r\n );\r\n\r\n this.contentsItemsPerPage$ = this.route.queryParamMap.pipe(\r\n map(qpm => qpm.get('contentsPerPage')),\r\n map(perPage => (!perPage ? 10 : +perPage)),\r\n startWith(10),\r\n distinctUntilChanged(),\r\n );\r\n\r\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\r\n debounceTime(250),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith(''),\r\n );\r\n\r\n const filterChanges$ = this.filterChanges$.asObservable().pipe(\r\n filter(() => this.previewUpdatedFilters),\r\n tap(() => this.setContentsPageNumber(1)),\r\n startWith([]),\r\n );\r\n\r\n const fetchUpdate$ = combineLatest(\r\n this.collectionIdChange$,\r\n this.parentIdChange$,\r\n this.contentsCurrentPage$,\r\n this.contentsItemsPerPage$,\r\n filterTerm$,\r\n filterChanges$,\r\n this.refresh$,\r\n );\r\n\r\n const collection$ = fetchUpdate$.pipe(\r\n takeUntil(this.destroy$),\r\n tap(() => (this.isLoading = true)),\r\n debounceTime(50),\r\n switchMap(([id, parentId, currentPage, itemsPerPage, filterTerm, filters]) => {\r\n const take = itemsPerPage;\r\n const skip = (currentPage - 1) * itemsPerPage;\r\n if (filters.length && this.previewUpdatedFilters) {\r\n const filterClause = filterTerm\r\n ? ({ name: { contains: filterTerm } } as CollectionFilterParameter)\r\n : undefined;\r\n return this.dataService.collection\r\n .previewCollectionVariants(\r\n {\r\n parentId,\r\n filters,\r\n },\r\n {\r\n take,\r\n skip,\r\n filter: filterClause,\r\n },\r\n )\r\n .mapSingle(data => data.previewCollectionVariants)\r\n .pipe(catchError(() => of({ items: [], totalItems: 0 })));\r\n } else if (id) {\r\n return this.dataService.collection\r\n .getCollectionContents(id, take, skip, filterTerm)\r\n .mapSingle(data => data.collection?.productVariants);\r\n } else {\r\n return of(null);\r\n }\r\n }),\r\n tap(() => (this.isLoading = false)),\r\n finalize(() => (this.isLoading = false)),\r\n );\r\n\r\n this.contents$ = collection$.pipe(map(result => (result ? result.items : [])));\r\n this.contentsTotalItems$ = collection$.pipe(map(result => (result ? result.totalItems : 0)));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ('collectionId' in changes) {\r\n this.collectionIdChange$.next(changes.collectionId.currentValue);\r\n }\r\n if ('parentId' in changes) {\r\n this.parentIdChange$.next(changes.parentId.currentValue);\r\n }\r\n if ('updatedFilters' in changes) {\r\n if (this.updatedFilters) {\r\n this.filterChanges$.next(this.updatedFilters);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n setContentsPageNumber(page: number) {\r\n this.setParam('contentsPage', page);\r\n }\r\n\r\n setContentsItemsPerPage(perPage: number) {\r\n this.setParam('contentsPerPage', perPage);\r\n }\r\n\r\n refresh() {\r\n this.refresh$.next(true);\r\n }\r\n\r\n private setParam(key: string, value: any) {\r\n this.router.navigate(['./'], {\r\n relativeTo: this.route,\r\n queryParams: {\r\n [key]: value,\r\n },\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n}\r\n","export type HasParent = { id: string; parent?: { id: string } | null };\r\nexport type TreeNode<T extends HasParent> = T & { children: Array<TreeNode<T>>; expanded: boolean };\r\nexport type RootNode<T extends HasParent> = { id?: string; children: Array<TreeNode<T>> };\r\n\r\n/**\r\n * Builds a tree from an array of nodes which have a parent.\r\n * Based on https://stackoverflow.com/a/31247960/772859, modified to preserve ordering.\r\n */\r\nexport function arrayToTree<T extends HasParent>(\r\n nodes: T[],\r\n currentState?: RootNode<T>,\r\n expandedIds: string[] = [],\r\n): RootNode<T> {\r\n const topLevelNodes: Array<TreeNode<T>> = [];\r\n const mappedArr: { [id: string]: TreeNode<T> } = {};\r\n const currentStateMap = treeToMap(currentState);\r\n\r\n // First map the nodes of the array to an object -> create a hash table.\r\n for (const node of nodes) {\r\n mappedArr[node.id] = { ...(node as any), children: [] };\r\n }\r\n\r\n for (const id of nodes.map(n => n.id)) {\r\n if (mappedArr.hasOwnProperty(id)) {\r\n const mappedElem = mappedArr[id];\r\n mappedElem.expanded = currentStateMap.get(id)?.expanded ?? expandedIds.includes(id);\r\n const parent = mappedElem.parent;\r\n if (!parent) {\r\n continue;\r\n }\r\n // If the element is not at the root level, add it to its parent array of children.\r\n const parentIsRoot = !mappedArr[parent.id];\r\n if (!parentIsRoot) {\r\n if (mappedArr[parent.id]) {\r\n mappedArr[parent.id].children.push(mappedElem);\r\n } else {\r\n mappedArr[parent.id] = { children: [mappedElem] } as any;\r\n }\r\n } else {\r\n topLevelNodes.push(mappedElem);\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:no-non-null-assertion\r\n const rootId = topLevelNodes.length ? topLevelNodes[0].parent!.id : undefined;\r\n return { id: rootId, children: topLevelNodes };\r\n}\r\n\r\n/**\r\n * Converts an existing tree (as generated by the arrayToTree function) into a flat\r\n * Map. This is used to persist certain states (e.g. `expanded`) when re-building the\r\n * tree.\r\n */\r\nfunction treeToMap<T extends HasParent>(tree?: RootNode<T>): Map<string, TreeNode<T>> {\r\n const nodeMap = new Map<string, TreeNode<T>>();\r\n function visit(node: TreeNode<T>) {\r\n nodeMap.set(node.id, node);\r\n node.children.forEach(visit);\r\n }\r\n if (tree) {\r\n visit(tree as TreeNode<T>);\r\n }\r\n return nodeMap;\r\n}\r\n","import { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { Collection } from '@vendure/admin-ui/core';\r\n\r\nimport { arrayToTree, HasParent, RootNode, TreeNode } from './array-to-tree';\r\n\r\nexport type RearrangeEvent = { collectionId: string; parentId: string; index: number };\r\nexport type CollectionPartial = Pick<Collection.Fragment, 'id' | 'parent' | 'name'>;\r\n\r\n@Component({\r\n selector: 'vdr-collection-tree',\r\n templateUrl: 'collection-tree.component.html',\r\n styleUrls: ['./collection-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionTreeComponent implements OnChanges {\r\n @Input() collections: CollectionPartial[];\r\n @Input() activeCollectionId: string;\r\n @Input() expandAll = false;\r\n @Input() expandedIds: string[] = [];\r\n @Output() rearrange = new EventEmitter<RearrangeEvent>();\r\n @Output() deleteCollection = new EventEmitter<string>();\r\n collectionTree: RootNode<CollectionPartial>;\r\n private allMoveListItems: Array<{ path: string; id: string; ancestorIdPath: Set<string> }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('collections' in changes && this.collections) {\r\n this.collectionTree = arrayToTree(this.collections, this.collectionTree, this.expandedIds);\r\n this.allMoveListItems = [];\r\n }\r\n }\r\n\r\n onDrop(event: CdkDragDrop<CollectionPartial | RootNode<CollectionPartial>>) {\r\n const item = event.item.data as CollectionPartial;\r\n const newParent = event.container.data;\r\n const newParentId = newParent.id;\r\n if (newParentId == null) {\r\n throw new Error(`Could not determine the ID of the root Collection`);\r\n }\r\n this.rearrange.emit({\r\n collectionId: item.id,\r\n parentId: newParentId,\r\n index: event.currentIndex,\r\n });\r\n }\r\n\r\n onMove(event: RearrangeEvent) {\r\n this.rearrange.emit(event);\r\n }\r\n\r\n onDelete(id: string) {\r\n this.deleteCollection.emit(id);\r\n }\r\n\r\n getMoveListItems(collection: CollectionPartial) {\r\n if (this.allMoveListItems.length === 0) {\r\n this.allMoveListItems = this.calculateAllMoveListItems();\r\n }\r\n return this.allMoveListItems.filter(\r\n item =>\r\n item.id !== collection.id &&\r\n !item.ancestorIdPath.has(collection.id) &&\r\n item.id !== collection.parent?.id,\r\n );\r\n }\r\n\r\n calculateAllMoveListItems() {\r\n const visit = (\r\n node: TreeNode<any>,\r\n parentPath: string[],\r\n ancestorIdPath: Set<string>,\r\n output: Array<{ path: string; id: string; ancestorIdPath: Set<string> }>,\r\n ) => {\r\n const path = parentPath.concat(node.name);\r\n output.push({ path: path.slice(1).join(' / ') || 'root', id: node.id, ancestorIdPath });\r\n node.children.forEach(child =>\r\n visit(child, path, new Set<string>([...ancestorIdPath, node.id]), output),\r\n );\r\n return output;\r\n };\r\n return visit(this.collectionTree, [], new Set<string>(), []);\r\n }\r\n\r\n private isRootNode<T extends HasParent>(node: T | RootNode<T>): node is RootNode<T> {\r\n return !node.hasOwnProperty('parent');\r\n }\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional,\r\n SimpleChanges,\r\n SkipSelf,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DataService, Permission } from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\n\r\nimport { RootNode, TreeNode } from './array-to-tree';\r\nimport { CollectionPartial, CollectionTreeComponent } from './collection-tree.component';\r\n\r\n@Component({\r\n selector: 'vdr-collection-tree-node',\r\n templateUrl: './collection-tree-node.component.html',\r\n styleUrls: ['./collection-tree-node.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CollectionTreeNodeComponent implements OnInit, OnChanges {\r\n depth = 0;\r\n parentName: string;\r\n @Input() collectionTree: TreeNode<CollectionPartial>;\r\n @Input() activeCollectionId: string;\r\n @Input() expandAll = false;\r\n hasUpdatePermission$: Observable<boolean>;\r\n hasDeletePermission$: Observable<boolean>;\r\n moveListItems: Array<{ path: string; id: string }> = [];\r\n\r\n constructor(\r\n @SkipSelf() @Optional() private parent: CollectionTreeNodeComponent,\r\n private root: CollectionTreeComponent,\r\n private dataService: DataService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n ) {\r\n if (parent) {\r\n this.depth = parent.depth + 1;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentName = this.collectionTree.name || '<root>';\r\n const permissions$ = this.dataService.client\r\n .userStatus()\r\n .mapStream(data => data.userStatus.permissions)\r\n .pipe(shareReplay(1));\r\n this.hasUpdatePermission$ = permissions$.pipe(\r\n map(\r\n perms =>\r\n perms.includes(Permission.UpdateCatalog) || perms.includes(Permission.UpdateCollection),\r\n ),\r\n );\r\n this.hasDeletePermission$ = permissions$.pipe(\r\n map(\r\n perms =>\r\n perms.includes(Permission.DeleteCatalog) || perms.includes(Permission.DeleteCollection),\r\n ),\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const expandAllChange = changes['expandAll'];\r\n if (expandAllChange) {\r\n if (expandAllChange.previousValue === true && expandAllChange.currentValue === false) {\r\n this.collectionTree.children.forEach(c => (c.expanded = false));\r\n }\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: CollectionPartial) {\r\n return item.id;\r\n }\r\n\r\n toggleExpanded(collection: TreeNode<CollectionPartial>) {\r\n collection.expanded = !collection.expanded;\r\n let expandedIds = this.route.snapshot.queryParamMap.get('expanded')?.split(',') ?? [];\r\n if (collection.expanded) {\r\n expandedIds.push(collection.id);\r\n } else {\r\n expandedIds = expandedIds.filter(id => id !== collection.id);\r\n }\r\n this.router.navigate(['./'], {\r\n queryParams: {\r\n expanded: expandedIds.filter(id => !!id).join(','),\r\n },\r\n queryParamsHandling: 'merge',\r\n relativeTo: this.route,\r\n });\r\n }\r\n\r\n getMoveListItems(collection: CollectionPartial) {\r\n this.moveListItems = this.root.getMoveListItems(collection);\r\n }\r\n\r\n move(collection: CollectionPartial, parentId: string) {\r\n this.root.onMove({\r\n index: 0,\r\n parentId,\r\n collectionId: collection.id,\r\n });\r\n }\r\n\r\n moveUp(collection: CollectionPartial, currentIndex: number) {\r\n if (!collection.parent) {\r\n return;\r\n }\r\n this.root.onMove({\r\n index: currentIndex - 1,\r\n parentId: collection.parent.id,\r\n collectionId: collection.id,\r\n });\r\n }\r\n\r\n moveDown(collection: CollectionPartial, currentIndex: number) {\r\n if (!collection.parent) {\r\n return;\r\n }\r\n this.root.onMove({\r\n index: currentIndex + 1,\r\n parentId: collection.parent.id,\r\n collectionId: collection.id,\r\n });\r\n }\r\n\r\n drop(event: CdkDragDrop<CollectionPartial | RootNode<CollectionPartial>>) {\r\n moveItemInArray(this.collectionTree.children, event.previousIndex, event.currentIndex);\r\n this.root.onDrop(event);\r\n }\r\n\r\n delete(id: string) {\r\n this.root.onDelete(id);\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { CurrencyCode, DataService } from '@vendure/admin-ui/core';\nimport { generateAllCombinations } from '@vendure/common/lib/shared-utils';\n\nimport { OptionValueInputComponent } from '../option-value-input/option-value-input.component';\n\nconst DEFAULT_VARIANT_CODE = '__DEFAULT_VARIANT__';\nexport type CreateVariantValues = {\n optionValues: string[];\n enabled: boolean;\n sku: string;\n price: number;\n stock: number;\n};\nexport type CreateProductVariantsConfig = {\n groups: Array<{ name: string; values: string[] }>;\n variants: CreateVariantValues[];\n};\n\n@Component({\n selector: 'vdr-generate-product-variants',\n templateUrl: './generate-product-variants.component.html',\n styleUrls: ['./generate-product-variants.component.scss'],\n})\nexport class GenerateProductVariantsComponent implements OnInit {\n @Output() variantsChange = new EventEmitter<CreateProductVariantsConfig>();\n @ViewChildren('optionGroupName', { read: ElementRef }) groupNameInputs: QueryList<ElementRef>;\n optionGroups: Array<{ name: string; values: Array<{ name: string; locked: boolean }> }> = [];\n currencyCode: CurrencyCode;\n variants: Array<{ id: string; values: string[] }>;\n variantFormValues: { [id: string]: CreateVariantValues } = {};\n constructor(private dataService: DataService) {}\n\n ngOnInit() {\n this.dataService.settings.getActiveChannel().single$.subscribe(data => {\n this.currencyCode = data.activeChannel.currencyCode;\n });\n\n this.generateVariants();\n }\n\n addOption() {\n this.optionGroups.push({ name: '', values: [] });\n const index = this.optionGroups.length - 1;\n setTimeout(() => {\n const input = this.groupNameInputs.get(index)?.nativeElement;\n input?.focus();\n });\n }\n\n removeOption(name: string) {\n this.optionGroups = this.optionGroups.filter(g => g.name !== name);\n this.generateVariants();\n }\n\n generateVariants() {\n const totalValuesCount = this.optionGroups.reduce((sum, group) => sum + group.values.length, 0);\n const groups = totalValuesCount\n ? this.optionGroups.map(g => g.values.map(v => v.name))\n : [[DEFAULT_VARIANT_CODE]];\n this.variants = generateAllCombinations(groups).map(values => ({ id: values.join('|'), values }));\n\n this.variants.forEach(variant => {\n if (!this.variantFormValues[variant.id]) {\n this.variantFormValues[variant.id] = {\n optionValues: variant.values,\n enabled: true,\n price: this.copyFromDefault(variant.id, 'price', 0),\n sku: this.copyFromDefault(variant.id, 'sku', ''),\n stock: this.copyFromDefault(variant.id, 'stock', 0),\n };\n }\n });\n this.onFormChange();\n }\n\n trackByFn(index: number, variant: { name: string; values: string[] }) {\n return variant.values.join('|');\n }\n\n handleEnter(event: KeyboardEvent, optionValueInputComponent: OptionValueInputComponent) {\n event.preventDefault();\n event.stopPropagation();\n optionValueInputComponent.focus();\n }\n\n onFormChange() {\n const variantsToCreate = this.variants.map(v => this.variantFormValues[v.id]).filter(v => v.enabled);\n this.variantsChange.emit({\n groups: this.optionGroups.map(og => ({ name: og.name, values: og.values.map(v => v.name) })),\n variants: variantsToCreate,\n });\n }\n\n private copyFromDefault<T extends keyof CreateVariantValues>(\n variantId: string,\n prop: T,\n value: CreateVariantValues[T],\n ): CreateVariantValues[T] {\n return variantId !== DEFAULT_VARIANT_CODE\n ? this.variantFormValues[DEFAULT_VARIANT_CODE][prop]\n : value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Output,\n Provider,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { unique } from '@vendure/common/lib/unique';\n\nexport const OPTION_VALUE_INPUT_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OptionValueInputComponent),\n multi: true,\n};\n\ninterface Option {\n id?: string;\n name: string;\n locked: boolean;\n}\n\n@Component({\n selector: 'vdr-option-value-input',\n templateUrl: './option-value-input.component.html',\n styleUrls: ['./option-value-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [OPTION_VALUE_INPUT_VALUE_ACCESSOR],\n})\nexport class OptionValueInputComponent implements ControlValueAccessor {\n @Input() groupName = '';\n @ViewChild('textArea', { static: true }) textArea: ElementRef<HTMLTextAreaElement>;\n @ViewChildren('editNameInput', { read: ElementRef }) nameInputs: QueryList<ElementRef>;\n @Input() options: Option[];\n @Output() add = new EventEmitter<Option>();\n @Output() remove = new EventEmitter<Option>();\n @Output() edit = new EventEmitter<{ index: number; option: Option }>();\n @Input() disabled = false;\n input = '';\n isFocussed = false;\n lastSelected = false;\n formValue: Option[];\n editingIndex = -1;\n onChangeFn: (value: any) => void;\n onTouchFn: (value: any) => void;\n\n get optionValues(): Option[] {\n return this.formValue ?? this.options ?? [];\n }\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.formValue = obj || [];\n }\n\n focus() {\n this.textArea.nativeElement.focus();\n }\n\n editName(index: number, event: MouseEvent) {\n const optionValue = this.optionValues[index];\n if (!optionValue.locked && !optionValue.id) {\n event.cancelBubble = true;\n this.editingIndex = index;\n const input = this.nameInputs.get(index)?.nativeElement;\n setTimeout(() => input?.focus());\n }\n }\n\n updateOption(index: number, event: InputEvent) {\n const optionValue = this.optionValues[index];\n const newName = (event.target as HTMLInputElement).value;\n if (optionValue) {\n if (newName) {\n optionValue.name = newName;\n this.edit.emit({ index, option: optionValue });\n }\n this.editingIndex = -1;\n }\n }\n\n removeOption(option: Option) {\n if (!option.locked) {\n if (this.formValue) {\n this.formValue = this.formValue?.filter(o => o.name !== option.name);\n this.onChangeFn(this.formValue);\n } else {\n this.remove.emit(option);\n }\n }\n }\n\n handleKey(event: KeyboardEvent) {\n switch (event.key) {\n case ',':\n case 'Enter':\n this.addOptionValue();\n event.preventDefault();\n break;\n case 'Backspace':\n if (this.lastSelected) {\n this.removeLastOption();\n this.lastSelected = false;\n } else if (this.input === '') {\n this.lastSelected = true;\n }\n break;\n default:\n this.lastSelected = false;\n }\n }\n\n handleBlur() {\n this.isFocussed = false;\n this.addOptionValue();\n }\n\n private addOptionValue() {\n const options = this.parseInputIntoOptions(this.input);\n if (!this.formValue && this.options) {\n for (const option of options) {\n this.add.emit(option);\n }\n } else {\n this.formValue = unique([...this.formValue, ...options]);\n this.onChangeFn(this.formValue);\n }\n this.input = '';\n }\n\n private parseInputIntoOptions(input: string): Option[] {\n return input\n .split(/[,\\n]/)\n .map(s => s.trim())\n .filter(s => s !== '')\n .map(s => ({ name: s, locked: false }));\n }\n\n private removeLastOption() {\n if (this.optionValues.length) {\n const option = this.optionValues[this.optionValues.length - 1];\n this.removeOption(option);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport {\r\n CustomFieldConfig,\r\n LanguageCode,\r\n ProductVariant,\r\n UpdateProductOptionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { createUpdatedTranslatable } from '@vendure/admin-ui/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\r\n\r\n@Component({\r\n selector: 'vdr-update-product-option-dialog',\r\n templateUrl: './update-product-option-dialog.component.html',\r\n styleUrls: ['./update-product-option-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UpdateProductOptionDialogComponent\r\n implements Dialog<UpdateProductOptionInput & { autoUpdate: boolean }>, OnInit {\r\n resolveWith: (result?: UpdateProductOptionInput & { autoUpdate: boolean }) => void;\r\n updateVariantName = true;\r\n // Provided by caller\r\n productOption: ProductVariant.Options;\r\n activeLanguage: LanguageCode;\r\n name: string;\r\n code: string;\r\n customFields: CustomFieldConfig[];\r\n codeInputTouched = false;\r\n customFieldsForm: FormGroup;\r\n\r\n ngOnInit(): void {\r\n const currentTranslation = this.productOption.translations.find(\r\n t => t.languageCode === this.activeLanguage,\r\n );\r\n this.name = currentTranslation?.name ?? '';\r\n this.code = this.productOption.code;\r\n this.customFieldsForm = new FormGroup({});\r\n if (this.customFields) {\r\n const cfCurrentTranslation =\r\n (currentTranslation && (currentTranslation as any).customFields) || {};\r\n\r\n for (const fieldDef of this.customFields) {\r\n const key = fieldDef.name;\r\n const value =\r\n fieldDef.type === 'localeString'\r\n ? cfCurrentTranslation[key]\r\n : (this.productOption as any).customFields[key];\r\n this.customFieldsForm.addControl(fieldDef.name, new FormControl(value));\r\n }\r\n }\r\n }\r\n\r\n update() {\r\n const result = createUpdatedTranslatable({\r\n translatable: this.productOption,\r\n languageCode: this.activeLanguage,\r\n updatedFields: {\r\n code: this.code,\r\n name: this.name,\r\n customFields: this.customFieldsForm.value,\r\n },\r\n customFieldConfig: this.customFields,\r\n defaultTranslation: {\r\n languageCode: this.activeLanguage,\r\n name: '',\r\n },\r\n });\r\n this.resolveWith({ ...result, autoUpdate: this.updateVariantName });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n updateCode(nameValue: string) {\r\n if (!this.codeInputTouched && !this.productOption.code) {\r\n this.code = normalizeString(nameValue, '-');\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { FormArray, FormGroup } from '@angular/forms';\r\nimport {\r\n CustomFieldConfig,\r\n DataService,\r\n FacetValue,\r\n FacetWithValues,\r\n flattenFacetValues,\r\n GlobalFlag,\r\n LanguageCode,\r\n ModalService,\r\n Permission,\r\n ProductDetail,\r\n ProductOptionFragment,\r\n ProductVariant,\r\n TaxCategory,\r\n UpdateProductOptionInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { PaginationInstance } from 'ngx-pagination';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport { AssetChange } from '../assets/assets.component';\r\nimport {\r\n PaginationConfig,\r\n SelectedAssets,\r\n VariantFormValue,\r\n} from '../product-detail/product-detail.component';\r\nimport { UpdateProductOptionDialogComponent } from '../update-product-option-dialog/update-product-option-dialog.component';\r\n\r\nexport interface VariantAssetChange extends AssetChange {\r\n variantId: string;\r\n}\r\n\r\n@Component({\r\n selector: 'vdr-product-variants-list',\r\n templateUrl: './product-variants-list.component.html',\r\n styleUrls: ['./product-variants-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductVariantsListComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input('productVariantsFormArray') formArray: FormArray;\r\n @Input() variants: ProductVariant.Fragment[];\r\n @Input() paginationConfig: PaginationConfig;\r\n @Input() channelPriceIncludesTax: boolean;\r\n @Input() taxCategories: TaxCategory[];\r\n @Input() facets: FacetWithValues.Fragment[];\r\n @Input() optionGroups: ProductDetail.OptionGroups[];\r\n @Input() customFields: CustomFieldConfig[];\r\n @Input() customOptionFields: CustomFieldConfig[];\r\n @Input() activeLanguage: LanguageCode;\r\n @Input() pendingAssetChanges: { [variantId: string]: SelectedAssets };\r\n @Output() assignToChannel = new EventEmitter<ProductVariant.Fragment>();\r\n @Output() removeFromChannel = new EventEmitter<{\r\n channelId: string;\r\n variant: ProductVariant.Fragment;\r\n }>();\r\n @Output() assetChange = new EventEmitter<VariantAssetChange>();\r\n @Output() selectionChange = new EventEmitter<string[]>();\r\n @Output() selectFacetValueClick = new EventEmitter<string[]>();\r\n @Output() updateProductOption = new EventEmitter<UpdateProductOptionInput & { autoUpdate: boolean }>();\r\n selectedVariantIds: string[] = [];\r\n formGroupMap = new Map<string, FormGroup>();\r\n GlobalFlag = GlobalFlag;\r\n globalTrackInventory: boolean;\r\n globalOutOfStockThreshold: number;\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n private facetValues: FacetValue.Fragment[];\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n private modalService: ModalService,\r\n private dataService: DataService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.dataService.settings.getGlobalSettings('cache-first').single$.subscribe(({ globalSettings }) => {\r\n this.globalTrackInventory = globalSettings.trackInventory;\r\n this.globalOutOfStockThreshold = globalSettings.outOfStockThreshold;\r\n this.changeDetector.markForCheck();\r\n });\r\n this.subscription = this.formArray.valueChanges.subscribe(() => this.changeDetector.markForCheck());\r\n\r\n this.subscription.add(\r\n this.formArray.valueChanges\r\n .pipe(\r\n map(value => value.length),\r\n debounceTime(1),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.buildFormGroupMap();\r\n }),\r\n );\r\n\r\n this.buildFormGroupMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('facets' in changes && !!changes['facets'].currentValue) {\r\n this.facetValues = flattenFacetValues(this.facets);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n isDefaultChannel(channelCode: string): boolean {\r\n return channelCode === DEFAULT_CHANNEL_CODE;\r\n }\r\n\r\n trackById(index: number, item: ProductVariant.Fragment) {\r\n return item.id;\r\n }\r\n\r\n inventoryIsNotTracked(formGroup: FormGroup): boolean {\r\n const trackInventory = formGroup.get('trackInventory')?.value;\r\n return (\r\n trackInventory === GlobalFlag.FALSE ||\r\n (trackInventory === GlobalFlag.INHERIT && this.globalTrackInventory === false)\r\n );\r\n }\r\n\r\n getTaxCategoryName(group: FormGroup): string {\r\n const control = group.get(['taxCategoryId']);\r\n if (control && this.taxCategories) {\r\n const match = this.taxCategories.find(t => t.id === control.value);\r\n return match ? match.name : '';\r\n }\r\n return '';\r\n }\r\n\r\n getStockOnHandMinValue(variant: FormGroup) {\r\n const effectiveOutOfStockThreshold = variant.get('useGlobalOutOfStockThreshold')?.value\r\n ? this.globalOutOfStockThreshold\r\n : variant.get('outOfStockThreshold')?.value;\r\n return effectiveOutOfStockThreshold;\r\n }\r\n\r\n getSaleableStockLevel(variant: ProductVariant.Fragment) {\r\n const effectiveOutOfStockThreshold = variant.useGlobalOutOfStockThreshold\r\n ? this.globalOutOfStockThreshold\r\n : variant.outOfStockThreshold;\r\n return variant.stockOnHand - variant.stockAllocated - effectiveOutOfStockThreshold;\r\n }\r\n\r\n areAllSelected(): boolean {\r\n return !!this.variants && this.selectedVariantIds.length === this.variants.length;\r\n }\r\n\r\n onAssetChange(variantId: string, event: AssetChange) {\r\n this.assetChange.emit({\r\n variantId,\r\n ...event,\r\n });\r\n const index = this.variants.findIndex(v => v.id === variantId);\r\n this.formArray.at(index).markAsDirty();\r\n }\r\n\r\n toggleSelectAll() {\r\n if (this.areAllSelected()) {\r\n this.selectedVariantIds = [];\r\n } else {\r\n this.selectedVariantIds = this.variants.map(v => v.id);\r\n }\r\n this.selectionChange.emit(this.selectedVariantIds);\r\n }\r\n\r\n toggleSelectVariant(variantId: string) {\r\n const index = this.selectedVariantIds.indexOf(variantId);\r\n if (-1 < index) {\r\n this.selectedVariantIds.splice(index, 1);\r\n } else {\r\n this.selectedVariantIds.push(variantId);\r\n }\r\n this.selectionChange.emit(this.selectedVariantIds);\r\n }\r\n\r\n optionGroupName(optionGroupId: string): string | undefined {\r\n const group = this.optionGroups.find(g => g.id === optionGroupId);\r\n if (group) {\r\n const translation =\r\n group?.translations.find(t => t.languageCode === this.activeLanguage) ??\r\n group.translations[0];\r\n return translation.name;\r\n }\r\n }\r\n\r\n optionName(option: ProductOptionFragment) {\r\n const translation =\r\n option.translations.find(t => t.languageCode === this.activeLanguage) ?? option.translations[0];\r\n return translation.name;\r\n }\r\n\r\n pendingFacetValues(variant: ProductVariant.Fragment) {\r\n if (this.facets) {\r\n const formFacetValueIds = this.getFacetValueIds(variant.id);\r\n const variantFacetValueIds = variant.facetValues.map(fv => fv.id);\r\n return formFacetValueIds\r\n .filter(x => !variantFacetValueIds.includes(x))\r\n .map(id => this.facetValues.find(fv => fv.id === id))\r\n .filter(notNullOrUndefined);\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n existingFacetValues(variant: ProductVariant.Fragment) {\r\n const formFacetValueIds = this.getFacetValueIds(variant.id);\r\n const intersection = [...formFacetValueIds].filter(x =>\r\n variant.facetValues.map(fv => fv.id).includes(x),\r\n );\r\n return intersection\r\n .map(id => variant.facetValues.find(fv => fv.id === id))\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n removeFacetValue(variant: ProductVariant.Fragment, facetValueId: string) {\r\n const formGroup = this.formGroupMap.get(variant.id);\r\n if (formGroup) {\r\n const newValue = (formGroup.value as VariantFormValue).facetValueIds.filter(\r\n id => id !== facetValueId,\r\n );\r\n formGroup.patchValue({\r\n facetValueIds: newValue,\r\n });\r\n formGroup.markAsDirty();\r\n }\r\n }\r\n\r\n isVariantSelected(variantId: string): boolean {\r\n return -1 < this.selectedVariantIds.indexOf(variantId);\r\n }\r\n\r\n editOption(option: ProductVariant.Options) {\r\n this.modalService\r\n .fromComponent(UpdateProductOptionDialogComponent, {\r\n size: 'md',\r\n locals: {\r\n productOption: option,\r\n activeLanguage: this.activeLanguage,\r\n customFields: this.customOptionFields,\r\n },\r\n })\r\n .subscribe(result => {\r\n if (result) {\r\n this.updateProductOption.emit(result);\r\n }\r\n });\r\n }\r\n\r\n private buildFormGroupMap() {\r\n this.formGroupMap.clear();\r\n for (const controlGroup of this.formArray.controls) {\r\n this.formGroupMap.set(controlGroup.value.id, controlGroup as FormGroup);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n private getFacetValueIds(id: string): string[] {\r\n const formValue: VariantFormValue = this.formGroupMap.get(id)?.value;\r\n return formValue.facetValueIds;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { FormArray, FormGroup } from '@angular/forms';\r\nimport { Permission, ProductDetail, ProductVariant } from '@vendure/admin-ui/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport { PaginationConfig, SelectedAssets } from '../product-detail/product-detail.component';\r\n\r\n@Component({\r\n selector: 'vdr-product-variants-table',\r\n templateUrl: './product-variants-table.component.html',\r\n styleUrls: ['./product-variants-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ProductVariantsTableComponent implements OnInit, OnDestroy {\r\n @Input('productVariantsFormArray') formArray: FormArray;\r\n @Input() variants: ProductVariant.Fragment[];\r\n @Input() paginationConfig: PaginationConfig;\r\n @Input() channelPriceIncludesTax: boolean;\r\n @Input() optionGroups: ProductDetail.OptionGroups[];\r\n @Input() pendingAssetChanges: { [variantId: string]: SelectedAssets };\r\n formGroupMap = new Map<string, FormGroup>();\r\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\r\n private subscription: Subscription;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.subscription = this.formArray.valueChanges\r\n .pipe(\r\n map(value => value.length),\r\n debounceTime(1),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.buildFormGroupMap();\r\n });\r\n\r\n this.buildFormGroupMap();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: any) {\r\n if ((item as any).id != null) {\r\n return (item as any).id;\r\n } else {\r\n return index;\r\n }\r\n }\r\n\r\n getFeaturedAsset(variant: ProductVariant.Fragment) {\r\n return this.pendingAssetChanges[variant.id]?.featuredAsset || variant.featuredAsset;\r\n }\r\n\r\n optionGroupName(optionGroupId: string): string | undefined {\r\n const group = this.optionGroups.find(g => g.id === optionGroupId);\r\n return group && group.name;\r\n }\r\n\r\n private buildFormGroupMap() {\r\n this.formGroupMap.clear();\r\n for (const controlGroup of this.formArray.controls) {\r\n this.formGroupMap.set(controlGroup.value.id, controlGroup as FormGroup);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-variant-price-detail',\r\n templateUrl: './variant-price-detail.component.html',\r\n styleUrls: ['./variant-price-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class VariantPriceDetailComponent implements OnInit, OnChanges {\r\n @Input() priceIncludesTax: boolean;\r\n @Input() price: number;\r\n @Input() currencyCode: string;\r\n @Input() taxCategoryId: string;\r\n\r\n grossPrice$: Observable<number>;\r\n taxRate$: Observable<number>;\r\n\r\n private priceChange$ = new BehaviorSubject<number>(0);\r\n private taxCategoryIdChange$ = new BehaviorSubject<string>('');\r\n\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit() {\r\n const taxRates$ = this.dataService.settings\r\n .getTaxRatesSimple(999, 0, 'cache-first')\r\n .mapStream(data => data.taxRates.items);\r\n const activeChannel$ = this.dataService.settings\r\n .getActiveChannel('cache-first')\r\n .refetchOnChannelChange()\r\n .mapStream(data => data.activeChannel);\r\n\r\n this.taxRate$ = combineLatest(activeChannel$, taxRates$, this.taxCategoryIdChange$).pipe(\r\n map(([channel, taxRates, taxCategoryId]) => {\r\n const defaultTaxZone = channel.defaultTaxZone;\r\n if (!defaultTaxZone) {\r\n return 0;\r\n }\r\n const applicableRate = taxRates.find(\r\n taxRate => taxRate.zone.id === defaultTaxZone.id && taxRate.category.id === taxCategoryId,\r\n );\r\n\r\n if (!applicableRate) {\r\n return 0;\r\n }\r\n return applicableRate.value;\r\n }),\r\n );\r\n\r\n this.grossPrice$ = combineLatest(this.taxRate$, this.priceChange$).pipe(\r\n map(([taxRate, price]) => {\r\n return Math.round(price * ((100 + taxRate) / 100));\r\n }),\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if ('price' in changes) {\r\n this.priceChange$.next(changes.price.currentValue);\r\n }\r\n if ('taxCategoryId' in changes) {\r\n this.taxCategoryIdChange$.next(changes.taxCategoryId.currentValue);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '@vendure/admin-ui/core';\r\n\r\nimport { catalogRoutes } from './catalog.routes';\r\nimport { ApplyFacetDialogComponent } from './components/apply-facet-dialog/apply-facet-dialog.component';\r\nimport { AssetDetailComponent } from './components/asset-detail/asset-detail.component';\r\nimport { AssetListComponent } from './components/asset-list/asset-list.component';\r\nimport { AssetsComponent } from './components/assets/assets.component';\r\nimport { AssignProductsToChannelDialogComponent } from './components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\r\nimport { CollectionContentsComponent } from './components/collection-contents/collection-contents.component';\r\nimport { CollectionDetailComponent } from './components/collection-detail/collection-detail.component';\r\nimport { CollectionListComponent } from './components/collection-list/collection-list.component';\r\nimport { CollectionTreeNodeComponent } from './components/collection-tree/collection-tree-node.component';\r\nimport { CollectionTreeComponent } from './components/collection-tree/collection-tree.component';\r\nimport { ConfirmVariantDeletionDialogComponent } from './components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\r\nimport { FacetDetailComponent } from './components/facet-detail/facet-detail.component';\r\nimport { FacetListComponent } from './components/facet-list/facet-list.component';\r\nimport { GenerateProductVariantsComponent } from './components/generate-product-variants/generate-product-variants.component';\r\nimport { OptionValueInputComponent } from './components/option-value-input/option-value-input.component';\r\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\r\nimport { ProductListComponent } from './components/product-list/product-list.component';\r\nimport { ProductOptionsEditorComponent } from './components/product-options-editor/product-options-editor.component';\r\nimport { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';\r\nimport { ProductVariantsListComponent } from './components/product-variants-list/product-variants-list.component';\r\nimport { ProductVariantsTableComponent } from './components/product-variants-table/product-variants-table.component';\r\nimport { UpdateProductOptionDialogComponent } from './components/update-product-option-dialog/update-product-option-dialog.component';\r\nimport { VariantPriceDetailComponent } from './components/variant-price-detail/variant-price-detail.component';\r\n\r\nconst CATALOG_COMPONENTS = [\r\n ProductListComponent,\r\n ProductDetailComponent,\r\n FacetListComponent,\r\n FacetDetailComponent,\r\n GenerateProductVariantsComponent,\r\n ProductVariantsListComponent,\r\n ApplyFacetDialogComponent,\r\n AssetListComponent,\r\n AssetsComponent,\r\n VariantPriceDetailComponent,\r\n CollectionListComponent,\r\n CollectionDetailComponent,\r\n CollectionTreeComponent,\r\n CollectionTreeNodeComponent,\r\n CollectionContentsComponent,\r\n ProductVariantsTableComponent,\r\n OptionValueInputComponent,\r\n UpdateProductOptionDialogComponent,\r\n ProductVariantsEditorComponent,\r\n AssignProductsToChannelDialogComponent,\r\n AssetDetailComponent,\r\n ConfirmVariantDeletionDialogComponent,\r\n ProductOptionsEditorComponent,\r\n];\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild(catalogRoutes)],\r\n exports: [...CATALOG_COMPONENTS],\r\n declarations: [...CATALOG_COMPONENTS],\r\n})\r\nexport class CatalogModule {}\r\n","// This file was generated by the build-public-api.ts script\nexport * from './catalog.module';\nexport * from './catalog.routes';\nexport * from './components/apply-facet-dialog/apply-facet-dialog.component';\nexport * from './components/asset-detail/asset-detail.component';\nexport * from './components/asset-list/asset-list.component';\nexport * from './components/assets/assets.component';\nexport * from './components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\nexport * from './components/collection-contents/collection-contents.component';\nexport * from './components/collection-detail/collection-detail.component';\nexport * from './components/collection-list/collection-list.component';\nexport * from './components/collection-tree/array-to-tree';\nexport * from './components/collection-tree/collection-tree-node.component';\nexport * from './components/collection-tree/collection-tree.component';\nexport * from './components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\nexport * from './components/facet-detail/facet-detail.component';\nexport * from './components/facet-list/facet-list.component';\nexport * from './components/generate-product-variants/generate-product-variants.component';\nexport * from './components/option-value-input/option-value-input.component';\nexport * from './components/product-detail/product-detail.component';\nexport * from './components/product-list/product-list.component';\nexport * from './components/product-options-editor/product-options-editor.component';\nexport * from './components/product-variants-editor/product-variants-editor.component';\nexport * from './components/product-variants-list/product-variants-list.component';\nexport * from './components/product-variants-table/product-variants-table.component';\nexport * from './components/update-product-option-dialog/update-product-option-dialog.component';\nexport * from './components/variant-price-detail/variant-price-detail.component';\nexport * from './providers/product-detail/product-detail.service';\nexport * from './providers/product-detail/replace-last';\nexport * from './providers/routing/asset-resolver';\nexport * from './providers/routing/collection-resolver';\nexport * from './providers/routing/facet-resolver';\nexport * from './providers/routing/product-resolver';\nexport * from './providers/routing/product-variants-resolver';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["FormGroup","FormControl","_","BaseDetailComponent","Component","ChangeDetectionStrategy","Router","ActivatedRoute","ServerConfigService","NotificationService","DataService","FormBuilder","BehaviorSubject","SortOrder","LogicalOperator","combineLatest","map","debounceTime","takeUntil","finalize","switchMap","DeletionResult","EMPTY","BaseListComponent","ModalService","Permission","Subject","Validators","unicodePatternValidator","merge","filter","of","take","findTranslation","normalizeString","getConfigArgValue","mergeMap","createUpdatedTranslatable","encodeConfigArgValue","ChangeDetectorRef","LocalStorageService","ViewChild","shareReplay","distinctUntilChanged","tap","mapTo","forkJoin","notNullOrUndefined","throwError","Injectable","FacetValueSelectorComponent","from","startWith","skipUntil","skip","flattenFacetValues","DEFAULT_CHANNEL_CODE","unique","withLatestFrom","Location","delay","JobState","JobQueueService","FormArray","getDefaultUiLanguage","generateAllCombinations","pick","defaultIfEmpty","AssetType","BaseEntityResolver","createResolveData","CanDeactivateDetailGuard","detailBreadcrumb","EventEmitter","AssetPickerDialogComponent","AssetPreviewDialogComponent","moveItemInArray","Input","HostBinding","Output","catchError","ContentChild","TemplateRef","SkipSelf","Optional","ViewChildren","ElementRef","NG_VALUE_ACCESSOR","forwardRef","GlobalFlag","NgModule","SharedModule","RouterModule"],"mappings":"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"}