@vendure/admin-ui 2.0.0-next.2 → 2.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/catalog/components/collection-contents/collection-contents.component.d.ts +8 -2
  2. package/catalog/components/collection-detail/collection-detail.component.d.ts +11 -4
  3. package/catalog/components/collection-list/collection-list.component.d.ts +2 -0
  4. package/catalog/components/collection-tree/array-to-tree.d.ts +1 -1
  5. package/catalog/components/collection-tree/collection-tree-node.component.d.ts +6 -2
  6. package/catalog/components/collection-tree/collection-tree.component.d.ts +2 -1
  7. package/catalog/components/product-variants-list/product-variants-list.component.d.ts +1 -0
  8. package/core/common/generated-types.d.ts +62 -0
  9. package/core/common/version.d.ts +1 -1
  10. package/core/data/definitions/collection-definitions.d.ts +1 -0
  11. package/core/data/providers/collection-data.service.d.ts +4 -0
  12. package/core/providers/local-storage/local-storage.service.d.ts +1 -0
  13. package/esm2020/catalog/components/assets/assets.component.mjs +2 -2
  14. package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +53 -13
  15. package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +55 -32
  16. package/esm2020/catalog/components/collection-list/collection-list.component.mjs +30 -5
  17. package/esm2020/catalog/components/collection-tree/array-to-tree.mjs +3 -3
  18. package/esm2020/catalog/components/collection-tree/collection-tree-node.component.mjs +29 -10
  19. package/esm2020/catalog/components/collection-tree/collection-tree.component.mjs +6 -3
  20. package/esm2020/catalog/components/facet-detail/facet-detail.component.mjs +2 -2
  21. package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +9 -3
  22. package/esm2020/catalog/providers/routing/collection-resolver.mjs +1 -1
  23. package/esm2020/core/app.component.module.mjs +1 -1
  24. package/esm2020/core/common/base-detail.component.mjs +1 -1
  25. package/esm2020/core/common/deactivate-aware.mjs +1 -1
  26. package/esm2020/core/common/generated-types.mjs +26 -1
  27. package/esm2020/core/common/introspection-result.mjs +255 -189
  28. package/esm2020/core/common/utilities/configurable-operation-utils.mjs +21 -2
  29. package/esm2020/core/common/version.mjs +2 -2
  30. package/esm2020/core/core.module.mjs +1 -1
  31. package/esm2020/core/data/definitions/collection-definitions.mjs +18 -1
  32. package/esm2020/core/data/definitions/order-definitions.mjs +430 -430
  33. package/esm2020/core/data/definitions/shared-definitions.mjs +29 -28
  34. package/esm2020/core/data/providers/collection-data.service.mjs +5 -2
  35. package/esm2020/core/data/providers/promotion-data.service.mjs +1 -1
  36. package/esm2020/core/providers/local-storage/local-storage.service.mjs +1 -1
  37. package/esm2020/core/shared/components/asset-preview/asset-preview.component.mjs +4 -4
  38. package/esm2020/core/shared/components/configurable-input/configurable-input.component.mjs +10 -9
  39. package/esm2020/core/shared/components/help-tooltip/help-tooltip.component.mjs +2 -2
  40. package/esm2020/core/shared/components/object-tree/object-tree.component.mjs +1 -1
  41. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +1 -1
  42. package/esm2020/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +1 -1
  43. package/esm2020/core/shared/shared.module.mjs +1 -1
  44. package/esm2020/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +1 -1
  45. package/esm2020/order/components/order-editor/order-editor.component.mjs +3 -3
  46. package/esm2020/order/components/order-table/order-table.component.mjs +2 -2
  47. package/esm2020/order/components/refund-order-dialog/refund-order-dialog.component.mjs +1 -1
  48. package/fesm2015/vendure-admin-ui-catalog.mjs +177 -57
  49. package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -1
  50. package/fesm2015/vendure-admin-ui-core.mjs +846 -717
  51. package/fesm2015/vendure-admin-ui-core.mjs.map +1 -1
  52. package/fesm2015/vendure-admin-ui-order.mjs +4 -4
  53. package/fesm2015/vendure-admin-ui-order.mjs.map +1 -1
  54. package/fesm2020/vendure-admin-ui-catalog.mjs +175 -59
  55. package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -1
  56. package/fesm2020/vendure-admin-ui-core.mjs +846 -716
  57. package/fesm2020/vendure-admin-ui-core.mjs.map +1 -1
  58. package/fesm2020/vendure-admin-ui-order.mjs +4 -4
  59. package/fesm2020/vendure-admin-ui-order.mjs.map +1 -1
  60. package/package.json +2 -2
  61. package/static/i18n-messages/de.json +1 -0
  62. package/static/styles/global/_forms.scss +3 -4
  63. package/static/styles/global/_overrides.scss +6 -0
  64. package/static/theme.min.css +1 -1
@@ -18,7 +18,7 @@ import { NavigationEnd, PRIMARY_OUTLET, RouterModule, ActivationStart } from '@a
18
18
  import * as i2$2 from '@angular/platform-browser';
19
19
  import { BrowserModule, Title } from '@angular/platform-browser';
20
20
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
21
- import * as i4 from '@ngx-translate/core';
21
+ import * as i7 from '@ngx-translate/core';
22
22
  import { TranslateModule, TranslateLoader, TranslateCompiler } from '@ngx-translate/core';
23
23
  import { TranslateMessageFormatCompiler, MESSAGE_FORMAT_CONFIG } from 'ngx-translate-messageformat-compiler';
24
24
  import * as i1$3 from '@clr/angular';
@@ -267,35 +267,36 @@ class AdministratorDataService {
267
267
  }
268
268
  }
269
269
 
270
- const CONFIGURABLE_OPERATION_FRAGMENT = gql `
271
- fragment ConfigurableOperation on ConfigurableOperation {
272
- args {
273
- name
274
- value
275
- }
276
- code
277
- }
278
- `;
279
- const CONFIGURABLE_OPERATION_DEF_FRAGMENT = gql `
280
- fragment ConfigurableOperationDef on ConfigurableOperationDefinition {
281
- args {
282
- name
283
- type
284
- required
285
- defaultValue
286
- list
287
- ui
288
- label
289
- }
290
- code
291
- description
292
- }
293
- `;
294
- const ERROR_RESULT_FRAGMENT = gql `
295
- fragment ErrorResult on ErrorResult {
296
- errorCode
297
- message
298
- }
270
+ const CONFIGURABLE_OPERATION_FRAGMENT = gql `
271
+ fragment ConfigurableOperation on ConfigurableOperation {
272
+ args {
273
+ name
274
+ value
275
+ }
276
+ code
277
+ }
278
+ `;
279
+ const CONFIGURABLE_OPERATION_DEF_FRAGMENT = gql `
280
+ fragment ConfigurableOperationDef on ConfigurableOperationDefinition {
281
+ args {
282
+ name
283
+ type
284
+ required
285
+ defaultValue
286
+ list
287
+ ui
288
+ label
289
+ description
290
+ }
291
+ code
292
+ description
293
+ }
294
+ `;
295
+ const ERROR_RESULT_FRAGMENT = gql `
296
+ fragment ErrorResult on ErrorResult {
297
+ errorCode
298
+ message
299
+ }
299
300
  `;
300
301
 
301
302
  const CURRENT_USER_FRAGMENT = gql `
@@ -1410,11 +1411,28 @@ const GET_COLLECTION_CONTENTS = gql `
1410
1411
  id
1411
1412
  productId
1412
1413
  name
1414
+ sku
1413
1415
  }
1414
1416
  totalItems
1415
1417
  }
1416
1418
  }
1417
1419
  }
1420
+ `;
1421
+ const PREVIEW_COLLECTION_CONTENTS = gql `
1422
+ query PreviewCollectionContents(
1423
+ $input: PreviewCollectionVariantsInput!
1424
+ $options: ProductVariantListOptions
1425
+ ) {
1426
+ previewCollectionVariants(input: $input, options: $options) {
1427
+ items {
1428
+ id
1429
+ productId
1430
+ name
1431
+ sku
1432
+ }
1433
+ totalItems
1434
+ }
1435
+ }
1418
1436
  `;
1419
1437
 
1420
1438
  class CollectionDataService {
@@ -1472,6 +1490,9 @@ class CollectionDataService {
1472
1490
  id,
1473
1491
  });
1474
1492
  }
1493
+ previewCollectionVariants(input, options) {
1494
+ return this.baseDataService.query(PREVIEW_COLLECTION_CONTENTS, { input, options });
1495
+ }
1475
1496
  getCollectionContents(id, take = 10, skip = 0, filterTerm) {
1476
1497
  const filter = filterTerm
1477
1498
  ? { name: { contains: filterTerm } }
@@ -2036,459 +2057,459 @@ class FacetDataService {
2036
2057
  }
2037
2058
  }
2038
2059
 
2039
- const DISCOUNT_FRAGMENT = gql `
2040
- fragment Discount on Discount {
2041
- adjustmentSource
2042
- amount
2043
- amountWithTax
2044
- description
2045
- type
2046
- }
2047
- `;
2048
- const REFUND_FRAGMENT = gql `
2049
- fragment Refund on Refund {
2050
- id
2051
- state
2052
- items
2053
- shipping
2054
- adjustment
2055
- transactionId
2056
- paymentId
2057
- }
2058
- `;
2059
- const ORDER_ADDRESS_FRAGMENT = gql `
2060
- fragment OrderAddress on OrderAddress {
2061
- fullName
2062
- company
2063
- streetLine1
2064
- streetLine2
2065
- city
2066
- province
2067
- postalCode
2068
- country
2069
- countryCode
2070
- phoneNumber
2071
- }
2072
- `;
2073
- const ORDER_FRAGMENT = gql `
2074
- fragment Order on Order {
2075
- id
2076
- createdAt
2077
- updatedAt
2078
- orderPlacedAt
2079
- code
2080
- state
2081
- nextStates
2082
- total
2083
- currencyCode
2084
- customer {
2085
- id
2086
- firstName
2087
- lastName
2088
- }
2089
- shippingLines {
2090
- shippingMethod {
2091
- name
2092
- }
2093
- }
2094
- }
2095
- `;
2096
- const FULFILLMENT_FRAGMENT = gql `
2097
- fragment Fulfillment on Fulfillment {
2098
- id
2099
- state
2100
- nextStates
2101
- createdAt
2102
- updatedAt
2103
- method
2104
- orderItems {
2105
- id
2106
- }
2107
- trackingCode
2108
- }
2109
- `;
2110
- const ORDER_LINE_FRAGMENT = gql `
2111
- fragment OrderLine on OrderLine {
2112
- id
2113
- featuredAsset {
2114
- preview
2115
- }
2116
- productVariant {
2117
- id
2118
- name
2119
- sku
2120
- trackInventory
2121
- stockOnHand
2122
- }
2123
- discounts {
2124
- ...Discount
2125
- }
2126
- unitPrice
2127
- unitPriceWithTax
2128
- proratedUnitPrice
2129
- proratedUnitPriceWithTax
2130
- quantity
2131
- items {
2132
- id
2133
- unitPrice
2134
- unitPriceWithTax
2135
- taxRate
2136
- refundId
2137
- cancelled
2138
- fulfillment {
2139
- ...Fulfillment
2140
- }
2141
- }
2142
- linePrice
2143
- lineTax
2144
- linePriceWithTax
2145
- discountedLinePrice
2146
- discountedLinePriceWithTax
2147
- }
2148
- `;
2149
- const ORDER_DETAIL_FRAGMENT = gql `
2150
- fragment OrderDetail on Order {
2151
- id
2152
- createdAt
2153
- updatedAt
2154
- code
2155
- state
2156
- nextStates
2157
- active
2158
- couponCodes
2159
- customer {
2160
- id
2161
- firstName
2162
- lastName
2163
- }
2164
- lines {
2165
- ...OrderLine
2166
- }
2167
- surcharges {
2168
- id
2169
- sku
2170
- description
2171
- price
2172
- priceWithTax
2173
- taxRate
2174
- }
2175
- discounts {
2176
- ...Discount
2177
- }
2178
- promotions {
2179
- id
2180
- couponCode
2181
- }
2182
- subTotal
2183
- subTotalWithTax
2184
- total
2185
- totalWithTax
2186
- currencyCode
2187
- shipping
2188
- shippingWithTax
2189
- shippingLines {
2190
- shippingMethod {
2191
- id
2192
- code
2193
- name
2194
- fulfillmentHandlerCode
2195
- description
2196
- }
2197
- }
2198
- taxSummary {
2199
- description
2200
- taxBase
2201
- taxRate
2202
- taxTotal
2203
- }
2204
- shippingAddress {
2205
- ...OrderAddress
2206
- }
2207
- billingAddress {
2208
- ...OrderAddress
2209
- }
2210
- payments {
2211
- id
2212
- createdAt
2213
- transactionId
2214
- amount
2215
- method
2216
- state
2217
- nextStates
2218
- errorMessage
2219
- metadata
2220
- refunds {
2221
- id
2222
- createdAt
2223
- state
2224
- items
2225
- adjustment
2226
- total
2227
- paymentId
2228
- reason
2229
- transactionId
2230
- method
2231
- metadata
2232
- orderItems {
2233
- id
2234
- }
2235
- }
2236
- }
2237
- fulfillments {
2238
- ...Fulfillment
2239
- }
2240
- modifications {
2241
- id
2242
- createdAt
2243
- isSettled
2244
- priceChange
2245
- note
2246
- payment {
2247
- id
2248
- amount
2249
- }
2250
- orderItems {
2251
- id
2252
- }
2253
- refund {
2254
- id
2255
- paymentId
2256
- total
2257
- }
2258
- surcharges {
2259
- id
2260
- }
2261
- }
2262
- }
2263
- ${DISCOUNT_FRAGMENT}
2264
- ${ORDER_ADDRESS_FRAGMENT}
2265
- ${FULFILLMENT_FRAGMENT}
2266
- ${ORDER_LINE_FRAGMENT}
2267
- `;
2268
- const GET_ORDERS_LIST = gql `
2269
- query GetOrderList($options: OrderListOptions) {
2270
- orders(options: $options) {
2271
- items {
2272
- ...Order
2273
- }
2274
- totalItems
2275
- }
2276
- }
2277
- ${ORDER_FRAGMENT}
2278
- `;
2279
- const GET_ORDER = gql `
2280
- query GetOrder($id: ID!) {
2281
- order(id: $id) {
2282
- ...OrderDetail
2283
- }
2284
- }
2285
- ${ORDER_DETAIL_FRAGMENT}
2286
- `;
2287
- const SETTLE_PAYMENT = gql `
2288
- mutation SettlePayment($id: ID!) {
2289
- settlePayment(id: $id) {
2290
- ... on Payment {
2291
- id
2292
- transactionId
2293
- amount
2294
- method
2295
- state
2296
- metadata
2297
- }
2298
- ...ErrorResult
2299
- ... on SettlePaymentError {
2300
- paymentErrorMessage
2301
- }
2302
- ... on PaymentStateTransitionError {
2303
- transitionError
2304
- }
2305
- ... on OrderStateTransitionError {
2306
- transitionError
2307
- }
2308
- }
2309
- }
2310
- ${ERROR_RESULT_FRAGMENT}
2311
- `;
2312
- const TRANSITION_PAYMENT_TO_STATE = gql `
2313
- mutation TransitionPaymentToState($id: ID!, $state: String!) {
2314
- transitionPaymentToState(id: $id, state: $state) {
2315
- ... on Payment {
2316
- id
2317
- transactionId
2318
- amount
2319
- method
2320
- state
2321
- metadata
2322
- }
2323
- ...ErrorResult
2324
- ... on PaymentStateTransitionError {
2325
- transitionError
2326
- }
2327
- }
2328
- }
2329
- ${ERROR_RESULT_FRAGMENT}
2330
- `;
2331
- const CREATE_FULFILLMENT = gql `
2332
- mutation CreateFulfillment($input: FulfillOrderInput!) {
2333
- addFulfillmentToOrder(input: $input) {
2334
- ...Fulfillment
2335
- ... on CreateFulfillmentError {
2336
- errorCode
2337
- message
2338
- fulfillmentHandlerError
2339
- }
2340
- ... on FulfillmentStateTransitionError {
2341
- errorCode
2342
- message
2343
- transitionError
2344
- }
2345
- ...ErrorResult
2346
- }
2347
- }
2348
- ${FULFILLMENT_FRAGMENT}
2349
- ${ERROR_RESULT_FRAGMENT}
2350
- `;
2351
- const CANCEL_ORDER = gql `
2352
- mutation CancelOrder($input: CancelOrderInput!) {
2353
- cancelOrder(input: $input) {
2354
- ...OrderDetail
2355
- ...ErrorResult
2356
- }
2357
- }
2358
- ${ORDER_DETAIL_FRAGMENT}
2359
- ${ERROR_RESULT_FRAGMENT}
2360
- `;
2361
- const REFUND_ORDER = gql `
2362
- mutation RefundOrder($input: RefundOrderInput!) {
2363
- refundOrder(input: $input) {
2364
- ...Refund
2365
- ...ErrorResult
2366
- }
2367
- }
2368
- ${REFUND_FRAGMENT}
2369
- ${ERROR_RESULT_FRAGMENT}
2370
- `;
2371
- const SETTLE_REFUND = gql `
2372
- mutation SettleRefund($input: SettleRefundInput!) {
2373
- settleRefund(input: $input) {
2374
- ...Refund
2375
- ...ErrorResult
2376
- }
2377
- }
2378
- ${REFUND_FRAGMENT}
2379
- ${ERROR_RESULT_FRAGMENT}
2380
- `;
2381
- const GET_ORDER_HISTORY = gql `
2382
- query GetOrderHistory($id: ID!, $options: HistoryEntryListOptions) {
2383
- order(id: $id) {
2384
- id
2385
- history(options: $options) {
2386
- totalItems
2387
- items {
2388
- id
2389
- type
2390
- createdAt
2391
- isPublic
2392
- administrator {
2393
- id
2394
- firstName
2395
- lastName
2396
- }
2397
- data
2398
- }
2399
- }
2400
- }
2401
- }
2402
- `;
2403
- const ADD_NOTE_TO_ORDER = gql `
2404
- mutation AddNoteToOrder($input: AddNoteToOrderInput!) {
2405
- addNoteToOrder(input: $input) {
2406
- id
2407
- }
2408
- }
2409
- `;
2410
- const UPDATE_ORDER_NOTE = gql `
2411
- mutation UpdateOrderNote($input: UpdateOrderNoteInput!) {
2412
- updateOrderNote(input: $input) {
2413
- id
2414
- data
2415
- isPublic
2416
- }
2417
- }
2418
- `;
2419
- const DELETE_ORDER_NOTE = gql `
2420
- mutation DeleteOrderNote($id: ID!) {
2421
- deleteOrderNote(id: $id) {
2422
- result
2423
- message
2424
- }
2425
- }
2426
- `;
2427
- const TRANSITION_ORDER_TO_STATE = gql `
2428
- mutation TransitionOrderToState($id: ID!, $state: String!) {
2429
- transitionOrderToState(id: $id, state: $state) {
2430
- ...Order
2431
- ...ErrorResult
2432
- ... on OrderStateTransitionError {
2433
- transitionError
2434
- }
2435
- }
2436
- }
2437
- ${ORDER_FRAGMENT}
2438
- ${ERROR_RESULT_FRAGMENT}
2439
- `;
2440
- const UPDATE_ORDER_CUSTOM_FIELDS = gql `
2441
- mutation UpdateOrderCustomFields($input: UpdateOrderInput!) {
2442
- setOrderCustomFields(input: $input) {
2443
- ...Order
2444
- }
2445
- }
2446
- ${ORDER_FRAGMENT}
2447
- `;
2448
- const TRANSITION_FULFILLMENT_TO_STATE = gql `
2449
- mutation TransitionFulfillmentToState($id: ID!, $state: String!) {
2450
- transitionFulfillmentToState(id: $id, state: $state) {
2451
- ...Fulfillment
2452
- ...ErrorResult
2453
- ... on FulfillmentStateTransitionError {
2454
- transitionError
2455
- }
2456
- }
2457
- }
2458
- ${FULFILLMENT_FRAGMENT}
2459
- ${ERROR_RESULT_FRAGMENT}
2460
- `;
2461
- const GET_ORDER_SUMMARY = gql `
2462
- query GetOrderSummary($start: DateTime!, $end: DateTime!) {
2463
- orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {
2464
- totalItems
2465
- items {
2466
- id
2467
- total
2468
- currencyCode
2469
- }
2470
- }
2471
- }
2472
- `;
2473
- const MODIFY_ORDER = gql `
2474
- mutation ModifyOrder($input: ModifyOrderInput!) {
2475
- modifyOrder(input: $input) {
2476
- ...OrderDetail
2477
- ...ErrorResult
2478
- }
2479
- }
2480
- ${ORDER_DETAIL_FRAGMENT}
2481
- ${ERROR_RESULT_FRAGMENT}
2482
- `;
2483
- const ADD_MANUAL_PAYMENT_TO_ORDER = gql `
2484
- mutation AddManualPayment($input: ManualPaymentInput!) {
2485
- addManualPaymentToOrder(input: $input) {
2486
- ...OrderDetail
2487
- ...ErrorResult
2488
- }
2489
- }
2490
- ${ORDER_DETAIL_FRAGMENT}
2491
- ${ERROR_RESULT_FRAGMENT}
2060
+ const DISCOUNT_FRAGMENT = gql `
2061
+ fragment Discount on Discount {
2062
+ adjustmentSource
2063
+ amount
2064
+ amountWithTax
2065
+ description
2066
+ type
2067
+ }
2068
+ `;
2069
+ const REFUND_FRAGMENT = gql `
2070
+ fragment Refund on Refund {
2071
+ id
2072
+ state
2073
+ items
2074
+ shipping
2075
+ adjustment
2076
+ transactionId
2077
+ paymentId
2078
+ }
2079
+ `;
2080
+ const ORDER_ADDRESS_FRAGMENT = gql `
2081
+ fragment OrderAddress on OrderAddress {
2082
+ fullName
2083
+ company
2084
+ streetLine1
2085
+ streetLine2
2086
+ city
2087
+ province
2088
+ postalCode
2089
+ country
2090
+ countryCode
2091
+ phoneNumber
2092
+ }
2093
+ `;
2094
+ const ORDER_FRAGMENT = gql `
2095
+ fragment Order on Order {
2096
+ id
2097
+ createdAt
2098
+ updatedAt
2099
+ orderPlacedAt
2100
+ code
2101
+ state
2102
+ nextStates
2103
+ total
2104
+ currencyCode
2105
+ customer {
2106
+ id
2107
+ firstName
2108
+ lastName
2109
+ }
2110
+ shippingLines {
2111
+ shippingMethod {
2112
+ name
2113
+ }
2114
+ }
2115
+ }
2116
+ `;
2117
+ const FULFILLMENT_FRAGMENT = gql `
2118
+ fragment Fulfillment on Fulfillment {
2119
+ id
2120
+ state
2121
+ nextStates
2122
+ createdAt
2123
+ updatedAt
2124
+ method
2125
+ orderItems {
2126
+ id
2127
+ }
2128
+ trackingCode
2129
+ }
2130
+ `;
2131
+ const ORDER_LINE_FRAGMENT = gql `
2132
+ fragment OrderLine on OrderLine {
2133
+ id
2134
+ featuredAsset {
2135
+ preview
2136
+ }
2137
+ productVariant {
2138
+ id
2139
+ name
2140
+ sku
2141
+ trackInventory
2142
+ stockOnHand
2143
+ }
2144
+ discounts {
2145
+ ...Discount
2146
+ }
2147
+ unitPrice
2148
+ unitPriceWithTax
2149
+ proratedUnitPrice
2150
+ proratedUnitPriceWithTax
2151
+ quantity
2152
+ items {
2153
+ id
2154
+ unitPrice
2155
+ unitPriceWithTax
2156
+ taxRate
2157
+ refundId
2158
+ cancelled
2159
+ fulfillment {
2160
+ ...Fulfillment
2161
+ }
2162
+ }
2163
+ linePrice
2164
+ lineTax
2165
+ linePriceWithTax
2166
+ discountedLinePrice
2167
+ discountedLinePriceWithTax
2168
+ }
2169
+ `;
2170
+ const ORDER_DETAIL_FRAGMENT = gql `
2171
+ fragment OrderDetail on Order {
2172
+ id
2173
+ createdAt
2174
+ updatedAt
2175
+ code
2176
+ state
2177
+ nextStates
2178
+ active
2179
+ couponCodes
2180
+ customer {
2181
+ id
2182
+ firstName
2183
+ lastName
2184
+ }
2185
+ lines {
2186
+ ...OrderLine
2187
+ }
2188
+ surcharges {
2189
+ id
2190
+ sku
2191
+ description
2192
+ price
2193
+ priceWithTax
2194
+ taxRate
2195
+ }
2196
+ discounts {
2197
+ ...Discount
2198
+ }
2199
+ promotions {
2200
+ id
2201
+ couponCode
2202
+ }
2203
+ subTotal
2204
+ subTotalWithTax
2205
+ total
2206
+ totalWithTax
2207
+ currencyCode
2208
+ shipping
2209
+ shippingWithTax
2210
+ shippingLines {
2211
+ shippingMethod {
2212
+ id
2213
+ code
2214
+ name
2215
+ fulfillmentHandlerCode
2216
+ description
2217
+ }
2218
+ }
2219
+ taxSummary {
2220
+ description
2221
+ taxBase
2222
+ taxRate
2223
+ taxTotal
2224
+ }
2225
+ shippingAddress {
2226
+ ...OrderAddress
2227
+ }
2228
+ billingAddress {
2229
+ ...OrderAddress
2230
+ }
2231
+ payments {
2232
+ id
2233
+ createdAt
2234
+ transactionId
2235
+ amount
2236
+ method
2237
+ state
2238
+ nextStates
2239
+ errorMessage
2240
+ metadata
2241
+ refunds {
2242
+ id
2243
+ createdAt
2244
+ state
2245
+ items
2246
+ adjustment
2247
+ total
2248
+ paymentId
2249
+ reason
2250
+ transactionId
2251
+ method
2252
+ metadata
2253
+ orderItems {
2254
+ id
2255
+ }
2256
+ }
2257
+ }
2258
+ fulfillments {
2259
+ ...Fulfillment
2260
+ }
2261
+ modifications {
2262
+ id
2263
+ createdAt
2264
+ isSettled
2265
+ priceChange
2266
+ note
2267
+ payment {
2268
+ id
2269
+ amount
2270
+ }
2271
+ orderItems {
2272
+ id
2273
+ }
2274
+ refund {
2275
+ id
2276
+ paymentId
2277
+ total
2278
+ }
2279
+ surcharges {
2280
+ id
2281
+ }
2282
+ }
2283
+ }
2284
+ ${DISCOUNT_FRAGMENT}
2285
+ ${ORDER_ADDRESS_FRAGMENT}
2286
+ ${FULFILLMENT_FRAGMENT}
2287
+ ${ORDER_LINE_FRAGMENT}
2288
+ `;
2289
+ const GET_ORDERS_LIST = gql `
2290
+ query GetOrderList($options: OrderListOptions) {
2291
+ orders(options: $options) {
2292
+ items {
2293
+ ...Order
2294
+ }
2295
+ totalItems
2296
+ }
2297
+ }
2298
+ ${ORDER_FRAGMENT}
2299
+ `;
2300
+ const GET_ORDER = gql `
2301
+ query GetOrder($id: ID!) {
2302
+ order(id: $id) {
2303
+ ...OrderDetail
2304
+ }
2305
+ }
2306
+ ${ORDER_DETAIL_FRAGMENT}
2307
+ `;
2308
+ const SETTLE_PAYMENT = gql `
2309
+ mutation SettlePayment($id: ID!) {
2310
+ settlePayment(id: $id) {
2311
+ ... on Payment {
2312
+ id
2313
+ transactionId
2314
+ amount
2315
+ method
2316
+ state
2317
+ metadata
2318
+ }
2319
+ ...ErrorResult
2320
+ ... on SettlePaymentError {
2321
+ paymentErrorMessage
2322
+ }
2323
+ ... on PaymentStateTransitionError {
2324
+ transitionError
2325
+ }
2326
+ ... on OrderStateTransitionError {
2327
+ transitionError
2328
+ }
2329
+ }
2330
+ }
2331
+ ${ERROR_RESULT_FRAGMENT}
2332
+ `;
2333
+ const TRANSITION_PAYMENT_TO_STATE = gql `
2334
+ mutation TransitionPaymentToState($id: ID!, $state: String!) {
2335
+ transitionPaymentToState(id: $id, state: $state) {
2336
+ ... on Payment {
2337
+ id
2338
+ transactionId
2339
+ amount
2340
+ method
2341
+ state
2342
+ metadata
2343
+ }
2344
+ ...ErrorResult
2345
+ ... on PaymentStateTransitionError {
2346
+ transitionError
2347
+ }
2348
+ }
2349
+ }
2350
+ ${ERROR_RESULT_FRAGMENT}
2351
+ `;
2352
+ const CREATE_FULFILLMENT = gql `
2353
+ mutation CreateFulfillment($input: FulfillOrderInput!) {
2354
+ addFulfillmentToOrder(input: $input) {
2355
+ ...Fulfillment
2356
+ ... on CreateFulfillmentError {
2357
+ errorCode
2358
+ message
2359
+ fulfillmentHandlerError
2360
+ }
2361
+ ... on FulfillmentStateTransitionError {
2362
+ errorCode
2363
+ message
2364
+ transitionError
2365
+ }
2366
+ ...ErrorResult
2367
+ }
2368
+ }
2369
+ ${FULFILLMENT_FRAGMENT}
2370
+ ${ERROR_RESULT_FRAGMENT}
2371
+ `;
2372
+ const CANCEL_ORDER = gql `
2373
+ mutation CancelOrder($input: CancelOrderInput!) {
2374
+ cancelOrder(input: $input) {
2375
+ ...OrderDetail
2376
+ ...ErrorResult
2377
+ }
2378
+ }
2379
+ ${ORDER_DETAIL_FRAGMENT}
2380
+ ${ERROR_RESULT_FRAGMENT}
2381
+ `;
2382
+ const REFUND_ORDER = gql `
2383
+ mutation RefundOrder($input: RefundOrderInput!) {
2384
+ refundOrder(input: $input) {
2385
+ ...Refund
2386
+ ...ErrorResult
2387
+ }
2388
+ }
2389
+ ${REFUND_FRAGMENT}
2390
+ ${ERROR_RESULT_FRAGMENT}
2391
+ `;
2392
+ const SETTLE_REFUND = gql `
2393
+ mutation SettleRefund($input: SettleRefundInput!) {
2394
+ settleRefund(input: $input) {
2395
+ ...Refund
2396
+ ...ErrorResult
2397
+ }
2398
+ }
2399
+ ${REFUND_FRAGMENT}
2400
+ ${ERROR_RESULT_FRAGMENT}
2401
+ `;
2402
+ const GET_ORDER_HISTORY = gql `
2403
+ query GetOrderHistory($id: ID!, $options: HistoryEntryListOptions) {
2404
+ order(id: $id) {
2405
+ id
2406
+ history(options: $options) {
2407
+ totalItems
2408
+ items {
2409
+ id
2410
+ type
2411
+ createdAt
2412
+ isPublic
2413
+ administrator {
2414
+ id
2415
+ firstName
2416
+ lastName
2417
+ }
2418
+ data
2419
+ }
2420
+ }
2421
+ }
2422
+ }
2423
+ `;
2424
+ const ADD_NOTE_TO_ORDER = gql `
2425
+ mutation AddNoteToOrder($input: AddNoteToOrderInput!) {
2426
+ addNoteToOrder(input: $input) {
2427
+ id
2428
+ }
2429
+ }
2430
+ `;
2431
+ const UPDATE_ORDER_NOTE = gql `
2432
+ mutation UpdateOrderNote($input: UpdateOrderNoteInput!) {
2433
+ updateOrderNote(input: $input) {
2434
+ id
2435
+ data
2436
+ isPublic
2437
+ }
2438
+ }
2439
+ `;
2440
+ const DELETE_ORDER_NOTE = gql `
2441
+ mutation DeleteOrderNote($id: ID!) {
2442
+ deleteOrderNote(id: $id) {
2443
+ result
2444
+ message
2445
+ }
2446
+ }
2447
+ `;
2448
+ const TRANSITION_ORDER_TO_STATE = gql `
2449
+ mutation TransitionOrderToState($id: ID!, $state: String!) {
2450
+ transitionOrderToState(id: $id, state: $state) {
2451
+ ...Order
2452
+ ...ErrorResult
2453
+ ... on OrderStateTransitionError {
2454
+ transitionError
2455
+ }
2456
+ }
2457
+ }
2458
+ ${ORDER_FRAGMENT}
2459
+ ${ERROR_RESULT_FRAGMENT}
2460
+ `;
2461
+ const UPDATE_ORDER_CUSTOM_FIELDS = gql `
2462
+ mutation UpdateOrderCustomFields($input: UpdateOrderInput!) {
2463
+ setOrderCustomFields(input: $input) {
2464
+ ...Order
2465
+ }
2466
+ }
2467
+ ${ORDER_FRAGMENT}
2468
+ `;
2469
+ const TRANSITION_FULFILLMENT_TO_STATE = gql `
2470
+ mutation TransitionFulfillmentToState($id: ID!, $state: String!) {
2471
+ transitionFulfillmentToState(id: $id, state: $state) {
2472
+ ...Fulfillment
2473
+ ...ErrorResult
2474
+ ... on FulfillmentStateTransitionError {
2475
+ transitionError
2476
+ }
2477
+ }
2478
+ }
2479
+ ${FULFILLMENT_FRAGMENT}
2480
+ ${ERROR_RESULT_FRAGMENT}
2481
+ `;
2482
+ const GET_ORDER_SUMMARY = gql `
2483
+ query GetOrderSummary($start: DateTime!, $end: DateTime!) {
2484
+ orders(options: { filter: { orderPlacedAt: { between: { start: $start, end: $end } } } }) {
2485
+ totalItems
2486
+ items {
2487
+ id
2488
+ total
2489
+ currencyCode
2490
+ }
2491
+ }
2492
+ }
2493
+ `;
2494
+ const MODIFY_ORDER = gql `
2495
+ mutation ModifyOrder($input: ModifyOrderInput!) {
2496
+ modifyOrder(input: $input) {
2497
+ ...OrderDetail
2498
+ ...ErrorResult
2499
+ }
2500
+ }
2501
+ ${ORDER_DETAIL_FRAGMENT}
2502
+ ${ERROR_RESULT_FRAGMENT}
2503
+ `;
2504
+ const ADD_MANUAL_PAYMENT_TO_ORDER = gql `
2505
+ mutation AddManualPayment($input: ManualPaymentInput!) {
2506
+ addManualPaymentToOrder(input: $input) {
2507
+ ...OrderDetail
2508
+ ...ErrorResult
2509
+ }
2510
+ }
2511
+ ${ORDER_DETAIL_FRAGMENT}
2512
+ ${ERROR_RESULT_FRAGMENT}
2492
2513
  `;
2493
2514
 
2494
2515
  class OrderDataService {
@@ -3356,6 +3377,31 @@ var LogicalOperator;
3356
3377
  * Permissions for administrators and customers. Used to control access to
3357
3378
  * GraphQL resolvers via the {@link Allow} decorator.
3358
3379
  *
3380
+ * ## Understanding Permission.Owner
3381
+ *
3382
+ * `Permission.Owner` is a special permission which is used in some of the Vendure resolvers to indicate that that resolver should only
3383
+ * be accessible to the "owner" of that resource.
3384
+ *
3385
+ * For example, the Shop API `activeCustomer` query resolver should only return the Customer object for the "owner" of that Customer, i.e.
3386
+ * based on the activeUserId of the current session. As a result, the resolver code looks like this:
3387
+ *
3388
+ * @example
3389
+ * ```TypeScript
3390
+ * \@Query()
3391
+ * \@Allow(Permission.Owner)
3392
+ * async activeCustomer(\@Ctx() ctx: RequestContext): Promise<Customer | undefined> {
3393
+ * const userId = ctx.activeUserId;
3394
+ * if (userId) {
3395
+ * return this.customerService.findOneByUserId(ctx, userId);
3396
+ * }
3397
+ * }
3398
+ * ```
3399
+ *
3400
+ * Here we can see that the "ownership" must be enforced by custom logic inside the resolver. Since "ownership" cannot be defined generally
3401
+ * nor statically encoded at build-time, any resolvers using `Permission.Owner` **must** include logic to enforce that only the owner
3402
+ * of the resource has access. If not, then it is the equivalent of using `Permission.Public`.
3403
+ *
3404
+ *
3359
3405
  * @docsCategory common
3360
3406
  */
3361
3407
  var Permission;
@@ -6593,7 +6639,7 @@ class UiLanguageSwitcherDialogComponent {
6593
6639
  }
6594
6640
  }
6595
6641
  UiLanguageSwitcherDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UiLanguageSwitcherDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6596
- UiLanguageSwitcherDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: UiLanguageSwitcherDialogComponent, selector: "vdr-ui-language-switcher", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ 'common.select-display-language' | translate }}</ng-template>\r\n<div class=\"clr-row\">\r\n <div class=\"clr-col-md-6\">\r\n <clr-select-container>\r\n <label>{{ 'common.language' | translate }}</label>\r\n <select\r\n clrSelect\r\n name=\"options\"\r\n [(ngModel)]=\"currentLanguage\"\r\n (ngModelChange)=\"updatePreviewLocale()\"\r\n >\r\n <option *ngFor=\"let code of availableLanguages | sort\" [value]=\"code\">\r\n {{ code | uppercase }} ({{ code | localeLanguageName }})\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n </div>\r\n <div class=\"clr-col-md-6\">\r\n <clr-datalist-container>\r\n <label>{{ 'common.locale' | translate }}</label>\r\n <input\r\n clrDatalistInput\r\n [(ngModel)]=\"currentLocale\"\r\n (ngModelChange)=\"updatePreviewLocale()\"\r\n [placeholder]=\"'common.browser-default' | translate\"\r\n class=\"locale\"\r\n name=\"Locale\"\r\n />\r\n <datalist>\r\n <option *ngFor=\"let locale of availableLocales\" [value]=\"locale\">\r\n {{ locale }} ({{ locale | localeRegionName }})\r\n </option>\r\n </datalist>\r\n </clr-datalist-container>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <span class=\"p2\">{{ 'common.sample-formatting' | translate }}:</span><strong>{{ previewLocale | localeLanguageName:previewLocale }}</strong>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-sm-4\">\r\n <vdr-labeled-data [label]=\"'common.medium-date' | translate\">\r\n {{ now | localeDate: 'medium':previewLocale }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.short-date' | translate\">\r\n {{ now | localeDate: 'short':previewLocale }}\r\n </vdr-labeled-data>\r\n </div>\r\n <div class=\"clr-col-sm-4\">\r\n <select clrSelect name=\"currency\" class=\"currency\" [(ngModel)]=\"selectedCurrencyCode\">\r\n <option *ngFor=\"let code of availableCurrencyCodes | sort\" [value]=\"code\">\r\n {{ code | uppercase }} ({{ code | localeCurrencyName: 'full':previewLocale }})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"clr-col-sm-4\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ 12345 | localeCurrency: selectedCurrencyCode:previewLocale }}\r\n </vdr-labeled-data>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"setLanguage()\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.set-language' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: ["select.currency{max-width:200px}input.locale{text-transform:uppercase}\n"], components: [{ type: i1$3.ClrSelectContainer, selector: "clr-select-container" }, { type: i1$3.ClrDatalistContainer, selector: "clr-datalist-container" }, { type: LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrDatalistInput, selector: "[clrDatalistInput]" }, { type: i1$3.ClrDatalist, selector: "datalist", inputs: ["id"] }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i4.TranslatePipe, "sort": SortPipe, "uppercase": i3.UpperCasePipe, "localeLanguageName": LocaleLanguageNamePipe, "localeRegionName": LocaleRegionNamePipe, "localeDate": LocaleDatePipe, "localeCurrencyName": LocaleCurrencyNamePipe, "localeCurrency": LocaleCurrencyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6642
+ UiLanguageSwitcherDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: UiLanguageSwitcherDialogComponent, selector: "vdr-ui-language-switcher", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ 'common.select-display-language' | translate }}</ng-template>\r\n<div class=\"clr-row\">\r\n <div class=\"clr-col-md-6\">\r\n <clr-select-container>\r\n <label>{{ 'common.language' | translate }}</label>\r\n <select\r\n clrSelect\r\n name=\"options\"\r\n [(ngModel)]=\"currentLanguage\"\r\n (ngModelChange)=\"updatePreviewLocale()\"\r\n >\r\n <option *ngFor=\"let code of availableLanguages | sort\" [value]=\"code\">\r\n {{ code | uppercase }} ({{ code | localeLanguageName }})\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n </div>\r\n <div class=\"clr-col-md-6\">\r\n <clr-datalist-container>\r\n <label>{{ 'common.locale' | translate }}</label>\r\n <input\r\n clrDatalistInput\r\n [(ngModel)]=\"currentLocale\"\r\n (ngModelChange)=\"updatePreviewLocale()\"\r\n [placeholder]=\"'common.browser-default' | translate\"\r\n class=\"locale\"\r\n name=\"Locale\"\r\n />\r\n <datalist>\r\n <option *ngFor=\"let locale of availableLocales\" [value]=\"locale\">\r\n {{ locale }} ({{ locale | localeRegionName }})\r\n </option>\r\n </datalist>\r\n </clr-datalist-container>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <span class=\"p2\">{{ 'common.sample-formatting' | translate }}:</span><strong>{{ previewLocale | localeLanguageName:previewLocale }}</strong>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-sm-4\">\r\n <vdr-labeled-data [label]=\"'common.medium-date' | translate\">\r\n {{ now | localeDate: 'medium':previewLocale }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.short-date' | translate\">\r\n {{ now | localeDate: 'short':previewLocale }}\r\n </vdr-labeled-data>\r\n </div>\r\n <div class=\"clr-col-sm-4\">\r\n <select clrSelect name=\"currency\" class=\"currency\" [(ngModel)]=\"selectedCurrencyCode\">\r\n <option *ngFor=\"let code of availableCurrencyCodes | sort\" [value]=\"code\">\r\n {{ code | uppercase }} ({{ code | localeCurrencyName: 'full':previewLocale }})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"clr-col-sm-4\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ 12345 | localeCurrency: selectedCurrencyCode:previewLocale }}\r\n </vdr-labeled-data>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"setLanguage()\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.set-language' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: ["select.currency{max-width:200px}input.locale{text-transform:uppercase}\n"], components: [{ type: i1$3.ClrSelectContainer, selector: "clr-select-container" }, { type: i1$3.ClrDatalistContainer, selector: "clr-datalist-container" }, { type: LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrDatalistInput, selector: "[clrDatalistInput]" }, { type: i1$3.ClrDatalist, selector: "datalist", inputs: ["id"] }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i7.TranslatePipe, "sort": SortPipe, "uppercase": i3.UpperCasePipe, "localeLanguageName": LocaleLanguageNamePipe, "localeRegionName": LocaleRegionNamePipe, "localeDate": LocaleDatePipe, "localeCurrencyName": LocaleCurrencyNamePipe, "localeCurrency": LocaleCurrencyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6597
6643
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UiLanguageSwitcherDialogComponent, decorators: [{
6598
6644
  type: Component,
6599
6645
  args: [{ selector: 'vdr-ui-language-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>{{ 'common.select-display-language' | translate }}</ng-template>\r\n<div class=\"clr-row\">\r\n <div class=\"clr-col-md-6\">\r\n <clr-select-container>\r\n <label>{{ 'common.language' | translate }}</label>\r\n <select\r\n clrSelect\r\n name=\"options\"\r\n [(ngModel)]=\"currentLanguage\"\r\n (ngModelChange)=\"updatePreviewLocale()\"\r\n >\r\n <option *ngFor=\"let code of availableLanguages | sort\" [value]=\"code\">\r\n {{ code | uppercase }} ({{ code | localeLanguageName }})\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n </div>\r\n <div class=\"clr-col-md-6\">\r\n <clr-datalist-container>\r\n <label>{{ 'common.locale' | translate }}</label>\r\n <input\r\n clrDatalistInput\r\n [(ngModel)]=\"currentLocale\"\r\n (ngModelChange)=\"updatePreviewLocale()\"\r\n [placeholder]=\"'common.browser-default' | translate\"\r\n class=\"locale\"\r\n name=\"Locale\"\r\n />\r\n <datalist>\r\n <option *ngFor=\"let locale of availableLocales\" [value]=\"locale\">\r\n {{ locale }} ({{ locale | localeRegionName }})\r\n </option>\r\n </datalist>\r\n </clr-datalist-container>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header\">\r\n <span class=\"p2\">{{ 'common.sample-formatting' | translate }}:</span><strong>{{ previewLocale | localeLanguageName:previewLocale }}</strong>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-sm-4\">\r\n <vdr-labeled-data [label]=\"'common.medium-date' | translate\">\r\n {{ now | localeDate: 'medium':previewLocale }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.short-date' | translate\">\r\n {{ now | localeDate: 'short':previewLocale }}\r\n </vdr-labeled-data>\r\n </div>\r\n <div class=\"clr-col-sm-4\">\r\n <select clrSelect name=\"currency\" class=\"currency\" [(ngModel)]=\"selectedCurrencyCode\">\r\n <option *ngFor=\"let code of availableCurrencyCodes | sort\" [value]=\"code\">\r\n {{ code | uppercase }} ({{ code | localeCurrencyName: 'full':previewLocale }})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"clr-col-sm-4\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ 12345 | localeCurrency: selectedCurrencyCode:previewLocale }}\r\n </vdr-labeled-data>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"setLanguage()\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.set-language' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: ["select.currency{max-width:200px}input.locale{text-transform:uppercase}\n"] }]
@@ -6733,14 +6779,14 @@ class I18nService {
6733
6779
  return this.ngxTranslate.instant(key, params);
6734
6780
  }
6735
6781
  }
6736
- I18nService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: I18nService, deps: [{ token: i4.TranslateService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
6782
+ I18nService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: I18nService, deps: [{ token: i7.TranslateService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
6737
6783
  I18nService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: I18nService, providedIn: 'root' });
6738
6784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: I18nService, decorators: [{
6739
6785
  type: Injectable,
6740
6786
  args: [{
6741
6787
  providedIn: 'root',
6742
6788
  }]
6743
- }], ctorParameters: function () { return [{ type: i4.TranslateService }, { type: Document, decorators: [{
6789
+ }], ctorParameters: function () { return [{ type: i7.TranslateService }, { type: Document, decorators: [{
6744
6790
  type: Inject,
6745
6791
  args: [DOCUMENT]
6746
6792
  }] }]; } });
@@ -6757,7 +6803,7 @@ class SimpleDialogComponent {
6757
6803
  }
6758
6804
  }
6759
6805
  SimpleDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SimpleDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6760
- SimpleDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SimpleDialogComponent, selector: "vdr-simple-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ title | translate:translationVars }}</ng-template>\r\n{{ body | translate:translationVars }}\r\n<ng-template vdrDialogButtons>\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <button\r\n class=\"btn\"\r\n [class.btn-primary]=\"button.type === 'primary'\"\r\n [class.btn-danger]=\"button.type === 'danger'\"\r\n (click)=\"resolveWith(button.returnValue)\"\r\n >\r\n {{ button.label | translate:translationVars }}\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [""], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6806
+ SimpleDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: SimpleDialogComponent, selector: "vdr-simple-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ title | translate:translationVars }}</ng-template>\r\n{{ body | translate:translationVars }}\r\n<ng-template vdrDialogButtons>\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <button\r\n class=\"btn\"\r\n [class.btn-primary]=\"button.type === 'primary'\"\r\n [class.btn-danger]=\"button.type === 'danger'\"\r\n (click)=\"resolveWith(button.returnValue)\"\r\n >\r\n {{ button.label | translate:translationVars }}\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [""], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6761
6807
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: SimpleDialogComponent, decorators: [{
6762
6808
  type: Component,
6763
6809
  args: [{ selector: 'vdr-simple-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>{{ title | translate:translationVars }}</ng-template>\r\n{{ body | translate:translationVars }}\r\n<ng-template vdrDialogButtons>\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <button\r\n class=\"btn\"\r\n [class.btn-primary]=\"button.type === 'primary'\"\r\n [class.btn-danger]=\"button.type === 'danger'\"\r\n (click)=\"resolveWith(button.returnValue)\"\r\n >\r\n {{ button.label | translate:translationVars }}\r\n </button>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [""] }]
@@ -7192,7 +7238,7 @@ class ChannelSwitcherComponent {
7192
7238
  }
7193
7239
  }
7194
7240
  ChannelSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ChannelSwitcherComponent, deps: [{ token: DataService }, { token: LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
7195
- ChannelSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ChannelSwitcherComponent, selector: "vdr-channel-switcher", ngImport: i0, template: "<ng-container>\r\n <vdr-dropdown>\r\n <button class=\"btn btn-link active-channel\" vdrDropdownTrigger>\r\n <vdr-channel-badge [channelCode]=\"activeChannelCode$ | async\"></vdr-channel-badge>\r\n <span class=\"active-channel\">{{\r\n activeChannelCode$ | async | channelCodeToLabel | translate\r\n }}</span>\r\n <span class=\"trigger\"><clr-icon shape=\"caret down\"></clr-icon></span>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <input\r\n *ngIf=\"((channelCount$ | async) || 0) >= displayFilterThreshold\"\r\n [formControl]=\"filterControl\"\r\n type=\"text\"\r\n class=\"ml2 mr2\"\r\n [placeholder]=\"'common.filter' | translate\"\r\n />\r\n <button\r\n *ngFor=\"let channel of channels$ | async\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"setActiveChannel(channel.id)\"\r\n >\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-container>\r\n", styles: [":host{display:flex;align-items:center;margin:0 .5rem;height:2.5rem}.active-channel{color:var(--color-grey-200)}.active-channel clr-icon{color:#fff}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: ChannelBadgeComponent, selector: "vdr-channel-badge", inputs: ["channelCode"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe, "channelCodeToLabel": ChannelLabelPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7241
+ ChannelSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ChannelSwitcherComponent, selector: "vdr-channel-switcher", ngImport: i0, template: "<ng-container>\r\n <vdr-dropdown>\r\n <button class=\"btn btn-link active-channel\" vdrDropdownTrigger>\r\n <vdr-channel-badge [channelCode]=\"activeChannelCode$ | async\"></vdr-channel-badge>\r\n <span class=\"active-channel\">{{\r\n activeChannelCode$ | async | channelCodeToLabel | translate\r\n }}</span>\r\n <span class=\"trigger\"><clr-icon shape=\"caret down\"></clr-icon></span>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <input\r\n *ngIf=\"((channelCount$ | async) || 0) >= displayFilterThreshold\"\r\n [formControl]=\"filterControl\"\r\n type=\"text\"\r\n class=\"ml2 mr2\"\r\n [placeholder]=\"'common.filter' | translate\"\r\n />\r\n <button\r\n *ngFor=\"let channel of channels$ | async\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"setActiveChannel(channel.id)\"\r\n >\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-container>\r\n", styles: [":host{display:flex;align-items:center;margin:0 .5rem;height:2.5rem}.active-channel{color:var(--color-grey-200)}.active-channel clr-icon{color:#fff}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: ChannelBadgeComponent, selector: "vdr-channel-badge", inputs: ["channelCode"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe, "channelCodeToLabel": ChannelLabelPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7196
7242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ChannelSwitcherComponent, decorators: [{
7197
7243
  type: Component,
7198
7244
  args: [{ selector: 'vdr-channel-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\r\n <vdr-dropdown>\r\n <button class=\"btn btn-link active-channel\" vdrDropdownTrigger>\r\n <vdr-channel-badge [channelCode]=\"activeChannelCode$ | async\"></vdr-channel-badge>\r\n <span class=\"active-channel\">{{\r\n activeChannelCode$ | async | channelCodeToLabel | translate\r\n }}</span>\r\n <span class=\"trigger\"><clr-icon shape=\"caret down\"></clr-icon></span>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <input\r\n *ngIf=\"((channelCount$ | async) || 0) >= displayFilterThreshold\"\r\n [formControl]=\"filterControl\"\r\n type=\"text\"\r\n class=\"ml2 mr2\"\r\n [placeholder]=\"'common.filter' | translate\"\r\n />\r\n <button\r\n *ngFor=\"let channel of channels$ | async\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"setActiveChannel(channel.id)\"\r\n >\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-container>\r\n", styles: [":host{display:flex;align-items:center;margin:0 .5rem;height:2.5rem}.active-channel{color:var(--color-grey-200)}.active-channel clr-icon{color:#fff}\n"] }]
@@ -7214,7 +7260,7 @@ class ThemeSwitcherComponent {
7214
7260
  }
7215
7261
  }
7216
7262
  ThemeSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ThemeSwitcherComponent, deps: [{ token: DataService }, { token: LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
7217
- ThemeSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ThemeSwitcherComponent, selector: "vdr-theme-switcher", ngImport: i0, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\" (click)=\"toggleTheme(activeTheme)\">\r\n <span>{{ 'common.theme' | translate }}</span>\r\n <div class=\"theme-icon default\" [class.active]=\"activeTheme === 'default'\">\r\n <clr-icon shape=\"sun\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n <div class=\"theme-icon dark\" [class.active]=\"activeTheme === 'dark'\">\r\n <clr-icon shape=\"moon\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n</button>\r\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}button.theme-toggle{position:relative;padding-left:20px;border:none;background:transparent;color:var(--clr-dropdown-item-color);cursor:pointer}.theme-icon{position:absolute;top:0px;left:6px;z-index:0;opacity:.2;color:var(--color-text-300);transition:opacity .3s,left .3s}.theme-icon.active{z-index:1;left:0px;opacity:1}.theme-icon.default.active{color:#d6ae3f}.theme-icon.dark.active{color:#ffdf3a}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7263
+ ThemeSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ThemeSwitcherComponent, selector: "vdr-theme-switcher", ngImport: i0, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\" (click)=\"toggleTheme(activeTheme)\">\r\n <span>{{ 'common.theme' | translate }}</span>\r\n <div class=\"theme-icon default\" [class.active]=\"activeTheme === 'default'\">\r\n <clr-icon shape=\"sun\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n <div class=\"theme-icon dark\" [class.active]=\"activeTheme === 'dark'\">\r\n <clr-icon shape=\"moon\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n</button>\r\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}button.theme-toggle{position:relative;padding-left:20px;border:none;background:transparent;color:var(--clr-dropdown-item-color);cursor:pointer}.theme-icon{position:absolute;top:0px;left:6px;z-index:0;opacity:.2;color:var(--color-text-300);transition:opacity .3s,left .3s}.theme-icon.active{z-index:1;left:0px;opacity:1}.theme-icon.default.active{color:#d6ae3f}.theme-icon.dark.active{color:#ffdf3a}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7218
7264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ThemeSwitcherComponent, decorators: [{
7219
7265
  type: Component,
7220
7266
  args: [{ selector: 'vdr-theme-switcher', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"activeTheme$ | async as activeTheme\" class=\"theme-toggle\" (click)=\"toggleTheme(activeTheme)\">\r\n <span>{{ 'common.theme' | translate }}</span>\r\n <div class=\"theme-icon default\" [class.active]=\"activeTheme === 'default'\">\r\n <clr-icon shape=\"sun\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n <div class=\"theme-icon dark\" [class.active]=\"activeTheme === 'dark'\">\r\n <clr-icon shape=\"moon\" class=\"is-solid\"></clr-icon>\r\n </div>\r\n</button>\r\n", styles: [":host{display:inline-flex;justify-content:center;align-items:center}button.theme-toggle{position:relative;padding-left:20px;border:none;background:transparent;color:var(--clr-dropdown-item-color);cursor:pointer}.theme-icon{position:absolute;top:0px;left:6px;z-index:0;opacity:.2;color:var(--color-text-300);transition:opacity .3s,left .3s}.theme-icon.active{z-index:1;left:0px;opacity:1}.theme-icon.default.active{color:#d6ae3f}.theme-icon.dark.active{color:#ffdf3a}\n"] }]
@@ -7229,7 +7275,7 @@ class UserMenuComponent {
7229
7275
  }
7230
7276
  }
7231
7277
  UserMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UserMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7232
- UserMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: UserMenuComponent, selector: "vdr-user-menu", inputs: { userName: "userName", availableLanguages: "availableLanguages", uiLanguageAndLocale: "uiLanguageAndLocale" }, outputs: { logOut: "logOut", selectUiLanguage: "selectUiLanguage" }, ngImport: i0, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link trigger\" vdrDropdownTrigger>\r\n <span class=\"user-name\">{{ userName }}</span>\r\n <clr-icon shape=\"user\" size=\"24\"></clr-icon>\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <a [routerLink]=\"['/settings', 'profile']\" vdrDropdownItem>\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon> {{ 'settings.profile' | translate }}\r\n </a>\r\n <ng-container *ngIf=\"1 < availableLanguages.length\">\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectUiLanguage.emit()\"\r\n [title]=\"'common.select-display-language' | translate\"\r\n >\r\n <clr-icon shape=\"language\"></clr-icon> {{ uiLanguageAndLocale?.[0] | localeLanguageName }}\r\n </button>\r\n </ng-container>\r\n <div class=\"dropdown-item\">\r\n <vdr-theme-switcher></vdr-theme-switcher>\r\n </div>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" vdrDropdownItem (click)=\"logOut.emit()\">\r\n <clr-icon shape=\"logout\"></clr-icon> {{ 'common.log-out' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:flex;align-items:center;margin:0 .5rem;height:2.5rem}.user-name{color:var(--color-grey-200);margin-right:12px}@media screen and (max-width: 768px){.user-name{display:none}}.trigger clr-icon{color:#fff}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }, { type: ThemeSwitcherComponent, selector: "vdr-theme-switcher" }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i4.TranslatePipe, "localeLanguageName": LocaleLanguageNamePipe } });
7278
+ UserMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: UserMenuComponent, selector: "vdr-user-menu", inputs: { userName: "userName", availableLanguages: "availableLanguages", uiLanguageAndLocale: "uiLanguageAndLocale" }, outputs: { logOut: "logOut", selectUiLanguage: "selectUiLanguage" }, ngImport: i0, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link trigger\" vdrDropdownTrigger>\r\n <span class=\"user-name\">{{ userName }}</span>\r\n <clr-icon shape=\"user\" size=\"24\"></clr-icon>\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <a [routerLink]=\"['/settings', 'profile']\" vdrDropdownItem>\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon> {{ 'settings.profile' | translate }}\r\n </a>\r\n <ng-container *ngIf=\"1 < availableLanguages.length\">\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectUiLanguage.emit()\"\r\n [title]=\"'common.select-display-language' | translate\"\r\n >\r\n <clr-icon shape=\"language\"></clr-icon> {{ uiLanguageAndLocale?.[0] | localeLanguageName }}\r\n </button>\r\n </ng-container>\r\n <div class=\"dropdown-item\">\r\n <vdr-theme-switcher></vdr-theme-switcher>\r\n </div>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" vdrDropdownItem (click)=\"logOut.emit()\">\r\n <clr-icon shape=\"logout\"></clr-icon> {{ 'common.log-out' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:flex;align-items:center;margin:0 .5rem;height:2.5rem}.user-name{color:var(--color-grey-200);margin-right:12px}@media screen and (max-width: 768px){.user-name{display:none}}.trigger clr-icon{color:#fff}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }, { type: ThemeSwitcherComponent, selector: "vdr-theme-switcher" }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i7.TranslatePipe, "localeLanguageName": LocaleLanguageNamePipe } });
7233
7279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: UserMenuComponent, decorators: [{
7234
7280
  type: Component,
7235
7281
  args: [{ selector: 'vdr-user-menu', template: "<vdr-dropdown>\r\n <button class=\"btn btn-link trigger\" vdrDropdownTrigger>\r\n <span class=\"user-name\">{{ userName }}</span>\r\n <clr-icon shape=\"user\" size=\"24\"></clr-icon>\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <a [routerLink]=\"['/settings', 'profile']\" vdrDropdownItem>\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon> {{ 'settings.profile' | translate }}\r\n </a>\r\n <ng-container *ngIf=\"1 < availableLanguages.length\">\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"selectUiLanguage.emit()\"\r\n [title]=\"'common.select-display-language' | translate\"\r\n >\r\n <clr-icon shape=\"language\"></clr-icon> {{ uiLanguageAndLocale?.[0] | localeLanguageName }}\r\n </button>\r\n </ng-container>\r\n <div class=\"dropdown-item\">\r\n <vdr-theme-switcher></vdr-theme-switcher>\r\n </div>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" vdrDropdownItem (click)=\"logOut.emit()\">\r\n <clr-icon shape=\"logout\"></clr-icon> {{ 'common.log-out' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:flex;align-items:center;margin:0 .5rem;height:2.5rem}.user-name{color:var(--color-grey-200);margin-right:12px}@media screen and (max-width: 768px){.user-name{display:none}}.trigger clr-icon{color:#fff}\n"] }]
@@ -7341,7 +7387,7 @@ class BreadcrumbComponent {
7341
7387
  }
7342
7388
  }
7343
7389
  BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component });
7344
- BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: BreadcrumbComponent, selector: "vdr-breadcrumb", ngImport: i0, template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of (breadcrumbs$ | async); let isLast = last\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;padding:0 1rem}.breadcrumbs{list-style-type:none}.breadcrumbs li{font-size:16px;display:inline-block;margin-right:10px}.breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-left:10px}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe } });
7390
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: BreadcrumbComponent, selector: "vdr-breadcrumb", ngImport: i0, template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of (breadcrumbs$ | async); let isLast = last\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;padding:0 1rem}.breadcrumbs{list-style-type:none}.breadcrumbs li{font-size:16px;display:inline-block;margin-right:10px}.breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-left:10px}\n"], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe } });
7345
7391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: BreadcrumbComponent, decorators: [{
7346
7392
  type: Component,
7347
7393
  args: [{ selector: 'vdr-breadcrumb', template: "<nav role=\"navigation\">\r\n <ul class=\"breadcrumbs\">\r\n <li *ngFor=\"let breadcrumb of (breadcrumbs$ | async); let isLast = last\">\r\n <a [routerLink]=\"breadcrumb.link\" *ngIf=\"!isLast\">{{ breadcrumb.label | translate }}</a>\r\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.label | translate }}</ng-container>\r\n </li>\r\n </ul>\r\n</nav>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;padding:0 1rem}.breadcrumbs{list-style-type:none}.breadcrumbs li{font-size:16px;display:inline-block;margin-right:10px}.breadcrumbs li:not(:last-child):after{content:\"\\203a\";top:0;color:var(--color-grey-400);margin-left:10px}\n"] }]
@@ -8040,7 +8086,7 @@ class MainNavComponent {
8040
8086
  }
8041
8087
  }
8042
8088
  MainNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MainNavComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: NavBuilderService }, { token: HealthCheckService }, { token: JobQueueService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component });
8043
- MainNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: MainNavComponent, selector: "vdr-main-nav", ngImport: i0, template: "<nav class=\"sidenav\" [clr-nav-level]=\"2\">\r\n <section class=\"sidenav-content\">\r\n <ng-container *ngFor=\"let section of navBuilderService.navMenuConfig$ | async\">\r\n <section\r\n class=\"nav-group\"\r\n [attr.data-section-id]=\"section.id\"\r\n [class.collapsible]=\"section.collapsible\"\r\n *ngIf=\"shouldDisplayLink(section)\"\r\n >\r\n <vdr-ui-extension-point [locationId]=\"section.id\" api=\"navMenu\" [topPx]=\"-6\" [leftPx]=\"8\">\r\n <ng-container *ngIf=\"navBuilderService.sectionBadges[section.id] | async as sectionBadge\">\r\n <vdr-status-badge\r\n *ngIf=\"sectionBadge !== 'none'\"\r\n [type]=\"sectionBadge\"\r\n ></vdr-status-badge>\r\n </ng-container>\r\n <input [id]=\"section.id\" type=\"checkbox\" [checked]=\"section.collapsedByDefault\" />\r\n <label class=\"nav-group-header\" [for]=\"section.id\">{{ section.label | translate }}</label>\r\n <ul class=\"nav-list\">\r\n <ng-container *ngFor=\"let item of section.items\">\r\n <li *ngIf=\"shouldDisplayLink(item)\">\r\n <a\r\n class=\"nav-link\"\r\n [attr.data-item-id]=\"section.id\"\r\n [routerLink]=\"getRouterLink(item)\"\r\n routerLinkActive=\"active\"\r\n >\r\n <ng-container *ngIf=\"item.statusBadge | async as itemBadge\">\r\n <vdr-status-badge\r\n *ngIf=\"itemBadge.type !== 'none'\"\r\n [type]=\"itemBadge.type\"\r\n ></vdr-status-badge>\r\n </ng-container>\r\n <clr-icon [attr.shape]=\"item.icon || 'block'\" size=\"20\"></clr-icon>\r\n {{ item.label | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </vdr-ui-extension-point>\r\n </section>\r\n </ng-container>\r\n </section>\r\n</nav>\r\n", styles: [":host{order:-1;background-color:var(--clr-nav-background-color)}nav.sidenav{height:100%;width:10.8rem;border-right-color:var(--clr-sidenav-border-color)}.sidenav .nav-group .nav-list{margin:0}.sidenav .nav-group .nav-group-header{margin:0;line-height:1.2}.sidenav .nav-group .nav-link{display:inline-flex;line-height:1rem;padding-right:.6rem}.nav-list clr-icon{flex-shrink:0;margin-right:12px}.nav-group{-webkit-hyphens:auto;hyphens:auto}.nav-group,.nav-link{position:relative}.nav-group vdr-status-badge{left:10px;top:6px}.nav-link vdr-status-badge{left:25px;top:3px}\n"], components: [{ type: UiExtensionPointComponent, selector: "vdr-ui-extension-point", inputs: ["locationId", "topPx", "leftPx", "api"] }, { type: StatusBadgeComponent, selector: "vdr-status-badge", inputs: ["type"] }], directives: [{ type: i1$3.ClrNavLevel, selector: "[clr-nav-level]", inputs: ["clr-nav-level"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe } });
8089
+ MainNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: MainNavComponent, selector: "vdr-main-nav", ngImport: i0, template: "<nav class=\"sidenav\" [clr-nav-level]=\"2\">\r\n <section class=\"sidenav-content\">\r\n <ng-container *ngFor=\"let section of navBuilderService.navMenuConfig$ | async\">\r\n <section\r\n class=\"nav-group\"\r\n [attr.data-section-id]=\"section.id\"\r\n [class.collapsible]=\"section.collapsible\"\r\n *ngIf=\"shouldDisplayLink(section)\"\r\n >\r\n <vdr-ui-extension-point [locationId]=\"section.id\" api=\"navMenu\" [topPx]=\"-6\" [leftPx]=\"8\">\r\n <ng-container *ngIf=\"navBuilderService.sectionBadges[section.id] | async as sectionBadge\">\r\n <vdr-status-badge\r\n *ngIf=\"sectionBadge !== 'none'\"\r\n [type]=\"sectionBadge\"\r\n ></vdr-status-badge>\r\n </ng-container>\r\n <input [id]=\"section.id\" type=\"checkbox\" [checked]=\"section.collapsedByDefault\" />\r\n <label class=\"nav-group-header\" [for]=\"section.id\">{{ section.label | translate }}</label>\r\n <ul class=\"nav-list\">\r\n <ng-container *ngFor=\"let item of section.items\">\r\n <li *ngIf=\"shouldDisplayLink(item)\">\r\n <a\r\n class=\"nav-link\"\r\n [attr.data-item-id]=\"section.id\"\r\n [routerLink]=\"getRouterLink(item)\"\r\n routerLinkActive=\"active\"\r\n >\r\n <ng-container *ngIf=\"item.statusBadge | async as itemBadge\">\r\n <vdr-status-badge\r\n *ngIf=\"itemBadge.type !== 'none'\"\r\n [type]=\"itemBadge.type\"\r\n ></vdr-status-badge>\r\n </ng-container>\r\n <clr-icon [attr.shape]=\"item.icon || 'block'\" size=\"20\"></clr-icon>\r\n {{ item.label | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </vdr-ui-extension-point>\r\n </section>\r\n </ng-container>\r\n </section>\r\n</nav>\r\n", styles: [":host{order:-1;background-color:var(--clr-nav-background-color)}nav.sidenav{height:100%;width:10.8rem;border-right-color:var(--clr-sidenav-border-color)}.sidenav .nav-group .nav-list{margin:0}.sidenav .nav-group .nav-group-header{margin:0;line-height:1.2}.sidenav .nav-group .nav-link{display:inline-flex;line-height:1rem;padding-right:.6rem}.nav-list clr-icon{flex-shrink:0;margin-right:12px}.nav-group{-webkit-hyphens:auto;hyphens:auto}.nav-group,.nav-link{position:relative}.nav-group vdr-status-badge{left:10px;top:6px}.nav-link vdr-status-badge{left:25px;top:3px}\n"], components: [{ type: UiExtensionPointComponent, selector: "vdr-ui-extension-point", inputs: ["locationId", "topPx", "leftPx", "api"] }, { type: StatusBadgeComponent, selector: "vdr-status-badge", inputs: ["type"] }], directives: [{ type: i1$3.ClrNavLevel, selector: "[clr-nav-level]", inputs: ["clr-nav-level"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe } });
8044
8090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MainNavComponent, decorators: [{
8045
8091
  type: Component,
8046
8092
  args: [{ selector: 'vdr-main-nav', template: "<nav class=\"sidenav\" [clr-nav-level]=\"2\">\r\n <section class=\"sidenav-content\">\r\n <ng-container *ngFor=\"let section of navBuilderService.navMenuConfig$ | async\">\r\n <section\r\n class=\"nav-group\"\r\n [attr.data-section-id]=\"section.id\"\r\n [class.collapsible]=\"section.collapsible\"\r\n *ngIf=\"shouldDisplayLink(section)\"\r\n >\r\n <vdr-ui-extension-point [locationId]=\"section.id\" api=\"navMenu\" [topPx]=\"-6\" [leftPx]=\"8\">\r\n <ng-container *ngIf=\"navBuilderService.sectionBadges[section.id] | async as sectionBadge\">\r\n <vdr-status-badge\r\n *ngIf=\"sectionBadge !== 'none'\"\r\n [type]=\"sectionBadge\"\r\n ></vdr-status-badge>\r\n </ng-container>\r\n <input [id]=\"section.id\" type=\"checkbox\" [checked]=\"section.collapsedByDefault\" />\r\n <label class=\"nav-group-header\" [for]=\"section.id\">{{ section.label | translate }}</label>\r\n <ul class=\"nav-list\">\r\n <ng-container *ngFor=\"let item of section.items\">\r\n <li *ngIf=\"shouldDisplayLink(item)\">\r\n <a\r\n class=\"nav-link\"\r\n [attr.data-item-id]=\"section.id\"\r\n [routerLink]=\"getRouterLink(item)\"\r\n routerLinkActive=\"active\"\r\n >\r\n <ng-container *ngIf=\"item.statusBadge | async as itemBadge\">\r\n <vdr-status-badge\r\n *ngIf=\"itemBadge.type !== 'none'\"\r\n [type]=\"itemBadge.type\"\r\n ></vdr-status-badge>\r\n </ng-container>\r\n <clr-icon [attr.shape]=\"item.icon || 'block'\" size=\"20\"></clr-icon>\r\n {{ item.label | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </vdr-ui-extension-point>\r\n </section>\r\n </ng-container>\r\n </section>\r\n</nav>\r\n", styles: [":host{order:-1;background-color:var(--clr-nav-background-color)}nav.sidenav{height:100%;width:10.8rem;border-right-color:var(--clr-sidenav-border-color)}.sidenav .nav-group .nav-list{margin:0}.sidenav .nav-group .nav-group-header{margin:0;line-height:1.2}.sidenav .nav-group .nav-link{display:inline-flex;line-height:1rem;padding-right:.6rem}.nav-list clr-icon{flex-shrink:0;margin-right:12px}.nav-group{-webkit-hyphens:auto;hyphens:auto}.nav-group,.nav-link{position:relative}.nav-group vdr-status-badge{left:10px;top:6px}.nav-link vdr-status-badge{left:25px;top:3px}\n"] }]
@@ -8272,7 +8318,7 @@ class NotificationComponent {
8272
8318
  }
8273
8319
  }
8274
8320
  NotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8275
- NotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: NotificationComponent, selector: "vdr-notification", host: { listeners: { "click": "onClick()" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"notification-wrapper\"\r\n #wrapper\r\n [style.top.px]=\"offsetTop\"\r\n [ngClass]=\"{\r\n visible: isVisible,\r\n info: type === 'info',\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning'\r\n }\"\r\n>\r\n <clr-icon [attr.shape]=\"getIcon()\" size=\"24\"></clr-icon>\r\n {{ stringifyMessage(message) | translate: translationVars }}\r\n</div>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:.95}}:host{position:relative;z-index:1050}:host>.notification-wrapper{display:block;position:fixed;z-index:1001;top:0;right:10px;border-radius:3px;max-width:98vw;word-wrap:break-word;padding:10px;background-color:var(--color-grey-500);color:#fff;transition:opacity 1s,top .3s;opacity:0;white-space:pre-line}:host>.notification-wrapper.success{background-color:var(--color-success-500)}:host>.notification-wrapper.error{background-color:var(--color-error-500)}:host>.notification-wrapper.warning{background-color:var(--color-warning-500)}:host>.notification-wrapper.info{background-color:var(--color-secondary-500)}:host>.notification-wrapper.visible{opacity:.95;animation:fadeIn .3s .3s backwards}\n"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe } });
8321
+ NotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: NotificationComponent, selector: "vdr-notification", host: { listeners: { "click": "onClick()" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"notification-wrapper\"\r\n #wrapper\r\n [style.top.px]=\"offsetTop\"\r\n [ngClass]=\"{\r\n visible: isVisible,\r\n info: type === 'info',\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning'\r\n }\"\r\n>\r\n <clr-icon [attr.shape]=\"getIcon()\" size=\"24\"></clr-icon>\r\n {{ stringifyMessage(message) | translate: translationVars }}\r\n</div>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:.95}}:host{position:relative;z-index:1050}:host>.notification-wrapper{display:block;position:fixed;z-index:1001;top:0;right:10px;border-radius:3px;max-width:98vw;word-wrap:break-word;padding:10px;background-color:var(--color-grey-500);color:#fff;transition:opacity 1s,top .3s;opacity:0;white-space:pre-line}:host>.notification-wrapper.success{background-color:var(--color-success-500)}:host>.notification-wrapper.error{background-color:var(--color-error-500)}:host>.notification-wrapper.warning{background-color:var(--color-warning-500)}:host>.notification-wrapper.info{background-color:var(--color-secondary-500)}:host>.notification-wrapper.visible{opacity:.95;animation:fadeIn .3s .3s backwards}\n"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe } });
8276
8322
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NotificationComponent, decorators: [{
8277
8323
  type: Component,
8278
8324
  args: [{ selector: 'vdr-notification', template: "<div\r\n class=\"notification-wrapper\"\r\n #wrapper\r\n [style.top.px]=\"offsetTop\"\r\n [ngClass]=\"{\r\n visible: isVisible,\r\n info: type === 'info',\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning'\r\n }\"\r\n>\r\n <clr-icon [attr.shape]=\"getIcon()\" size=\"24\"></clr-icon>\r\n {{ stringifyMessage(message) | translate: translationVars }}\r\n</div>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:.95}}:host{position:relative;z-index:1050}:host>.notification-wrapper{display:block;position:fixed;z-index:1001;top:0;right:10px;border-radius:3px;max-width:98vw;word-wrap:break-word;padding:10px;background-color:var(--color-grey-500);color:#fff;transition:opacity 1s,top .3s;opacity:0;white-space:pre-line}:host>.notification-wrapper.success{background-color:var(--color-success-500)}:host>.notification-wrapper.error{background-color:var(--color-error-500)}:host>.notification-wrapper.warning{background-color:var(--color-warning-500)}:host>.notification-wrapper.info{background-color:var(--color-secondary-500)}:host>.notification-wrapper.visible{opacity:.95;animation:fadeIn .3s .3s backwards}\n"] }]
@@ -8286,194 +8332,260 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
8286
8332
 
8287
8333
  // tslint:disable
8288
8334
  const result = {
8289
- possibleTypes: {
8290
- AddFulfillmentToOrderResult: [
8291
- 'CreateFulfillmentError',
8292
- 'EmptyOrderLineSelectionError',
8293
- 'Fulfillment',
8294
- 'FulfillmentStateTransitionError',
8295
- 'InsufficientStockOnHandError',
8296
- 'InvalidFulfillmentHandlerError',
8297
- 'ItemsAlreadyFulfilledError',
8335
+ "possibleTypes": {
8336
+ "AddFulfillmentToOrderResult": [
8337
+ "CreateFulfillmentError",
8338
+ "EmptyOrderLineSelectionError",
8339
+ "Fulfillment",
8340
+ "FulfillmentStateTransitionError",
8341
+ "InsufficientStockOnHandError",
8342
+ "InvalidFulfillmentHandlerError",
8343
+ "ItemsAlreadyFulfilledError"
8298
8344
  ],
8299
- AddManualPaymentToOrderResult: ['ManualPaymentStateError', 'Order'],
8300
- AuthenticationResult: ['CurrentUser', 'InvalidCredentialsError'],
8301
- CancelOrderResult: [
8302
- 'CancelActiveOrderError',
8303
- 'EmptyOrderLineSelectionError',
8304
- 'MultipleOrderError',
8305
- 'Order',
8306
- 'OrderStateTransitionError',
8307
- 'QuantityTooGreatError',
8345
+ "AddManualPaymentToOrderResult": [
8346
+ "ManualPaymentStateError",
8347
+ "Order"
8308
8348
  ],
8309
- CreateAssetResult: ['Asset', 'MimeTypeError'],
8310
- CreateChannelResult: ['Channel', 'LanguageNotAvailableError'],
8311
- CreateCustomerResult: ['Customer', 'EmailAddressConflictError'],
8312
- CreatePromotionResult: ['MissingConditionsError', 'Promotion'],
8313
- CustomField: [
8314
- 'BooleanCustomFieldConfig',
8315
- 'DateTimeCustomFieldConfig',
8316
- 'FloatCustomFieldConfig',
8317
- 'IntCustomFieldConfig',
8318
- 'LocaleStringCustomFieldConfig',
8319
- 'RelationCustomFieldConfig',
8320
- 'StringCustomFieldConfig',
8321
- 'TextCustomFieldConfig',
8349
+ "AuthenticationResult": [
8350
+ "CurrentUser",
8351
+ "InvalidCredentialsError"
8322
8352
  ],
8323
- CustomFieldConfig: [
8324
- 'BooleanCustomFieldConfig',
8325
- 'DateTimeCustomFieldConfig',
8326
- 'FloatCustomFieldConfig',
8327
- 'IntCustomFieldConfig',
8328
- 'LocaleStringCustomFieldConfig',
8329
- 'RelationCustomFieldConfig',
8330
- 'StringCustomFieldConfig',
8331
- 'TextCustomFieldConfig',
8353
+ "CancelOrderResult": [
8354
+ "CancelActiveOrderError",
8355
+ "EmptyOrderLineSelectionError",
8356
+ "MultipleOrderError",
8357
+ "Order",
8358
+ "OrderStateTransitionError",
8359
+ "QuantityTooGreatError"
8332
8360
  ],
8333
- ErrorResult: [
8334
- 'AlreadyRefundedError',
8335
- 'CancelActiveOrderError',
8336
- 'ChannelDefaultLanguageError',
8337
- 'CouponCodeExpiredError',
8338
- 'CouponCodeInvalidError',
8339
- 'CouponCodeLimitError',
8340
- 'CreateFulfillmentError',
8341
- 'EmailAddressConflictError',
8342
- 'EmptyOrderLineSelectionError',
8343
- 'FulfillmentStateTransitionError',
8344
- 'InsufficientStockError',
8345
- 'InsufficientStockOnHandError',
8346
- 'InvalidCredentialsError',
8347
- 'InvalidFulfillmentHandlerError',
8348
- 'ItemsAlreadyFulfilledError',
8349
- 'LanguageNotAvailableError',
8350
- 'ManualPaymentStateError',
8351
- 'MimeTypeError',
8352
- 'MissingConditionsError',
8353
- 'MultipleOrderError',
8354
- 'NativeAuthStrategyError',
8355
- 'NegativeQuantityError',
8356
- 'NoChangesSpecifiedError',
8357
- 'NothingToRefundError',
8358
- 'OrderLimitError',
8359
- 'OrderModificationStateError',
8360
- 'OrderStateTransitionError',
8361
- 'PaymentMethodMissingError',
8362
- 'PaymentOrderMismatchError',
8363
- 'PaymentStateTransitionError',
8364
- 'ProductOptionInUseError',
8365
- 'QuantityTooGreatError',
8366
- 'RefundOrderStateError',
8367
- 'RefundPaymentIdMissingError',
8368
- 'RefundStateTransitionError',
8369
- 'SettlePaymentError',
8361
+ "CreateAssetResult": [
8362
+ "Asset",
8363
+ "MimeTypeError"
8370
8364
  ],
8371
- ModifyOrderResult: [
8372
- 'CouponCodeExpiredError',
8373
- 'CouponCodeInvalidError',
8374
- 'CouponCodeLimitError',
8375
- 'InsufficientStockError',
8376
- 'NegativeQuantityError',
8377
- 'NoChangesSpecifiedError',
8378
- 'Order',
8379
- 'OrderLimitError',
8380
- 'OrderModificationStateError',
8381
- 'PaymentMethodMissingError',
8382
- 'RefundPaymentIdMissingError',
8365
+ "CreateChannelResult": [
8366
+ "Channel",
8367
+ "LanguageNotAvailableError"
8383
8368
  ],
8384
- NativeAuthenticationResult: ['CurrentUser', 'InvalidCredentialsError', 'NativeAuthStrategyError'],
8385
- Node: [
8386
- 'Address',
8387
- 'Administrator',
8388
- 'Allocation',
8389
- 'Asset',
8390
- 'AuthenticationMethod',
8391
- 'Cancellation',
8392
- 'Channel',
8393
- 'Collection',
8394
- 'Country',
8395
- 'Customer',
8396
- 'CustomerGroup',
8397
- 'Facet',
8398
- 'FacetValue',
8399
- 'Fulfillment',
8400
- 'HistoryEntry',
8401
- 'Job',
8402
- 'Order',
8403
- 'OrderItem',
8404
- 'OrderLine',
8405
- 'OrderModification',
8406
- 'Payment',
8407
- 'PaymentMethod',
8408
- 'Product',
8409
- 'ProductOption',
8410
- 'ProductOptionGroup',
8411
- 'ProductVariant',
8412
- 'Promotion',
8413
- 'Refund',
8414
- 'Release',
8415
- 'Return',
8416
- 'Role',
8417
- 'Sale',
8418
- 'ShippingMethod',
8419
- 'StockAdjustment',
8420
- 'Surcharge',
8421
- 'Tag',
8422
- 'TaxCategory',
8423
- 'TaxRate',
8424
- 'User',
8425
- 'Zone',
8369
+ "CreateCustomerResult": [
8370
+ "Customer",
8371
+ "EmailAddressConflictError"
8426
8372
  ],
8427
- PaginatedList: [
8428
- 'AdministratorList',
8429
- 'AssetList',
8430
- 'CollectionList',
8431
- 'CountryList',
8432
- 'CustomerGroupList',
8433
- 'CustomerList',
8434
- 'FacetList',
8435
- 'HistoryEntryList',
8436
- 'JobList',
8437
- 'OrderList',
8438
- 'PaymentMethodList',
8439
- 'ProductList',
8440
- 'ProductVariantList',
8441
- 'PromotionList',
8442
- 'RoleList',
8443
- 'ShippingMethodList',
8444
- 'TagList',
8445
- 'TaxRateList',
8373
+ "CreatePromotionResult": [
8374
+ "MissingConditionsError",
8375
+ "Promotion"
8446
8376
  ],
8447
- RefundOrderResult: [
8448
- 'AlreadyRefundedError',
8449
- 'MultipleOrderError',
8450
- 'NothingToRefundError',
8451
- 'OrderStateTransitionError',
8452
- 'PaymentOrderMismatchError',
8453
- 'QuantityTooGreatError',
8454
- 'Refund',
8455
- 'RefundOrderStateError',
8456
- 'RefundStateTransitionError',
8377
+ "CustomField": [
8378
+ "BooleanCustomFieldConfig",
8379
+ "DateTimeCustomFieldConfig",
8380
+ "FloatCustomFieldConfig",
8381
+ "IntCustomFieldConfig",
8382
+ "LocaleStringCustomFieldConfig",
8383
+ "RelationCustomFieldConfig",
8384
+ "StringCustomFieldConfig",
8385
+ "TextCustomFieldConfig"
8457
8386
  ],
8458
- RemoveOptionGroupFromProductResult: ['Product', 'ProductOptionInUseError'],
8459
- SearchResultPrice: ['PriceRange', 'SinglePrice'],
8460
- SettlePaymentResult: [
8461
- 'OrderStateTransitionError',
8462
- 'Payment',
8463
- 'PaymentStateTransitionError',
8464
- 'SettlePaymentError',
8387
+ "CustomFieldConfig": [
8388
+ "BooleanCustomFieldConfig",
8389
+ "DateTimeCustomFieldConfig",
8390
+ "FloatCustomFieldConfig",
8391
+ "IntCustomFieldConfig",
8392
+ "LocaleStringCustomFieldConfig",
8393
+ "RelationCustomFieldConfig",
8394
+ "StringCustomFieldConfig",
8395
+ "TextCustomFieldConfig"
8465
8396
  ],
8466
- SettleRefundResult: ['Refund', 'RefundStateTransitionError'],
8467
- StockMovement: ['Allocation', 'Cancellation', 'Release', 'Return', 'Sale', 'StockAdjustment'],
8468
- StockMovementItem: ['Allocation', 'Cancellation', 'Release', 'Return', 'Sale', 'StockAdjustment'],
8469
- TransitionFulfillmentToStateResult: ['Fulfillment', 'FulfillmentStateTransitionError'],
8470
- TransitionOrderToStateResult: ['Order', 'OrderStateTransitionError'],
8471
- TransitionPaymentToStateResult: ['Payment', 'PaymentStateTransitionError'],
8472
- UpdateChannelResult: ['Channel', 'LanguageNotAvailableError'],
8473
- UpdateCustomerResult: ['Customer', 'EmailAddressConflictError'],
8474
- UpdateGlobalSettingsResult: ['ChannelDefaultLanguageError', 'GlobalSettings'],
8475
- UpdatePromotionResult: ['MissingConditionsError', 'Promotion'],
8476
- },
8397
+ "ErrorResult": [
8398
+ "AlreadyRefundedError",
8399
+ "CancelActiveOrderError",
8400
+ "ChannelDefaultLanguageError",
8401
+ "CouponCodeExpiredError",
8402
+ "CouponCodeInvalidError",
8403
+ "CouponCodeLimitError",
8404
+ "CreateFulfillmentError",
8405
+ "EmailAddressConflictError",
8406
+ "EmptyOrderLineSelectionError",
8407
+ "FulfillmentStateTransitionError",
8408
+ "InsufficientStockError",
8409
+ "InsufficientStockOnHandError",
8410
+ "InvalidCredentialsError",
8411
+ "InvalidFulfillmentHandlerError",
8412
+ "ItemsAlreadyFulfilledError",
8413
+ "LanguageNotAvailableError",
8414
+ "ManualPaymentStateError",
8415
+ "MimeTypeError",
8416
+ "MissingConditionsError",
8417
+ "MultipleOrderError",
8418
+ "NativeAuthStrategyError",
8419
+ "NegativeQuantityError",
8420
+ "NoChangesSpecifiedError",
8421
+ "NothingToRefundError",
8422
+ "OrderLimitError",
8423
+ "OrderModificationStateError",
8424
+ "OrderStateTransitionError",
8425
+ "PaymentMethodMissingError",
8426
+ "PaymentOrderMismatchError",
8427
+ "PaymentStateTransitionError",
8428
+ "ProductOptionInUseError",
8429
+ "QuantityTooGreatError",
8430
+ "RefundOrderStateError",
8431
+ "RefundPaymentIdMissingError",
8432
+ "RefundStateTransitionError",
8433
+ "SettlePaymentError"
8434
+ ],
8435
+ "ModifyOrderResult": [
8436
+ "CouponCodeExpiredError",
8437
+ "CouponCodeInvalidError",
8438
+ "CouponCodeLimitError",
8439
+ "InsufficientStockError",
8440
+ "NegativeQuantityError",
8441
+ "NoChangesSpecifiedError",
8442
+ "Order",
8443
+ "OrderLimitError",
8444
+ "OrderModificationStateError",
8445
+ "PaymentMethodMissingError",
8446
+ "RefundPaymentIdMissingError"
8447
+ ],
8448
+ "NativeAuthenticationResult": [
8449
+ "CurrentUser",
8450
+ "InvalidCredentialsError",
8451
+ "NativeAuthStrategyError"
8452
+ ],
8453
+ "Node": [
8454
+ "Address",
8455
+ "Administrator",
8456
+ "Allocation",
8457
+ "Asset",
8458
+ "AuthenticationMethod",
8459
+ "Cancellation",
8460
+ "Channel",
8461
+ "Collection",
8462
+ "Country",
8463
+ "Customer",
8464
+ "CustomerGroup",
8465
+ "Facet",
8466
+ "FacetValue",
8467
+ "Fulfillment",
8468
+ "HistoryEntry",
8469
+ "Job",
8470
+ "Order",
8471
+ "OrderItem",
8472
+ "OrderLine",
8473
+ "OrderModification",
8474
+ "Payment",
8475
+ "PaymentMethod",
8476
+ "Product",
8477
+ "ProductOption",
8478
+ "ProductOptionGroup",
8479
+ "ProductVariant",
8480
+ "Promotion",
8481
+ "Refund",
8482
+ "Release",
8483
+ "Return",
8484
+ "Role",
8485
+ "Sale",
8486
+ "ShippingMethod",
8487
+ "StockAdjustment",
8488
+ "Surcharge",
8489
+ "Tag",
8490
+ "TaxCategory",
8491
+ "TaxRate",
8492
+ "User",
8493
+ "Zone"
8494
+ ],
8495
+ "PaginatedList": [
8496
+ "AdministratorList",
8497
+ "AssetList",
8498
+ "CollectionList",
8499
+ "CountryList",
8500
+ "CustomerGroupList",
8501
+ "CustomerList",
8502
+ "FacetList",
8503
+ "HistoryEntryList",
8504
+ "JobList",
8505
+ "OrderList",
8506
+ "PaymentMethodList",
8507
+ "ProductList",
8508
+ "ProductVariantList",
8509
+ "PromotionList",
8510
+ "RoleList",
8511
+ "ShippingMethodList",
8512
+ "TagList",
8513
+ "TaxRateList"
8514
+ ],
8515
+ "RefundOrderResult": [
8516
+ "AlreadyRefundedError",
8517
+ "MultipleOrderError",
8518
+ "NothingToRefundError",
8519
+ "OrderStateTransitionError",
8520
+ "PaymentOrderMismatchError",
8521
+ "QuantityTooGreatError",
8522
+ "Refund",
8523
+ "RefundOrderStateError",
8524
+ "RefundStateTransitionError"
8525
+ ],
8526
+ "RemoveOptionGroupFromProductResult": [
8527
+ "Product",
8528
+ "ProductOptionInUseError"
8529
+ ],
8530
+ "SearchResultPrice": [
8531
+ "PriceRange",
8532
+ "SinglePrice"
8533
+ ],
8534
+ "SettlePaymentResult": [
8535
+ "OrderStateTransitionError",
8536
+ "Payment",
8537
+ "PaymentStateTransitionError",
8538
+ "SettlePaymentError"
8539
+ ],
8540
+ "SettleRefundResult": [
8541
+ "Refund",
8542
+ "RefundStateTransitionError"
8543
+ ],
8544
+ "StockMovement": [
8545
+ "Allocation",
8546
+ "Cancellation",
8547
+ "Release",
8548
+ "Return",
8549
+ "Sale",
8550
+ "StockAdjustment"
8551
+ ],
8552
+ "StockMovementItem": [
8553
+ "Allocation",
8554
+ "Cancellation",
8555
+ "Release",
8556
+ "Return",
8557
+ "Sale",
8558
+ "StockAdjustment"
8559
+ ],
8560
+ "TransitionFulfillmentToStateResult": [
8561
+ "Fulfillment",
8562
+ "FulfillmentStateTransitionError"
8563
+ ],
8564
+ "TransitionOrderToStateResult": [
8565
+ "Order",
8566
+ "OrderStateTransitionError"
8567
+ ],
8568
+ "TransitionPaymentToStateResult": [
8569
+ "Payment",
8570
+ "PaymentStateTransitionError"
8571
+ ],
8572
+ "UpdateChannelResult": [
8573
+ "Channel",
8574
+ "LanguageNotAvailableError"
8575
+ ],
8576
+ "UpdateCustomerResult": [
8577
+ "Customer",
8578
+ "EmailAddressConflictError"
8579
+ ],
8580
+ "UpdateGlobalSettingsResult": [
8581
+ "ChannelDefaultLanguageError",
8582
+ "GlobalSettings"
8583
+ ],
8584
+ "UpdatePromotionResult": [
8585
+ "MissingConditionsError",
8586
+ "Promotion"
8587
+ ]
8588
+ }
8477
8589
  };
8478
8590
 
8479
8591
  // Allows the introspectionResult to be imported as a named symbol
@@ -10048,7 +10160,7 @@ DatetimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
10048
10160
  useExisting: DatetimePickerComponent,
10049
10161
  multi: true,
10050
10162
  },
10051
- ], viewQueries: [{ propertyName: "dropdownComponent", first: true, predicate: ["dropdownComponent"], descendants: true, static: true }, { propertyName: "datetimeInput", first: true, predicate: ["datetimeInput"], descendants: true, static: true }, { propertyName: "calendarTable", first: true, predicate: ["calendarTable"], descendants: true }], ngImport: i0, template: "<div class=\"input-wrapper\">\r\n <input\r\n readonly\r\n [ngModel]=\"selected$ | async | localeDate: 'medium'\"\r\n class=\"selected-datetime\"\r\n (keydown.enter)=\"dropdownComponent.toggleOpen()\"\r\n (keydown.space)=\"dropdownComponent.toggleOpen()\"\r\n #datetimeInput\r\n />\r\n <button class=\"clear-value-button btn\" [class.visible]=\"!disabled && !readonly && (selected$ | async)\" (click)=\"clearValue()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n</div>\r\n<vdr-dropdown #dropdownComponent>\r\n <button class=\"btn btn-outline calendar-button\" vdrDropdownTrigger [disabled]=\"readonly || disabled\">\r\n <clr-icon shape=\"calendar\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"datetime-picker\" *ngIf=\"current$ | async as currentView\" (keydown.escape)=\"closeDatepicker()\">\r\n <div class=\"controls\">\r\n <div class=\"selects\">\r\n <div class=\"month-select\">\r\n <select\r\n clrSelect\r\n name=\"month\"\r\n [ngModel]=\"currentView.month\"\r\n (change)=\"setMonth($event)\"\r\n >\r\n <option [value]=\"1\">{{ 'datetime.month-jan' | translate }}</option>\r\n <option [value]=\"2\">{{ 'datetime.month-feb' | translate }}</option>\r\n <option [value]=\"3\">{{ 'datetime.month-mar' | translate }}</option>\r\n <option [value]=\"4\">{{ 'datetime.month-apr' | translate }}</option>\r\n <option [value]=\"5\">{{ 'datetime.month-may' | translate }}</option>\r\n <option [value]=\"6\">{{ 'datetime.month-jun' | translate }}</option>\r\n <option [value]=\"7\">{{ 'datetime.month-jul' | translate }}</option>\r\n <option [value]=\"8\">{{ 'datetime.month-aug' | translate }}</option>\r\n <option [value]=\"9\">{{ 'datetime.month-sep' | translate }}</option>\r\n <option [value]=\"10\">{{ 'datetime.month-oct' | translate }}</option>\r\n <option [value]=\"11\">{{ 'datetime.month-nov' | translate }}</option>\r\n <option [value]=\"12\">{{ 'datetime.month-dec' | translate }}</option>\r\n </select>\r\n </div>\r\n <div class=\"year-select\">\r\n <select\r\n clrSelect\r\n name=\"month\"\r\n [ngModel]=\"currentView.year\"\r\n (change)=\"setYear($event)\"\r\n >\r\n <option *ngFor=\"let year of years\" [value]=\"year\">{{ year }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"control-buttons\">\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"prevMonth()\"\r\n [title]=\"'common.view-previous-month' | translate\"\r\n >\r\n <clr-icon shape=\"caret\" dir=\"left\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"selectToday()\" [title]=\"'common.select-today' | translate\">\r\n <clr-icon shape=\"event\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"nextMonth()\"\r\n [title]=\"'common.view-next-month' | translate\"\r\n >\r\n <clr-icon shape=\"caret\" dir=\"right\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <table class=\"calendar-table\" #calendarTable tabindex=\"0\" (keydown)=\"handleCalendarKeydown($event)\">\r\n <thead>\r\n <tr>\r\n <td *ngFor=\"let weekdayName of weekdays\">\r\n {{ weekdayName | translate }}\r\n </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let week of calendarView$ | async\">\r\n <td\r\n *ngFor=\"let day of week\"\r\n class=\"day-cell\"\r\n [class.selected]=\"day.selected\"\r\n [class.today]=\"day.isToday\"\r\n [class.viewing]=\"day.isViewing\"\r\n [class.current-month]=\"day.inCurrentMonth\"\r\n [class.disabled]=\"day.disabled\"\r\n (keydown.enter)=\"selectDay(day)\"\r\n (click)=\"selectDay(day)\"\r\n >\r\n {{ day.dayOfMonth }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"time-picker\">\r\n <span class=\"flex-spacer\"> {{ 'datetime.time' | translate }}: </span>\r\n <select clrSelect name=\"hour\" [ngModel]=\"selectedHours$ | async\" (change)=\"setHour($event)\">\r\n <option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour | number: '2.0-0' }}</option>\r\n </select>\r\n <span>:</span>\r\n <select\r\n clrSelect\r\n name=\"hour\"\r\n [ngModel]=\"selectedMinutes$ | async\"\r\n (change)=\"setMinute($event)\"\r\n >\r\n <option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{\r\n minute | number: '2.0-0'\r\n }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:flex;width:100%}.input-wrapper{flex:1;display:flex}input.selected-datetime{flex:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:none!important}.clear-value-button{margin:0;border-radius:0;border-left:none;border-color:var(--color-component-border-200);background-color:#fff;color:var(--color-grey-500);display:none}.clear-value-button.visible{display:block}.calendar-button{margin:0;border-top-left-radius:0;border-bottom-left-radius:0}.datetime-picker{margin:0 12px}table.calendar-table{padding:6px}table.calendar-table:focus{outline:1px solid var(--color-primary-500);box-shadow:0 0 1px 2px var(--color-primary-100)}table.calendar-table td{width:24px;text-align:center;border:1px solid transparent;-webkit-user-select:none;user-select:none}table.calendar-table .day-cell{background-color:var(--color-component-bg-200);color:var(--color-grey-500);cursor:pointer;transition:background-color .1s}table.calendar-table .day-cell.current-month{background-color:#fff;color:var(--color-grey-800)}table.calendar-table .day-cell.selected{background-color:var(--color-primary-500);color:#fff}table.calendar-table .day-cell.viewing:not(.selected){background-color:var(--color-primary-200)}table.calendar-table .day-cell.today{border:1px solid var(--color-component-border-300)}table.calendar-table .day-cell:hover:not(.selected):not(.disabled){background-color:var(--color-primary-100)}table.calendar-table .day-cell.disabled{cursor:default;color:var(--color-grey-300)}.selects{display:flex;justify-content:space-between;margin-bottom:12px}.control-buttons{display:flex}.time-picker{display:flex;align-items:baseline;margin-top:12px}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }], pipes: { "localeDate": LocaleDatePipe, "async": i3.AsyncPipe, "translate": i4.TranslatePipe, "number": i3.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10163
+ ], viewQueries: [{ propertyName: "dropdownComponent", first: true, predicate: ["dropdownComponent"], descendants: true, static: true }, { propertyName: "datetimeInput", first: true, predicate: ["datetimeInput"], descendants: true, static: true }, { propertyName: "calendarTable", first: true, predicate: ["calendarTable"], descendants: true }], ngImport: i0, template: "<div class=\"input-wrapper\">\r\n <input\r\n readonly\r\n [ngModel]=\"selected$ | async | localeDate: 'medium'\"\r\n class=\"selected-datetime\"\r\n (keydown.enter)=\"dropdownComponent.toggleOpen()\"\r\n (keydown.space)=\"dropdownComponent.toggleOpen()\"\r\n #datetimeInput\r\n />\r\n <button class=\"clear-value-button btn\" [class.visible]=\"!disabled && !readonly && (selected$ | async)\" (click)=\"clearValue()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n</div>\r\n<vdr-dropdown #dropdownComponent>\r\n <button class=\"btn btn-outline calendar-button\" vdrDropdownTrigger [disabled]=\"readonly || disabled\">\r\n <clr-icon shape=\"calendar\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"datetime-picker\" *ngIf=\"current$ | async as currentView\" (keydown.escape)=\"closeDatepicker()\">\r\n <div class=\"controls\">\r\n <div class=\"selects\">\r\n <div class=\"month-select\">\r\n <select\r\n clrSelect\r\n name=\"month\"\r\n [ngModel]=\"currentView.month\"\r\n (change)=\"setMonth($event)\"\r\n >\r\n <option [value]=\"1\">{{ 'datetime.month-jan' | translate }}</option>\r\n <option [value]=\"2\">{{ 'datetime.month-feb' | translate }}</option>\r\n <option [value]=\"3\">{{ 'datetime.month-mar' | translate }}</option>\r\n <option [value]=\"4\">{{ 'datetime.month-apr' | translate }}</option>\r\n <option [value]=\"5\">{{ 'datetime.month-may' | translate }}</option>\r\n <option [value]=\"6\">{{ 'datetime.month-jun' | translate }}</option>\r\n <option [value]=\"7\">{{ 'datetime.month-jul' | translate }}</option>\r\n <option [value]=\"8\">{{ 'datetime.month-aug' | translate }}</option>\r\n <option [value]=\"9\">{{ 'datetime.month-sep' | translate }}</option>\r\n <option [value]=\"10\">{{ 'datetime.month-oct' | translate }}</option>\r\n <option [value]=\"11\">{{ 'datetime.month-nov' | translate }}</option>\r\n <option [value]=\"12\">{{ 'datetime.month-dec' | translate }}</option>\r\n </select>\r\n </div>\r\n <div class=\"year-select\">\r\n <select\r\n clrSelect\r\n name=\"month\"\r\n [ngModel]=\"currentView.year\"\r\n (change)=\"setYear($event)\"\r\n >\r\n <option *ngFor=\"let year of years\" [value]=\"year\">{{ year }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"control-buttons\">\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"prevMonth()\"\r\n [title]=\"'common.view-previous-month' | translate\"\r\n >\r\n <clr-icon shape=\"caret\" dir=\"left\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"selectToday()\" [title]=\"'common.select-today' | translate\">\r\n <clr-icon shape=\"event\"></clr-icon>\r\n </button>\r\n <button\r\n class=\"btn btn-link btn-sm\"\r\n (click)=\"nextMonth()\"\r\n [title]=\"'common.view-next-month' | translate\"\r\n >\r\n <clr-icon shape=\"caret\" dir=\"right\"></clr-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <table class=\"calendar-table\" #calendarTable tabindex=\"0\" (keydown)=\"handleCalendarKeydown($event)\">\r\n <thead>\r\n <tr>\r\n <td *ngFor=\"let weekdayName of weekdays\">\r\n {{ weekdayName | translate }}\r\n </td>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let week of calendarView$ | async\">\r\n <td\r\n *ngFor=\"let day of week\"\r\n class=\"day-cell\"\r\n [class.selected]=\"day.selected\"\r\n [class.today]=\"day.isToday\"\r\n [class.viewing]=\"day.isViewing\"\r\n [class.current-month]=\"day.inCurrentMonth\"\r\n [class.disabled]=\"day.disabled\"\r\n (keydown.enter)=\"selectDay(day)\"\r\n (click)=\"selectDay(day)\"\r\n >\r\n {{ day.dayOfMonth }}\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div class=\"time-picker\">\r\n <span class=\"flex-spacer\"> {{ 'datetime.time' | translate }}: </span>\r\n <select clrSelect name=\"hour\" [ngModel]=\"selectedHours$ | async\" (change)=\"setHour($event)\">\r\n <option *ngFor=\"let hour of hours\" [value]=\"hour\">{{ hour | number: '2.0-0' }}</option>\r\n </select>\r\n <span>:</span>\r\n <select\r\n clrSelect\r\n name=\"hour\"\r\n [ngModel]=\"selectedMinutes$ | async\"\r\n (change)=\"setMinute($event)\"\r\n >\r\n <option *ngFor=\"let minute of minutes\" [value]=\"minute\">{{\r\n minute | number: '2.0-0'\r\n }}</option>\r\n </select>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [":host{display:flex;width:100%}.input-wrapper{flex:1;display:flex}input.selected-datetime{flex:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:none!important}.clear-value-button{margin:0;border-radius:0;border-left:none;border-color:var(--color-component-border-200);background-color:#fff;color:var(--color-grey-500);display:none}.clear-value-button.visible{display:block}.calendar-button{margin:0;border-top-left-radius:0;border-bottom-left-radius:0}.datetime-picker{margin:0 12px}table.calendar-table{padding:6px}table.calendar-table:focus{outline:1px solid var(--color-primary-500);box-shadow:0 0 1px 2px var(--color-primary-100)}table.calendar-table td{width:24px;text-align:center;border:1px solid transparent;-webkit-user-select:none;user-select:none}table.calendar-table .day-cell{background-color:var(--color-component-bg-200);color:var(--color-grey-500);cursor:pointer;transition:background-color .1s}table.calendar-table .day-cell.current-month{background-color:#fff;color:var(--color-grey-800)}table.calendar-table .day-cell.selected{background-color:var(--color-primary-500);color:#fff}table.calendar-table .day-cell.viewing:not(.selected){background-color:var(--color-primary-200)}table.calendar-table .day-cell.today{border:1px solid var(--color-component-border-300)}table.calendar-table .day-cell:hover:not(.selected):not(.disabled){background-color:var(--color-primary-100)}table.calendar-table .day-cell.disabled{cursor:default;color:var(--color-grey-300)}.selects{display:flex;justify-content:space-between;margin-bottom:12px}.control-buttons{display:flex}.time-picker{display:flex;align-items:baseline;margin-top:12px}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }], pipes: { "localeDate": LocaleDatePipe, "async": i3.AsyncPipe, "translate": i7.TranslatePipe, "number": i3.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10052
10164
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DatetimePickerComponent, decorators: [{
10053
10165
  type: Component,
10054
10166
  args: [{ selector: 'vdr-datetime-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -10409,7 +10521,7 @@ class ProductVariantSelectorComponent {
10409
10521
  }
10410
10522
  }
10411
10523
  ProductVariantSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductVariantSelectorComponent, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Component });
10412
- ProductVariantSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductVariantSelectorComponent, selector: "vdr-product-variant-selector", outputs: { productSelected: "productSelected" }, viewQueries: [{ propertyName: "ngSelect", first: true, predicate: ["autoComplete"], descendants: true, static: true }], ngImport: i0, template: "<ng-select\r\n #autoComplete\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [multiple]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n [appendTo]=\"'body'\"\r\n [placeholder]=\"'settings.search-by-product-name-or-sku' | translate\"\r\n (change)=\"selectResult($event)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img [src]=\"item.productAsset | assetPreview: 32\">\r\n {{ item.productVariantName }}\r\n <small class=\"sku\">{{ item.sku }}</small>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [":host{display:block}.sku{margin-left:12px;color:var(--color-grey-500)}\n"], components: [{ type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10524
+ ProductVariantSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductVariantSelectorComponent, selector: "vdr-product-variant-selector", outputs: { productSelected: "productSelected" }, viewQueries: [{ propertyName: "ngSelect", first: true, predicate: ["autoComplete"], descendants: true, static: true }], ngImport: i0, template: "<ng-select\r\n #autoComplete\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [multiple]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n [appendTo]=\"'body'\"\r\n [placeholder]=\"'settings.search-by-product-name-or-sku' | translate\"\r\n (change)=\"selectResult($event)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img [src]=\"item.productAsset | assetPreview: 32\">\r\n {{ item.productVariantName }}\r\n <small class=\"sku\">{{ item.sku }}</small>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [":host{display:block}.sku{margin-left:12px;color:var(--color-grey-500)}\n"], components: [{ type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10413
10525
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductVariantSelectorComponent, decorators: [{
10414
10526
  type: Component,
10415
10527
  args: [{ selector: 'vdr-product-variant-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-select\r\n #autoComplete\r\n [items]=\"searchResults$ | async\"\r\n [addTag]=\"false\"\r\n [multiple]=\"false\"\r\n [hideSelected]=\"true\"\r\n [loading]=\"searchLoading\"\r\n [typeahead]=\"searchInput$\"\r\n [appendTo]=\"'body'\"\r\n [placeholder]=\"'settings.search-by-product-name-or-sku' | translate\"\r\n (change)=\"selectResult($event)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img [src]=\"item.productAsset | assetPreview: 32\">\r\n {{ item.productVariantName }}\r\n <small class=\"sku\">{{ item.sku }}</small>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [":host{display:block}.sku{margin-left:12px;color:var(--color-grey-500)}\n"] }]
@@ -10464,7 +10576,7 @@ class ProductSelectorFormInputComponent {
10464
10576
  }
10465
10577
  ProductSelectorFormInputComponent.id = 'product-selector-form-input';
10466
10578
  ProductSelectorFormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductSelectorFormInputComponent, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Component });
10467
- ProductSelectorFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductSelectorFormInputComponent, selector: "vdr-product-selector-form-input", ngImport: i0, template: "<ul class=\"list-unstyled\">\r\n <li *ngFor=\"let variant of selection$ | async\" class=\"variant\">\r\n <div class=\"thumb\">\r\n <img [src]=\"variant.product.featuredAsset | assetPreview: 32\" />\r\n </div>\r\n <div class=\"detail\">\r\n <div>{{ variant.name }}</div>\r\n <div class=\"sku\">{{ variant.sku }}</div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <button\r\n class=\"btn btn-link btn-sm btn-warning\"\r\n (click)=\"removeProductVariant(variant.id)\"\r\n [title]=\"'common.remove-item-from-list' | translate\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n<vdr-product-variant-selector (productSelected)=\"addProductVariant($event)\"></vdr-product-variant-selector>\r\n", styles: [".variant{margin-bottom:6px;display:flex;align-items:center;transition:background-color .2s}.variant:hover{background-color:var(--color-component-bg-200)}.thumb{margin-right:6px}.sku{color:var(--color-grey-400);font-size:smaller;line-height:1em}\n"], components: [{ type: ProductVariantSelectorComponent, selector: "vdr-product-variant-selector", outputs: ["productSelected"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "assetPreview": AssetPreviewPipe, "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10579
+ ProductSelectorFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductSelectorFormInputComponent, selector: "vdr-product-selector-form-input", ngImport: i0, template: "<ul class=\"list-unstyled\">\r\n <li *ngFor=\"let variant of selection$ | async\" class=\"variant\">\r\n <div class=\"thumb\">\r\n <img [src]=\"variant.product.featuredAsset | assetPreview: 32\" />\r\n </div>\r\n <div class=\"detail\">\r\n <div>{{ variant.name }}</div>\r\n <div class=\"sku\">{{ variant.sku }}</div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <button\r\n class=\"btn btn-link btn-sm btn-warning\"\r\n (click)=\"removeProductVariant(variant.id)\"\r\n [title]=\"'common.remove-item-from-list' | translate\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n<vdr-product-variant-selector (productSelected)=\"addProductVariant($event)\"></vdr-product-variant-selector>\r\n", styles: [".variant{margin-bottom:6px;display:flex;align-items:center;transition:background-color .2s}.variant:hover{background-color:var(--color-component-bg-200)}.thumb{margin-right:6px}.sku{color:var(--color-grey-400);font-size:smaller;line-height:1em}\n"], components: [{ type: ProductVariantSelectorComponent, selector: "vdr-product-variant-selector", outputs: ["productSelected"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "assetPreview": AssetPreviewPipe, "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10468
10580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductSelectorFormInputComponent, decorators: [{
10469
10581
  type: Component,
10470
10582
  args: [{ selector: 'vdr-product-selector-form-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"list-unstyled\">\r\n <li *ngFor=\"let variant of selection$ | async\" class=\"variant\">\r\n <div class=\"thumb\">\r\n <img [src]=\"variant.product.featuredAsset | assetPreview: 32\" />\r\n </div>\r\n <div class=\"detail\">\r\n <div>{{ variant.name }}</div>\r\n <div class=\"sku\">{{ variant.sku }}</div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <button\r\n class=\"btn btn-link btn-sm btn-warning\"\r\n (click)=\"removeProductVariant(variant.id)\"\r\n [title]=\"'common.remove-item-from-list' | translate\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n<vdr-product-variant-selector (productSelected)=\"addProductVariant($event)\"></vdr-product-variant-selector>\r\n", styles: [".variant{margin-bottom:6px;display:flex;align-items:center;transition:background-color .2s}.variant:hover{background-color:var(--color-component-bg-200)}.thumb{margin-right:6px}.sku{color:var(--color-grey-400);font-size:smaller;line-height:1em}\n"] }]
@@ -10541,7 +10653,7 @@ class AssetFileInputComponent {
10541
10653
  }
10542
10654
  }
10543
10655
  AssetFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetFileInputComponent, deps: [{ token: ServerConfigService }], target: i0.ɵɵFactoryTarget.Component });
10544
- AssetFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: { dropZoneTarget: "dropZoneTarget", uploading: "uploading" }, outputs: { selectFiles: "selectFiles" }, host: { listeners: { "document:dragenter": "onDragEnter()", "document:dragleave": "onDragLeave($event)" } }, ngImport: i0, template: "<input type=\"file\" class=\"file-input\" #fileInput (change)=\"select($event)\" multiple [accept]=\"accept\" />\r\n<button class=\"btn btn-primary\" (click)=\"fileInput.click()\" [disabled]=\"uploading\">\r\n <ng-container *ngIf=\"uploading; else selectable\">\r\n <clr-spinner clrInline></clr-spinner>\r\n {{ 'asset.uploading' | translate }}\r\n </ng-container>\r\n <ng-template #selectable>\r\n <clr-icon shape=\"upload-cloud\"></clr-icon>\r\n {{ 'asset.upload-assets' | translate }}\r\n </ng-template>\r\n</button>\r\n<div\r\n class=\"drop-zone\"\r\n [ngStyle]=\"dropZoneStyle\"\r\n [class.visible]=\"dragging\"\r\n [class.dragging-over]=\"overDropZone\"\r\n (dragenter)=\"overDropZone = true\"\r\n (dragleave)=\"overDropZone = false\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n #dropZone\r\n>\r\n <div class=\"drop-label\" (dragenter)=\"overDropZone = true\">\r\n <clr-icon shape=\"upload-cloud\" size=\"32\"></clr-icon>\r\n {{ 'catalog.drop-files-to-upload' | translate }}\r\n </div>\r\n</div>\r\n", styles: [".file-input{display:none}.drop-zone{position:fixed;background-color:var(--color-primary-500);border:3px dashed var(--color-component-border-300);opacity:0;visibility:hidden;z-index:1000;transition:opacity .2s,background-color .2s,visibility 0s .2s;display:flex;align-items:center;justify-content:center}.drop-zone.visible{opacity:.3;visibility:visible;transition:opacity .2s,background-color .2s,border .2s,visibility 0s}.drop-zone .drop-label{background-color:#fffc;border-radius:3px;padding:24px;font-size:32px;pointer-events:none;opacity:.5;transition:opacity .2s}.drop-zone.dragging-over{border-color:#fff;background-color:var(--color-primary-500);opacity:.7;transition:background-color .2s,border .2s}.drop-zone.dragging-over .drop-label{opacity:1}\n"], components: [{ type: i1$3.ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10656
+ AssetFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: { dropZoneTarget: "dropZoneTarget", uploading: "uploading" }, outputs: { selectFiles: "selectFiles" }, host: { listeners: { "document:dragenter": "onDragEnter()", "document:dragleave": "onDragLeave($event)" } }, ngImport: i0, template: "<input type=\"file\" class=\"file-input\" #fileInput (change)=\"select($event)\" multiple [accept]=\"accept\" />\r\n<button class=\"btn btn-primary\" (click)=\"fileInput.click()\" [disabled]=\"uploading\">\r\n <ng-container *ngIf=\"uploading; else selectable\">\r\n <clr-spinner clrInline></clr-spinner>\r\n {{ 'asset.uploading' | translate }}\r\n </ng-container>\r\n <ng-template #selectable>\r\n <clr-icon shape=\"upload-cloud\"></clr-icon>\r\n {{ 'asset.upload-assets' | translate }}\r\n </ng-template>\r\n</button>\r\n<div\r\n class=\"drop-zone\"\r\n [ngStyle]=\"dropZoneStyle\"\r\n [class.visible]=\"dragging\"\r\n [class.dragging-over]=\"overDropZone\"\r\n (dragenter)=\"overDropZone = true\"\r\n (dragleave)=\"overDropZone = false\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n #dropZone\r\n>\r\n <div class=\"drop-label\" (dragenter)=\"overDropZone = true\">\r\n <clr-icon shape=\"upload-cloud\" size=\"32\"></clr-icon>\r\n {{ 'catalog.drop-files-to-upload' | translate }}\r\n </div>\r\n</div>\r\n", styles: [".file-input{display:none}.drop-zone{position:fixed;background-color:var(--color-primary-500);border:3px dashed var(--color-component-border-300);opacity:0;visibility:hidden;z-index:1000;transition:opacity .2s,background-color .2s,visibility 0s .2s;display:flex;align-items:center;justify-content:center}.drop-zone.visible{opacity:.3;visibility:visible;transition:opacity .2s,background-color .2s,border .2s,visibility 0s}.drop-zone .drop-label{background-color:#fffc;border-radius:3px;padding:24px;font-size:32px;pointer-events:none;opacity:.5;transition:opacity .2s}.drop-zone.dragging-over{border-color:#fff;background-color:var(--color-primary-500);opacity:.7;transition:background-color .2s,border .2s}.drop-zone.dragging-over .drop-label{opacity:1}\n"], components: [{ type: i1$3.ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10545
10657
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetFileInputComponent, decorators: [{
10546
10658
  type: Component,
10547
10659
  args: [{ selector: 'vdr-asset-file-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<input type=\"file\" class=\"file-input\" #fileInput (change)=\"select($event)\" multiple [accept]=\"accept\" />\r\n<button class=\"btn btn-primary\" (click)=\"fileInput.click()\" [disabled]=\"uploading\">\r\n <ng-container *ngIf=\"uploading; else selectable\">\r\n <clr-spinner clrInline></clr-spinner>\r\n {{ 'asset.uploading' | translate }}\r\n </ng-container>\r\n <ng-template #selectable>\r\n <clr-icon shape=\"upload-cloud\"></clr-icon>\r\n {{ 'asset.upload-assets' | translate }}\r\n </ng-template>\r\n</button>\r\n<div\r\n class=\"drop-zone\"\r\n [ngStyle]=\"dropZoneStyle\"\r\n [class.visible]=\"dragging\"\r\n [class.dragging-over]=\"overDropZone\"\r\n (dragenter)=\"overDropZone = true\"\r\n (dragleave)=\"overDropZone = false\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\"\r\n #dropZone\r\n>\r\n <div class=\"drop-label\" (dragenter)=\"overDropZone = true\">\r\n <clr-icon shape=\"upload-cloud\" size=\"32\"></clr-icon>\r\n {{ 'catalog.drop-files-to-upload' | translate }}\r\n </div>\r\n</div>\r\n", styles: [".file-input{display:none}.drop-zone{position:fixed;background-color:var(--color-primary-500);border:3px dashed var(--color-component-border-300);opacity:0;visibility:hidden;z-index:1000;transition:opacity .2s,background-color .2s,visibility 0s .2s;display:flex;align-items:center;justify-content:center}.drop-zone.visible{opacity:.3;visibility:visible;transition:opacity .2s,background-color .2s,border .2s,visibility 0s}.drop-zone .drop-label{background-color:#fffc;border-radius:3px;padding:24px;font-size:32px;pointer-events:none;opacity:.5;transition:opacity .2s}.drop-zone.dragging-over{border-color:#fff;background-color:var(--color-primary-500);opacity:.7;transition:background-color .2s,border .2s}.drop-zone.dragging-over .drop-label{opacity:1}\n"] }]
@@ -10691,7 +10803,7 @@ class AssetSearchInputComponent {
10691
10803
  }
10692
10804
  }
10693
10805
  AssetSearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetSearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10694
- AssetSearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: { tags: "tags" }, outputs: { searchTermChange: "searchTermChange", tagsChange: "tagsChange" }, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], ngImport: i0, template: "<ng-select\r\n [addTag]=\"addTagFn\"\r\n [placeholder]=\"'catalog.search-asset-name-or-tag' | translate\"\r\n [items]=\"tags\"\r\n [searchFn]=\"filterTagResults\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"true\"\r\n [markFirst]=\"false\"\r\n (change)=\"onSelectChange($event)\"\r\n #selectComponent\r\n>\r\n <ng-template ng-header-tmp>\r\n <div\r\n class=\"search-header\"\r\n *ngIf=\"selectComponent.searchTerm\"\r\n [class.selected]=\"isSearchHeaderSelected()\"\r\n (click)=\"selectComponent.selectTag()\"\r\n >\r\n {{ 'catalog.search-for-term' | translate }}: {{ selectComponent.searchTerm }}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\" icon=\"close\" (iconClick)=\"clear(item)\"><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ item.value }}</vdr-chip>\r\n </ng-container>\r\n <ng-container *ngIf=\"!item.value\">\r\n <vdr-chip [icon]=\"'times'\" (iconClick)=\"clear(item)\">\"{{ item.label || item }}\"</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\"><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ item.value }}</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [":host{display:block;width:100%}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background:none;margin:0}:host ::ng-deep .ng-dropdown-panel-items div.ng-option:last-child{display:none}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-header{border:none;padding:0}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding:0}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-left:8px}ng-select{width:100%;min-width:300px;margin-right:12px}.search-header{padding:8px 10px;border-bottom:1px solid var(--color-component-border-100);cursor:pointer}.search-header.selected,.search-header:hover{background-color:var(--color-component-bg-200)}\n"], components: [{ type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }], directives: [{ type: i2$1.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10806
+ AssetSearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: { tags: "tags" }, outputs: { searchTermChange: "searchTermChange", tagsChange: "tagsChange" }, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], viewQueries: [{ propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true, static: true }], ngImport: i0, template: "<ng-select\r\n [addTag]=\"addTagFn\"\r\n [placeholder]=\"'catalog.search-asset-name-or-tag' | translate\"\r\n [items]=\"tags\"\r\n [searchFn]=\"filterTagResults\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"true\"\r\n [markFirst]=\"false\"\r\n (change)=\"onSelectChange($event)\"\r\n #selectComponent\r\n>\r\n <ng-template ng-header-tmp>\r\n <div\r\n class=\"search-header\"\r\n *ngIf=\"selectComponent.searchTerm\"\r\n [class.selected]=\"isSearchHeaderSelected()\"\r\n (click)=\"selectComponent.selectTag()\"\r\n >\r\n {{ 'catalog.search-for-term' | translate }}: {{ selectComponent.searchTerm }}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\" icon=\"close\" (iconClick)=\"clear(item)\"><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ item.value }}</vdr-chip>\r\n </ng-container>\r\n <ng-container *ngIf=\"!item.value\">\r\n <vdr-chip [icon]=\"'times'\" (iconClick)=\"clear(item)\">\"{{ item.label || item }}\"</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\"><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ item.value }}</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [":host{display:block;width:100%}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background:none;margin:0}:host ::ng-deep .ng-dropdown-panel-items div.ng-option:last-child{display:none}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-header{border:none;padding:0}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding:0}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-left:8px}ng-select{width:100%;min-width:300px;margin-right:12px}.search-header{padding:8px 10px;border-bottom:1px solid var(--color-component-border-100);cursor:pointer}.search-header.selected,.search-header:hover{background-color:var(--color-component-bg-200)}\n"], components: [{ type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }], directives: [{ type: i2$1.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10695
10807
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetSearchInputComponent, decorators: [{
10696
10808
  type: Component,
10697
10809
  args: [{ selector: 'vdr-asset-search-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: SELECTION_MODEL_FACTORY, useValue: SingleSearchSelectionModelFactory }], template: "<ng-select\r\n [addTag]=\"addTagFn\"\r\n [placeholder]=\"'catalog.search-asset-name-or-tag' | translate\"\r\n [items]=\"tags\"\r\n [searchFn]=\"filterTagResults\"\r\n [hideSelected]=\"true\"\r\n [multiple]=\"true\"\r\n [markFirst]=\"false\"\r\n (change)=\"onSelectChange($event)\"\r\n #selectComponent\r\n>\r\n <ng-template ng-header-tmp>\r\n <div\r\n class=\"search-header\"\r\n *ngIf=\"selectComponent.searchTerm\"\r\n [class.selected]=\"isSearchHeaderSelected()\"\r\n (click)=\"selectComponent.selectTag()\"\r\n >\r\n {{ 'catalog.search-for-term' | translate }}: {{ selectComponent.searchTerm }}\r\n </div>\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\" icon=\"close\" (iconClick)=\"clear(item)\"><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ item.value }}</vdr-chip>\r\n </ng-container>\r\n <ng-container *ngIf=\"!item.value\">\r\n <vdr-chip [icon]=\"'times'\" (iconClick)=\"clear(item)\">\"{{ item.label || item }}\"</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n <ng-container *ngIf=\"item.value\">\r\n <vdr-chip [colorFrom]=\"item.value\"><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ item.value }}</vdr-chip>\r\n </ng-container>\r\n </ng-template>\r\n</ng-select>\r\n", styles: [":host{display:block;width:100%}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background:none;margin:0}:host ::ng-deep .ng-dropdown-panel-items div.ng-option:last-child{display:none}:host ::ng-deep .ng-dropdown-panel .ng-dropdown-header{border:none;padding:0}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding:0}:host ::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-left:8px}ng-select{width:100%;min-width:300px;margin-right:12px}.search-header{padding:8px 10px;border-bottom:1px solid var(--color-component-border-100);cursor:pointer}.search-header.selected,.search-header:hover{background-color:var(--color-component-bg-200)}\n"] }]
@@ -10750,7 +10862,7 @@ class ManageTagsDialogComponent {
10750
10862
  }
10751
10863
  }
10752
10864
  ManageTagsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ManageTagsDialogComponent, deps: [{ token: DataService }], target: i0.ɵɵFactoryTarget.Component });
10753
- ManageTagsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ManageTagsDialogComponent, selector: "vdr-manage-tags-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <span>{{ 'common.manage-tags' | translate }}</span>\r\n</ng-template>\r\n<p class=\"mt0 mb4\">{{ 'common.manage-tags-description' | translate }}</p>\r\n<ul class=\"tag-list\" *ngFor=\"let tag of allTags$ | async\">\r\n <li class=\"mb2 p1\" [class.to-delete]=\"markedAsDeleted(tag.id)\">\r\n <clr-icon shape=\"tag\" class=\"is-solid mr2\" [style.color]=\"tag.value | stringToColor\"></clr-icon>\r\n <input type=\"text\" (input)=\"updateTagValue(tag.id, $event.target.value)\" [value]=\"tag.value\" />\r\n <button class=\"icon-button\" (click)=\"toggleDelete(tag.id)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\" [class.is-solid]=\"markedAsDeleted(tag.id)\"></clr-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"resolveWith(false)\" class=\"btn btn-secondary\">\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"saveChanges()\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"!toUpdate.length && !toDelete.length\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".tag-list{list-style-type:none}.tag-list li{display:flex;align-items:center}.tag-list li input{max-width:170px}.tag-list li.to-delete{opacity:.7;background-color:var(--color-component-bg-300)}.tag-list li.to-delete input{background-color:transparent!important}\n"], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i4.TranslatePipe, "async": i3.AsyncPipe, "stringToColor": StringToColorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10865
+ ManageTagsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ManageTagsDialogComponent, selector: "vdr-manage-tags-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <span>{{ 'common.manage-tags' | translate }}</span>\r\n</ng-template>\r\n<p class=\"mt0 mb4\">{{ 'common.manage-tags-description' | translate }}</p>\r\n<ul class=\"tag-list\" *ngFor=\"let tag of allTags$ | async\">\r\n <li class=\"mb2 p1\" [class.to-delete]=\"markedAsDeleted(tag.id)\">\r\n <clr-icon shape=\"tag\" class=\"is-solid mr2\" [style.color]=\"tag.value | stringToColor\"></clr-icon>\r\n <input type=\"text\" (input)=\"updateTagValue(tag.id, $event.target.value)\" [value]=\"tag.value\" />\r\n <button class=\"icon-button\" (click)=\"toggleDelete(tag.id)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\" [class.is-solid]=\"markedAsDeleted(tag.id)\"></clr-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"resolveWith(false)\" class=\"btn btn-secondary\">\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"saveChanges()\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"!toUpdate.length && !toDelete.length\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".tag-list{list-style-type:none}.tag-list li{display:flex;align-items:center}.tag-list li input{max-width:170px}.tag-list li.to-delete{opacity:.7;background-color:var(--color-component-bg-300)}.tag-list li.to-delete input{background-color:transparent!important}\n"], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i7.TranslatePipe, "async": i3.AsyncPipe, "stringToColor": StringToColorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10754
10866
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ManageTagsDialogComponent, decorators: [{
10755
10867
  type: Component,
10756
10868
  args: [{ selector: 'vdr-manage-tags-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <span>{{ 'common.manage-tags' | translate }}</span>\r\n</ng-template>\r\n<p class=\"mt0 mb4\">{{ 'common.manage-tags-description' | translate }}</p>\r\n<ul class=\"tag-list\" *ngFor=\"let tag of allTags$ | async\">\r\n <li class=\"mb2 p1\" [class.to-delete]=\"markedAsDeleted(tag.id)\">\r\n <clr-icon shape=\"tag\" class=\"is-solid mr2\" [style.color]=\"tag.value | stringToColor\"></clr-icon>\r\n <input type=\"text\" (input)=\"updateTagValue(tag.id, $event.target.value)\" [value]=\"tag.value\" />\r\n <button class=\"icon-button\" (click)=\"toggleDelete(tag.id)\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\" [class.is-solid]=\"markedAsDeleted(tag.id)\"></clr-icon>\r\n </button>\r\n </li>\r\n</ul>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"resolveWith(false)\" class=\"btn btn-secondary\">\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"saveChanges()\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"!toUpdate.length && !toDelete.length\"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".tag-list{list-style-type:none}.tag-list li{display:flex;align-items:center}.tag-list li input{max-width:170px}.tag-list li.to-delete{opacity:.7;background-color:var(--color-component-bg-300)}.tag-list li.to-delete input{background-color:transparent!important}\n"] }]
@@ -10878,10 +10990,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
10878
10990
  class HelpTooltipComponent {
10879
10991
  }
10880
10992
  HelpTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HelpTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10881
- HelpTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: { content: "content", position: "position" }, ngImport: i0, template: "<clr-tooltip>\r\n <clr-icon clrTooltipTrigger shape=\"help\" size=\"14\"></clr-icon>\r\n <clr-tooltip-content [clrPosition]=\"position\" clrSize=\"md\" *clrIfOpen>\r\n <span>{{ content }}</span>\r\n </clr-tooltip-content>\r\n</clr-tooltip>\r\n", styles: [""], components: [{ type: i1$3.ClrTooltip, selector: "clr-tooltip" }, { type: i1$3.ClrTooltipContent, selector: "clr-tooltip-content", inputs: ["id", "clrPosition", "clrSize"] }], directives: [{ type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i1$3.ClrTooltipTrigger, selector: "[clrTooltipTrigger]" }, { type: i1$3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10993
+ HelpTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: { content: "content", position: "position" }, ngImport: i0, template: "<clr-tooltip>\r\n <clr-icon clrTooltipTrigger shape=\"help\" size=\"14\"></clr-icon>\r\n <clr-tooltip-content [clrPosition]=\"position\" clrSize=\"md\" *clrIfOpen>\r\n <span>{{ content }}</span>\r\n </clr-tooltip-content>\r\n</clr-tooltip>\r\n", styles: ["clr-tooltip{display:inline-flex}\n"], components: [{ type: i1$3.ClrTooltip, selector: "clr-tooltip" }, { type: i1$3.ClrTooltipContent, selector: "clr-tooltip-content", inputs: ["id", "clrPosition", "clrSize"] }], directives: [{ type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i1$3.ClrTooltipTrigger, selector: "[clrTooltipTrigger]" }, { type: i1$3.ClrIfOpen, selector: "[clrIfOpen]", inputs: ["clrIfOpen"], outputs: ["clrIfOpenChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10882
10994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HelpTooltipComponent, decorators: [{
10883
10995
  type: Component,
10884
- args: [{ selector: 'vdr-help-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<clr-tooltip>\r\n <clr-icon clrTooltipTrigger shape=\"help\" size=\"14\"></clr-icon>\r\n <clr-tooltip-content [clrPosition]=\"position\" clrSize=\"md\" *clrIfOpen>\r\n <span>{{ content }}</span>\r\n </clr-tooltip-content>\r\n</clr-tooltip>\r\n", styles: [""] }]
10996
+ args: [{ selector: 'vdr-help-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<clr-tooltip>\r\n <clr-icon clrTooltipTrigger shape=\"help\" size=\"14\"></clr-icon>\r\n <clr-tooltip-content [clrPosition]=\"position\" clrSize=\"md\" *clrIfOpen>\r\n <span>{{ content }}</span>\r\n </clr-tooltip-content>\r\n</clr-tooltip>\r\n", styles: ["clr-tooltip{display:inline-flex}\n"] }]
10885
10997
  }], propDecorators: { content: [{
10886
10998
  type: Input
10887
10999
  }], position: [{
@@ -10932,7 +11044,7 @@ class FormFieldComponent {
10932
11044
  }
10933
11045
  }
10934
11046
  FormFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10935
- FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FormFieldComponent, selector: "vdr-form-field", inputs: { label: "label", for: "for", tooltip: "tooltip", errors: "errors", readOnlyToggle: "readOnlyToggle" }, queries: [{ propertyName: "formFieldControl", first: true, predicate: FormFieldControlDirective, descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"form-group\"\r\n [class.no-label]=\"!label\"\r\n [class.clr-error]=\"formFieldControl?.formControlName?.invalid\"\r\n>\r\n <label *ngIf=\"label\" [for]=\"for\" class=\"clr-control-label\">\r\n {{ label }}\r\n <vdr-help-tooltip *ngIf=\"tooltip\" [content]=\"tooltip\"></vdr-help-tooltip>\r\n </label>\r\n <label\r\n [for]=\"for\"\r\n aria-haspopup=\"true\"\r\n role=\"tooltip\"\r\n [class.invalid]=\"formFieldControl?.touched && !formFieldControl?.valid\"\r\n class=\"tooltip tooltip-validation tooltip-sm tooltip-top-left\"\r\n >\r\n <div class=\"input-row\" [class.has-toggle]=\"readOnlyToggle\">\r\n <ng-content></ng-content>\r\n <button\r\n *ngIf=\"readOnlyToggle\"\r\n type=\"button\"\r\n [disabled]=\"!isReadOnly\"\r\n [title]=\"'common.edit-field' | translate\"\r\n class=\"btn btn-icon edit-button\"\r\n (click)=\"setReadOnly(false)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"clr-subtext\" *ngIf=\"getErrorMessage()\">{{ getErrorMessage() }}</div>\r\n <span class=\"tooltip-content\">{{ label }} is required.</span>\r\n </label>\r\n</div>\r\n", styles: [":host{display:block}:host .form-group>label:first-child{top:6px}:host .form-group>label:nth-of-type(2){flex:1;max-width:20rem}:host .form-group>label:nth-of-type(2) ::ng-deep>*:not(.tooltip-content){width:100%}:host .form-group .tooltip-validation{height:initial}:host .form-group.no-label{margin:-6px 0 0;padding:0;justify-content:center}:host .form-group.no-label>label{position:relative;justify-content:center}:host .form-group.no-label .input-row{justify-content:center}:host .input-row{display:flex}:host .input-row ::ng-deep input{flex:1}:host .input-row ::ng-deep input[disabled]{background-color:var(--color-component-bg-200)}:host .input-row button.edit-button{margin:0;border-radius:0 3px 3px 0}:host .input-row.has-toggle ::ng-deep input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:none}:host .input-row ::ng-deep clr-toggle-wrapper{margin-top:8px}.tooltip.tooltip-validation.invalid:before{position:absolute;content:\"\";height:.666667rem;width:.666667rem;top:.125rem;right:.25rem;background-image:url(data:image/svg+xml;charset=utf8,%3Csvg%20version%3D%221.1%22%20viewBox%3D%225%205%2026%2026%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cstyle%3E.clr-i-outline%7Bfill%3A%23a32100%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctitle%3Eexclamation-circle-line%3C%2Ftitle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22clr-i-outline%20clr-i-outline-path-1%22%20d%3D%22M18%2C6A12%2C12%2C0%2C1%2C0%2C30%2C18%2C12%2C12%2C0%2C0%2C0%2C18%2C6Zm0%2C22A10%2C10%2C0%2C1%2C1%2C28%2C18%2C10%2C10%2C0%2C0%2C1%2C18%2C28Z%22%3E%3C%2Fpath%3E%3Cpath%20class%3D%22clr-i-outline%20clr-i-outline-path-2%22%20d%3D%22M18%2C20.07a1.3%2C1.3%2C0%2C0%2C1-1.3-1.3v-6a1.3%2C1.3%2C0%2C1%2C1%2C2.6%2C0v6A1.3%2C1.3%2C0%2C0%2C1%2C18%2C20.07Z%22%3E%3C%2Fpath%3E%3Ccircle%20class%3D%22clr-i-outline%20clr-i-outline-path-3%22%20cx%3D%2217.95%22%20cy%3D%2223.02%22%20r%3D%221.5%22%3E%3C%2Fcircle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fsvg%3E);background-repeat:no-repeat;background-size:contain;vertical-align:middle;margin:0}.tooltip.tooltip-sm>.tooltip-content,.tooltip .tooltip-content.tooltip-sm{width:5rem}.tooltip:hover>.tooltip-content{right:12px;margin-bottom:0}.tooltip:not(.invalid):hover>.tooltip-content{display:none}\n"], components: [{ type: HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: ["content", "position"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe } });
11047
+ FormFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: FormFieldComponent, selector: "vdr-form-field", inputs: { label: "label", for: "for", tooltip: "tooltip", errors: "errors", readOnlyToggle: "readOnlyToggle" }, queries: [{ propertyName: "formFieldControl", first: true, predicate: FormFieldControlDirective, descendants: true, static: true }], ngImport: i0, template: "<div\r\n class=\"form-group\"\r\n [class.no-label]=\"!label\"\r\n [class.clr-error]=\"formFieldControl?.formControlName?.invalid\"\r\n>\r\n <label *ngIf=\"label\" [for]=\"for\" class=\"clr-control-label\">\r\n {{ label }}\r\n <vdr-help-tooltip *ngIf=\"tooltip\" [content]=\"tooltip\"></vdr-help-tooltip>\r\n </label>\r\n <label\r\n [for]=\"for\"\r\n aria-haspopup=\"true\"\r\n role=\"tooltip\"\r\n [class.invalid]=\"formFieldControl?.touched && !formFieldControl?.valid\"\r\n class=\"tooltip tooltip-validation tooltip-sm tooltip-top-left\"\r\n >\r\n <div class=\"input-row\" [class.has-toggle]=\"readOnlyToggle\">\r\n <ng-content></ng-content>\r\n <button\r\n *ngIf=\"readOnlyToggle\"\r\n type=\"button\"\r\n [disabled]=\"!isReadOnly\"\r\n [title]=\"'common.edit-field' | translate\"\r\n class=\"btn btn-icon edit-button\"\r\n (click)=\"setReadOnly(false)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"clr-subtext\" *ngIf=\"getErrorMessage()\">{{ getErrorMessage() }}</div>\r\n <span class=\"tooltip-content\">{{ label }} is required.</span>\r\n </label>\r\n</div>\r\n", styles: [":host{display:block}:host .form-group>label:first-child{top:6px}:host .form-group>label:nth-of-type(2){flex:1;max-width:20rem}:host .form-group>label:nth-of-type(2) ::ng-deep>*:not(.tooltip-content){width:100%}:host .form-group .tooltip-validation{height:initial}:host .form-group.no-label{margin:-6px 0 0;padding:0;justify-content:center}:host .form-group.no-label>label{position:relative;justify-content:center}:host .form-group.no-label .input-row{justify-content:center}:host .input-row{display:flex}:host .input-row ::ng-deep input{flex:1}:host .input-row ::ng-deep input[disabled]{background-color:var(--color-component-bg-200)}:host .input-row button.edit-button{margin:0;border-radius:0 3px 3px 0}:host .input-row.has-toggle ::ng-deep input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:none}:host .input-row ::ng-deep clr-toggle-wrapper{margin-top:8px}.tooltip.tooltip-validation.invalid:before{position:absolute;content:\"\";height:.666667rem;width:.666667rem;top:.125rem;right:.25rem;background-image:url(data:image/svg+xml;charset=utf8,%3Csvg%20version%3D%221.1%22%20viewBox%3D%225%205%2026%2026%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cstyle%3E.clr-i-outline%7Bfill%3A%23a32100%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctitle%3Eexclamation-circle-line%3C%2Ftitle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22clr-i-outline%20clr-i-outline-path-1%22%20d%3D%22M18%2C6A12%2C12%2C0%2C1%2C0%2C30%2C18%2C12%2C12%2C0%2C0%2C0%2C18%2C6Zm0%2C22A10%2C10%2C0%2C1%2C1%2C28%2C18%2C10%2C10%2C0%2C0%2C1%2C18%2C28Z%22%3E%3C%2Fpath%3E%3Cpath%20class%3D%22clr-i-outline%20clr-i-outline-path-2%22%20d%3D%22M18%2C20.07a1.3%2C1.3%2C0%2C0%2C1-1.3-1.3v-6a1.3%2C1.3%2C0%2C1%2C1%2C2.6%2C0v6A1.3%2C1.3%2C0%2C0%2C1%2C18%2C20.07Z%22%3E%3C%2Fpath%3E%3Ccircle%20class%3D%22clr-i-outline%20clr-i-outline-path-3%22%20cx%3D%2217.95%22%20cy%3D%2223.02%22%20r%3D%221.5%22%3E%3C%2Fcircle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fsvg%3E);background-repeat:no-repeat;background-size:contain;vertical-align:middle;margin:0}.tooltip.tooltip-sm>.tooltip-content,.tooltip .tooltip-content.tooltip-sm{width:5rem}.tooltip:hover>.tooltip-content{right:12px;margin-bottom:0}.tooltip:not(.invalid):hover>.tooltip-content{display:none}\n"], components: [{ type: HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: ["content", "position"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe } });
10936
11048
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: FormFieldComponent, decorators: [{
10937
11049
  type: Component,
10938
11050
  args: [{ selector: 'vdr-form-field', template: "<div\r\n class=\"form-group\"\r\n [class.no-label]=\"!label\"\r\n [class.clr-error]=\"formFieldControl?.formControlName?.invalid\"\r\n>\r\n <label *ngIf=\"label\" [for]=\"for\" class=\"clr-control-label\">\r\n {{ label }}\r\n <vdr-help-tooltip *ngIf=\"tooltip\" [content]=\"tooltip\"></vdr-help-tooltip>\r\n </label>\r\n <label\r\n [for]=\"for\"\r\n aria-haspopup=\"true\"\r\n role=\"tooltip\"\r\n [class.invalid]=\"formFieldControl?.touched && !formFieldControl?.valid\"\r\n class=\"tooltip tooltip-validation tooltip-sm tooltip-top-left\"\r\n >\r\n <div class=\"input-row\" [class.has-toggle]=\"readOnlyToggle\">\r\n <ng-content></ng-content>\r\n <button\r\n *ngIf=\"readOnlyToggle\"\r\n type=\"button\"\r\n [disabled]=\"!isReadOnly\"\r\n [title]=\"'common.edit-field' | translate\"\r\n class=\"btn btn-icon edit-button\"\r\n (click)=\"setReadOnly(false)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </div>\r\n <div class=\"clr-subtext\" *ngIf=\"getErrorMessage()\">{{ getErrorMessage() }}</div>\r\n <span class=\"tooltip-content\">{{ label }} is required.</span>\r\n </label>\r\n</div>\r\n", styles: [":host{display:block}:host .form-group>label:first-child{top:6px}:host .form-group>label:nth-of-type(2){flex:1;max-width:20rem}:host .form-group>label:nth-of-type(2) ::ng-deep>*:not(.tooltip-content){width:100%}:host .form-group .tooltip-validation{height:initial}:host .form-group.no-label{margin:-6px 0 0;padding:0;justify-content:center}:host .form-group.no-label>label{position:relative;justify-content:center}:host .form-group.no-label .input-row{justify-content:center}:host .input-row{display:flex}:host .input-row ::ng-deep input{flex:1}:host .input-row ::ng-deep input[disabled]{background-color:var(--color-component-bg-200)}:host .input-row button.edit-button{margin:0;border-radius:0 3px 3px 0}:host .input-row.has-toggle ::ng-deep input{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:none}:host .input-row ::ng-deep clr-toggle-wrapper{margin-top:8px}.tooltip.tooltip-validation.invalid:before{position:absolute;content:\"\";height:.666667rem;width:.666667rem;top:.125rem;right:.25rem;background-image:url(data:image/svg+xml;charset=utf8,%3Csvg%20version%3D%221.1%22%20viewBox%3D%225%205%2026%2026%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cdefs%3E%3Cstyle%3E.clr-i-outline%7Bfill%3A%23a32100%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ctitle%3Eexclamation-circle-line%3C%2Ftitle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cpath%20class%3D%22clr-i-outline%20clr-i-outline-path-1%22%20d%3D%22M18%2C6A12%2C12%2C0%2C1%2C0%2C30%2C18%2C12%2C12%2C0%2C0%2C0%2C18%2C6Zm0%2C22A10%2C10%2C0%2C1%2C1%2C28%2C18%2C10%2C10%2C0%2C0%2C1%2C18%2C28Z%22%3E%3C%2Fpath%3E%3Cpath%20class%3D%22clr-i-outline%20clr-i-outline-path-2%22%20d%3D%22M18%2C20.07a1.3%2C1.3%2C0%2C0%2C1-1.3-1.3v-6a1.3%2C1.3%2C0%2C1%2C1%2C2.6%2C0v6A1.3%2C1.3%2C0%2C0%2C1%2C18%2C20.07Z%22%3E%3C%2Fpath%3E%3Ccircle%20class%3D%22clr-i-outline%20clr-i-outline-path-3%22%20cx%3D%2217.95%22%20cy%3D%2223.02%22%20r%3D%221.5%22%3E%3C%2Fcircle%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fsvg%3E);background-repeat:no-repeat;background-size:contain;vertical-align:middle;margin:0}.tooltip.tooltip-sm>.tooltip-content,.tooltip .tooltip-content.tooltip-sm{width:5rem}.tooltip:hover>.tooltip-content{right:12px;margin-bottom:0}.tooltip:not(.invalid):hover>.tooltip-content{display:none}\n"] }]
@@ -11031,7 +11143,25 @@ function configurableOperationValueIsValid(def, value) {
11031
11143
  * Returns a default value based on the type of the config arg.
11032
11144
  */
11033
11145
  function getDefaultConfigArgValue(arg) {
11034
- return arg.list ? [] : arg.defaultValue ?? null;
11146
+ if (arg.list) {
11147
+ return [];
11148
+ }
11149
+ if (arg.defaultValue) {
11150
+ return arg.defaultValue;
11151
+ }
11152
+ const type = arg.type;
11153
+ switch (type) {
11154
+ case 'string':
11155
+ case 'datetime':
11156
+ case 'float':
11157
+ case 'ID':
11158
+ case 'int':
11159
+ return null;
11160
+ case 'boolean':
11161
+ return false;
11162
+ default:
11163
+ assertNever(type);
11164
+ }
11035
11165
  }
11036
11166
 
11037
11167
  /**
@@ -11261,7 +11391,7 @@ DynamicFormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
11261
11391
  useExisting: DynamicFormInputComponent,
11262
11392
  multi: true,
11263
11393
  },
11264
- ], viewQueries: [{ propertyName: "singleViewContainer", first: true, predicate: ["single"], descendants: true, read: ViewContainerRef }, { propertyName: "listItemContainers", predicate: ["listItem"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!renderAsList; else list\">\r\n <ng-container #single></ng-container>\r\n</ng-container>\r\n<ng-template #list>\r\n <div class=\"list-container\" cdkDropList (cdkDropListDropped)=\"moveListItem($event)\">\r\n <div class=\"list-item-row\" *ngFor=\"let item of listItems; trackBy: trackById\" cdkDrag [cdkDragData]=\"item\">\r\n <ng-container #listItem></ng-container>\r\n <button class=\"btn btn-link btn-sm btn-warning\" (click)=\"removeListItem(item)\" [title]=\"'common.remove-item-from-list' | translate\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"drag-handle\" cdkDragHandle *ngIf=\"!readonly\">\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addListItem()\">\r\n <clr-icon shape=\"plus\"></clr-icon> {{ 'common.add-item-to-list' | translate }}\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{flex:1}.list-container{border:1px solid var(--color-component-border-200);border-radius:3px;padding:12px}.list-item-row{font-size:13px;display:flex;align-items:center;margin:3px 0}.drag-placeholder{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{font-size:13px;background-color:var(--color-component-bg-100);opacity:.8;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:.1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .list-item-row:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11394
+ ], viewQueries: [{ propertyName: "singleViewContainer", first: true, predicate: ["single"], descendants: true, read: ViewContainerRef }, { propertyName: "listItemContainers", predicate: ["listItem"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!renderAsList; else list\">\r\n <ng-container #single></ng-container>\r\n</ng-container>\r\n<ng-template #list>\r\n <div class=\"list-container\" cdkDropList (cdkDropListDropped)=\"moveListItem($event)\">\r\n <div class=\"list-item-row\" *ngFor=\"let item of listItems; trackBy: trackById\" cdkDrag [cdkDragData]=\"item\">\r\n <ng-container #listItem></ng-container>\r\n <button class=\"btn btn-link btn-sm btn-warning\" (click)=\"removeListItem(item)\" [title]=\"'common.remove-item-from-list' | translate\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"drag-handle\" cdkDragHandle *ngIf=\"!readonly\">\r\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-secondary btn-sm\" (click)=\"addListItem()\">\r\n <clr-icon shape=\"plus\"></clr-icon> {{ 'common.add-item-to-list' | translate }}\r\n </button>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{flex:1}.list-container{border:1px solid var(--color-component-border-200);border-radius:3px;padding:12px}.list-item-row{font-size:13px;display:flex;align-items:center;margin:3px 0}.drag-placeholder{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{font-size:13px;background-color:var(--color-component-bg-100);opacity:.8;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:.1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .list-item-row:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i3$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3$1.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11265
11395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: DynamicFormInputComponent, decorators: [{
11266
11396
  type: Component,
11267
11397
  args: [{ selector: 'vdr-dynamic-form-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -11432,7 +11562,7 @@ class TabbedCustomFieldsComponent {
11432
11562
  }
11433
11563
  }
11434
11564
  TabbedCustomFieldsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TabbedCustomFieldsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11435
- TabbedCustomFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: { entityName: "entityName", customFields: "customFields", customFieldsFormGroup: "customFieldsFormGroup", readonly: "readonly", compact: "compact", showLabel: "showLabel" }, ngImport: i0, template: "<ng-container *ngIf=\"1 < tabbedCustomFields.length; else singleGroup\">\r\n <clr-tabs>\r\n <clr-tab *ngFor=\"let group of tabbedCustomFields\">\r\n <button clrTabLink>\r\n {{\r\n group.tabName === defaultTabName\r\n ? ('common.general' | translate)\r\n : (group.tabName | translate)\r\n }}\r\n </button>\r\n <clr-tab-content *clrIfActive>\r\n <div class=\"mt4\">\r\n <ng-container *ngFor=\"let customField of group.customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n [entityName]=\"entityName\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n [customField]=\"customField\"\r\n [readonly]=\"readonly\"\r\n [compact]=\"compact\"\r\n [showLabel]=\"showLabel\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </div>\r\n </clr-tab-content>\r\n </clr-tab>\r\n </clr-tabs>\r\n</ng-container>\r\n<ng-template #singleGroup>\r\n <ng-container *ngFor=\"let customField of tabbedCustomFields[0]?.customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n [entityName]=\"entityName\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n [customField]=\"customField\"\r\n [readonly]=\"readonly\"\r\n [compact]=\"compact\"\r\n [showLabel]=\"showLabel\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [""], components: [{ type: i1$3.ClrTabs, selector: "clr-tabs", inputs: ["clrLayout"] }, { type: i1$3.ClrTab, selector: "clr-tab" }, { type: i1$3.ClrTabContent, selector: "clr-tab-content", inputs: ["id"] }, { type: CustomFieldControlComponent, selector: "vdr-custom-field-control", inputs: ["entityName", "customFieldsFormGroup", "customField", "compact", "showLabel", "readonly"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ÇlrTabsWillyWonka, selector: "clr-tabs" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrTabLink, selector: "[clrTabLink]", inputs: ["clrTabLinkInOverflow", "id"] }, { type: i1$3.ÇlrActiveOompaLoompa, selector: "[clrTabLink], clr-tab-content" }, { type: i1$3.ClrIfActive, selector: "[clrIfActive]", inputs: ["clrIfActive"], outputs: ["clrIfActiveChange"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11565
+ TabbedCustomFieldsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: { entityName: "entityName", customFields: "customFields", customFieldsFormGroup: "customFieldsFormGroup", readonly: "readonly", compact: "compact", showLabel: "showLabel" }, ngImport: i0, template: "<ng-container *ngIf=\"1 < tabbedCustomFields.length; else singleGroup\">\r\n <clr-tabs>\r\n <clr-tab *ngFor=\"let group of tabbedCustomFields\">\r\n <button clrTabLink>\r\n {{\r\n group.tabName === defaultTabName\r\n ? ('common.general' | translate)\r\n : (group.tabName | translate)\r\n }}\r\n </button>\r\n <clr-tab-content *clrIfActive>\r\n <div class=\"mt4\">\r\n <ng-container *ngFor=\"let customField of group.customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n [entityName]=\"entityName\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n [customField]=\"customField\"\r\n [readonly]=\"readonly\"\r\n [compact]=\"compact\"\r\n [showLabel]=\"showLabel\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </div>\r\n </clr-tab-content>\r\n </clr-tab>\r\n </clr-tabs>\r\n</ng-container>\r\n<ng-template #singleGroup>\r\n <ng-container *ngFor=\"let customField of tabbedCustomFields[0]?.customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n [entityName]=\"entityName\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n [customField]=\"customField\"\r\n [readonly]=\"readonly\"\r\n [compact]=\"compact\"\r\n [showLabel]=\"showLabel\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [""], components: [{ type: i1$3.ClrTabs, selector: "clr-tabs", inputs: ["clrLayout"] }, { type: i1$3.ClrTab, selector: "clr-tab" }, { type: i1$3.ClrTabContent, selector: "clr-tab-content", inputs: ["id"] }, { type: CustomFieldControlComponent, selector: "vdr-custom-field-control", inputs: ["entityName", "customFieldsFormGroup", "customField", "compact", "showLabel", "readonly"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ÇlrTabsWillyWonka, selector: "clr-tabs" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrTabLink, selector: "[clrTabLink]", inputs: ["clrTabLinkInOverflow", "id"] }, { type: i1$3.ÇlrActiveOompaLoompa, selector: "[clrTabLink], clr-tab-content" }, { type: i1$3.ClrIfActive, selector: "[clrIfActive]", inputs: ["clrIfActive"], outputs: ["clrIfActiveChange"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11436
11566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TabbedCustomFieldsComponent, decorators: [{
11437
11567
  type: Component,
11438
11568
  args: [{ selector: 'vdr-tabbed-custom-fields', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"1 < tabbedCustomFields.length; else singleGroup\">\r\n <clr-tabs>\r\n <clr-tab *ngFor=\"let group of tabbedCustomFields\">\r\n <button clrTabLink>\r\n {{\r\n group.tabName === defaultTabName\r\n ? ('common.general' | translate)\r\n : (group.tabName | translate)\r\n }}\r\n </button>\r\n <clr-tab-content *clrIfActive>\r\n <div class=\"mt4\">\r\n <ng-container *ngFor=\"let customField of group.customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n [entityName]=\"entityName\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n [customField]=\"customField\"\r\n [readonly]=\"readonly\"\r\n [compact]=\"compact\"\r\n [showLabel]=\"showLabel\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </div>\r\n </clr-tab-content>\r\n </clr-tab>\r\n </clr-tabs>\r\n</ng-container>\r\n<ng-template #singleGroup>\r\n <ng-container *ngFor=\"let customField of tabbedCustomFields[0]?.customFields\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldIsSet(customField.name)\"\r\n [entityName]=\"entityName\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n [customField]=\"customField\"\r\n [readonly]=\"readonly\"\r\n [compact]=\"compact\"\r\n [showLabel]=\"showLabel\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [""] }]
@@ -11456,7 +11586,7 @@ class AssetPreviewLinksComponent {
11456
11586
  }
11457
11587
  }
11458
11588
  AssetPreviewLinksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetPreviewLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11459
- AssetPreviewLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: { asset: "asset" }, ngImport: i0, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link\" vdrDropdownTrigger>\r\n <clr-icon shape=\"link\"></clr-icon> {{ 'catalog.asset-preview-links' | translate }}<clr-icon shape=\"caret\" dir=\"down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <a\r\n *ngFor=\"let size of sizes\"\r\n [href]=\"asset | assetPreview: size\"\r\n [title]=\"asset | assetPreview: size\"\r\n target=\"_blank\"\r\n class=\"asset-preview-link\"\r\n vdrDropdownItem\r\n >\r\n <vdr-chip><clr-icon shape=\"link\"></clr-icon> {{ 'asset.preview' | translate }}: {{ size }}</vdr-chip>\r\n </a>\r\n </vdr-dropdown-menu></vdr-dropdown\r\n>\r\n", styles: [".asset-preview-link{font-size:12px}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i9.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }], pipes: { "translate": i4.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11589
+ AssetPreviewLinksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: { asset: "asset" }, ngImport: i0, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link\" vdrDropdownTrigger>\r\n <clr-icon shape=\"link\"></clr-icon> {{ 'catalog.asset-preview-links' | translate }}<clr-icon shape=\"caret\" dir=\"down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <a\r\n *ngFor=\"let size of sizes\"\r\n [href]=\"asset | assetPreview: size\"\r\n [title]=\"asset | assetPreview: size\"\r\n target=\"_blank\"\r\n class=\"asset-preview-link\"\r\n vdrDropdownItem\r\n >\r\n <vdr-chip><clr-icon shape=\"link\"></clr-icon> {{ 'asset.preview' | translate }}: {{ size }}</vdr-chip>\r\n </a>\r\n </vdr-dropdown-menu></vdr-dropdown\r\n>\r\n", styles: [".asset-preview-link{font-size:12px}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i9.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }], pipes: { "translate": i7.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11460
11590
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetPreviewLinksComponent, decorators: [{
11461
11591
  type: Component,
11462
11592
  args: [{ selector: 'vdr-asset-preview-links', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link\" vdrDropdownTrigger>\r\n <clr-icon shape=\"link\"></clr-icon> {{ 'catalog.asset-preview-links' | translate }}<clr-icon shape=\"caret\" dir=\"down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\r\n <a\r\n *ngFor=\"let size of sizes\"\r\n [href]=\"asset | assetPreview: size\"\r\n [title]=\"asset | assetPreview: size\"\r\n target=\"_blank\"\r\n class=\"asset-preview-link\"\r\n vdrDropdownItem\r\n >\r\n <vdr-chip><clr-icon shape=\"link\"></clr-icon> {{ 'asset.preview' | translate }}: {{ size }}</vdr-chip>\r\n </a>\r\n </vdr-dropdown-menu></vdr-dropdown\r\n>\r\n", styles: [".asset-preview-link{font-size:12px}\n"] }]
@@ -11620,7 +11750,7 @@ class AssetPreviewComponent {
11620
11750
  }
11621
11751
  }
11622
11752
  getSourceFileName() {
11623
- const parts = this.asset.source.split('/');
11753
+ const parts = this.asset.source.split(/[\\\/]/g);
11624
11754
  return parts[parts.length - 1];
11625
11755
  }
11626
11756
  onImageLoad() {
@@ -11712,10 +11842,10 @@ class AssetPreviewComponent {
11712
11842
  }
11713
11843
  }
11714
11844
  AssetPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetPreviewComponent, deps: [{ token: i2.FormBuilder }, { token: DataService }, { token: NotificationService }, { token: i0.ChangeDetectorRef }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
11715
- AssetPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetPreviewComponent, selector: "vdr-asset-preview", inputs: { asset: "asset", editable: "editable", customFields: "customFields", customFieldsForm: "customFieldsForm" }, outputs: { assetChange: "assetChange", editClick: "editClick" }, viewQueries: [{ propertyName: "imageElementRef", first: true, predicate: ["imageElement"], descendants: true, static: true }, { propertyName: "previewDivRef", first: true, predicate: ["previewDiv"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview: size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"setFocalPointEnd()\" [disabled]=\"!lastFocalPoint\">\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"controls\" [class.fade]=\"settingFocalPoint\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container class=\"name-input\" *ngIf=\"editable\">\r\n <label>{{ 'common.name' | translate }}</label>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </clr-input-container>\r\n\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number: '1.2-2' }}, y:\r\n {{ fpy | number: '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <br />\r\n <button\r\n class=\"btn btn-secondary-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"btn btn-warning-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector formControlName=\"tags\"></vdr-tag-selector>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </form>\r\n <section *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"preview-select\">\r\n <clr-select-container>\r\n <label>{{ 'asset.preview' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </clr-select-container>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n </div>\r\n <vdr-asset-preview-links class=\"mb4\" [asset]=\"asset\"></vdr-asset-preview-links>\r\n <div *ngIf=\"!editable\" class=\"edit-button-wrapper\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}.preview-image{width:100%;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-left:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-right:12px}.edit-button-wrapper{padding-top:6px;border-top:1px solid var(--color-component-border-100);text-align:center}\n"], components: [{ type: FocalPointControlComponent, selector: "vdr-focal-point-control", inputs: ["visible", "editable", "width", "height", "fpx", "fpy"], outputs: ["focalPointChange"] }, { type: i1$3.ClrInputContainer, selector: "clr-input-container" }, { type: LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { type: TagSelectorComponent, selector: "vdr-tag-selector", inputs: ["placeholder"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { type: i1$3.ClrSelectContainer, selector: "clr-select-container" }, { type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "assetPreview": AssetPreviewPipe, "translate": i4.TranslatePipe, "hasPermission": HasPermissionPipe, "filesize": FileSizePipe, "number": i3.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11845
+ AssetPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetPreviewComponent, selector: "vdr-asset-preview", inputs: { asset: "asset", editable: "editable", customFields: "customFields", customFieldsForm: "customFieldsForm" }, outputs: { assetChange: "assetChange", editClick: "editClick" }, viewQueries: [{ propertyName: "imageElementRef", first: true, predicate: ["imageElement"], descendants: true, static: true }, { propertyName: "previewDivRef", first: true, predicate: ["previewDiv"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview: size\"\r\n [ngClass]=\"size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"setFocalPointEnd()\" [disabled]=\"!lastFocalPoint\">\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"controls\" [class.fade]=\"settingFocalPoint\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container class=\"name-input\" *ngIf=\"editable\">\r\n <label>{{ 'common.name' | translate }}</label>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </clr-input-container>\r\n\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number: '1.2-2' }}, y:\r\n {{ fpy | number: '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <br />\r\n <button\r\n class=\"btn btn-secondary-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"btn btn-warning-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector formControlName=\"tags\"></vdr-tag-selector>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </form>\r\n <section *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"preview-select\">\r\n <clr-select-container>\r\n <label>{{ 'asset.preview' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </clr-select-container>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n </div>\r\n <vdr-asset-preview-links class=\"mb4\" [asset]=\"asset\"></vdr-asset-preview-links>\r\n <div *ngIf=\"!editable\" class=\"edit-button-wrapper\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}.preview-image{width:100%;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .asset-image.tiny{max-width:50px;max-height:50px}.preview-image .asset-image.thumb{max-width:150px;max-height:150px}.preview-image .asset-image.small{max-width:300px;max-height:300px}.preview-image .asset-image.medium{max-width:500px;max-height:500px}.preview-image .asset-image.large{max-width:800px;max-height:800px}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-left:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-right:12px}.edit-button-wrapper{padding-top:6px;border-top:1px solid var(--color-component-border-100);text-align:center}\n"], components: [{ type: FocalPointControlComponent, selector: "vdr-focal-point-control", inputs: ["visible", "editable", "width", "height", "fpx", "fpy"], outputs: ["focalPointChange"] }, { type: i1$3.ClrInputContainer, selector: "clr-input-container" }, { type: LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }, { type: TagSelectorComponent, selector: "vdr-tag-selector", inputs: ["placeholder"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { type: i1$3.ClrSelectContainer, selector: "clr-select-container" }, { type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "assetPreview": AssetPreviewPipe, "translate": i7.TranslatePipe, "hasPermission": HasPermissionPipe, "filesize": FileSizePipe, "number": i3.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11716
11846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetPreviewComponent, decorators: [{
11717
11847
  type: Component,
11718
- args: [{ selector: 'vdr-asset-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview: size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"setFocalPointEnd()\" [disabled]=\"!lastFocalPoint\">\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"controls\" [class.fade]=\"settingFocalPoint\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container class=\"name-input\" *ngIf=\"editable\">\r\n <label>{{ 'common.name' | translate }}</label>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </clr-input-container>\r\n\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number: '1.2-2' }}, y:\r\n {{ fpy | number: '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <br />\r\n <button\r\n class=\"btn btn-secondary-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"btn btn-warning-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector formControlName=\"tags\"></vdr-tag-selector>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </form>\r\n <section *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"preview-select\">\r\n <clr-select-container>\r\n <label>{{ 'asset.preview' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </clr-select-container>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n </div>\r\n <vdr-asset-preview-links class=\"mb4\" [asset]=\"asset\"></vdr-asset-preview-links>\r\n <div *ngIf=\"!editable\" class=\"edit-button-wrapper\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}.preview-image{width:100%;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-left:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-right:12px}.edit-button-wrapper{padding-top:6px;border-top:1px solid var(--color-component-border-100);text-align:center}\n"] }]
11848
+ args: [{ selector: 'vdr-asset-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"preview-image\" #previewDiv [class.centered]=\"centered\">\r\n <div class=\"image-wrapper\">\r\n <vdr-focal-point-control\r\n [width]=\"width\"\r\n [height]=\"height\"\r\n [fpx]=\"fpx\"\r\n [fpy]=\"fpy\"\r\n [editable]=\"settingFocalPoint\"\r\n (focalPointChange)=\"onFocalPointChange($event)\"\r\n >\r\n <img\r\n class=\"asset-image\"\r\n [src]=\"asset | assetPreview: size\"\r\n [ngClass]=\"size\"\r\n #imageElement\r\n (load)=\"onImageLoad()\"\r\n />\r\n </vdr-focal-point-control>\r\n <div class=\"focal-point-info\" *ngIf=\"settingFocalPoint\">\r\n <button class=\"icon-button\" (click)=\"setFocalPointCancel()\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n </button>\r\n <button class=\"btn btn-primary btn-sm\" (click)=\"setFocalPointEnd()\" [disabled]=\"!lastFocalPoint\">\r\n <clr-icon shape=\"crosshairs\"></clr-icon>\r\n {{ 'asset.set-focal-point' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"controls\" [class.fade]=\"settingFocalPoint\">\r\n <form [formGroup]=\"form\">\r\n <clr-input-container class=\"name-input\" *ngIf=\"editable\">\r\n <label>{{ 'common.name' | translate }}</label>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission) || settingFocalPoint\"\r\n />\r\n </clr-input-container>\r\n\r\n <vdr-labeled-data [label]=\"'common.name' | translate\" *ngIf=\"!editable\">\r\n <span class=\"elide\">\r\n {{ asset.name }}\r\n </span>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.source-file' | translate\">\r\n <a [href]=\"asset.source\" [title]=\"asset.source\" target=\"_blank\" class=\"elide source-link\">{{\r\n getSourceFileName()\r\n }}</a>\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.original-asset-size' | translate\">\r\n {{ asset.fileSize | filesize }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.dimensions' | translate\">\r\n {{ asset.width }} x {{ asset.height }}\r\n </vdr-labeled-data>\r\n\r\n <vdr-labeled-data [label]=\"'asset.focal-point' | translate\">\r\n <span *ngIf=\"fpx\"\r\n ><clr-icon shape=\"crosshairs\"></clr-icon> x: {{ fpx | number: '1.2-2' }}, y:\r\n {{ fpy | number: '1.2-2' }}</span\r\n >\r\n <span *ngIf=\"!fpx\">{{ 'common.not-set' | translate }}</span>\r\n <br />\r\n <button\r\n class=\"btn btn-secondary-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n (click)=\"setFocalPointStart()\"\r\n >\r\n <ng-container *ngIf=\"!fpx\">{{ 'asset.set-focal-point' | translate }}</ng-container>\r\n <ng-container *ngIf=\"fpx\">{{ 'asset.update-focal-point' | translate }}</ng-container>\r\n </button>\r\n <button\r\n class=\"btn btn-warning-outline btn-sm\"\r\n [disabled]=\"settingFocalPoint\"\r\n *ngIf=\"!!fpx\"\r\n (click)=\"removeFocalPoint()\"\r\n >\r\n {{ 'asset.unset-focal-point' | translate }}\r\n </button>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.tags' | translate\">\r\n <ng-container *ngIf=\"editable\">\r\n <vdr-tag-selector formControlName=\"tags\"></vdr-tag-selector>\r\n <button class=\"btn btn-link btn-sm\" (click)=\"manageTags()\">\r\n <clr-icon shape=\"tags\"></clr-icon>\r\n {{ 'common.manage-tags' | translate }}\r\n </button>\r\n </ng-container>\r\n <div *ngIf=\"!editable\">\r\n <vdr-chip *ngFor=\"let tag of asset.tags\" [colorFrom]=\"tag.value\">\r\n <clr-icon shape=\"tag\" class=\"mr2\"></clr-icon>\r\n {{ tag.value }}</vdr-chip\r\n >\r\n </div>\r\n </vdr-labeled-data>\r\n </form>\r\n <section *ngIf=\"customFields.length\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Asset\"\r\n [compact]=\"true\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsForm\"\r\n [readonly]=\"!(['UpdateCatalog', 'UpdateAsset'] | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"preview-select\">\r\n <clr-select-container>\r\n <label>{{ 'asset.preview' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"size\" [disabled]=\"settingFocalPoint\">\r\n <option value=\"tiny\">tiny</option>\r\n <option value=\"thumb\">thumb</option>\r\n <option value=\"small\">small</option>\r\n <option value=\"medium\">medium</option>\r\n <option value=\"large\">large</option>\r\n <option value=\"\">full size</option>\r\n </select>\r\n </clr-select-container>\r\n <div class=\"asset-detail\">{{ width }} x {{ height }}</div>\r\n </div>\r\n <vdr-asset-preview-links class=\"mb4\" [asset]=\"asset\"></vdr-asset-preview-links>\r\n <div *ngIf=\"!editable\" class=\"edit-button-wrapper\">\r\n <a\r\n class=\"btn btn-link btn-sm\"\r\n [routerLink]=\"['/catalog', 'assets', asset.id]\"\r\n (click)=\"editClick.emit()\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;height:100%}.preview-image{width:100%;height:100%;min-height:60vh;overflow:auto;text-align:center;box-shadow:inset 0 0 5px #0000001a;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACuoAAArqAVDM774AAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAK0lEQVQ4T2P4jwP8xgFGNSADqDwGIF0DlMYAUH0YYFQDMoDKYwASNfz/DwB/JvcficphowAAAABJRU5ErkJggg==);flex:1}.preview-image.centered{display:flex;align-items:center;justify-content:center}.preview-image vdr-focal-point-control{position:relative;box-shadow:0 0 10px -3px #00000026}.preview-image .image-wrapper{position:relative}.preview-image .asset-image{width:100%}.preview-image .asset-image.tiny{max-width:50px;max-height:50px}.preview-image .asset-image.thumb{max-width:150px;max-height:150px}.preview-image .asset-image.small{max-width:300px;max-height:300px}.preview-image .asset-image.medium{max-width:500px;max-height:500px}.preview-image .asset-image.large{max-width:800px;max-height:800px}.preview-image .focal-point-info{position:absolute;display:flex;right:0}.controls{display:flex;flex-direction:column;margin-left:12px;min-width:15vw;max-width:25vw;transition:opacity .3s}.controls.fade{opacity:.5}.controls .name-input{margin-bottom:24px}.controls ::ng-deep .clr-control-container{width:100%}.controls ::ng-deep .clr-control-container .clr-input{width:100%}.controls .elide{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block}.controls .source-link{direction:rtl}.controls .preview-select{display:flex;align-items:center}.controls .preview-select clr-select-container{margin-right:12px}.edit-button-wrapper{padding-top:6px;border-top:1px solid var(--color-component-border-100);text-align:center}\n"] }]
11719
11849
  }], ctorParameters: function () { return [{ type: i2.FormBuilder }, { type: DataService }, { type: NotificationService }, { type: i0.ChangeDetectorRef }, { type: ModalService }]; }, propDecorators: { asset: [{
11720
11850
  type: Input
11721
11851
  }], editable: [{
@@ -11768,7 +11898,7 @@ class EntityInfoComponent {
11768
11898
  }
11769
11899
  }
11770
11900
  EntityInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EntityInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11771
- EntityInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EntityInfoComponent, selector: "vdr-entity-info", inputs: { small: "small", entity: "entity" }, ngImport: i0, template: "<vdr-dropdown *ngIf=\"entity.id\">\r\n <button class=\"btn btn-icon btn-link info-button\" [class.btn-sm]=\"small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"info-standard\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"entity-info\">\r\n <vdr-labeled-data [label]=\"'common.ID' | translate\">\r\n {{ entity.id }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"entity.createdAt\" [label]=\"'common.created-at' | translate\">\r\n {{ entity.createdAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"entity.updatedAt\" [label]=\"'common.updated-at' | translate\">\r\n {{ entity.updatedAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [".info-button{color:var(--color-icon-button)}.entity-info{margin:0 12px}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }, { type: LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe, "localeDate": LocaleDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11901
+ EntityInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EntityInfoComponent, selector: "vdr-entity-info", inputs: { small: "small", entity: "entity" }, ngImport: i0, template: "<vdr-dropdown *ngIf=\"entity.id\">\r\n <button class=\"btn btn-icon btn-link info-button\" [class.btn-sm]=\"small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"info-standard\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"entity-info\">\r\n <vdr-labeled-data [label]=\"'common.ID' | translate\">\r\n {{ entity.id }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"entity.createdAt\" [label]=\"'common.created-at' | translate\">\r\n {{ entity.createdAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"entity.updatedAt\" [label]=\"'common.updated-at' | translate\">\r\n {{ entity.updatedAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [".info-button{color:var(--color-icon-button)}.entity-info{margin:0 12px}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }, { type: LabeledDataComponent, selector: "vdr-labeled-data", inputs: ["label"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe, "localeDate": LocaleDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11772
11902
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EntityInfoComponent, decorators: [{
11773
11903
  type: Component,
11774
11904
  args: [{ selector: 'vdr-entity-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-dropdown *ngIf=\"entity.id\">\r\n <button class=\"btn btn-icon btn-link info-button\" [class.btn-sm]=\"small\" vdrDropdownTrigger>\r\n <clr-icon shape=\"info-standard\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"entity-info\">\r\n <vdr-labeled-data [label]=\"'common.ID' | translate\">\r\n {{ entity.id }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"entity.createdAt\" [label]=\"'common.created-at' | translate\">\r\n {{ entity.createdAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"entity.updatedAt\" [label]=\"'common.updated-at' | translate\">\r\n {{ entity.updatedAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [".info-button{color:var(--color-icon-button)}.entity-info{margin:0 12px}\n"] }]
@@ -11859,7 +11989,7 @@ class AssetGalleryComponent {
11859
11989
  }
11860
11990
  }
11861
11991
  AssetGalleryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetGalleryComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
11862
- AssetGalleryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: { assets: "assets", multiSelect: "multiSelect", canDelete: "canDelete" }, outputs: { selectionChange: "selectionChange", deleteAssets: "deleteAssets" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <div class=\"selected-checkbox\"><clr-icon shape=\"check-circle\" size=\"32\"></clr-icon></div>\r\n <img [src]=\"asset | assetPreview: 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"btn btn-link\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"btn btn-link\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selection)\" class=\"btn btn-link\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon> {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate: { count: selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;overflow:hidden}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px;overflow-y:auto;padding-left:12px;padding-top:12px;padding-bottom:12px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}.selected-checkbox{opacity:0;position:absolute;color:var(--color-success-500);background-color:#fff;border-radius:50%;top:-12px;left:-12px;box-shadow:0 5px 5px -4px #000000bf;transition:opacity .1s}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{width:25%;padding:0 6px;overflow-y:auto}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:left;list-style-type:none;margin-left:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"], components: [{ type: EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "assetPreview": AssetPreviewPipe, "translate": i4.TranslatePipe, "filesize": FileSizePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11992
+ AssetGalleryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: { assets: "assets", multiSelect: "multiSelect", canDelete: "canDelete" }, outputs: { selectionChange: "selectionChange", deleteAssets: "deleteAssets" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <div class=\"selected-checkbox\"><clr-icon shape=\"check-circle\" size=\"32\"></clr-icon></div>\r\n <img [src]=\"asset | assetPreview: 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"btn btn-link\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"btn btn-link\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selection)\" class=\"btn btn-link\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon> {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate: { count: selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;overflow:hidden}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px;overflow-y:auto;padding-left:12px;padding-top:12px;padding-bottom:12px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}.selected-checkbox{opacity:0;position:absolute;color:var(--color-success-500);background-color:#fff;border-radius:50%;top:-12px;left:-12px;box-shadow:0 5px 5px -4px #000000bf;transition:opacity .1s}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{width:25%;padding:0 6px;overflow-y:auto}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:left;list-style-type:none;margin-left:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"], components: [{ type: EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: AssetPreviewLinksComponent, selector: "vdr-asset-preview-links", inputs: ["asset"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "assetPreview": AssetPreviewPipe, "translate": i7.TranslatePipe, "filesize": FileSizePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11863
11993
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetGalleryComponent, decorators: [{
11864
11994
  type: Component,
11865
11995
  args: [{ selector: 'vdr-asset-gallery', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"gallery\">\r\n <div\r\n class=\"card\"\r\n *ngFor=\"let asset of assets\"\r\n (click)=\"toggleSelection(asset, $event)\"\r\n [class.selected]=\"isSelected(asset)\"\r\n >\r\n <div class=\"card-img\">\r\n <div class=\"selected-checkbox\"><clr-icon shape=\"check-circle\" size=\"32\"></clr-icon></div>\r\n <img [src]=\"asset | assetPreview: 'thumb'\" />\r\n </div>\r\n <div class=\"detail\">\r\n <vdr-entity-info\r\n [entity]=\"asset\"\r\n [small]=\"true\"\r\n (click)=\"entityInfoClick($event)\"\r\n ></vdr-entity-info>\r\n <span [title]=\"asset.name\">{{ asset.name }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"info-bar\">\r\n <div class=\"card\">\r\n <div class=\"card-img\">\r\n <div class=\"placeholder\" *ngIf=\"selection.length === 0\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n <div>{{ 'catalog.no-selection' | translate }}</div>\r\n </div>\r\n <img\r\n class=\"preview\"\r\n *ngIf=\"selection.length >= 1\"\r\n [src]=\"lastSelected().preview + '?preset=medium'\"\r\n />\r\n </div>\r\n <div class=\"card-block details\" *ngIf=\"selection.length >= 1\">\r\n <div class=\"name\">{{ lastSelected().name }}</div>\r\n <div>{{ 'asset.original-asset-size' | translate }}: {{ lastSelected().fileSize | filesize }}</div>\r\n\r\n <ng-container *ngIf=\"selection.length === 1\">\r\n <vdr-chip *ngFor=\"let tag of lastSelected().tags\" [colorFrom]=\"tag.value\"\r\n ><clr-icon shape=\"tag\" class=\"mr2\"></clr-icon> {{ tag.value }}</vdr-chip\r\n >\r\n <div>\r\n <button (click)=\"previewAsset(lastSelected())\" class=\"btn btn-link\">\r\n <clr-icon shape=\"eye\"></clr-icon> {{ 'asset.preview' | translate }}\r\n </button>\r\n </div>\r\n <div>\r\n <vdr-asset-preview-links class=\"\" [asset]=\"lastSelected()\"></vdr-asset-preview-links>\r\n </div>\r\n <div>\r\n <a [routerLink]=\"['./', lastSelected().id]\" class=\"btn btn-link\">\r\n <clr-icon shape=\"pencil\"></clr-icon> {{ 'common.edit' | translate }}\r\n </a>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"canDelete\">\r\n <button (click)=\"deleteAssets.emit(selection)\" class=\"btn btn-link\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon> {{ 'common.delete' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card stack\" [class.visible]=\"selection.length > 1\"></div>\r\n <div class=\"selection-count\" [class.visible]=\"selection.length > 1\">\r\n {{ 'asset.assets-selected-count' | translate: { count: selection.length } }}\r\n <ul>\r\n <li *ngFor=\"let asset of selection\">{{ asset.name }}</li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{display:flex;overflow:hidden}.gallery{flex:1;display:grid;grid-template-columns:repeat(auto-fill,150px);grid-template-rows:repeat(auto-fill,180px);grid-gap:10px 20px;overflow-y:auto;padding-left:12px;padding-top:12px;padding-bottom:12px}.gallery .card:hover{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card{margin-top:0;position:relative}.selected-checkbox{opacity:0;position:absolute;color:var(--color-success-500);background-color:#fff;border-radius:50%;top:-12px;left:-12px;box-shadow:0 5px 5px -4px #000000bf;transition:opacity .1s}.card.selected{box-shadow:0 .125rem 0 0 var(--color-primary-500);border:1px solid var(--color-primary-500)}.card.selected .selected-checkbox{opacity:1}.detail{font-size:12px;margin:3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.detail vdr-entity-info{height:16px}.info-bar{width:25%;padding:0 6px;overflow-y:auto}.info-bar .card{z-index:1}.info-bar .stack{z-index:0;opacity:0;transform:perspective(500px) translateZ(0) translateY(-16px);height:16px;transition:transform .3s,opacity 0s .3s;background-color:#fff}.info-bar .stack.visible{opacity:1;transform:perspective(500px) translateZ(-44px) translateY(0);background-color:var(--color-component-bg-100);transition:transform .3s,color .3s}.info-bar .selection-count{opacity:0;position:relative;text-align:center;visibility:hidden;transition:opacity .3s,visibility 0s .3s}.info-bar .selection-count.visible{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}.info-bar .selection-count ul{text-align:left;list-style-type:none;margin-left:12px}.info-bar .selection-count ul li{font-size:12px}.info-bar .placeholder{text-align:center;color:var(--color-grey-300)}.info-bar .preview img{max-width:100%}.info-bar .details{font-size:12px;word-break:break-all}.info-bar .name{line-height:14px;font-weight:700}\n"] }]
@@ -11885,7 +12015,7 @@ class ItemsPerPageControlsComponent {
11885
12015
  }
11886
12016
  }
11887
12017
  ItemsPerPageControlsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ItemsPerPageControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11888
- ItemsPerPageControlsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: { itemsPerPage: "itemsPerPage" }, outputs: { itemsPerPageChange: "itemsPerPageChange" }, ngImport: i0, template: "<div class=\"select\">\r\n <select [ngModel]=\"itemsPerPage\" (change)=\"itemsPerPageChange.emit($event.target.value)\">\r\n <option [value]=\"10\">{{ 'common.items-per-page-option' | translate: { count: 10 } }}</option>\r\n <option [value]=\"25\">{{ 'common.items-per-page-option' | translate: { count: 25 } }}</option>\r\n <option [value]=\"50\">{{ 'common.items-per-page-option' | translate: { count: 50 } }}</option>\r\n <option [value]=\"100\">{{ 'common.items-per-page-option' | translate: { count: 100 } }}</option>\r\n </select>\r\n</div>\r\n", styles: [""], directives: [{ type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12018
+ ItemsPerPageControlsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: { itemsPerPage: "itemsPerPage" }, outputs: { itemsPerPageChange: "itemsPerPageChange" }, ngImport: i0, template: "<div class=\"select\">\r\n <select [ngModel]=\"itemsPerPage\" (change)=\"itemsPerPageChange.emit($event.target.value)\">\r\n <option [value]=\"10\">{{ 'common.items-per-page-option' | translate: { count: 10 } }}</option>\r\n <option [value]=\"25\">{{ 'common.items-per-page-option' | translate: { count: 25 } }}</option>\r\n <option [value]=\"50\">{{ 'common.items-per-page-option' | translate: { count: 50 } }}</option>\r\n <option [value]=\"100\">{{ 'common.items-per-page-option' | translate: { count: 100 } }}</option>\r\n </select>\r\n</div>\r\n", styles: [""], directives: [{ type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11889
12019
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ItemsPerPageControlsComponent, decorators: [{
11890
12020
  type: Component,
11891
12021
  args: [{ selector: 'vdr-items-per-page-controls', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"select\">\r\n <select [ngModel]=\"itemsPerPage\" (change)=\"itemsPerPageChange.emit($event.target.value)\">\r\n <option [value]=\"10\">{{ 'common.items-per-page-option' | translate: { count: 10 } }}</option>\r\n <option [value]=\"25\">{{ 'common.items-per-page-option' | translate: { count: 25 } }}</option>\r\n <option [value]=\"50\">{{ 'common.items-per-page-option' | translate: { count: 50 } }}</option>\r\n <option [value]=\"100\">{{ 'common.items-per-page-option' | translate: { count: 100 } }}</option>\r\n </select>\r\n</div>\r\n", styles: [""] }]
@@ -12031,7 +12161,7 @@ class AssetPickerDialogComponent {
12031
12161
  }
12032
12162
  }
12033
12163
  AssetPickerDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetPickerDialogComponent, deps: [{ token: DataService }, { token: NotificationService }], target: i0.ɵɵFactoryTarget.Component });
12034
- AssetPickerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetPickerDialogComponent, selector: "vdr-asset-picker-dialog", viewQueries: [{ propertyName: "assetSearchInputComponent", first: true, predicate: ["assetSearchInputComponent"], descendants: true }, { propertyName: "assetGalleryComponent", first: true, predicate: ["assetGalleryComponent"], descendants: true }], ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:70vh}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"], components: [{ type: AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { type: AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets"] }, { type: ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { type: PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i4.TranslatePipe, "async": i3.AsyncPipe, "paginate": i1$5.PaginatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12164
+ AssetPickerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AssetPickerDialogComponent, selector: "vdr-asset-picker-dialog", viewQueries: [{ propertyName: "assetSearchInputComponent", first: true, predicate: ["assetSearchInputComponent"], descendants: true }, { propertyName: "assetGalleryComponent", first: true, predicate: ["assetGalleryComponent"], descendants: true }], ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:70vh}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"], components: [{ type: AssetFileInputComponent, selector: "vdr-asset-file-input", inputs: ["dropZoneTarget", "uploading"], outputs: ["selectFiles"] }, { type: AssetSearchInputComponent, selector: "vdr-asset-search-input", inputs: ["tags"], outputs: ["searchTermChange", "tagsChange"] }, { type: AssetGalleryComponent, selector: "vdr-asset-gallery", inputs: ["assets", "multiSelect", "canDelete"], outputs: ["selectionChange", "deleteAssets"] }, { type: ItemsPerPageControlsComponent, selector: "vdr-items-per-page-controls", inputs: ["itemsPerPage"], outputs: ["itemsPerPageChange"] }, { type: PaginationControlsComponent, selector: "vdr-pagination-controls", inputs: ["id", "currentPage", "itemsPerPage", "totalItems"], outputs: ["pageChange"] }], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i7.TranslatePipe, "async": i3.AsyncPipe, "paginate": i1$5.PaginatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12035
12165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AssetPickerDialogComponent, decorators: [{
12036
12166
  type: Component,
12037
12167
  args: [{ selector: 'vdr-asset-picker-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n <div class=\"title-row\">\r\n <span>{{ 'asset.select-assets' | translate }}</span>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-asset-file-input\r\n class=\"ml3\"\r\n (selectFiles)=\"createAssets($event)\"\r\n [uploading]=\"uploading\"\r\n dropZoneTarget=\".modal-content\"\r\n ></vdr-asset-file-input>\r\n </div>\r\n</ng-template>\r\n<vdr-asset-search-input\r\n class=\"mb2\"\r\n [tags]=\"allTags$ | async\"\r\n (searchTermChange)=\"searchTerm$.next($event)\"\r\n (tagsChange)=\"filterByTags$.next($event)\"\r\n #assetSearchInputComponent\r\n></vdr-asset-search-input>\r\n<vdr-asset-gallery\r\n [assets]=\"(assets$ | async)! | paginate: paginationConfig\"\r\n [multiSelect]=\"multiSelect\"\r\n (selectionChange)=\"selection = $event\"\r\n #assetGalleryComponent\r\n></vdr-asset-gallery>\r\n\r\n<div class=\"paging-controls\">\r\n <vdr-items-per-page-controls\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n (itemsPerPageChange)=\"itemsPerPageChange($event)\"\r\n ></vdr-items-per-page-controls>\r\n\r\n <vdr-pagination-controls\r\n [currentPage]=\"paginationConfig.currentPage\"\r\n [itemsPerPage]=\"paginationConfig.itemsPerPage\"\r\n [totalItems]=\"paginationConfig.totalItems\"\r\n (pageChange)=\"pageChange($event)\"\r\n ></vdr-pagination-controls>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"selection.length === 0\">\r\n {{ 'asset.add-asset-with-count' | translate: { count: selection.length } }}\r\n </button>\r\n</ng-template>\r\n", styles: [":host{display:flex;flex-direction:column;height:70vh}.title-row{display:flex;align-items:center;justify-content:space-between}vdr-asset-gallery{flex:1}.paging-controls{padding-top:6px;border-top:1px solid var(--color-component-border-100);display:flex;justify-content:space-between;flex-shrink:0}\n"] }]
@@ -12071,7 +12201,7 @@ class RelationCardComponent {
12071
12201
  }
12072
12202
  }
12073
12203
  RelationCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12074
- RelationCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationCardComponent, selector: "vdr-relation-card", inputs: { entity: "entity", placeholderIcon: "placeholderIcon", selectLabel: "selectLabel", readonly: "readonly", removable: "removable" }, outputs: { select: "select", remove: "remove" }, queries: [{ propertyName: "previewTemplate", first: true, predicate: RelationCardPreviewDirective, descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: RelationCardDetailDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"flex\">\r\n <ng-container *ngIf=\"entity; else placeholder\">\r\n <div class=\"preview\">\r\n <ng-container *ngTemplateOutlet=\"previewTemplate; context: { entity: entity }\"></ng-container>\r\n </div>\r\n <div class=\"detail\">\r\n <div class=\"pl3\">\r\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: { entity: entity }\"></ng-container>\r\n </div>\r\n <button *ngIf=\"!readonly\" class=\"btn btn-sm btn-link\" (click)=\"select.emit()\">\r\n <clr-icon shape=\"link\"></clr-icon> {{ 'common.change-selection' | translate }}\r\n </button>\r\n <button *ngIf=\"!readonly && removable\" class=\"btn btn-sm btn-link\" (click)=\"remove.emit()\">\r\n <clr-icon shape=\"times\"></clr-icon> {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #placeholder>\r\n <div class=\"preview\">\r\n <div class=\"placeholder\" (click)=\"!readonly && select.emit()\">\r\n <clr-icon [attr.shape]=\"placeholderIcon\" size=\"50\"></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"detail\">\r\n <div class=\"pl3 not-set\">{{ 'common.not-set' | translate }}</div>\r\n <button *ngIf=\"!readonly\" class=\"btn btn-sm btn-link\" (click)=\"select.emit()\">\r\n <clr-icon shape=\"link\"></clr-icon> {{ selectLabel }}\r\n </button>\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{display:block;min-width:300px}.placeholder,.not-set{color:var(--color-grey-300)}.detail{flex:1;overflow:hidden}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12204
+ RelationCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationCardComponent, selector: "vdr-relation-card", inputs: { entity: "entity", placeholderIcon: "placeholderIcon", selectLabel: "selectLabel", readonly: "readonly", removable: "removable" }, outputs: { select: "select", remove: "remove" }, queries: [{ propertyName: "previewTemplate", first: true, predicate: RelationCardPreviewDirective, descendants: true, read: TemplateRef }, { propertyName: "detailTemplate", first: true, predicate: RelationCardDetailDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"flex\">\r\n <ng-container *ngIf=\"entity; else placeholder\">\r\n <div class=\"preview\">\r\n <ng-container *ngTemplateOutlet=\"previewTemplate; context: { entity: entity }\"></ng-container>\r\n </div>\r\n <div class=\"detail\">\r\n <div class=\"pl3\">\r\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: { entity: entity }\"></ng-container>\r\n </div>\r\n <button *ngIf=\"!readonly\" class=\"btn btn-sm btn-link\" (click)=\"select.emit()\">\r\n <clr-icon shape=\"link\"></clr-icon> {{ 'common.change-selection' | translate }}\r\n </button>\r\n <button *ngIf=\"!readonly && removable\" class=\"btn btn-sm btn-link\" (click)=\"remove.emit()\">\r\n <clr-icon shape=\"times\"></clr-icon> {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #placeholder>\r\n <div class=\"preview\">\r\n <div class=\"placeholder\" (click)=\"!readonly && select.emit()\">\r\n <clr-icon [attr.shape]=\"placeholderIcon\" size=\"50\"></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"detail\">\r\n <div class=\"pl3 not-set\">{{ 'common.not-set' | translate }}</div>\r\n <button *ngIf=\"!readonly\" class=\"btn btn-sm btn-link\" (click)=\"select.emit()\">\r\n <clr-icon shape=\"link\"></clr-icon> {{ selectLabel }}\r\n </button>\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{display:block;min-width:300px}.placeholder,.not-set{color:var(--color-grey-300)}.detail{flex:1;overflow:hidden}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12075
12205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationCardComponent, decorators: [{
12076
12206
  type: Component,
12077
12207
  args: [{ selector: 'vdr-relation-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\r\n <ng-container *ngIf=\"entity; else placeholder\">\r\n <div class=\"preview\">\r\n <ng-container *ngTemplateOutlet=\"previewTemplate; context: { entity: entity }\"></ng-container>\r\n </div>\r\n <div class=\"detail\">\r\n <div class=\"pl3\">\r\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: { entity: entity }\"></ng-container>\r\n </div>\r\n <button *ngIf=\"!readonly\" class=\"btn btn-sm btn-link\" (click)=\"select.emit()\">\r\n <clr-icon shape=\"link\"></clr-icon> {{ 'common.change-selection' | translate }}\r\n </button>\r\n <button *ngIf=\"!readonly && removable\" class=\"btn btn-sm btn-link\" (click)=\"remove.emit()\">\r\n <clr-icon shape=\"times\"></clr-icon> {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-template #placeholder>\r\n <div class=\"preview\">\r\n <div class=\"placeholder\" (click)=\"!readonly && select.emit()\">\r\n <clr-icon [attr.shape]=\"placeholderIcon\" size=\"50\"></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"detail\">\r\n <div class=\"pl3 not-set\">{{ 'common.not-set' | translate }}</div>\r\n <button *ngIf=\"!readonly\" class=\"btn btn-sm btn-link\" (click)=\"select.emit()\">\r\n <clr-icon shape=\"link\"></clr-icon> {{ selectLabel }}\r\n </button>\r\n </div>\r\n </ng-template>\r\n</div>\r\n", styles: [":host{display:block;min-width:300px}.placeholder,.not-set{color:var(--color-grey-300)}.detail{flex:1;overflow:hidden}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
@@ -12142,7 +12272,7 @@ class RelationAssetInputComponent {
12142
12272
  }
12143
12273
  }
12144
12274
  RelationAssetInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationAssetInputComponent, deps: [{ token: ModalService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component });
12145
- RelationAssetInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationAssetInputComponent, selector: "vdr-relation-asset-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectAsset()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"image\"\r\n [entity]=\"asset$ | async\"\r\n [selectLabel]=\"'asset.select-asset' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-asset=\"entity\">\r\n <img\r\n class=\"preview\"\r\n [title]=\"'asset.preview' | translate\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n (click)=\"previewAsset(asset)\"\r\n />\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-asset=\"entity\">\r\n <div class=\"name\" [title]=\"asset.name\">\r\n {{ asset.name }}\r\n </div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n", styles: [".preview{cursor:pointer}.detail{flex:1;overflow:hidden}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12275
+ RelationAssetInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationAssetInputComponent, selector: "vdr-relation-asset-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectAsset()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"image\"\r\n [entity]=\"asset$ | async\"\r\n [selectLabel]=\"'asset.select-asset' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-asset=\"entity\">\r\n <img\r\n class=\"preview\"\r\n [title]=\"'asset.preview' | translate\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n (click)=\"previewAsset(asset)\"\r\n />\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-asset=\"entity\">\r\n <div class=\"name\" [title]=\"asset.name\">\r\n {{ asset.name }}\r\n </div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n", styles: [".preview{cursor:pointer}.detail{flex:1;overflow:hidden}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12146
12276
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationAssetInputComponent, decorators: [{
12147
12277
  type: Component,
12148
12278
  args: [{ selector: 'vdr-relation-asset-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-relation-card\r\n (select)=\"selectAsset()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"image\"\r\n [entity]=\"asset$ | async\"\r\n [selectLabel]=\"'asset.select-asset' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-asset=\"entity\">\r\n <img\r\n class=\"preview\"\r\n [title]=\"'asset.preview' | translate\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n (click)=\"previewAsset(asset)\"\r\n />\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-asset=\"entity\">\r\n <div class=\"name\" [title]=\"asset.name\">\r\n {{ asset.name }}\r\n </div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n", styles: [".preview{cursor:pointer}.detail{flex:1;overflow:hidden}.name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
@@ -12157,7 +12287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
12157
12287
  class RelationSelectorDialogComponent {
12158
12288
  }
12159
12289
  RelationSelectorDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12160
- RelationSelectorDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationSelectorDialogComponent, selector: "vdr-relation-selector-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ title | translate }}</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"selectorTemplate\" [ngTemplateOutletContext]=\"{ select: resolveWith }\"></ng-container>\r\n", styles: [""], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12290
+ RelationSelectorDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationSelectorDialogComponent, selector: "vdr-relation-selector-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>{{ title | translate }}</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"selectorTemplate\" [ngTemplateOutletContext]=\"{ select: resolveWith }\"></ng-container>\r\n", styles: [""], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12161
12291
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationSelectorDialogComponent, decorators: [{
12162
12292
  type: Component,
12163
12293
  args: [{ selector: 'vdr-relation-selector-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>{{ title | translate }}</ng-template>\r\n<ng-container [ngTemplateOutlet]=\"selectorTemplate\" [ngTemplateOutletContext]=\"{ select: resolveWith }\"></ng-container>\r\n", styles: [""] }]
@@ -12221,7 +12351,7 @@ class RelationProductInputComponent {
12221
12351
  }
12222
12352
  }
12223
12353
  RelationProductInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationProductInputComponent, deps: [{ token: ModalService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component });
12224
- RelationProductInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationProductInputComponent, selector: "vdr-relation-product-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectProduct()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"library\"\r\n [entity]=\"product$ | async\"\r\n [selectLabel]=\"'catalog.select-product' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-product=\"entity\">\r\n <img *ngIf=\"product.featuredAsset\" [src]=\"product.featuredAsset | assetPreview: 'tiny'\" />\r\n <div class=\"placeholder\" *ngIf=\"!product.featuredAsset\">\r\n <clr-icon shape=\"image\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-product=\"entity\">\r\n <a [routerLink]=\"['/catalog/products', product.id]\">{{ product.name }}</a>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img [src]=\"item.featuredAsset | assetPreview: 32\" />\r\n {{ item.name }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [".placeholder{color:var(--color-grey-300)}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12354
+ RelationProductInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationProductInputComponent, selector: "vdr-relation-product-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectProduct()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"library\"\r\n [entity]=\"product$ | async\"\r\n [selectLabel]=\"'catalog.select-product' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-product=\"entity\">\r\n <img *ngIf=\"product.featuredAsset\" [src]=\"product.featuredAsset | assetPreview: 'tiny'\" />\r\n <div class=\"placeholder\" *ngIf=\"!product.featuredAsset\">\r\n <clr-icon shape=\"image\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-product=\"entity\">\r\n <a [routerLink]=\"['/catalog/products', product.id]\">{{ product.name }}</a>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img [src]=\"item.featuredAsset | assetPreview: 32\" />\r\n {{ item.name }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [".placeholder{color:var(--color-grey-300)}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12225
12355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationProductInputComponent, decorators: [{
12226
12356
  type: Component,
12227
12357
  args: [{ selector: 'vdr-relation-product-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-relation-card\r\n (select)=\"selectProduct()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"library\"\r\n [entity]=\"product$ | async\"\r\n [selectLabel]=\"'catalog.select-product' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-product=\"entity\">\r\n <img *ngIf=\"product.featuredAsset\" [src]=\"product.featuredAsset | assetPreview: 'tiny'\" />\r\n <div class=\"placeholder\" *ngIf=\"!product.featuredAsset\">\r\n <clr-icon shape=\"image\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-product=\"entity\">\r\n <a [routerLink]=\"['/catalog/products', product.id]\">{{ product.name }}</a>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img [src]=\"item.featuredAsset | assetPreview: 32\" />\r\n {{ item.name }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [".placeholder{color:var(--color-grey-300)}\n"] }]
@@ -12276,7 +12406,7 @@ class RelationCustomerInputComponent {
12276
12406
  }
12277
12407
  }
12278
12408
  RelationCustomerInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationCustomerInputComponent, deps: [{ token: ModalService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component });
12279
- RelationCustomerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationCustomerInputComponent, selector: "vdr-relation-customer-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectCustomer()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"user\"\r\n [entity]=\"customer\"\r\n [selectLabel]=\"'customer.select-customer' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"user\" class=\"is-solid\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-c=\"entity\">\r\n <div class=\"\">\r\n <a [routerLink]=\"['/customer/customers', c.id]\">{{ c.firstName }} {{ c.lastName }}</a>\r\n </div>\r\n <div class=\"\">{{ c.emailAddress }}</div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <b>{{ item.emailAddress }}</b>\r\n {{ item.firstName }} {{ item.lastName }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [""], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "translate": i4.TranslatePipe, "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12409
+ RelationCustomerInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationCustomerInputComponent, selector: "vdr-relation-customer-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectCustomer()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"user\"\r\n [entity]=\"customer\"\r\n [selectLabel]=\"'customer.select-customer' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"user\" class=\"is-solid\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-c=\"entity\">\r\n <div class=\"\">\r\n <a [routerLink]=\"['/customer/customers', c.id]\">{{ c.firstName }} {{ c.lastName }}</a>\r\n </div>\r\n <div class=\"\">{{ c.emailAddress }}</div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <b>{{ item.emailAddress }}</b>\r\n {{ item.firstName }} {{ item.lastName }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [""], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "translate": i7.TranslatePipe, "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12280
12410
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationCustomerInputComponent, decorators: [{
12281
12411
  type: Component,
12282
12412
  args: [{ selector: 'vdr-relation-customer-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-relation-card\r\n (select)=\"selectCustomer()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"user\"\r\n [entity]=\"customer\"\r\n [selectLabel]=\"'customer.select-customer' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"user\" class=\"is-solid\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-c=\"entity\">\r\n <div class=\"\">\r\n <a [routerLink]=\"['/customer/customers', c.id]\">{{ c.firstName }} {{ c.lastName }}</a>\r\n </div>\r\n <div class=\"\">{{ c.emailAddress }}</div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <b>{{ item.emailAddress }}</b>\r\n {{ item.firstName }} {{ item.lastName }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [""] }]
@@ -12349,7 +12479,7 @@ class RelationProductVariantInputComponent {
12349
12479
  }
12350
12480
  }
12351
12481
  RelationProductVariantInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationProductVariantInputComponent, deps: [{ token: ModalService }, { token: DataService }], target: i0.ɵɵFactoryTarget.Component });
12352
- RelationProductVariantInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationProductVariantInputComponent, selector: "vdr-relation-product-variant-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectProductVariant()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"library\"\r\n [entity]=\"productVariant$ | async\"\r\n [selectLabel]=\"'catalog.select-product-variant' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-variant=\"entity\">\r\n <img\r\n *ngIf=\"variant.featuredAsset || variant.product.featuredAsset as asset; else placeholder\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n />\r\n <ng-template #placeholder>\r\n <div class=\"placeholder\" *ngIf=\"!variant.featuredAsset\">\r\n <clr-icon shape=\"image\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-variant=\"entity\">\r\n <a [routerLink]=\"['/catalog/products', variant.product.id, { tab: 'variants' }]\">{{ variant.name }}</a>\r\n <div class=\"\">{{ variant.sku }}</div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img\r\n *ngIf=\"item.featuredAsset || item.product.featuredAsset as asset\"\r\n [src]=\"asset | assetPreview: 32\"\r\n />\r\n {{ item.name }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [".placeholder{color:var(--color-grey-300)}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12482
+ RelationProductVariantInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationProductVariantInputComponent, selector: "vdr-relation-product-variant-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectProductVariant()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"library\"\r\n [entity]=\"productVariant$ | async\"\r\n [selectLabel]=\"'catalog.select-product-variant' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-variant=\"entity\">\r\n <img\r\n *ngIf=\"variant.featuredAsset || variant.product.featuredAsset as asset; else placeholder\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n />\r\n <ng-template #placeholder>\r\n <div class=\"placeholder\" *ngIf=\"!variant.featuredAsset\">\r\n <clr-icon shape=\"image\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-variant=\"entity\">\r\n <a [routerLink]=\"['/catalog/products', variant.product.id, { tab: 'variants' }]\">{{ variant.name }}</a>\r\n <div class=\"\">{{ variant.sku }}</div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img\r\n *ngIf=\"item.featuredAsset || item.product.featuredAsset as asset\"\r\n [src]=\"asset | assetPreview: 32\"\r\n />\r\n {{ item.name }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [".placeholder{color:var(--color-grey-300)}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe, "assetPreview": AssetPreviewPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12353
12483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationProductVariantInputComponent, decorators: [{
12354
12484
  type: Component,
12355
12485
  args: [{ selector: 'vdr-relation-product-variant-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-relation-card\r\n (select)=\"selectProductVariant()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"library\"\r\n [entity]=\"productVariant$ | async\"\r\n [selectLabel]=\"'catalog.select-product-variant' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n <ng-template vdrRelationCardPreview let-variant=\"entity\">\r\n <img\r\n *ngIf=\"variant.featuredAsset || variant.product.featuredAsset as asset; else placeholder\"\r\n [src]=\"asset | assetPreview: 'tiny'\"\r\n />\r\n <ng-template #placeholder>\r\n <div class=\"placeholder\" *ngIf=\"!variant.featuredAsset\">\r\n <clr-icon shape=\"image\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-variant=\"entity\">\r\n <a [routerLink]=\"['/catalog/products', variant.product.id, { tab: 'variants' }]\">{{ variant.name }}</a>\r\n <div class=\"\">{{ variant.sku }}</div>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <ng-select [items]=\"results$ | async\" [typeahead]=\"searchTerm$\" appendTo=\"body\" (change)=\"select($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <img\r\n *ngIf=\"item.featuredAsset || item.product.featuredAsset as asset\"\r\n [src]=\"asset | assetPreview: 32\"\r\n />\r\n {{ item.name }}\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n", styles: [".placeholder{color:var(--color-grey-300)}\n"] }]
@@ -12442,7 +12572,7 @@ class RelationGenericInputComponent {
12442
12572
  }
12443
12573
  }
12444
12574
  RelationGenericInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationGenericInputComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
12445
- RelationGenericInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationGenericInputComponent, selector: "vdr-relation-generic-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectRelationId()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"objects\"\r\n [entity]=\"parentFormControl.value\"\r\n [selectLabel]=\"'common.select-relation-id' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n {{ parentFormControl.value | json }}\r\n <ng-template vdrRelationCardPreview>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"objects\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-entity=\"entity\">\r\n <div class=\"\">\r\n {{ config.entity }}: <strong>{{ entity.id }}</strong>\r\n </div>\r\n <vdr-object-tree [value]=\"{ properties: parentFormControl.value }\"></vdr-object-tree>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <div class=\"id-select-wrapper\">\r\n <clr-input-container>\r\n <input [(ngModel)]=\"relationId\" type=\"text\" clrInput [readonly]=\"readonly\" />\r\n </clr-input-container>\r\n <div>\r\n <button class=\"btn btn-primary m0\" (click)=\"select(relationId)\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".id-select-wrapper{display:flex;align-items:flex-end}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { type: i1$3.ClrInputContainer, selector: "clr-input-container" }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i4.TranslatePipe, "json": i3.JsonPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12575
+ RelationGenericInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RelationGenericInputComponent, selector: "vdr-relation-generic-input", inputs: { readonly: "readonly", parentFormControl: "parentFormControl", config: "config" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["selector"], descendants: true }], ngImport: i0, template: "<vdr-relation-card\r\n (select)=\"selectRelationId()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"objects\"\r\n [entity]=\"parentFormControl.value\"\r\n [selectLabel]=\"'common.select-relation-id' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n {{ parentFormControl.value | json }}\r\n <ng-template vdrRelationCardPreview>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"objects\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-entity=\"entity\">\r\n <div class=\"\">\r\n {{ config.entity }}: <strong>{{ entity.id }}</strong>\r\n </div>\r\n <vdr-object-tree [value]=\"{ properties: parentFormControl.value }\"></vdr-object-tree>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <div class=\"id-select-wrapper\">\r\n <clr-input-container>\r\n <input [(ngModel)]=\"relationId\" type=\"text\" clrInput [readonly]=\"readonly\" />\r\n </clr-input-container>\r\n <div>\r\n <button class=\"btn btn-primary m0\" (click)=\"select(relationId)\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".id-select-wrapper{display:flex;align-items:flex-end}\n"], components: [{ type: RelationCardComponent, selector: "vdr-relation-card", inputs: ["entity", "placeholderIcon", "selectLabel", "readonly", "removable"], outputs: ["select", "remove"] }, { type: ObjectTreeComponent, selector: "vdr-object-tree", inputs: ["value", "isArrayItem"] }, { type: i1$3.ClrInputContainer, selector: "clr-input-container" }], directives: [{ type: RelationCardPreviewDirective, selector: "[vdrRelationCardPreview]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: RelationCardDetailDirective, selector: "[vdrRelationCardDetail]" }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i7.TranslatePipe, "json": i3.JsonPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12446
12576
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RelationGenericInputComponent, decorators: [{
12447
12577
  type: Component,
12448
12578
  args: [{ selector: 'vdr-relation-generic-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-relation-card\r\n (select)=\"selectRelationId()\"\r\n (remove)=\"remove()\"\r\n placeholderIcon=\"objects\"\r\n [entity]=\"parentFormControl.value\"\r\n [selectLabel]=\"'common.select-relation-id' | translate\"\r\n [removable]=\"!config.list\"\r\n [readonly]=\"readonly\"\r\n>\r\n {{ parentFormControl.value | json }}\r\n <ng-template vdrRelationCardPreview>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"objects\" size=\"50\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n <ng-template vdrRelationCardDetail let-entity=\"entity\">\r\n <div class=\"\">\r\n {{ config.entity }}: <strong>{{ entity.id }}</strong>\r\n </div>\r\n <vdr-object-tree [value]=\"{ properties: parentFormControl.value }\"></vdr-object-tree>\r\n </ng-template>\r\n</vdr-relation-card>\r\n\r\n<ng-template #selector let-select=\"select\">\r\n <div class=\"id-select-wrapper\">\r\n <clr-input-container>\r\n <input [(ngModel)]=\"relationId\" type=\"text\" clrInput [readonly]=\"readonly\" />\r\n </clr-input-container>\r\n <div>\r\n <button class=\"btn btn-primary m0\" (click)=\"select(relationId)\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".id-select-wrapper{display:flex;align-items:flex-end}\n"] }]
@@ -12674,7 +12804,7 @@ class ExternalImageDialogComponent {
12674
12804
  }
12675
12805
  }
12676
12806
  ExternalImageDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ExternalImageDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12677
- ExternalImageDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ExternalImageDialogComponent, selector: "vdr-external-image-dialog", ngImport: i0, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n {{ 'editor.insert-image' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"], components: [{ type: i1$3.ClrInputContainer, selector: "clr-input-container" }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$3.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { type: i1$3.ClrLayout, selector: "[clrForm][clrLayout]", inputs: ["clrLayout"] }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12807
+ ExternalImageDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ExternalImageDialogComponent, selector: "vdr-external-image-dialog", ngImport: i0, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n {{ 'editor.insert-image' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"], components: [{ type: i1$3.ClrInputContainer, selector: "clr-input-container" }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$3.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { type: i1$3.ClrLayout, selector: "[clrForm][clrLayout]", inputs: ["clrLayout"] }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12678
12808
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ExternalImageDialogComponent, decorators: [{
12679
12809
  type: Component,
12680
12810
  args: [{ selector: 'vdr-external-image-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n {{ 'editor.insert-image' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"] }]
@@ -12750,7 +12880,7 @@ class LinkDialogComponent {
12750
12880
  }
12751
12881
  }
12752
12882
  LinkDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LinkDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12753
- LinkDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: LinkDialogComponent, selector: "vdr-link-dialog", ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'editor.link-href' | translate\" for=\"href\">\r\n <input id=\"href\" type=\"text\" formControlName=\"href\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'editor.link-title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"remove()\" *ngIf=\"existing\">\r\n <clr-icon shape=\"unlink\"></clr-icon> {{ 'editor.remove-link' | translate }}\r\n </button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid\">\r\n {{ 'editor.set-link' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [""], components: [{ type: FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12883
+ LinkDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: LinkDialogComponent, selector: "vdr-link-dialog", ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'editor.link-href' | translate\" for=\"href\">\r\n <input id=\"href\" type=\"text\" formControlName=\"href\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'editor.link-title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"remove()\" *ngIf=\"existing\">\r\n <clr-icon shape=\"unlink\"></clr-icon> {{ 'editor.remove-link' | translate }}\r\n </button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid\">\r\n {{ 'editor.set-link' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [""], components: [{ type: FormFieldComponent, selector: "vdr-form-field", inputs: ["label", "for", "tooltip", "errors", "readOnlyToggle"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
12754
12884
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LinkDialogComponent, decorators: [{
12755
12885
  type: Component,
12756
12886
  args: [{ selector: 'vdr-link-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'editor.link-href' | translate\" for=\"href\">\r\n <input id=\"href\" type=\"text\" formControlName=\"href\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'editor.link-title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"remove()\" *ngIf=\"existing\">\r\n <clr-icon shape=\"unlink\"></clr-icon> {{ 'editor.remove-link' | translate }}\r\n </button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid\">\r\n {{ 'editor.set-link' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [""] }]
@@ -13553,7 +13683,7 @@ class ActionBarItemsComponent {
13553
13683
  }
13554
13684
  }
13555
13685
  ActionBarItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ActionBarItemsComponent, deps: [{ token: NavBuilderService }, { token: i1$2.ActivatedRoute }, { token: DataService }, { token: NotificationService }], target: i0.ɵɵFactoryTarget.Component });
13556
- ActionBarItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: { locationId: "locationId" }, host: { properties: { "attr.data-location-id": "this.locationId" } }, usesOnChanges: true, ngImport: i0, template: "<vdr-ui-extension-point [locationId]=\"locationId\" api=\"actionBar\" [leftPx]=\"-24\" [topPx]=\"-6\">\r\n <ng-container *ngFor=\"let item of items$ | async\">\r\n <button\r\n *vdrIfPermissions=\"item.requiresPermission\"\r\n [routerLink]=\"getRouterLink(item)\"\r\n [disabled]=\"item.disabled ? (item.disabled | async) : false\"\r\n (click)=\"handleClick($event, item)\"\r\n [ngClass]=\"getButtonStyles(item)\"\r\n >\r\n <clr-icon *ngIf=\"item.icon\" [attr.shape]=\"item.icon\"></clr-icon>\r\n {{ item.label | translate }}\r\n </button>\r\n </ng-container>\r\n</vdr-ui-extension-point>\r\n", styles: [":host{display:inline-block;min-height:36px}\n"], components: [{ type: UiExtensionPointComponent, selector: "vdr-ui-extension-point", inputs: ["locationId", "topPx", "leftPx", "api"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i1$2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
13686
+ ActionBarItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ActionBarItemsComponent, selector: "vdr-action-bar-items", inputs: { locationId: "locationId" }, host: { properties: { "attr.data-location-id": "this.locationId" } }, usesOnChanges: true, ngImport: i0, template: "<vdr-ui-extension-point [locationId]=\"locationId\" api=\"actionBar\" [leftPx]=\"-24\" [topPx]=\"-6\">\r\n <ng-container *ngFor=\"let item of items$ | async\">\r\n <button\r\n *vdrIfPermissions=\"item.requiresPermission\"\r\n [routerLink]=\"getRouterLink(item)\"\r\n [disabled]=\"item.disabled ? (item.disabled | async) : false\"\r\n (click)=\"handleClick($event, item)\"\r\n [ngClass]=\"getButtonStyles(item)\"\r\n >\r\n <clr-icon *ngIf=\"item.icon\" [attr.shape]=\"item.icon\"></clr-icon>\r\n {{ item.label | translate }}\r\n </button>\r\n </ng-container>\r\n</vdr-ui-extension-point>\r\n", styles: [":host{display:inline-block;min-height:36px}\n"], components: [{ type: UiExtensionPointComponent, selector: "vdr-ui-extension-point", inputs: ["locationId", "topPx", "leftPx", "api"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i1$2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "async": i3.AsyncPipe, "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
13557
13687
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ActionBarItemsComponent, decorators: [{
13558
13688
  type: Component,
13559
13689
  args: [{ selector: 'vdr-action-bar-items', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-ui-extension-point [locationId]=\"locationId\" api=\"actionBar\" [leftPx]=\"-24\" [topPx]=\"-6\">\r\n <ng-container *ngFor=\"let item of items$ | async\">\r\n <button\r\n *vdrIfPermissions=\"item.requiresPermission\"\r\n [routerLink]=\"getRouterLink(item)\"\r\n [disabled]=\"item.disabled ? (item.disabled | async) : false\"\r\n (click)=\"handleClick($event, item)\"\r\n [ngClass]=\"getButtonStyles(item)\"\r\n >\r\n <clr-icon *ngIf=\"item.icon\" [attr.shape]=\"item.icon\"></clr-icon>\r\n {{ item.label | translate }}\r\n </button>\r\n </ng-container>\r\n</vdr-ui-extension-point>\r\n", styles: [":host{display:inline-block;min-height:36px}\n"] }]
@@ -13622,7 +13752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
13622
13752
  class AddressFormComponent {
13623
13753
  }
13624
13754
  AddressFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AddressFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13625
- AddressFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AddressFormComponent, selector: "vdr-address-form", inputs: { customFields: "customFields", formGroup: "formGroup", availableCountries: "availableCountries" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <clr-input-container>\r\n <label>{{ 'customer.full-name' | translate }}</label>\r\n <input formControlName=\"fullName\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.street-line-1' | translate }}</label>\r\n <input formControlName=\"streetLine1\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.street-line-2' | translate }}</label>\r\n <input formControlName=\"streetLine2\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.city' | translate }}</label>\r\n <input formControlName=\"city\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.province' | translate }}</label>\r\n <input formControlName=\"province\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.postal-code' | translate }}</label>\r\n <input formControlName=\"postalCode\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.country' | translate }}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" clrInput clrSelect>\r\n <option *ngFor=\"let country of availableCountries\" [value]=\"country.code\">\r\n {{ country.name }}\r\n </option>\r\n </select>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <clr-input-container>\r\n <label>{{ 'customer.phone-number' | translate }}</label>\r\n <input formControlName=\"phoneNumber\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n <section formGroupName=\"customFields\" *ngIf=\"formGroup.get('customFields') as customFieldsGroup\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Address\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsGroup\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n", styles: [""], components: [{ type: i1$3.ClrInputContainer, selector: "clr-input-container" }, { type: TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
13755
+ AddressFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AddressFormComponent, selector: "vdr-address-form", inputs: { customFields: "customFields", formGroup: "formGroup", availableCountries: "availableCountries" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <clr-input-container>\r\n <label>{{ 'customer.full-name' | translate }}</label>\r\n <input formControlName=\"fullName\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.street-line-1' | translate }}</label>\r\n <input formControlName=\"streetLine1\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.street-line-2' | translate }}</label>\r\n <input formControlName=\"streetLine2\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.city' | translate }}</label>\r\n <input formControlName=\"city\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.province' | translate }}</label>\r\n <input formControlName=\"province\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.postal-code' | translate }}</label>\r\n <input formControlName=\"postalCode\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.country' | translate }}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" clrInput clrSelect>\r\n <option *ngFor=\"let country of availableCountries\" [value]=\"country.code\">\r\n {{ country.name }}\r\n </option>\r\n </select>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <clr-input-container>\r\n <label>{{ 'customer.phone-number' | translate }}</label>\r\n <input formControlName=\"phoneNumber\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n <section formGroupName=\"customFields\" *ngIf=\"formGroup.get('customFields') as customFieldsGroup\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Address\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsGroup\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n", styles: [""], components: [{ type: i1$3.ClrInputContainer, selector: "clr-input-container" }, { type: TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$3.ClrInput, selector: "[clrInput]" }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$3.ClrSelect, selector: "[clrSelect]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
13626
13756
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AddressFormComponent, decorators: [{
13627
13757
  type: Component,
13628
13758
  args: [{ selector: 'vdr-address-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"formGroup\">\r\n <clr-input-container>\r\n <label>{{ 'customer.full-name' | translate }}</label>\r\n <input formControlName=\"fullName\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.street-line-1' | translate }}</label>\r\n <input formControlName=\"streetLine1\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.street-line-2' | translate }}</label>\r\n <input formControlName=\"streetLine2\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.city' | translate }}</label>\r\n <input formControlName=\"city\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.province' | translate }}</label>\r\n <input formControlName=\"province\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.postal-code' | translate }}</label>\r\n <input formControlName=\"postalCode\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n </div>\r\n <div class=\"clr-col-md-4\">\r\n <clr-input-container>\r\n <label>{{ 'customer.country' | translate }}</label>\r\n <select name=\"countryCode\" formControlName=\"countryCode\" clrInput clrSelect>\r\n <option *ngFor=\"let country of availableCountries\" [value]=\"country.code\">\r\n {{ country.name }}\r\n </option>\r\n </select>\r\n </clr-input-container>\r\n </div>\r\n </div>\r\n <clr-input-container>\r\n <label>{{ 'customer.phone-number' | translate }}</label>\r\n <input formControlName=\"phoneNumber\" type=\"text\" clrInput/>\r\n </clr-input-container>\r\n <section formGroupName=\"customFields\" *ngIf=\"formGroup.get('customFields') as customFieldsGroup\">\r\n <label>{{ 'common.custom-fields' | translate }}</label>\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Address\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"customFieldsGroup\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n</form>\r\n", styles: [""] }]
@@ -13811,7 +13941,7 @@ ChannelAssignmentControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
13811
13941
  useExisting: ChannelAssignmentControlComponent,
13812
13942
  multi: true,
13813
13943
  },
13814
- ], ngImport: i0, template: "<ng-select\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"multiple\"\r\n [ngModel]=\"value\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [disabled]=\"disabled\"\r\n [compareWith]=\"compareFn\"\r\n (focus)=\"focussed()\"\r\n (change)=\"valueChanged($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> \u00D7 </span>\r\n <vdr-channel-badge [channelCode]=\"item.code\"></vdr-channel-badge>\r\n <span class=\"channel-label\">{{ item.code | channelCodeToLabel | translate }}</span>\r\n </ng-template>\r\n <ng-option *ngFor=\"let item of channels$ | async\" [value]=\"item\" [disabled]=\"channelIsDisabled(item.id)\">\r\n <vdr-channel-badge [channelCode]=\"item.code\"></vdr-channel-badge>\r\n {{ item.code | channelCodeToLabel | translate }}\r\n </ng-option>\r\n</ng-select>\r\n\r\n", styles: [":host{min-width:200px}:host.clr-input{border-bottom:none;padding:0}::ng-deep .ng-value>vdr-channel-badge,::ng-deep .ng-option>vdr-channel-badge{margin-bottom:-1px}::ng-deep .ng-value>vdr-channel-badge{margin-left:6px}.channel-label{margin-right:6px}\n"], components: [{ type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: ChannelBadgeComponent, selector: "vdr-channel-badge", inputs: ["channelCode"] }, { type: i2$1.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i4.TranslatePipe, "channelCodeToLabel": ChannelLabelPipe, "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
13944
+ ], ngImport: i0, template: "<ng-select\r\n appendTo=\"body\"\r\n [addTag]=\"false\"\r\n [multiple]=\"multiple\"\r\n [ngModel]=\"value\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [disabled]=\"disabled\"\r\n [compareWith]=\"compareFn\"\r\n (focus)=\"focussed()\"\r\n (change)=\"valueChanged($event)\"\r\n>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span aria-hidden=\"true\" class=\"ng-value-icon left\" (click)=\"clear(item)\"> \u00D7 </span>\r\n <vdr-channel-badge [channelCode]=\"item.code\"></vdr-channel-badge>\r\n <span class=\"channel-label\">{{ item.code | channelCodeToLabel | translate }}</span>\r\n </ng-template>\r\n <ng-option *ngFor=\"let item of channels$ | async\" [value]=\"item\" [disabled]=\"channelIsDisabled(item.id)\">\r\n <vdr-channel-badge [channelCode]=\"item.code\"></vdr-channel-badge>\r\n {{ item.code | channelCodeToLabel | translate }}\r\n </ng-option>\r\n</ng-select>\r\n\r\n", styles: [":host{min-width:200px}:host.clr-input{border-bottom:none;padding:0}::ng-deep .ng-value>vdr-channel-badge,::ng-deep .ng-option>vdr-channel-badge{margin-bottom:-1px}::ng-deep .ng-value>vdr-channel-badge{margin-left:6px}.channel-label{margin-right:6px}\n"], components: [{ type: i2$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: ChannelBadgeComponent, selector: "vdr-channel-badge", inputs: ["channelCode"] }, { type: i2$1.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }], directives: [{ type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i7.TranslatePipe, "channelCodeToLabel": ChannelLabelPipe, "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
13815
13945
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ChannelAssignmentControlComponent, decorators: [{
13816
13946
  type: Component,
13817
13947
  args: [{ selector: 'vdr-channel-assignment-control', changeDetection: ChangeDetectionStrategy.Default, providers: [
@@ -13990,7 +14120,7 @@ ConfigurableInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0
13990
14120
  useExisting: forwardRef(() => ConfigurableInputComponent),
13991
14121
  multi: true,
13992
14122
  },
13993
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name)\">\r\n <label>{{ getArgDef(arg)?.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:24px}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}\n"], components: [{ type: DynamicFormInputComponent, selector: "vdr-dynamic-form-input", inputs: ["def", "readonly", "control"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "sentenceCase": SentenceCasePipe, "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14123
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name) && getArgDef(arg) as argDef\">\r\n <label class=\"clr-control-label\">{{ argDef.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-help-tooltip\r\n class=\"mr3\"\r\n *ngIf=\"argDef.description\"\r\n [content]=\"argDef.description\"\r\n ></vdr-help-tooltip>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:12px}.operation-inputs .arg-row{display:flex;flex-wrap:wrap;align-items:center}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}\n"], components: [{ type: HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: ["content", "position"] }, { type: DynamicFormInputComponent, selector: "vdr-dynamic-form-input", inputs: ["def", "readonly", "control"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$3.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "sentenceCase": SentenceCasePipe, "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
13994
14124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ConfigurableInputComponent, decorators: [{
13995
14125
  type: Component,
13996
14126
  args: [{ selector: 'vdr-configurable-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -14004,7 +14134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
14004
14134
  useExisting: forwardRef(() => ConfigurableInputComponent),
14005
14135
  multi: true,
14006
14136
  },
14007
- ], template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name)\">\r\n <label>{{ getArgDef(arg)?.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:24px}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}\n"] }]
14137
+ ], template: "<div class=\"card\" *ngIf=\"operation\">\r\n <div class=\"card-block\">{{ interpolateDescription() }}</div>\r\n <div class=\"card-block\" *ngIf=\"operation.args?.length\">\r\n <form [formGroup]=\"form\" *ngIf=\"operation\" class=\"operation-inputs\">\r\n <div *ngFor=\"let arg of operation.args; trackBy: trackByName\" class=\"arg-row\">\r\n <ng-container *ngIf=\"form.get(arg.name) && getArgDef(arg) as argDef\">\r\n <label class=\"clr-control-label\">{{ argDef.label || (arg.name | sentenceCase) }}</label>\r\n <vdr-help-tooltip\r\n class=\"mr3\"\r\n *ngIf=\"argDef.description\"\r\n [content]=\"argDef.description\"\r\n ></vdr-help-tooltip>\r\n <vdr-dynamic-form-input\r\n [def]=\"getArgDef(arg)\"\r\n [readonly]=\"readonly\"\r\n [control]=\"form.get(arg.name)\"\r\n [formControlName]=\"arg.name\"\r\n ></vdr-dynamic-form-input>\r\n </ng-container>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"!readonly && removable\">\r\n <button class=\"btn btn-sm btn-link btn-warning\" (click)=\"remove.emit(operation)\">\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.remove' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;margin-bottom:12px}:host>.card{margin-top:6px}.operation-inputs{padding-top:0}.operation-inputs .arg-row:not(:last-child){margin-bottom:12px}.operation-inputs .arg-row{display:flex;flex-wrap:wrap;align-items:center}.operation-inputs .arg-row label{margin-right:6px}.operation-inputs .hidden{display:none}\n"] }]
14008
14138
  }], propDecorators: { operation: [{
14009
14139
  type: Input
14010
14140
  }], operationDefinition: [{
@@ -14098,7 +14228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
14098
14228
  class CustomerLabelComponent {
14099
14229
  }
14100
14230
  CustomerLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CustomerLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14101
- CustomerLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CustomerLabelComponent, selector: "vdr-customer-label", inputs: { customer: "customer" }, ngImport: i0, template: "<clr-icon shape=\"user\" [class.is-solid]=\"customer\"></clr-icon>\r\n<div *ngIf=\"customer\">\r\n <a [routerLink]=\"['/customer', 'customers', customer.id]\">\r\n {{ customer.firstName }} {{ customer.lastName }}\r\n </a>\r\n</div>\r\n<div *ngIf=\"!customer\">{{ 'common.guest' | translate }}</div>\r\n", styles: [":host{display:flex;align-items:center}clr-icon{margin-right:6px}\n"], directives: [{ type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14231
+ CustomerLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: CustomerLabelComponent, selector: "vdr-customer-label", inputs: { customer: "customer" }, ngImport: i0, template: "<clr-icon shape=\"user\" [class.is-solid]=\"customer\"></clr-icon>\r\n<div *ngIf=\"customer\">\r\n <a [routerLink]=\"['/customer', 'customers', customer.id]\">\r\n {{ customer.firstName }} {{ customer.lastName }}\r\n </a>\r\n</div>\r\n<div *ngIf=\"!customer\">{{ 'common.guest' | translate }}</div>\r\n", styles: [":host{display:flex;align-items:center}clr-icon{margin-right:6px}\n"], directives: [{ type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14102
14232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CustomerLabelComponent, decorators: [{
14103
14233
  type: Component,
14104
14234
  args: [{ selector: 'vdr-customer-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<clr-icon shape=\"user\" [class.is-solid]=\"customer\"></clr-icon>\r\n<div *ngIf=\"customer\">\r\n <a [routerLink]=\"['/customer', 'customers', customer.id]\">\r\n {{ customer.firstName }} {{ customer.lastName }}\r\n </a>\r\n</div>\r\n<div *ngIf=\"!customer\">{{ 'common.guest' | translate }}</div>\r\n", styles: [":host{display:flex;align-items:center}clr-icon{margin-right:6px}\n"] }]
@@ -14136,7 +14266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
14136
14266
  class EmptyPlaceholderComponent {
14137
14267
  }
14138
14268
  EmptyPlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EmptyPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14139
- EmptyPlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: { emptyStateLabel: "emptyStateLabel" }, ngImport: i0, template: "<div class=\"empty-state\">\r\n <clr-icon shape=\"bubble-exclamation\" size=\"64\"></clr-icon>\r\n <div class=\"empty-label\">\r\n <ng-container *ngIf=\"emptyStateLabel; else defaultEmptyLabel\">{{ emptyStateLabel }}</ng-container>\r\n <ng-template #defaultEmptyLabel>{{ 'common.no-results' | translate }}</ng-template>\r\n </div>\r\n</div>\r\n", styles: [".empty-state{text-align:center;padding:60px;color:var(--color-grey-400);width:100%}.empty-state .empty-label{margin-top:12px;font-size:22px}\n"], directives: [{ type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14269
+ EmptyPlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EmptyPlaceholderComponent, selector: "vdr-empty-placeholder", inputs: { emptyStateLabel: "emptyStateLabel" }, ngImport: i0, template: "<div class=\"empty-state\">\r\n <clr-icon shape=\"bubble-exclamation\" size=\"64\"></clr-icon>\r\n <div class=\"empty-label\">\r\n <ng-container *ngIf=\"emptyStateLabel; else defaultEmptyLabel\">{{ emptyStateLabel }}</ng-container>\r\n <ng-template #defaultEmptyLabel>{{ 'common.no-results' | translate }}</ng-template>\r\n </div>\r\n</div>\r\n", styles: [".empty-state{text-align:center;padding:60px;color:var(--color-grey-400);width:100%}.empty-state .empty-label{margin-top:12px;font-size:22px}\n"], directives: [{ type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14140
14270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EmptyPlaceholderComponent, decorators: [{
14141
14271
  type: Component,
14142
14272
  args: [{ selector: 'vdr-empty-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"empty-state\">\r\n <clr-icon shape=\"bubble-exclamation\" size=\"64\"></clr-icon>\r\n <div class=\"empty-label\">\r\n <ng-container *ngIf=\"emptyStateLabel; else defaultEmptyLabel\">{{ emptyStateLabel }}</ng-container>\r\n <ng-template #defaultEmptyLabel>{{ 'common.no-results' | translate }}</ng-template>\r\n </div>\r\n</div>\r\n", styles: [".empty-state{text-align:center;padding:60px;color:var(--color-grey-400);width:100%}.empty-state .empty-label{margin-top:12px;font-size:22px}\n"] }]
@@ -14274,7 +14404,7 @@ class EditNoteDialogComponent {
14274
14404
  }
14275
14405
  }
14276
14406
  EditNoteDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditNoteDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14277
- EditNoteDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EditNoteDialogComponent, selector: "vdr-edit-note-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n {{ 'common.edit-note' | translate }}\r\n</ng-template>\r\n\r\n<textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n<div class=\"visibility-select\" *ngIf=\"displayPrivacyControls\">\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\r\n <label>{{ 'order.note-is-private' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\r\n {{ 'order.note-only-visible-to-administrators' | translate }}\r\n </span>\r\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\r\n {{ 'order.note-visible-to-customer' | translate }}\r\n </span>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\" [disabled]=\"note.length === 0\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".visibility-select{display:flex;justify-content:space-between;align-items:baseline}.visibility-select .public{color:var(--color-warning-500)}.visibility-select .private{color:var(--color-success-500)}textarea.note{width:100%;height:72px;border-radius:3px;margin-right:6px}\n"], components: [{ type: i1$3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14407
+ EditNoteDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: EditNoteDialogComponent, selector: "vdr-edit-note-dialog", ngImport: i0, template: "<ng-template vdrDialogTitle>\r\n {{ 'common.edit-note' | translate }}\r\n</ng-template>\r\n\r\n<textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n<div class=\"visibility-select\" *ngIf=\"displayPrivacyControls\">\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\r\n <label>{{ 'order.note-is-private' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\r\n {{ 'order.note-only-visible-to-administrators' | translate }}\r\n </span>\r\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\r\n {{ 'order.note-visible-to-customer' | translate }}\r\n </span>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\" [disabled]=\"note.length === 0\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".visibility-select{display:flex;justify-content:space-between;align-items:baseline}.visibility-select .public{color:var(--color-warning-500)}.visibility-select .private{color:var(--color-success-500)}textarea.note{width:100%;height:72px;border-radius:3px;margin-right:6px}\n"], components: [{ type: i1$3.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }], directives: [{ type: DialogTitleDirective, selector: "[vdrDialogTitle]" }, { type: FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$3.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: i1$3.ClrLabel, selector: "label", inputs: ["for"] }, { type: DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14278
14408
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: EditNoteDialogComponent, decorators: [{
14279
14409
  type: Component,
14280
14410
  args: [{ selector: 'vdr-edit-note-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template vdrDialogTitle>\r\n {{ 'common.edit-note' | translate }}\r\n</ng-template>\r\n\r\n<textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n<div class=\"visibility-select\" *ngIf=\"displayPrivacyControls\">\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\r\n <label>{{ 'order.note-is-private' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\r\n {{ 'order.note-only-visible-to-administrators' | translate }}\r\n </span>\r\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\r\n {{ 'order.note-visible-to-customer' | translate }}\r\n </span>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\" [disabled]=\"note.length === 0\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".visibility-select{display:flex;justify-content:space-between;align-items:baseline}.visibility-select .public{color:var(--color-warning-500)}.visibility-select .private{color:var(--color-success-500)}textarea.note{width:100%;height:72px;border-radius:3px;margin-right:6px}\n"] }]
@@ -14433,7 +14563,7 @@ class ExtensionHostComponent {
14433
14563
  }
14434
14564
  }
14435
14565
  ExtensionHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ExtensionHostComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i2$2.DomSanitizer }, { token: ExtensionHostService }], target: i0.ɵɵFactoryTarget.Component });
14436
- ExtensionHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ExtensionHostComponent, selector: "vdr-extension-host", providers: [ExtensionHostService], viewQueries: [{ propertyName: "extensionFrame", first: true, predicate: ["extensionFrame"], descendants: true }], ngImport: i0, template: "<ng-template [ngIf]=\"openInIframe\" [ngIfElse]=\"launchExtension\">\r\n <iframe [src]=\"extensionUrl\" #extensionFrame></iframe>\r\n</ng-template>\r\n<ng-template #launchExtension>\r\n <div class=\"launch-button\" [class.launched]=\"extensionWindowIsOpen\">\r\n <div>\r\n <button\r\n class=\"btn btn-lg btn-primary\"\r\n [disabled]=\"extensionWindowIsOpen\"\r\n (click)=\"launchExtensionWindow()\"\r\n >\r\n <clr-icon shape=\"pop-out\"></clr-icon>\r\n {{ 'common.launch-extension' | translate }}\r\n </button>\r\n <h3 class=\"window-hint\" [class.visible]=\"extensionWindowIsOpen\">\r\n {{ 'common.extension-running-in-separate-window' | translate }}\r\n </h3>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: ["iframe{position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;border:none}.launch-button{position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;border:none;padding:24px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;text-align:center}.launch-button.launched{background-color:var(--color-component-bg-300)}.window-hint{visibility:hidden;opacity:0;transition:visibility .3s 0,opacity .3s}.window-hint.visible{visibility:visible;opacity:1;transition:visibility 0,opacity .3s}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
14566
+ ExtensionHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ExtensionHostComponent, selector: "vdr-extension-host", providers: [ExtensionHostService], viewQueries: [{ propertyName: "extensionFrame", first: true, predicate: ["extensionFrame"], descendants: true }], ngImport: i0, template: "<ng-template [ngIf]=\"openInIframe\" [ngIfElse]=\"launchExtension\">\r\n <iframe [src]=\"extensionUrl\" #extensionFrame></iframe>\r\n</ng-template>\r\n<ng-template #launchExtension>\r\n <div class=\"launch-button\" [class.launched]=\"extensionWindowIsOpen\">\r\n <div>\r\n <button\r\n class=\"btn btn-lg btn-primary\"\r\n [disabled]=\"extensionWindowIsOpen\"\r\n (click)=\"launchExtensionWindow()\"\r\n >\r\n <clr-icon shape=\"pop-out\"></clr-icon>\r\n {{ 'common.launch-extension' | translate }}\r\n </button>\r\n <h3 class=\"window-hint\" [class.visible]=\"extensionWindowIsOpen\">\r\n {{ 'common.extension-running-in-separate-window' | translate }}\r\n </h3>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: ["iframe{position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;border:none}.launch-button{position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;border:none;padding:24px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;text-align:center}.launch-button.launched{background-color:var(--color-component-bg-300)}.window-hint{visibility:hidden;opacity:0;transition:visibility .3s 0,opacity .3s}.window-hint.visible{visibility:visible;opacity:1;transition:visibility 0,opacity .3s}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.Default });
14437
14567
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ExtensionHostComponent, decorators: [{
14438
14568
  type: Component,
14439
14569
  args: [{ selector: 'vdr-extension-host', changeDetection: ChangeDetectionStrategy.Default, providers: [ExtensionHostService], template: "<ng-template [ngIf]=\"openInIframe\" [ngIfElse]=\"launchExtension\">\r\n <iframe [src]=\"extensionUrl\" #extensionFrame></iframe>\r\n</ng-template>\r\n<ng-template #launchExtension>\r\n <div class=\"launch-button\" [class.launched]=\"extensionWindowIsOpen\">\r\n <div>\r\n <button\r\n class=\"btn btn-lg btn-primary\"\r\n [disabled]=\"extensionWindowIsOpen\"\r\n (click)=\"launchExtensionWindow()\"\r\n >\r\n <clr-icon shape=\"pop-out\"></clr-icon>\r\n {{ 'common.launch-extension' | translate }}\r\n </button>\r\n <h3 class=\"window-hint\" [class.visible]=\"extensionWindowIsOpen\">\r\n {{ 'common.extension-running-in-separate-window' | translate }}\r\n </h3>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: ["iframe{position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;border:none}.launch-button{position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;border:none;padding:24px;display:flex;align-items:center;justify-content:center;transition:background-color .3s;text-align:center}.launch-button.launched{background-color:var(--color-component-bg-300)}.window-hint{visibility:hidden;opacity:0;transition:visibility .3s 0,opacity .3s}.window-hint.visible{visibility:visible;opacity:1;transition:visibility 0,opacity .3s}\n"] }]
@@ -14493,7 +14623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
14493
14623
  class HistoryEntryDetailComponent {
14494
14624
  }
14495
14625
  HistoryEntryDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HistoryEntryDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14496
- HistoryEntryDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HistoryEntryDetailComponent, selector: "vdr-history-entry-detail", ngImport: i0, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link btn-sm details-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\" size=\"12\"></clr-icon>\r\n {{ 'common.details' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"entry-dropdown\">\r\n <ng-content></ng-content>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [".entry-dropdown{margin:0 12px}.details-button{margin:0}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14626
+ HistoryEntryDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: HistoryEntryDetailComponent, selector: "vdr-history-entry-detail", ngImport: i0, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link btn-sm details-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\" size=\"12\"></clr-icon>\r\n {{ 'common.details' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"entry-dropdown\">\r\n <ng-content></ng-content>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [".entry-dropdown{margin:0 12px}.details-button{margin:0}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14497
14627
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: HistoryEntryDetailComponent, decorators: [{
14498
14628
  type: Component,
14499
14629
  args: [{ selector: 'vdr-history-entry-detail', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-dropdown>\r\n <button class=\"btn btn-link btn-sm details-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"details\" size=\"12\"></clr-icon>\r\n {{ 'common.details' | translate }}\r\n </button>\r\n <vdr-dropdown-menu>\r\n <div class=\"entry-dropdown\">\r\n <ng-content></ng-content>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n", styles: [".entry-dropdown{margin:0 12px}.details-button{margin:0}\n"] }]
@@ -14506,7 +14636,7 @@ class LanguageSelectorComponent {
14506
14636
  }
14507
14637
  }
14508
14638
  LanguageSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LanguageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14509
- LanguageSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: LanguageSelectorComponent, selector: "vdr-language-selector", inputs: { currentLanguageCode: "currentLanguageCode", availableLanguageCodes: "availableLanguageCodes", disabled: "disabled" }, outputs: { languageCodeChange: "languageCodeChange" }, ngImport: i0, template: "<ng-container *ngIf=\"1 < availableLanguageCodes?.length\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-sm btn-link\" vdrDropdownTrigger [disabled]=\"disabled\">\r\n <clr-icon shape=\"world\"></clr-icon>\r\n {{ 'common.language' | translate }}: {{ currentLanguageCode | localeLanguageName | uppercase }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let code of availableLanguageCodes\"\r\n (click)=\"languageCodeChange.emit(code)\"\r\n vdrDropdownItem\r\n >\r\n {{ code | localeLanguageName }} <span class=\"code\">{{ code }}</span>\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-container>\r\n", styles: [".code{color:var(--color-grey-400)}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }], pipes: { "translate": i4.TranslatePipe, "uppercase": i3.UpperCasePipe, "localeLanguageName": LocaleLanguageNamePipe } });
14639
+ LanguageSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: LanguageSelectorComponent, selector: "vdr-language-selector", inputs: { currentLanguageCode: "currentLanguageCode", availableLanguageCodes: "availableLanguageCodes", disabled: "disabled" }, outputs: { languageCodeChange: "languageCodeChange" }, ngImport: i0, template: "<ng-container *ngIf=\"1 < availableLanguageCodes?.length\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-sm btn-link\" vdrDropdownTrigger [disabled]=\"disabled\">\r\n <clr-icon shape=\"world\"></clr-icon>\r\n {{ 'common.language' | translate }}: {{ currentLanguageCode | localeLanguageName | uppercase }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let code of availableLanguageCodes\"\r\n (click)=\"languageCodeChange.emit(code)\"\r\n vdrDropdownItem\r\n >\r\n {{ code | localeLanguageName }} <span class=\"code\">{{ code }}</span>\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-container>\r\n", styles: [".code{color:var(--color-grey-400)}\n"], components: [{ type: DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DropdownItemDirective, selector: "[vdrDropdownItem]" }], pipes: { "translate": i7.TranslatePipe, "uppercase": i3.UpperCasePipe, "localeLanguageName": LocaleLanguageNamePipe } });
14510
14640
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: LanguageSelectorComponent, decorators: [{
14511
14641
  type: Component,
14512
14642
  args: [{ selector: 'vdr-language-selector', template: "<ng-container *ngIf=\"1 < availableLanguageCodes?.length\">\r\n <vdr-dropdown>\r\n <button type=\"button\" class=\"btn btn-sm btn-link\" vdrDropdownTrigger [disabled]=\"disabled\">\r\n <clr-icon shape=\"world\"></clr-icon>\r\n {{ 'common.language' | translate }}: {{ currentLanguageCode | localeLanguageName | uppercase }}\r\n <clr-icon shape=\"caret down\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let code of availableLanguageCodes\"\r\n (click)=\"languageCodeChange.emit(code)\"\r\n vdrDropdownItem\r\n >\r\n {{ code | localeLanguageName }} <span class=\"code\">{{ code }}</span>\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-container>\r\n", styles: [".code{color:var(--color-grey-400)}\n"] }]
@@ -14598,7 +14728,7 @@ class OrderStateLabelComponent {
14598
14728
  }
14599
14729
  }
14600
14730
  OrderStateLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: OrderStateLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14601
- OrderStateLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: { state: "state" }, ngImport: i0, template: "<vdr-chip [ngClass]=\"state\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"success-standard\" *ngIf=\"state === 'Delivered'\" size=\"12\"></clr-icon>\r\n <clr-icon shape=\"success-standard\" *ngIf=\"state === 'PartiallyDelivered'\" size=\"12\"></clr-icon>\r\n <clr-icon shape=\"ban\" *ngIf=\"state === 'Cancelled'\" size=\"12\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n <ng-content></ng-content>\r\n</vdr-chip>\r\n", styles: ["clr-icon{margin-right:3px}\n"], components: [{ type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe, "stateI18nToken": StateI18nTokenPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14731
+ OrderStateLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: OrderStateLabelComponent, selector: "vdr-order-state-label", inputs: { state: "state" }, ngImport: i0, template: "<vdr-chip [ngClass]=\"state\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"success-standard\" *ngIf=\"state === 'Delivered'\" size=\"12\"></clr-icon>\r\n <clr-icon shape=\"success-standard\" *ngIf=\"state === 'PartiallyDelivered'\" size=\"12\"></clr-icon>\r\n <clr-icon shape=\"ban\" *ngIf=\"state === 'Cancelled'\" size=\"12\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n <ng-content></ng-content>\r\n</vdr-chip>\r\n", styles: ["clr-icon{margin-right:3px}\n"], components: [{ type: ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe, "stateI18nToken": StateI18nTokenPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14602
14732
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: OrderStateLabelComponent, decorators: [{
14603
14733
  type: Component,
14604
14734
  args: [{ selector: 'vdr-order-state-label', changeDetection: ChangeDetectionStrategy.OnPush, template: "<vdr-chip [ngClass]=\"state\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"success-standard\" *ngIf=\"state === 'Delivered'\" size=\"12\"></clr-icon>\r\n <clr-icon shape=\"success-standard\" *ngIf=\"state === 'PartiallyDelivered'\" size=\"12\"></clr-icon>\r\n <clr-icon shape=\"ban\" *ngIf=\"state === 'Cancelled'\" size=\"12\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n <ng-content></ng-content>\r\n</vdr-chip>\r\n", styles: ["clr-icon{margin-right:3px}\n"] }]
@@ -14677,7 +14807,7 @@ class TimelineEntryComponent {
14677
14807
  }
14678
14808
  }
14679
14809
  TimelineEntryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TimelineEntryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14680
- TimelineEntryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TimelineEntryComponent, selector: "vdr-timeline-entry", inputs: { displayType: "displayType", createdAt: "createdAt", name: "name", featured: "featured", iconShape: "iconShape", isLast: "isLast", collapsed: "collapsed" }, outputs: { expandClick: "expandClick" }, host: { properties: { "class.collapsed": "this.collapsed" } }, ngImport: i0, template: "<div\r\n [ngClass]=\"displayType\"\r\n [class.has-custom-icon]=\"!!iconShape\"\r\n class=\"entry\"\r\n [class.last]=\"isLast === true\"\r\n [class.collapsed]=\"collapsed\"\r\n>\r\n <div class=\"timeline\" (click)=\"expandClick.emit()\" [title]=\"timelineTitle | translate\">\r\n <div class=\"custom-icon\">\r\n <clr-icon\r\n *ngIf=\"iconShape && !collapsed\"\r\n [attr.shape]=\"getIconShape()\"\r\n [ngClass]=\"getIconClass()\"\r\n size=\"24\"\r\n ></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"entry-body\">\r\n <div class=\"detail\">\r\n <div class=\"time\">\r\n {{ createdAt | localeDate: 'short' }}\r\n </div>\r\n <div class=\"name\">\r\n {{ name }}\r\n </div>\r\n </div>\r\n <div [class.featured-entry]=\"featured\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block}:host:first-of-type .timeline:before{border-left-color:var(--color-timeline-thread)}:host:first-of-type .entry-body{max-height:initial}.entry{display:flex}.timeline{border-left:2px solid var(--color-timeline-thread);padding-bottom:8px;position:relative}.timeline:before{content:\"\";position:absolute;width:2px;height:32px;left:-2px;border-left:2px solid var(--color-timeline-thread)}.timeline:after{content:\"\";display:block;border-radius:50%;width:8px;height:8px;background-color:var(--color-component-bg-200);border:1px solid var(--color-component-border-300);position:absolute;left:-5px;top:32px;transition:top .2s;cursor:pointer}.timeline .custom-icon{position:absolute;width:32px;height:32px;left:-17px;top:32px;align-items:center;justify-content:center;border-radius:50%;color:var(--color-primary-600);background-color:var(--color-component-bg-100);border:1px solid var(--color-component-border-200);display:none}.entry.has-custom-icon .timeline:after{display:none}.entry.has-custom-icon .custom-icon{display:flex}.entry.last .timeline{border-left-color:transparent}.entry-body{flex:1;padding-top:24px;padding-left:12px;line-height:16px;margin-left:12px;color:var(--color-text-200);overflow:visible;max-height:100px;transition:max-height .2s,padding-top .2s,opacity .2s .2s}.featured-entry ::ng-deep .title{color:var(--color-text-100);font-size:16px;line-height:26px}.featured-entry ::ng-deep .note-text{color:var(--color-text-100);white-space:pre-wrap}.detail{display:flex;color:var(--color-text-300);font-size:12px}.detail .name{margin-left:12px}.muted .timeline,.muted .timeline .custom-icon{color:var(--color-text-300)}.success .timeline,.success .timeline .custom-icon{color:var(--color-success-400)}.success .timeline:after{background-color:var(--color-success-200);border:1px solid var(--color-success-400)}.error .timeline,.error .timeline .custom-icon{color:var(--color-error-400)}.error .timeline:after{background-color:var(--color-error-200);border:1px solid var(--color-error-400)}.warning .timeline,.warning .timeline .custom-icon{color:var(--color-warning-400)}.warning .timeline:after{background-color:var(--color-warning-200);border:1px solid var(--color-warning-400)}.collapsed .entry-body{max-height:0;overflow:hidden;opacity:0;padding-top:0}.collapsed .timeline{border-left-color:transparent}.collapsed .timeline:after{top:0}\n"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i4.TranslatePipe, "localeDate": LocaleDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14810
+ TimelineEntryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: TimelineEntryComponent, selector: "vdr-timeline-entry", inputs: { displayType: "displayType", createdAt: "createdAt", name: "name", featured: "featured", iconShape: "iconShape", isLast: "isLast", collapsed: "collapsed" }, outputs: { expandClick: "expandClick" }, host: { properties: { "class.collapsed": "this.collapsed" } }, ngImport: i0, template: "<div\r\n [ngClass]=\"displayType\"\r\n [class.has-custom-icon]=\"!!iconShape\"\r\n class=\"entry\"\r\n [class.last]=\"isLast === true\"\r\n [class.collapsed]=\"collapsed\"\r\n>\r\n <div class=\"timeline\" (click)=\"expandClick.emit()\" [title]=\"timelineTitle | translate\">\r\n <div class=\"custom-icon\">\r\n <clr-icon\r\n *ngIf=\"iconShape && !collapsed\"\r\n [attr.shape]=\"getIconShape()\"\r\n [ngClass]=\"getIconClass()\"\r\n size=\"24\"\r\n ></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"entry-body\">\r\n <div class=\"detail\">\r\n <div class=\"time\">\r\n {{ createdAt | localeDate: 'short' }}\r\n </div>\r\n <div class=\"name\">\r\n {{ name }}\r\n </div>\r\n </div>\r\n <div [class.featured-entry]=\"featured\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block}:host:first-of-type .timeline:before{border-left-color:var(--color-timeline-thread)}:host:first-of-type .entry-body{max-height:initial}.entry{display:flex}.timeline{border-left:2px solid var(--color-timeline-thread);padding-bottom:8px;position:relative}.timeline:before{content:\"\";position:absolute;width:2px;height:32px;left:-2px;border-left:2px solid var(--color-timeline-thread)}.timeline:after{content:\"\";display:block;border-radius:50%;width:8px;height:8px;background-color:var(--color-component-bg-200);border:1px solid var(--color-component-border-300);position:absolute;left:-5px;top:32px;transition:top .2s;cursor:pointer}.timeline .custom-icon{position:absolute;width:32px;height:32px;left:-17px;top:32px;align-items:center;justify-content:center;border-radius:50%;color:var(--color-primary-600);background-color:var(--color-component-bg-100);border:1px solid var(--color-component-border-200);display:none}.entry.has-custom-icon .timeline:after{display:none}.entry.has-custom-icon .custom-icon{display:flex}.entry.last .timeline{border-left-color:transparent}.entry-body{flex:1;padding-top:24px;padding-left:12px;line-height:16px;margin-left:12px;color:var(--color-text-200);overflow:visible;max-height:100px;transition:max-height .2s,padding-top .2s,opacity .2s .2s}.featured-entry ::ng-deep .title{color:var(--color-text-100);font-size:16px;line-height:26px}.featured-entry ::ng-deep .note-text{color:var(--color-text-100);white-space:pre-wrap}.detail{display:flex;color:var(--color-text-300);font-size:12px}.detail .name{margin-left:12px}.muted .timeline,.muted .timeline .custom-icon{color:var(--color-text-300)}.success .timeline,.success .timeline .custom-icon{color:var(--color-success-400)}.success .timeline:after{background-color:var(--color-success-200);border:1px solid var(--color-success-400)}.error .timeline,.error .timeline .custom-icon{color:var(--color-error-400)}.error .timeline:after{background-color:var(--color-error-200);border:1px solid var(--color-error-400)}.warning .timeline,.warning .timeline .custom-icon{color:var(--color-warning-400)}.warning .timeline:after{background-color:var(--color-warning-200);border:1px solid var(--color-warning-400)}.collapsed .entry-body{max-height:0;overflow:hidden;opacity:0;padding-top:0}.collapsed .timeline{border-left-color:transparent}.collapsed .timeline:after{top:0}\n"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ClrIconCustomTag, selector: "clr-icon" }], pipes: { "translate": i7.TranslatePipe, "localeDate": LocaleDatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
14681
14811
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TimelineEntryComponent, decorators: [{
14682
14812
  type: Component,
14683
14813
  args: [{ selector: 'vdr-timeline-entry', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n [ngClass]=\"displayType\"\r\n [class.has-custom-icon]=\"!!iconShape\"\r\n class=\"entry\"\r\n [class.last]=\"isLast === true\"\r\n [class.collapsed]=\"collapsed\"\r\n>\r\n <div class=\"timeline\" (click)=\"expandClick.emit()\" [title]=\"timelineTitle | translate\">\r\n <div class=\"custom-icon\">\r\n <clr-icon\r\n *ngIf=\"iconShape && !collapsed\"\r\n [attr.shape]=\"getIconShape()\"\r\n [ngClass]=\"getIconClass()\"\r\n size=\"24\"\r\n ></clr-icon>\r\n </div>\r\n </div>\r\n <div class=\"entry-body\">\r\n <div class=\"detail\">\r\n <div class=\"time\">\r\n {{ createdAt | localeDate: 'short' }}\r\n </div>\r\n <div class=\"name\">\r\n {{ name }}\r\n </div>\r\n </div>\r\n <div [class.featured-entry]=\"featured\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block}:host:first-of-type .timeline:before{border-left-color:var(--color-timeline-thread)}:host:first-of-type .entry-body{max-height:initial}.entry{display:flex}.timeline{border-left:2px solid var(--color-timeline-thread);padding-bottom:8px;position:relative}.timeline:before{content:\"\";position:absolute;width:2px;height:32px;left:-2px;border-left:2px solid var(--color-timeline-thread)}.timeline:after{content:\"\";display:block;border-radius:50%;width:8px;height:8px;background-color:var(--color-component-bg-200);border:1px solid var(--color-component-border-300);position:absolute;left:-5px;top:32px;transition:top .2s;cursor:pointer}.timeline .custom-icon{position:absolute;width:32px;height:32px;left:-17px;top:32px;align-items:center;justify-content:center;border-radius:50%;color:var(--color-primary-600);background-color:var(--color-component-bg-100);border:1px solid var(--color-component-border-200);display:none}.entry.has-custom-icon .timeline:after{display:none}.entry.has-custom-icon .custom-icon{display:flex}.entry.last .timeline{border-left-color:transparent}.entry-body{flex:1;padding-top:24px;padding-left:12px;line-height:16px;margin-left:12px;color:var(--color-text-200);overflow:visible;max-height:100px;transition:max-height .2s,padding-top .2s,opacity .2s .2s}.featured-entry ::ng-deep .title{color:var(--color-text-100);font-size:16px;line-height:26px}.featured-entry ::ng-deep .note-text{color:var(--color-text-100);white-space:pre-wrap}.detail{display:flex;color:var(--color-text-300);font-size:12px}.detail .name{margin-left:12px}.muted .timeline,.muted .timeline .custom-icon{color:var(--color-text-300)}.success .timeline,.success .timeline .custom-icon{color:var(--color-success-400)}.success .timeline:after{background-color:var(--color-success-200);border:1px solid var(--color-success-400)}.error .timeline,.error .timeline .custom-icon{color:var(--color-error-400)}.error .timeline:after{background-color:var(--color-error-200);border:1px solid var(--color-error-400)}.warning .timeline,.warning .timeline .custom-icon{color:var(--color-warning-400)}.warning .timeline:after{background-color:var(--color-warning-200);border:1px solid var(--color-warning-400)}.collapsed .entry-body{max-height:0;overflow:hidden;opacity:0;padding-top:0}.collapsed .timeline{border-left-color:transparent}.collapsed .timeline:after{top:0}\n"] }]
@@ -15315,7 +15445,7 @@ CoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13
15315
15445
  ThemeSwitcherComponent], imports: [BrowserModule,
15316
15446
  DataModule,
15317
15447
  SharedModule,
15318
- BrowserAnimationsModule, i4.TranslateModule], exports: [SharedModule, OverlayHostComponent] });
15448
+ BrowserAnimationsModule, i7.TranslateModule], exports: [SharedModule, OverlayHostComponent] });
15319
15449
  CoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: CoreModule, providers: [
15320
15450
  { provide: MESSAGE_FORMAT_CONFIG, useFactory: getLocales },
15321
15451
  registerDefaultFormInputs(),
@@ -15830,7 +15960,7 @@ function patchObject(obj, patch) {
15830
15960
  }
15831
15961
 
15832
15962
  // Auto-generated by the set-version.js script.
15833
- const ADMIN_UI_VERSION = '2.0.0-next.2';
15963
+ const ADMIN_UI_VERSION = '2.0.0-next.3';
15834
15964
 
15835
15965
  /**
15836
15966
  * Responsible for registering dashboard widget components and querying for layouts.
@@ -16049,5 +16179,5 @@ function unicodePatternValidator(patternRe) {
16049
16179
  * Generated bundle index. Do not edit.
16050
16180
  */
16051
16181
 
16052
- export { ADDRESS_FRAGMENT, ADD_CUSTOMERS_TO_GROUP, ADD_MANUAL_PAYMENT_TO_ORDER, ADD_MEMBERS_TO_ZONE, ADD_NOTE_TO_CUSTOMER, ADD_NOTE_TO_ORDER, ADD_OPTION_GROUP_TO_PRODUCT, ADD_OPTION_TO_GROUP, ADMINISTRATOR_FRAGMENT, ADMIN_UI_VERSION, ALL_CUSTOM_FIELDS_FRAGMENT, ASSET_FRAGMENT, ASSIGN_PRODUCTS_TO_CHANNEL, ASSIGN_ROLE_TO_ADMINISTRATOR, ASSIGN_VARIANTS_TO_CHANNEL, ATTEMPT_LOGIN, AUTH_REDIRECT_PARAM, ActionBarComponent, ActionBarItemsComponent, ActionBarLeftComponent, ActionBarRightComponent, AddressFormComponent, AdjustmentType, AdministratorDataService, AffixedInputComponent, AppComponent, AppComponentModule, AppShellComponent, AssetFileInputComponent, AssetGalleryComponent, AssetPickerDialogComponent, AssetPreviewComponent, AssetPreviewDialogComponent, AssetPreviewLinksComponent, AssetPreviewPipe, AssetSearchInputComponent, AssetType, AuthDataService, AuthGuard, AuthService, BOOLEAN_CUSTOM_FIELD_FRAGMENT, BaseDataService, BaseDetailComponent, BaseEntityResolver, BaseListComponent, BooleanFormInputComponent, BreadcrumbComponent, CANCEL_JOB, CANCEL_ORDER, CHANNEL_FRAGMENT, COLLECTION_FRAGMENT, CONFIGURABLE_OPERATION_DEF_FRAGMENT, CONFIGURABLE_OPERATION_FRAGMENT, COUNTRY_FRAGMENT, CREATE_ADMINISTRATOR, CREATE_ASSETS, CREATE_CHANNEL, CREATE_COLLECTION, CREATE_COUNTRY, CREATE_CUSTOMER, CREATE_CUSTOMER_ADDRESS, CREATE_CUSTOMER_GROUP, CREATE_FACET, CREATE_FACET_VALUES, CREATE_FULFILLMENT, CREATE_PAYMENT_METHOD, CREATE_PRODUCT, CREATE_PRODUCT_OPTION_GROUP, CREATE_PRODUCT_VARIANTS, CREATE_PROMOTION, CREATE_ROLE, CREATE_SHIPPING_METHOD, CREATE_TAG, CREATE_TAX_CATEGORY, CREATE_TAX_RATE, CREATE_ZONE, CURRENT_USER_FRAGMENT, CUSTOMER_FRAGMENT, CUSTOMER_GROUP_FRAGMENT, CUSTOM_FIELD_CONFIG_FRAGMENT, CanDeactivateDetailGuard, ChannelAssignmentControlComponent, ChannelBadgeComponent, ChannelLabelPipe, ChannelSwitcherComponent, CheckJobsLink, ChipComponent, ClientDataService, CollectionDataService, ComponentRegistryService, ConfigurableInputComponent, CoreModule, CurrencyCode, CurrencyFormInputComponent, CurrencyInputComponent, CustomDetailComponentHostComponent, CustomDetailComponentService, CustomFieldComponentService, CustomFieldControlComponent, CustomFieldLabelPipe, CustomHttpTranslationLoader, CustomerDataService, CustomerGroupFormInputComponent, CustomerLabelComponent, DATE_TIME_CUSTOM_FIELD_FRAGMENT, DELETE_ADMINISTRATOR, DELETE_ASSETS, DELETE_CHANNEL, DELETE_COLLECTION, DELETE_COUNTRY, DELETE_CUSTOMER, DELETE_CUSTOMER_ADDRESS, DELETE_CUSTOMER_GROUP, DELETE_CUSTOMER_NOTE, DELETE_FACET, DELETE_FACET_VALUES, DELETE_ORDER_NOTE, DELETE_PAYMENT_METHOD, DELETE_PRODUCT, DELETE_PRODUCT_VARIANT, DELETE_PROMOTION, DELETE_ROLE, DELETE_SHIPPING_METHOD, DELETE_TAG, DELETE_TAX_CATEGORY, DELETE_TAX_RATE, DELETE_ZONE, DISCOUNT_FRAGMENT, DashboardWidgetService, DataModule, DataService, DataTableColumnComponent, DataTableComponent, DateFormInputComponent, DatetimePickerComponent, DatetimePickerService, DefaultInterceptor, DeletionResult, DialogButtonsDirective, DialogComponentOutletComponent, DialogTitleDirective, DisabledDirective, DropdownComponent, DropdownItemDirective, DropdownMenuComponent, DropdownTriggerDirective, DurationPipe, DynamicFormInputComponent, ERROR_RESULT_FRAGMENT, EditNoteDialogComponent, EmptyPlaceholderComponent, EntityInfoComponent, ErrorCode, ExtensionHostComponent, ExtensionHostConfig, ExtensionHostService, ExternalImageDialogComponent, FACET_VALUE_FRAGMENT, FACET_WITH_VALUES_FRAGMENT, FLOAT_CUSTOM_FIELD_FRAGMENT, FULFILLMENT_FRAGMENT, FacetDataService, FacetValueChipComponent, FacetValueFormInputComponent, FacetValueSelectorComponent, FetchAdapter, FileSizePipe, FocalPointControlComponent, FormFieldComponent, FormFieldControlDirective, FormItemComponent, FormattedAddressComponent, GET_ACTIVE_ADMINISTRATOR, GET_ACTIVE_CHANNEL, GET_ADJUSTMENT_OPERATIONS, GET_ADMINISTRATOR, GET_ADMINISTRATORS, GET_ASSET, GET_ASSET_LIST, GET_AVAILABLE_COUNTRIES, GET_CHANNEL, GET_CHANNELS, GET_CLIENT_STATE, GET_COLLECTION, GET_COLLECTION_CONTENTS, GET_COLLECTION_FILTERS, GET_COLLECTION_LIST, GET_COUNTRY, GET_COUNTRY_LIST, GET_CURRENT_USER, GET_CUSTOMER, GET_CUSTOMER_GROUPS, GET_CUSTOMER_GROUP_WITH_CUSTOMERS, GET_CUSTOMER_HISTORY, GET_CUSTOMER_LIST, GET_FACET_LIST, GET_FACET_WITH_VALUES, GET_GLOBAL_SETTINGS, GET_JOBS_BY_ID, GET_JOBS_LIST, GET_JOB_INFO, GET_JOB_QUEUE_LIST, GET_NEWTORK_STATUS, GET_ORDER, GET_ORDERS_LIST, GET_ORDER_HISTORY, GET_ORDER_SUMMARY, GET_PAYMENT_METHOD, GET_PAYMENT_METHOD_LIST, GET_PAYMENT_METHOD_OPERATIONS, GET_PENDING_SEARCH_INDEX_UPDATES, GET_PRODUCT_LIST, GET_PRODUCT_OPTION_GROUP, GET_PRODUCT_OPTION_GROUPS, GET_PRODUCT_SIMPLE, GET_PRODUCT_VARIANT, GET_PRODUCT_VARIANT_LIST, GET_PRODUCT_VARIANT_LIST_SIMPLE, GET_PRODUCT_VARIANT_OPTIONS, GET_PRODUCT_WITH_VARIANTS, GET_PROMOTION, GET_PROMOTION_LIST, GET_ROLE, GET_ROLES, GET_SERVER_CONFIG, GET_SHIPPING_METHOD, GET_SHIPPING_METHOD_LIST, GET_SHIPPING_METHOD_OPERATIONS, GET_TAG, GET_TAG_LIST, GET_TAX_CATEGORIES, GET_TAX_CATEGORY, GET_TAX_RATE, GET_TAX_RATE_LIST, GET_TAX_RATE_LIST_SIMPLE, GET_UI_STATE, GET_USER_STATUS, GET_ZONE, GET_ZONES, GLOBAL_SETTINGS_FRAGMENT, GlobalFlag, HasPermissionPipe, HealthCheckService, HelpTooltipComponent, HistoryEntryDetailComponent, HistoryEntryType, HttpLoaderFactory, I18nService, INT_CUSTOM_FIELD_FRAGMENT, IfDefaultChannelActiveDirective, IfDirectiveBase, IfMultichannelDirective, IfPermissionsDirective, InjectableTranslateMessageFormatCompiler, ItemsPerPageControlsComponent, JOB_INFO_FRAGMENT, JobQueueService, JobState, JsonEditorFormInputComponent, LOCALE_STRING_CUSTOM_FIELD_FRAGMENT, LOG_OUT, LabeledDataComponent, LanguageCode, LanguageSelectorComponent, LinkDialogComponent, LocalStorageService, LocaleBasePipe, LocaleCurrencyNamePipe, LocaleCurrencyPipe, LocaleDatePipe, LocaleLanguageNamePipe, LocaleRegionNamePipe, LogicalOperator, MODIFY_ORDER, MOVE_COLLECTION, MainNavComponent, ManageTagsDialogComponent, ModalDialogComponent, ModalService, NavBuilderService, NotificationComponent, NotificationService, NumberFormInputComponent, ORDER_ADDRESS_FRAGMENT, ORDER_DETAIL_FRAGMENT, ORDER_FRAGMENT, ORDER_LINE_FRAGMENT, ObjectTreeComponent, OmitTypenameLink, OrderDataService, OrderStateLabelComponent, OverlayHostComponent, OverlayHostService, PAYMENT_METHOD_FRAGMENT, PRODUCT_DETAIL_FRAGMENT, PRODUCT_OPTION_FRAGMENT, PRODUCT_OPTION_GROUP_FRAGMENT, PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT, PRODUCT_SELECTOR_SEARCH, PRODUCT_VARIANT_FRAGMENT, PROMOTION_FRAGMENT, PaginationControlsComponent, PasswordFormInputComponent, PercentageSuffixInputComponent, Permission, ProductDataService, ProductSelectorFormInputComponent, ProductVariantSelectorComponent, PromotionDataService, ProsemirrorService, QueryResult, REFUND_FRAGMENT, REFUND_ORDER, REINDEX, RELATION_CUSTOM_FIELD_FRAGMENT, REMOVE_CUSTOMERS_FROM_GROUP, REMOVE_MEMBERS_FROM_ZONE, REMOVE_OPTION_GROUP_FROM_PRODUCT, REMOVE_PRODUCTS_FROM_CHANNEL, REMOVE_VARIANTS_FROM_CHANNEL, REQUEST_COMPLETED, REQUEST_STARTED, ROLE_FRAGMENT, RUN_PENDING_SEARCH_INDEX_UPDATES, RelationAssetInputComponent, RelationCardComponent, RelationCardDetailDirective, RelationCardPreviewDirective, RelationCustomerInputComponent, RelationFormInputComponent, RelationGenericInputComponent, RelationProductInputComponent, RelationProductVariantInputComponent, RelationSelectorDialogComponent, RichTextEditorComponent, RichTextFormInputComponent, SEARCH_PRODUCTS, SETTLE_PAYMENT, SETTLE_REFUND, SET_ACTIVE_CHANNEL, SET_AS_LOGGED_IN, SET_AS_LOGGED_OUT, SET_CONTENT_LANGUAGE, SET_DISPLAY_UI_EXTENSION_POINTS, SET_UI_LANGUAGE_AND_LOCALE, SET_UI_LOCALE, SET_UI_THEME, SHIPPING_METHOD_FRAGMENT, STRING_CUSTOM_FIELD_FRAGMENT, SelectFormInputComponent, SelectToggleComponent, SentenceCasePipe, ServerConfigService, SettingsDataService, SharedModule, ShippingMethodDataService, SimpleDialogComponent, SingleSearchSelectionModel, SingleSearchSelectionModelFactory, SortOrder, SortPipe, StateI18nTokenPipe, StatusBadgeComponent, StockMovementType, StringToColorPipe, TAG_FRAGMENT, TAX_CATEGORY_FRAGMENT, TAX_RATE_FRAGMENT, TEST_ELIGIBLE_SHIPPING_METHODS, TEST_SHIPPING_METHOD, TEXT_CUSTOM_FIELD_FRAGMENT, TRANSITION_FULFILLMENT_TO_STATE, TRANSITION_ORDER_TO_STATE, TRANSITION_PAYMENT_TO_STATE, TabbedCustomFieldsComponent, TableRowActionComponent, TagSelectorComponent, TextFormInputComponent, TextareaFormInputComponent, ThemeSwitcherComponent, TimeAgoPipe, TimelineEntryComponent, TitleInputComponent, UPDATE_ACTIVE_ADMINISTRATOR, UPDATE_ADMINISTRATOR, UPDATE_ASSET, UPDATE_CHANNEL, UPDATE_COLLECTION, UPDATE_COUNTRY, UPDATE_CUSTOMER, UPDATE_CUSTOMER_ADDRESS, UPDATE_CUSTOMER_GROUP, UPDATE_CUSTOMER_NOTE, UPDATE_FACET, UPDATE_FACET_VALUES, UPDATE_GLOBAL_SETTINGS, UPDATE_ORDER_CUSTOM_FIELDS, UPDATE_ORDER_NOTE, UPDATE_PAYMENT_METHOD, UPDATE_PRODUCT, UPDATE_PRODUCT_OPTION, UPDATE_PRODUCT_OPTION_GROUP, UPDATE_PRODUCT_VARIANTS, UPDATE_PROMOTION, UPDATE_ROLE, UPDATE_SHIPPING_METHOD, UPDATE_TAG, UPDATE_TAX_CATEGORY, UPDATE_TAX_RATE, UPDATE_USER_CHANNELS, UPDATE_ZONE, USER_STATUS_FRAGMENT, UiExtensionPointComponent, UiLanguageSwitcherDialogComponent, UserMenuComponent, ZONE_FRAGMENT, addActionBarItem, addCustomFields, addNavMenuItem, addNavMenuSection, blockQuoteRule, buildInputRules, buildKeymap, buildMenuItems, bulletListRule, canInsert, clientResolvers, codeBlockRule, configurableDefinitionToInstance, configurableOperationValueIsValid, createApollo, createResolveData, createUpdatedTranslatable, dayOfWeekIndex, defaultFormInputs, detailBreadcrumb, encodeConfigArgValue, findTranslation, flattenFacetValues, getAppConfig, getClientDefaults, getConfigArgValue, getDefaultConfigArgValue, getDefaultUiLanguage, getDefaultUiLocale, getLocales, getMarkRange, getServerLocation, headingRule, hostExternalFrame, initializeServerConfigService, insertImageItem, interpolateDescription, result as introspectionResult, isEntityCreateOrUpdateMutation, jsonValidator, linkItem, linkSelectPlugin, loadAppConfig, markActive, orderedListRule, registerCustomDetailComponent, registerCustomFieldComponent, registerDashboardWidget, registerDefaultFormInputs, registerFormInputComponent, removeReadonlyCustomFields, setDashboardWidgetLayout, stringToColor, toConfigurableOperationInput, transformRelationCustomFieldInputs, unicodePatternValidator, weekDayNames };
16182
+ export { ADDRESS_FRAGMENT, ADD_CUSTOMERS_TO_GROUP, ADD_MANUAL_PAYMENT_TO_ORDER, ADD_MEMBERS_TO_ZONE, ADD_NOTE_TO_CUSTOMER, ADD_NOTE_TO_ORDER, ADD_OPTION_GROUP_TO_PRODUCT, ADD_OPTION_TO_GROUP, ADMINISTRATOR_FRAGMENT, ADMIN_UI_VERSION, ALL_CUSTOM_FIELDS_FRAGMENT, ASSET_FRAGMENT, ASSIGN_PRODUCTS_TO_CHANNEL, ASSIGN_ROLE_TO_ADMINISTRATOR, ASSIGN_VARIANTS_TO_CHANNEL, ATTEMPT_LOGIN, AUTH_REDIRECT_PARAM, ActionBarComponent, ActionBarItemsComponent, ActionBarLeftComponent, ActionBarRightComponent, AddressFormComponent, AdjustmentType, AdministratorDataService, AffixedInputComponent, AppComponent, AppComponentModule, AppShellComponent, AssetFileInputComponent, AssetGalleryComponent, AssetPickerDialogComponent, AssetPreviewComponent, AssetPreviewDialogComponent, AssetPreviewLinksComponent, AssetPreviewPipe, AssetSearchInputComponent, AssetType, AuthDataService, AuthGuard, AuthService, BOOLEAN_CUSTOM_FIELD_FRAGMENT, BaseDataService, BaseDetailComponent, BaseEntityResolver, BaseListComponent, BooleanFormInputComponent, BreadcrumbComponent, CANCEL_JOB, CANCEL_ORDER, CHANNEL_FRAGMENT, COLLECTION_FRAGMENT, CONFIGURABLE_OPERATION_DEF_FRAGMENT, CONFIGURABLE_OPERATION_FRAGMENT, COUNTRY_FRAGMENT, CREATE_ADMINISTRATOR, CREATE_ASSETS, CREATE_CHANNEL, CREATE_COLLECTION, CREATE_COUNTRY, CREATE_CUSTOMER, CREATE_CUSTOMER_ADDRESS, CREATE_CUSTOMER_GROUP, CREATE_FACET, CREATE_FACET_VALUES, CREATE_FULFILLMENT, CREATE_PAYMENT_METHOD, CREATE_PRODUCT, CREATE_PRODUCT_OPTION_GROUP, CREATE_PRODUCT_VARIANTS, CREATE_PROMOTION, CREATE_ROLE, CREATE_SHIPPING_METHOD, CREATE_TAG, CREATE_TAX_CATEGORY, CREATE_TAX_RATE, CREATE_ZONE, CURRENT_USER_FRAGMENT, CUSTOMER_FRAGMENT, CUSTOMER_GROUP_FRAGMENT, CUSTOM_FIELD_CONFIG_FRAGMENT, CanDeactivateDetailGuard, ChannelAssignmentControlComponent, ChannelBadgeComponent, ChannelLabelPipe, ChannelSwitcherComponent, CheckJobsLink, ChipComponent, ClientDataService, CollectionDataService, ComponentRegistryService, ConfigurableInputComponent, CoreModule, CurrencyCode, CurrencyFormInputComponent, CurrencyInputComponent, CustomDetailComponentHostComponent, CustomDetailComponentService, CustomFieldComponentService, CustomFieldControlComponent, CustomFieldLabelPipe, CustomHttpTranslationLoader, CustomerDataService, CustomerGroupFormInputComponent, CustomerLabelComponent, DATE_TIME_CUSTOM_FIELD_FRAGMENT, DELETE_ADMINISTRATOR, DELETE_ASSETS, DELETE_CHANNEL, DELETE_COLLECTION, DELETE_COUNTRY, DELETE_CUSTOMER, DELETE_CUSTOMER_ADDRESS, DELETE_CUSTOMER_GROUP, DELETE_CUSTOMER_NOTE, DELETE_FACET, DELETE_FACET_VALUES, DELETE_ORDER_NOTE, DELETE_PAYMENT_METHOD, DELETE_PRODUCT, DELETE_PRODUCT_VARIANT, DELETE_PROMOTION, DELETE_ROLE, DELETE_SHIPPING_METHOD, DELETE_TAG, DELETE_TAX_CATEGORY, DELETE_TAX_RATE, DELETE_ZONE, DISCOUNT_FRAGMENT, DashboardWidgetService, DataModule, DataService, DataTableColumnComponent, DataTableComponent, DateFormInputComponent, DatetimePickerComponent, DatetimePickerService, DefaultInterceptor, DeletionResult, DialogButtonsDirective, DialogComponentOutletComponent, DialogTitleDirective, DisabledDirective, DropdownComponent, DropdownItemDirective, DropdownMenuComponent, DropdownTriggerDirective, DurationPipe, DynamicFormInputComponent, ERROR_RESULT_FRAGMENT, EditNoteDialogComponent, EmptyPlaceholderComponent, EntityInfoComponent, ErrorCode, ExtensionHostComponent, ExtensionHostConfig, ExtensionHostService, ExternalImageDialogComponent, FACET_VALUE_FRAGMENT, FACET_WITH_VALUES_FRAGMENT, FLOAT_CUSTOM_FIELD_FRAGMENT, FULFILLMENT_FRAGMENT, FacetDataService, FacetValueChipComponent, FacetValueFormInputComponent, FacetValueSelectorComponent, FetchAdapter, FileSizePipe, FocalPointControlComponent, FormFieldComponent, FormFieldControlDirective, FormItemComponent, FormattedAddressComponent, GET_ACTIVE_ADMINISTRATOR, GET_ACTIVE_CHANNEL, GET_ADJUSTMENT_OPERATIONS, GET_ADMINISTRATOR, GET_ADMINISTRATORS, GET_ASSET, GET_ASSET_LIST, GET_AVAILABLE_COUNTRIES, GET_CHANNEL, GET_CHANNELS, GET_CLIENT_STATE, GET_COLLECTION, GET_COLLECTION_CONTENTS, GET_COLLECTION_FILTERS, GET_COLLECTION_LIST, GET_COUNTRY, GET_COUNTRY_LIST, GET_CURRENT_USER, GET_CUSTOMER, GET_CUSTOMER_GROUPS, GET_CUSTOMER_GROUP_WITH_CUSTOMERS, GET_CUSTOMER_HISTORY, GET_CUSTOMER_LIST, GET_FACET_LIST, GET_FACET_WITH_VALUES, GET_GLOBAL_SETTINGS, GET_JOBS_BY_ID, GET_JOBS_LIST, GET_JOB_INFO, GET_JOB_QUEUE_LIST, GET_NEWTORK_STATUS, GET_ORDER, GET_ORDERS_LIST, GET_ORDER_HISTORY, GET_ORDER_SUMMARY, GET_PAYMENT_METHOD, GET_PAYMENT_METHOD_LIST, GET_PAYMENT_METHOD_OPERATIONS, GET_PENDING_SEARCH_INDEX_UPDATES, GET_PRODUCT_LIST, GET_PRODUCT_OPTION_GROUP, GET_PRODUCT_OPTION_GROUPS, GET_PRODUCT_SIMPLE, GET_PRODUCT_VARIANT, GET_PRODUCT_VARIANT_LIST, GET_PRODUCT_VARIANT_LIST_SIMPLE, GET_PRODUCT_VARIANT_OPTIONS, GET_PRODUCT_WITH_VARIANTS, GET_PROMOTION, GET_PROMOTION_LIST, GET_ROLE, GET_ROLES, GET_SERVER_CONFIG, GET_SHIPPING_METHOD, GET_SHIPPING_METHOD_LIST, GET_SHIPPING_METHOD_OPERATIONS, GET_TAG, GET_TAG_LIST, GET_TAX_CATEGORIES, GET_TAX_CATEGORY, GET_TAX_RATE, GET_TAX_RATE_LIST, GET_TAX_RATE_LIST_SIMPLE, GET_UI_STATE, GET_USER_STATUS, GET_ZONE, GET_ZONES, GLOBAL_SETTINGS_FRAGMENT, GlobalFlag, HasPermissionPipe, HealthCheckService, HelpTooltipComponent, HistoryEntryDetailComponent, HistoryEntryType, HttpLoaderFactory, I18nService, INT_CUSTOM_FIELD_FRAGMENT, IfDefaultChannelActiveDirective, IfDirectiveBase, IfMultichannelDirective, IfPermissionsDirective, InjectableTranslateMessageFormatCompiler, ItemsPerPageControlsComponent, JOB_INFO_FRAGMENT, JobQueueService, JobState, JsonEditorFormInputComponent, LOCALE_STRING_CUSTOM_FIELD_FRAGMENT, LOG_OUT, LabeledDataComponent, LanguageCode, LanguageSelectorComponent, LinkDialogComponent, LocalStorageService, LocaleBasePipe, LocaleCurrencyNamePipe, LocaleCurrencyPipe, LocaleDatePipe, LocaleLanguageNamePipe, LocaleRegionNamePipe, LogicalOperator, MODIFY_ORDER, MOVE_COLLECTION, MainNavComponent, ManageTagsDialogComponent, ModalDialogComponent, ModalService, NavBuilderService, NotificationComponent, NotificationService, NumberFormInputComponent, ORDER_ADDRESS_FRAGMENT, ORDER_DETAIL_FRAGMENT, ORDER_FRAGMENT, ORDER_LINE_FRAGMENT, ObjectTreeComponent, OmitTypenameLink, OrderDataService, OrderStateLabelComponent, OverlayHostComponent, OverlayHostService, PAYMENT_METHOD_FRAGMENT, PREVIEW_COLLECTION_CONTENTS, PRODUCT_DETAIL_FRAGMENT, PRODUCT_OPTION_FRAGMENT, PRODUCT_OPTION_GROUP_FRAGMENT, PRODUCT_OPTION_GROUP_WITH_OPTIONS_FRAGMENT, PRODUCT_SELECTOR_SEARCH, PRODUCT_VARIANT_FRAGMENT, PROMOTION_FRAGMENT, PaginationControlsComponent, PasswordFormInputComponent, PercentageSuffixInputComponent, Permission, ProductDataService, ProductSelectorFormInputComponent, ProductVariantSelectorComponent, PromotionDataService, ProsemirrorService, QueryResult, REFUND_FRAGMENT, REFUND_ORDER, REINDEX, RELATION_CUSTOM_FIELD_FRAGMENT, REMOVE_CUSTOMERS_FROM_GROUP, REMOVE_MEMBERS_FROM_ZONE, REMOVE_OPTION_GROUP_FROM_PRODUCT, REMOVE_PRODUCTS_FROM_CHANNEL, REMOVE_VARIANTS_FROM_CHANNEL, REQUEST_COMPLETED, REQUEST_STARTED, ROLE_FRAGMENT, RUN_PENDING_SEARCH_INDEX_UPDATES, RelationAssetInputComponent, RelationCardComponent, RelationCardDetailDirective, RelationCardPreviewDirective, RelationCustomerInputComponent, RelationFormInputComponent, RelationGenericInputComponent, RelationProductInputComponent, RelationProductVariantInputComponent, RelationSelectorDialogComponent, RichTextEditorComponent, RichTextFormInputComponent, SEARCH_PRODUCTS, SETTLE_PAYMENT, SETTLE_REFUND, SET_ACTIVE_CHANNEL, SET_AS_LOGGED_IN, SET_AS_LOGGED_OUT, SET_CONTENT_LANGUAGE, SET_DISPLAY_UI_EXTENSION_POINTS, SET_UI_LANGUAGE_AND_LOCALE, SET_UI_LOCALE, SET_UI_THEME, SHIPPING_METHOD_FRAGMENT, STRING_CUSTOM_FIELD_FRAGMENT, SelectFormInputComponent, SelectToggleComponent, SentenceCasePipe, ServerConfigService, SettingsDataService, SharedModule, ShippingMethodDataService, SimpleDialogComponent, SingleSearchSelectionModel, SingleSearchSelectionModelFactory, SortOrder, SortPipe, StateI18nTokenPipe, StatusBadgeComponent, StockMovementType, StringToColorPipe, TAG_FRAGMENT, TAX_CATEGORY_FRAGMENT, TAX_RATE_FRAGMENT, TEST_ELIGIBLE_SHIPPING_METHODS, TEST_SHIPPING_METHOD, TEXT_CUSTOM_FIELD_FRAGMENT, TRANSITION_FULFILLMENT_TO_STATE, TRANSITION_ORDER_TO_STATE, TRANSITION_PAYMENT_TO_STATE, TabbedCustomFieldsComponent, TableRowActionComponent, TagSelectorComponent, TextFormInputComponent, TextareaFormInputComponent, ThemeSwitcherComponent, TimeAgoPipe, TimelineEntryComponent, TitleInputComponent, UPDATE_ACTIVE_ADMINISTRATOR, UPDATE_ADMINISTRATOR, UPDATE_ASSET, UPDATE_CHANNEL, UPDATE_COLLECTION, UPDATE_COUNTRY, UPDATE_CUSTOMER, UPDATE_CUSTOMER_ADDRESS, UPDATE_CUSTOMER_GROUP, UPDATE_CUSTOMER_NOTE, UPDATE_FACET, UPDATE_FACET_VALUES, UPDATE_GLOBAL_SETTINGS, UPDATE_ORDER_CUSTOM_FIELDS, UPDATE_ORDER_NOTE, UPDATE_PAYMENT_METHOD, UPDATE_PRODUCT, UPDATE_PRODUCT_OPTION, UPDATE_PRODUCT_OPTION_GROUP, UPDATE_PRODUCT_VARIANTS, UPDATE_PROMOTION, UPDATE_ROLE, UPDATE_SHIPPING_METHOD, UPDATE_TAG, UPDATE_TAX_CATEGORY, UPDATE_TAX_RATE, UPDATE_USER_CHANNELS, UPDATE_ZONE, USER_STATUS_FRAGMENT, UiExtensionPointComponent, UiLanguageSwitcherDialogComponent, UserMenuComponent, ZONE_FRAGMENT, addActionBarItem, addCustomFields, addNavMenuItem, addNavMenuSection, blockQuoteRule, buildInputRules, buildKeymap, buildMenuItems, bulletListRule, canInsert, clientResolvers, codeBlockRule, configurableDefinitionToInstance, configurableOperationValueIsValid, createApollo, createResolveData, createUpdatedTranslatable, dayOfWeekIndex, defaultFormInputs, detailBreadcrumb, encodeConfigArgValue, findTranslation, flattenFacetValues, getAppConfig, getClientDefaults, getConfigArgValue, getDefaultConfigArgValue, getDefaultUiLanguage, getDefaultUiLocale, getLocales, getMarkRange, getServerLocation, headingRule, hostExternalFrame, initializeServerConfigService, insertImageItem, interpolateDescription, result as introspectionResult, isEntityCreateOrUpdateMutation, jsonValidator, linkItem, linkSelectPlugin, loadAppConfig, markActive, orderedListRule, registerCustomDetailComponent, registerCustomFieldComponent, registerDashboardWidget, registerDefaultFormInputs, registerFormInputComponent, removeReadonlyCustomFields, setDashboardWidgetLayout, stringToColor, toConfigurableOperationInput, transformRelationCustomFieldInputs, unicodePatternValidator, weekDayNames };
16053
16183
  //# sourceMappingURL=vendure-admin-ui-core.mjs.map