@crystaldesign/diva-backoffice 26.12.0-beta.36 → 26.12.0-beta.38

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 (25) hide show
  1. package/build/esm/index.js +151 -98
  2. package/build/types/backoffice/src/tests/unit/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.test.d.ts +2 -0
  3. package/build/types/backoffice/src/tests/unit/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.test.d.ts.map +1 -0
  4. package/build/types/backoffice/src/tests/unit/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/usePriceFactor.test.d.ts +2 -0
  5. package/build/types/backoffice/src/tests/unit/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/usePriceFactor.test.d.ts.map +1 -0
  6. package/build/types/backoffice/src/ui/AssortmentManager/ArticleData/logic/articleColumns.d.ts +2 -1
  7. package/build/types/backoffice/src/ui/AssortmentManager/ArticleData/logic/articleColumns.d.ts.map +1 -1
  8. package/build/types/backoffice/src/ui/AssortmentManager/HeaderData/components/HeaderField/index.d.ts.map +1 -1
  9. package/build/types/backoffice/src/ui/AssortmentManager/HeaderData/components/ItemGroupTable/index.d.ts.map +1 -1
  10. package/build/types/backoffice/src/ui/AssortmentManager/HeaderData/hooks/useDropdownEnumData.d.ts.map +1 -1
  11. package/build/types/backoffice/src/ui/AssortmentManager/HeaderData/logic/itemGroupColumns.d.ts.map +1 -1
  12. package/build/types/backoffice/src/ui/AssortmentManager/config/fields.d.ts +6 -0
  13. package/build/types/backoffice/src/ui/AssortmentManager/config/fields.d.ts.map +1 -1
  14. package/build/types/backoffice/src/ui/AssortmentManager/tests/useDropdownEnumData.test.d.ts +2 -0
  15. package/build/types/backoffice/src/ui/AssortmentManager/tests/useDropdownEnumData.test.d.ts.map +1 -0
  16. package/build/types/backoffice/src/ui/CommonComponents/UploadModal/ErrorDisplay.d.ts.map +1 -1
  17. package/build/types/backoffice/src/ui/CommonComponents/UploadModal/types.d.ts +2 -0
  18. package/build/types/backoffice/src/ui/CommonComponents/UploadModal/types.d.ts.map +1 -1
  19. package/build/types/backoffice/src/ui/CommonComponents/UploadModal/useUploadState.d.ts.map +1 -1
  20. package/build/types/backoffice/src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.d.ts +15 -13
  21. package/build/types/backoffice/src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.d.ts.map +1 -1
  22. package/build/types/backoffice/src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/usePriceFactor.d.ts.map +1 -1
  23. package/build/types/backoffice/src/ui/IDMEnricherEditor/modules/TableEnrichment/index.d.ts.map +1 -1
  24. package/build/types/backoffice/src/ui/IDMEnricherEditor/modules/TableEnrichment/propertyColumn.d.ts.map +1 -1
  25. package/package.json +10 -10
@@ -47006,6 +47006,12 @@ function useUnsavedChanges(dirty, texts) {
47006
47006
  };
47007
47007
  }
47008
47008
 
47009
+ /**
47010
+ * The SAP "X or blank" flag — `dropDownKey: 'X'` is not a key of the dropdownItems collection. Its
47011
+ * list is fixed (the single entry `X`) and served without a request, so the flag fields render as
47012
+ * selects everywhere: the header form and the grids.
47013
+ */
47014
+ var FLAG_DROPDOWN_KEY = 'X';
47009
47015
  var ASSORTMENT_MANAGER_FIELDS = [
47010
47016
  // LOCKED
47011
47017
  {
@@ -48357,6 +48363,12 @@ var LOG$8 = getLogger('Backoffice', 'AssortmentManager');
48357
48363
 
48358
48364
  var PAGE_SIZE$1 = 100;
48359
48365
 
48366
+ /** The fixed list of the SAP flag ({@link FLAG_DROPDOWN_KEY}) — served without a request. */
48367
+ var FLAG_DROPDOWN_ITEMS = [{
48368
+ valueKey: 'X',
48369
+ value: 'X'
48370
+ }];
48371
+
48360
48372
  // the dropdown lists are static per organization — fetch each key once per session, shared by all tabs
48361
48373
  var listCache = new Map();
48362
48374
  function createDropdownApiHandler(root) {
@@ -48562,7 +48574,7 @@ function _loadDropdownLists() {
48562
48574
  return "".concat(root.dataStore.organizationId, ":").concat(key);
48563
48575
  };
48564
48576
  missing = dropdownKeys.filter(function (key) {
48565
- return !listCache.has(cacheKeyOf(key));
48577
+ return key !== FLAG_DROPDOWN_KEY && !listCache.has(cacheKeyOf(key));
48566
48578
  });
48567
48579
  if (!(missing.length > 0)) {
48568
48580
  _context5.next = 20;
@@ -48629,7 +48641,7 @@ function _loadDropdownLists() {
48629
48641
  case 20:
48630
48642
  _context5.next = 22;
48631
48643
  return Promise.all(dropdownKeys.map(function (key) {
48632
- return listCache.get(cacheKeyOf(key));
48644
+ return key === FLAG_DROPDOWN_KEY ? FLAG_DROPDOWN_ITEMS : listCache.get(cacheKeyOf(key));
48633
48645
  }));
48634
48646
  case 22:
48635
48647
  lists = _context5.sent;
@@ -48942,9 +48954,6 @@ var Text$2 = Typography.Text;
48942
48954
  var SAP_DATE_FORMAT$1 = 'YYYYMMDD';
48943
48955
  var DISPLAY_DATE_FORMAT$1 = 'DD.MM.YYYY';
48944
48956
 
48945
- /** The SAP "X or blank" flag — `dropDownKey: 'X'` is not a key of the dropdownItems collection. */
48946
- var FLAG_DROPDOWN_KEY = 'X';
48947
-
48948
48957
  /**
48949
48958
  * SAP dates are stored either as `yyyyMMdd` or as an ISO string, see `SAPCustomData` in diva-pfister-article.
48950
48959
  * Returns undefined for anything unparsable so a broken value does not crash the picker.
@@ -49801,11 +49810,13 @@ function buildItemGroupColDefs(group, enumLists, t) {
49801
49810
  } : {});
49802
49811
  var enumData = field.dropDownKey ? enumLists[field.dropDownKey] : undefined;
49803
49812
  if (enumData && enumData.length > 0) {
49813
+ // the SAP flag's fixed list names the code itself — its cells and options show the bare "X"
49814
+ var displayLabelTemplate = field.dropDownKey === FLAG_DROPDOWN_KEY ? '${value}' : '${name} (${value})';
49804
49815
  return _objectSpread$16(_objectSpread$16({}, base), {}, {
49805
49816
  cellDataType: 'enum',
49806
49817
  customParams: {
49807
49818
  enumData: enumData,
49808
- displayLabelTemplate: '${name} (${value})'
49819
+ displayLabelTemplate: displayLabelTemplate
49809
49820
  }
49810
49821
  });
49811
49822
  }
@@ -49878,11 +49889,11 @@ function ItemGroupTable(_ref) {
49878
49889
  t = _useTranslation.t;
49879
49890
  var root = useStore();
49880
49891
 
49881
- // distinct dropdown lists the visible columns of this group need; the 'X' flag and row-derived
49882
- // (dotted) keys stay plain text, like in the header form
49892
+ // distinct dropdown lists the visible columns of this group need; the 'X' flag is served by the
49893
+ // hook, row-derived (dotted) keys stay plain text, like in the header form
49883
49894
  var dropdownKeys = useMemo(function () {
49884
49895
  return _toConsumableArray(new Set(group.fields.flatMap(function (field) {
49885
- return (level === 'article' ? field.showOnArticle : field.showOnHeaderValues) && field.dropDownKey && field.dropDownKey !== 'X' && !field.dropDownKey.includes('.') ? [field.dropDownKey] : [];
49896
+ return (level === 'article' ? field.showOnArticle : field.showOnHeaderValues) && field.dropDownKey && !field.dropDownKey.includes('.') ? [field.dropDownKey] : [];
49886
49897
  })));
49887
49898
  }, [group, level]);
49888
49899
  var enumLists = useDropdownEnumData(root, dropdownKeys);
@@ -51226,10 +51237,11 @@ var ARTICLE_LANGUAGES = ['de', 'fr', 'it'];
51226
51237
 
51227
51238
  /**
51228
51239
  * Distinct dropdown lists the article columns need — they become the `enumData` of the enum cells.
51229
- * The 'X' flag and row-derived (dotted) keys stay plain text, like on the header page.
51240
+ * The 'X' flag is among them (the hook serves its fixed list); row-derived (dotted) keys stay plain
51241
+ * text, like on the header page.
51230
51242
  */
51231
51243
  var ARTICLE_DROPDOWN_KEYS = _toConsumableArray(new Set(ASSORTMENT_MANAGER_FIELDS.flatMap(function (entry) {
51232
- return entry.type !== 'ITEM_GROUP' && entry.showOnArticle && entry.dropDownKey && entry.dropDownKey !== 'X' && !entry.dropDownKey.includes('.') ? [entry.dropDownKey] : [];
51244
+ return entry.type !== 'ITEM_GROUP' && entry.showOnArticle && entry.dropDownKey && !entry.dropDownKey.includes('.') ? [entry.dropDownKey] : [];
51233
51245
  })));
51234
51246
 
51235
51247
  /**
@@ -51284,6 +51296,14 @@ var ARTICLE_LABEL_COMPANIONS = ASSORTMENT_MANAGER_FIELDS.flatMap(function (entry
51284
51296
  /** The label of a dropdown value in cells, editors and exports — the IDM shape "code - name". */
51285
51297
  var ENUM_LABEL_TEMPLATE = '${value} - ${name}';
51286
51298
 
51299
+ /**
51300
+ * The label template of a field's list: the SAP flag has no descriptive text (its fixed list names
51301
+ * the code itself), so its cells and options show the bare "X" like the header form's select.
51302
+ */
51303
+ function labelTemplateOf(field) {
51304
+ return field.dropDownKey === FLAG_DROPDOWN_KEY ? '${value}' : ENUM_LABEL_TEMPLATE;
51305
+ }
51306
+
51287
51307
  /**
51288
51308
  * Resolves what reaches an inheritable dropdown column — a pick (the code), a typed name, or a
51289
51309
  * pasted label — to the stored code, through the spreadsheet's own enum resolution. The
@@ -51370,19 +51390,20 @@ function labelCompanionResets(oldData, data) {
51370
51390
  }
51371
51391
 
51372
51392
  /**
51373
- * "code - name" formatter of one list, with a lookup Map built once per column. The spreadsheet's own
51393
+ * Formatter of one list in the given label template (the "code - name" shape as a rule), with a
51394
+ * lookup Map built once per column. The spreadsheet's own
51374
51395
  * enum formatter copies and scans the whole list on every call, and its editor formats every option
51375
51396
  * on open — quadratic in the list size, which froze the browser on the 36k product hierarchy. The
51376
51397
  * output mirrors that formatter exactly: arrays join with ", ", an unknown code labels as "code - code".
51377
51398
  */
51378
- function enumLabelFormatter(enumData) {
51399
+ function enumLabelFormatter(enumData, template) {
51379
51400
  var names = new Map(enumData.map(function (entry) {
51380
51401
  return [entry.value, entry.name];
51381
51402
  }));
51382
51403
  var labelOf = function labelOf(value) {
51383
51404
  var _names$get;
51384
51405
  var code = String(value);
51385
- return ENUM_LABEL_TEMPLATE.replace('${name}', (_names$get = names.get(code)) !== null && _names$get !== void 0 ? _names$get : code).replace('${value}', code);
51406
+ return template.replace('${name}', (_names$get = names.get(code)) !== null && _names$get !== void 0 ? _names$get : code).replace('${value}', code);
51386
51407
  };
51387
51408
  return function (value) {
51388
51409
  return (Array.isArray(value) ? value : [value]).map(labelOf).join(', ');
@@ -51390,8 +51411,8 @@ function enumLabelFormatter(enumData) {
51390
51411
  }
51391
51412
 
51392
51413
  /** `valueFormatter` of a plain enum column — null and undefined stay blank, like the enum type's own formatter. */
51393
- function enumColumnFormatter(enumData) {
51394
- var label = enumLabelFormatter(enumData);
51414
+ function enumColumnFormatter(enumData, template) {
51415
+ var label = enumLabelFormatter(enumData, template);
51395
51416
  return function (_ref5) {
51396
51417
  var value = _ref5.value;
51397
51418
  return value === undefined || value === null ? '' : label(value);
@@ -51403,8 +51424,8 @@ function enumColumnFormatter(enumData) {
51403
51424
  * header value, else the empty string — the placeholder type's own resolution, labelled through the
51404
51425
  * lookup formatter.
51405
51426
  */
51406
- function placeholderEnumColumnFormatter(enumData, placeHolderField) {
51407
- var label = enumLabelFormatter(enumData);
51427
+ function placeholderEnumColumnFormatter(enumData, placeHolderField, template) {
51428
+ var label = enumLabelFormatter(enumData, template);
51408
51429
  var isSet = function isSet(candidate) {
51409
51430
  return candidate !== undefined && candidate !== null && candidate !== '';
51410
51431
  };
@@ -51532,9 +51553,9 @@ function plainColumn(field, t, enumLists) {
51532
51553
  cellDataType: 'enum',
51533
51554
  customParams: {
51534
51555
  enumData: enumData,
51535
- displayLabelTemplate: ENUM_LABEL_TEMPLATE
51556
+ displayLabelTemplate: labelTemplateOf(field)
51536
51557
  },
51537
- valueFormatter: enumColumnFormatter(enumData)
51558
+ valueFormatter: enumColumnFormatter(enumData, labelTemplateOf(field))
51538
51559
  } : _objectSpread$10({
51539
51560
  cellDataType: CELL_DATA_TYPES[field.type]
51540
51561
  }, field.type === 'string' && field.maxLength ? {
@@ -51570,7 +51591,7 @@ function inheritedColumn(field, t, enumLists) {
51570
51591
  } : isNumber ? {
51571
51592
  type: ['withPlaceholderNumber']
51572
51593
  } : {}), enumData ? {
51573
- valueFormatter: placeholderEnumColumnFormatter(enumData, placeHolderField)
51594
+ valueFormatter: placeholderEnumColumnFormatter(enumData, placeHolderField, labelTemplateOf(field))
51574
51595
  } : {}), enumData ? {
51575
51596
  valueParser: companion ? companionValueParser(enumData, colId, columnFieldOf(companion), placeHolderField) : placeholderEnumValueParser(enumData, placeHolderField)
51576
51597
  } : {}), {}, {
@@ -51582,7 +51603,7 @@ function inheritedColumn(field, t, enumLists) {
51582
51603
  combinedField: combinedField
51583
51604
  }, enumData ? {
51584
51605
  enumData: enumData,
51585
- displayLabelTemplate: ENUM_LABEL_TEMPLATE
51606
+ displayLabelTemplate: labelTemplateOf(field)
51586
51607
  } : {})
51587
51608
  }, enumData && field.filter ? {
51588
51609
  filterParams: enumSetFilterParams(enumData)
@@ -68830,6 +68851,12 @@ var errorItem = "error-item-kyNLD";
68830
68851
  var css_248z$a = ".upload-modal-footer-W5737 {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 10px;\n}\n\n.upload-modal-footer-W5737 > .upload-button-QkWYP {\n width: 300px;\n}\n\n.error-group-lmQSx {\n margin-bottom: 8px;\n}\n\n.error-item-kyNLD {\n padding: 4px 0;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.row-index-jmU3D {\n font-weight: 600;\n margin-right: 8px;\n}\n";
68831
68852
  styleInject(css_248z$a);
68832
68853
 
68854
+ // An aborted all-or-nothing import may carry the flag without any row entry, and it saved nothing either way.
68855
+ var hasBulkErrors = function hasBulkErrors(errors) {
68856
+ var _errors$add, _errors$update, _errors$remove, _errors$restore;
68857
+ return !!errors && !!(errors.transactionAborted || (_errors$add = errors.add) !== null && _errors$add !== void 0 && _errors$add.length || (_errors$update = errors.update) !== null && _errors$update !== void 0 && _errors$update.length || (_errors$remove = errors.remove) !== null && _errors$remove !== void 0 && _errors$remove.length || (_errors$restore = errors.restore) !== null && _errors$restore !== void 0 && _errors$restore.length);
68858
+ };
68859
+
68833
68860
  /**
68834
68861
  * Custom hook for managing upload modal state and functionality
68835
68862
  *
@@ -68918,7 +68945,7 @@ function useUploadModal(_ref) {
68918
68945
  // Polled to its end even once the modal closed (isCurrent only guards the UI): the planners must learn that the import saved.
68919
68946
  var pollImportJob = /*#__PURE__*/function () {
68920
68947
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(jobId, catalogsBaseUrl, isCurrent, markSaved) {
68921
- var pollStart, statusResponse, job, _result$errors$add, _result$errors$update, _result$errors$remove, _result$errors$restor, result, hasPartialErrors, _formRef$current;
68948
+ var pollStart, statusResponse, job, _result$errors, result, _formRef$current;
68922
68949
  return _regeneratorRuntime.wrap(function _callee$(_context) {
68923
68950
  while (1) switch (_context.prev = _context.next) {
68924
68951
  case 0:
@@ -68962,20 +68989,18 @@ function useUploadModal(_ref) {
68962
68989
  case 15:
68963
68990
  job = _context.sent;
68964
68991
  if (!(job.status === 'Completed')) {
68965
- _context.next = 24;
68992
+ _context.next = 23;
68966
68993
  break;
68967
68994
  }
68968
- // A partially failed import still saved its other rows.
68969
- markSaved();
68995
+ result = job.result || {}; // An aborted import saved nothing; a partially failed one still saved its other rows.
68996
+ if (!((_result$errors = result.errors) !== null && _result$errors !== void 0 && _result$errors.transactionAborted)) markSaved();
68970
68997
  if (isCurrent()) {
68971
- _context.next = 20;
68998
+ _context.next = 21;
68972
68999
  break;
68973
69000
  }
68974
69001
  return _context.abrupt("return");
68975
- case 20:
68976
- result = job.result || {};
68977
- hasPartialErrors = result.errors && (((_result$errors$add = result.errors.add) === null || _result$errors$add === void 0 ? void 0 : _result$errors$add.length) || ((_result$errors$update = result.errors.update) === null || _result$errors$update === void 0 ? void 0 : _result$errors$update.length) || ((_result$errors$remove = result.errors.remove) === null || _result$errors$remove === void 0 ? void 0 : _result$errors$remove.length) || ((_result$errors$restor = result.errors.restore) === null || _result$errors$restor === void 0 ? void 0 : _result$errors$restor.length));
68978
- if (hasPartialErrors) {
69002
+ case 21:
69003
+ if (hasBulkErrors(result.errors)) {
68979
69004
  setError(result.errors);
68980
69005
  } else {
68981
69006
  onUploadComplete === null || onUploadComplete === void 0 || onUploadComplete(result);
@@ -68983,9 +69008,9 @@ function useUploadModal(_ref) {
68983
69008
  setCurrentFile(undefined);
68984
69009
  }
68985
69010
  return _context.abrupt("return");
68986
- case 24:
69011
+ case 23:
68987
69012
  if (!(job.status === 'Failed')) {
68988
- _context.next = 27;
69013
+ _context.next = 26;
68989
69014
  break;
68990
69015
  }
68991
69016
  if (isCurrent()) {
@@ -68993,10 +69018,10 @@ function useUploadModal(_ref) {
68993
69018
  setProgress(0);
68994
69019
  }
68995
69020
  return _context.abrupt("return");
68996
- case 27:
69021
+ case 26:
68997
69022
  _context.next = 1;
68998
69023
  break;
68999
- case 29:
69024
+ case 28:
69000
69025
  case "end":
69001
69026
  return _context.stop();
69002
69027
  }
@@ -69019,7 +69044,7 @@ function useUploadModal(_ref) {
69019
69044
  var onSave = /*#__PURE__*/function () {
69020
69045
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(values) {
69021
69046
  var _formData$get;
69022
- var opId, isCurrent, markSaved, formData, requestQueryParams, uploadUrl, startTime, fileSize, estimatedUploadTimeMs, progressInterval, updateProgressBasedOnTime, response, responseData, catalogsBaseUrl, _responseData$errors$, _responseData$errors$2, _responseData$errors$3, _responseData$errors$4, hasPartialErrors, _formRef$current3, errorBody, errorMessage, errorResponse;
69047
+ var opId, isCurrent, markSaved, formData, requestQueryParams, uploadUrl, startTime, fileSize, estimatedUploadTimeMs, progressInterval, updateProgressBasedOnTime, response, responseData, catalogsBaseUrl, _responseData$errors, _formRef$current3, errorBody, errorMessage, errorResponse;
69023
69048
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
69024
69049
  while (1) switch (_context2.prev = _context2.next) {
69025
69050
  case 0:
@@ -69080,7 +69105,7 @@ function useUploadModal(_ref) {
69080
69105
  });
69081
69106
  case 24:
69082
69107
  if (!response.ok) {
69083
- _context2.next = 41;
69108
+ _context2.next = 40;
69084
69109
  break;
69085
69110
  }
69086
69111
  _context2.next = 27;
@@ -69097,40 +69122,38 @@ function useUploadModal(_ref) {
69097
69122
  _context2.next = 32;
69098
69123
  return pollImportJob(responseData.jobId, catalogsBaseUrl, isCurrent, markSaved);
69099
69124
  case 32:
69100
- _context2.next = 39;
69125
+ _context2.next = 38;
69101
69126
  break;
69102
69127
  case 34:
69103
- markSaved();
69128
+ if (!((_responseData$errors = responseData.errors) !== null && _responseData$errors !== void 0 && _responseData$errors.transactionAborted)) markSaved();
69104
69129
  if (isCurrent()) {
69105
69130
  _context2.next = 37;
69106
69131
  break;
69107
69132
  }
69108
69133
  return _context2.abrupt("return");
69109
69134
  case 37:
69110
- // Check for partial errors in successful responses
69111
- hasPartialErrors = responseData.errors && (((_responseData$errors$ = responseData.errors.add) === null || _responseData$errors$ === void 0 ? void 0 : _responseData$errors$.length) || ((_responseData$errors$2 = responseData.errors.update) === null || _responseData$errors$2 === void 0 ? void 0 : _responseData$errors$2.length) || ((_responseData$errors$3 = responseData.errors.remove) === null || _responseData$errors$3 === void 0 ? void 0 : _responseData$errors$3.length) || ((_responseData$errors$4 = responseData.errors.restore) === null || _responseData$errors$4 === void 0 ? void 0 : _responseData$errors$4.length));
69112
- if (hasPartialErrors) {
69135
+ if (hasBulkErrors(responseData.errors)) {
69113
69136
  setError(responseData.errors);
69114
69137
  } else {
69115
69138
  onUploadComplete === null || onUploadComplete === void 0 || onUploadComplete(responseData);
69116
69139
  (_formRef$current3 = formRef.current) === null || _formRef$current3 === void 0 || _formRef$current3.reset();
69117
69140
  setCurrentFile(undefined);
69118
69141
  }
69119
- case 39:
69120
- _context2.next = 50;
69142
+ case 38:
69143
+ _context2.next = 49;
69121
69144
  break;
69122
- case 41:
69145
+ case 40:
69123
69146
  if (isCurrent()) {
69124
- _context2.next = 43;
69147
+ _context2.next = 42;
69125
69148
  break;
69126
69149
  }
69127
69150
  return _context2.abrupt("return");
69128
- case 43:
69129
- _context2.next = 45;
69151
+ case 42:
69152
+ _context2.next = 44;
69130
69153
  return response.text()["catch"](function () {
69131
69154
  return '';
69132
69155
  });
69133
- case 45:
69156
+ case 44:
69134
69157
  errorBody = _context2.sent;
69135
69158
  errorMessage = errorBody || response.statusText || t('backoffice.idmEnricher.import.uploadfailed');
69136
69159
  try {
@@ -69142,28 +69165,28 @@ function useUploadModal(_ref) {
69142
69165
  }
69143
69166
  setError(errorMessage);
69144
69167
  setProgress(0);
69145
- case 50:
69146
- _context2.next = 55;
69168
+ case 49:
69169
+ _context2.next = 54;
69147
69170
  break;
69148
- case 52:
69149
- _context2.prev = 52;
69171
+ case 51:
69172
+ _context2.prev = 51;
69150
69173
  _context2.t0 = _context2["catch"](16);
69151
69174
  if (isCurrent()) {
69152
69175
  setError(_context2.t0 instanceof Error ? _context2.t0.message : t('backoffice.idmEnricher.import.uploadfailed'));
69153
69176
  setProgress(0);
69154
69177
  }
69155
- case 55:
69156
- _context2.prev = 55;
69178
+ case 54:
69179
+ _context2.prev = 54;
69157
69180
  clearInterval(progressInterval);
69158
69181
  if (isCurrent()) {
69159
69182
  setLoading(false);
69160
69183
  }
69161
- return _context2.finish(55);
69162
- case 59:
69184
+ return _context2.finish(54);
69185
+ case 58:
69163
69186
  case "end":
69164
69187
  return _context2.stop();
69165
69188
  }
69166
- }, _callee2, null, [[16, 52, 55, 59]]);
69189
+ }, _callee2, null, [[16, 51, 54, 58]]);
69167
69190
  }));
69168
69191
  return function onSave(_x5) {
69169
69192
  return _ref3.apply(this, arguments);
@@ -69215,7 +69238,7 @@ function ErrorDisplay(_ref) {
69215
69238
  children: [/*#__PURE__*/jsx(Tag, {
69216
69239
  color: "blue",
69217
69240
  children: operationType
69218
- }), /*#__PURE__*/jsx(Tag, {
69241
+ }), typeof fieldError.index === 'number' && /*#__PURE__*/jsx(Tag, {
69219
69242
  color: "orange",
69220
69243
  children: t('backoffice.uploadModal.row', {
69221
69244
  rowNumber: fieldError.index + 1
@@ -69292,7 +69315,24 @@ function ErrorDisplay(_ref) {
69292
69315
  });
69293
69316
  };
69294
69317
  var fieldPanels = renderFieldPanels();
69295
- if (!fieldPanels || fieldPanels.length === 0) {
69318
+ var hasPanels = !!fieldPanels && fieldPanels.length > 0;
69319
+ if (errors.transactionAborted) {
69320
+ var abortedDefault = 'Import abgebrochen - es wurde nichts importiert. Bitte die Fehler beheben und die Datei erneut hochladen.';
69321
+ return /*#__PURE__*/jsx(Alert
69322
+ // Local guard: i18n init keeps returnEmptyString at true, so an empty translation ignores defaultValue - every key of this dialog shares that hole.
69323
+ , {
69324
+ message: t('backoffice.uploadModal.transactionAborted', {
69325
+ defaultValue: abortedDefault
69326
+ }) || abortedDefault,
69327
+ description: hasPanels ? /*#__PURE__*/jsx(Collapse, {
69328
+ size: "small",
69329
+ children: fieldPanels
69330
+ }) : undefined,
69331
+ type: "error",
69332
+ showIcon: true
69333
+ });
69334
+ }
69335
+ if (!hasPanels) {
69296
69336
  return null;
69297
69337
  }
69298
69338
  return /*#__PURE__*/jsx(Alert, {
@@ -81509,6 +81549,10 @@ var PROPERTY_FORMAT_HINT = {
81509
81549
  key: 'backoffice.idmEnricher.enrichment.propertyFormat.list',
81510
81550
  defaultValue: 'List - entries separated by ; (e.g. A;B;C)'
81511
81551
  },
81552
+ listComma: {
81553
+ key: 'backoffice.idmEnricher.enrichment.propertyFormat.listComma',
81554
+ defaultValue: 'List - entries separated by , (e.g. A,B,C)'
81555
+ },
81512
81556
  allOrList: {
81513
81557
  key: 'backoffice.idmEnricher.enrichment.propertyFormat.allOrList',
81514
81558
  defaultValue: '1 = all, otherwise a list separated by ;'
@@ -81598,7 +81642,7 @@ function buildPropertyColumn(_ref) {
81598
81642
  }
81599
81643
  });
81600
81644
  }
81601
- var hint = PROPERTY_FORMAT_HINT[editorKind];
81645
+ var hint = PROPERTY_FORMAT_HINT[encoding === 'list:,' ? 'listComma' : editorKind];
81602
81646
  var formatHint = hint ? t(hint.key, {
81603
81647
  defaultValue: hint.defaultValue
81604
81648
  }) : undefined;
@@ -81625,6 +81669,7 @@ function buildPropertyColumn(_ref) {
81625
81669
  function ownKeys$c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
81626
81670
  function _objectSpread$c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$c(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
81627
81671
  var PROPERTY_ENTITY_OF_VIEW = {
81672
+ series: 'catalog',
81628
81673
  items: 'article',
81629
81674
  features: 'option',
81630
81675
  options: 'optionValue'
@@ -81995,11 +82040,9 @@ var EnrichmentTable = observer(function (_ref) {
81995
82040
  var description = (_propertyMeta$key2 = propertyMeta[key]) === null || _propertyMeta$key2 === void 0 ? void 0 : _propertyMeta$key2.description;
81996
82041
  var codexKey = (_propertyMeta$key3 = propertyMeta[key]) === null || _propertyMeta$key3 === void 0 ? void 0 : _propertyMeta$key3.codexKey;
81997
82042
  var headerLabel = description ? "".concat(description, " (").concat(key, ")") : key;
81998
- // The ENGINE decides how a property's string is read, so its codex is asked first - but only for a
81999
- // view whose rows ARE a parsed entity. On one that is not (series), nothing parses the value, so the
82000
- // definition's coarse type is the whole truth, exactly as it is for an organization's own keys.
82043
+ // The engine's encoding of the key wins; without a parsed entity the definition's type decides.
82001
82044
  var parsedEntity = PROPERTY_ENTITY_OF_VIEW[type];
82002
- var encoding = (_ref5 = (_ref6 = parsedEntity ? propertyEncodingOf(codexKey || key, parsedEntity) : undefined) !== null && _ref6 !== void 0 ? _ref6 : ENCODING_OF_DEFINITION_TYPE[propType !== null && propType !== void 0 ? propType : '']) !== null && _ref5 !== void 0 ? _ref5 : 'string';
82045
+ var encoding = (_ref5 = (_ref6 = parsedEntity ? propertyEncodingOf(key, parsedEntity) : undefined) !== null && _ref6 !== void 0 ? _ref6 : ENCODING_OF_DEFINITION_TYPE[propType !== null && propType !== void 0 ? propType : '']) !== null && _ref5 !== void 0 ? _ref5 : 'string';
82003
82046
  var editorKind = editorKindOf(encoding);
82004
82047
  var columnConfig = editorKind === 'text' ? collapseSecondaryLanguages(createTranslatedColumnConfig('translatedProp.' + key, headerLabel, propertyLanguages, false, 'withPlaceholder', {
82005
82048
  placeHolderField: 'origProp.' + key,
@@ -82489,6 +82532,14 @@ var TableGroups = observer(function () {
82489
82532
 
82490
82533
  /** Represents a single price entry with its value and validation state */
82491
82534
 
82535
+ /** Largest discount in percent that can be entered */
82536
+ var MAX_DISCOUNT = 99.99999;
82537
+
82538
+ /** Removes floating point noise, e.g. (1 - 0.8745) * 100 = 12.549999999999994 */
82539
+ var removeFloatNoise = function removeFloatNoise(value) {
82540
+ return parseFloat(value.toFixed(10));
82541
+ };
82542
+
82492
82543
  /** State container for both factor and discount entries */
82493
82544
 
82494
82545
  /**
@@ -82503,7 +82554,7 @@ var formatListValue = function formatListValue(values, type, locale) {
82503
82554
  if (!(values !== null && values !== void 0 && values.length)) return '-';
82504
82555
  var formatter = new Intl.NumberFormat(locale, {
82505
82556
  minimumFractionDigits: 1,
82506
- maximumFractionDigits: 2
82557
+ maximumFractionDigits: 10
82507
82558
  });
82508
82559
  return values.map(function (value) {
82509
82560
  return formatter.format(value);
@@ -82513,7 +82564,7 @@ var formatListValue = function formatListValue(values, type, locale) {
82513
82564
  /**
82514
82565
  * Converts an internal value to its display representation
82515
82566
  * For factors: keeps the decimal value
82516
- * For discounts: converts from negative factor to percentage string (e.g., "0.95" -> "5")
82567
+ * For discounts: converts from negative factor to percentage string (e.g., "0.8745" -> "12.55")
82517
82568
  * @param value - The internal value to convert
82518
82569
  * @param type - The type of price modification
82519
82570
  * @returns The display value as string
@@ -82521,27 +82572,28 @@ var formatListValue = function formatListValue(values, type, locale) {
82521
82572
  var convertToDisplayValue = function convertToDisplayValue(value, type) {
82522
82573
  if (type === 'factor') return value;
82523
82574
  var numValue = parseFloat(value);
82524
- return isNaN(numValue) ? '0' : Math.round((1 - numValue) * 100).toString();
82575
+ return isNaN(numValue) ? '0' : removeFloatNoise((1 - numValue) * 100).toString();
82525
82576
  };
82526
82577
 
82527
82578
  /**
82528
82579
  * Converts a display value back to its internal representation
82529
82580
  * For factors: keeps the input value
82530
- * For discounts: converts the input as a negative factor (e.g., "5" -> "0.95" for a 5% discount)
82581
+ * For discounts: converts the input as a negative factor (e.g., "12.55" -> "0.8745" for a 12.55% discount);
82582
+ * an empty or non-numeric input is kept as is, so it fails validation
82531
82583
  * @param value - The display value to convert
82532
82584
  * @param type - The type of price modification
82533
82585
  * @returns The internal value as string
82534
82586
  */
82535
82587
  var convertFromDisplayValue = function convertFromDisplayValue(value, type) {
82536
82588
  if (type === 'factor') return value;
82537
- var numValue = parseInt(value, 10);
82538
- return isNaN(numValue) ? '0' : (1 - numValue / 100).toString();
82589
+ var numValue = parseFloat(value);
82590
+ return isNaN(numValue) ? value : removeFloatNoise(1 - numValue / 100).toString();
82539
82591
  };
82540
82592
 
82541
82593
  /**
82542
82594
  * Validates if an input value is valid for the given type
82543
82595
  * For factors: must be >= 1
82544
- * For discounts: must be >= 0 and <= 0.99
82596
+ * For discounts: the discount must be between 0 and 99.99999 percent
82545
82597
  * @param value - The value to validate
82546
82598
  * @param type - The type of price modification
82547
82599
  * @returns True if the value is valid for the given type
@@ -82549,41 +82601,40 @@ var convertFromDisplayValue = function convertFromDisplayValue(value, type) {
82549
82601
  var isValidInput = function isValidInput(value, type) {
82550
82602
  var numValue = parseFloat(value);
82551
82603
  if (isNaN(numValue)) return false;
82552
- return type === 'factor' ? numValue >= 1 : numValue >= 0 && numValue <= 0.99;
82604
+ if (type === 'factor') return numValue >= 1;
82605
+ var discount = removeFloatNoise((1 - numValue) * 100);
82606
+ return discount >= 0 && discount <= MAX_DISCOUNT;
82553
82607
  };
82554
82608
 
82555
82609
  /**
82556
82610
  * Checks if a value is effective (should be saved)
82557
82611
  * For factors: must be > 1 (1 is valid but not effective)
82558
- * For discounts: must be >= 0.01 (0 is valid but not effective)
82612
+ * For discounts: must be < 1 (a 0% discount is valid but not effective)
82559
82613
  * @param value - The value to check
82560
82614
  * @param type - The type of price modification
82561
82615
  * @returns True if the value should be saved
82562
82616
  */
82563
82617
  var isEffectiveValue = function isEffectiveValue(value, type) {
82564
82618
  var numValue = parseFloat(value);
82565
- return type === 'factor' ? numValue > 1 : numValue >= 0.01;
82619
+ return type === 'factor' ? numValue > 1 : numValue < 1;
82566
82620
  };
82567
82621
 
82568
82622
  /**
82569
- * Gets the default value for a given type
82570
- * Factor: "1" (valid but not effective)
82571
- * Discount: "0" (valid but not effective)
82572
- * @param type - The type of price modification
82623
+ * Gets the default value for both types: the factor "1", which leaves the price unchanged
82624
+ * (shown as "1" for factors and "0" % for discounts; valid but not effective)
82573
82625
  * @returns The default value as string
82574
82626
  */
82575
- var getDefaultValue = function getDefaultValue(type) {
82576
- return type === 'factor' ? '1' : '0';
82627
+ var getDefaultValue = function getDefaultValue() {
82628
+ return '1';
82577
82629
  };
82578
82630
 
82579
82631
  /**
82580
- * Checks if a value is the default value for its type
82632
+ * Checks if a value is the default value
82581
82633
  * @param value - The value to check
82582
- * @param type - The type of price modification
82583
- * @returns True if the value is the default value for its type
82634
+ * @returns True if the value is the default value
82584
82635
  */
82585
- var isDefaultValue = function isDefaultValue(value, type) {
82586
- return value === getDefaultValue(type);
82636
+ var isDefaultValue = function isDefaultValue(value) {
82637
+ return value === getDefaultValue();
82587
82638
  };
82588
82639
 
82589
82640
  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -82641,7 +82692,7 @@ function usePriceFactor(_ref) {
82641
82692
  // Ensure at least one entry
82642
82693
  if (initialEntries.length === 0) {
82643
82694
  initialEntries.push({
82644
- value: getDefaultValue(initialType),
82695
+ value: getDefaultValue(),
82645
82696
  isValid: true
82646
82697
  });
82647
82698
  }
@@ -82662,14 +82713,14 @@ function usePriceFactor(_ref) {
82662
82713
  var newEntries = hasChangedCurrentType ? [] : entries[newType];
82663
82714
  setEntries(function (prev) {
82664
82715
  return _objectSpread$b(_objectSpread$b({}, prev), {}, _defineProperty({}, newType, newEntries.length > 0 ? newEntries : [{
82665
- value: getDefaultValue(newType),
82716
+ value: getDefaultValue(),
82666
82717
  isValid: true
82667
82718
  }]));
82668
82719
  });
82669
82720
  setHasChangedCurrentType(false);
82670
82721
  };
82671
82722
  var handleAddEntry = function handleAddEntry() {
82672
- var defaultValue = getDefaultValue(type);
82723
+ var defaultValue = getDefaultValue();
82673
82724
  updateEntries([].concat(_toConsumableArray(entries[type]), [{
82674
82725
  value: defaultValue,
82675
82726
  isValid: true
@@ -82680,7 +82731,7 @@ function usePriceFactor(_ref) {
82680
82731
  if (currentEntries.length === 1) {
82681
82732
  // Reset to default when removing last entry
82682
82733
  updateEntries([{
82683
- value: getDefaultValue(type),
82734
+ value: getDefaultValue(),
82684
82735
  isValid: true
82685
82736
  }]);
82686
82737
  } else {
@@ -82694,6 +82745,7 @@ function usePriceFactor(_ref) {
82694
82745
  var newEntries = _toConsumableArray(entries[type]);
82695
82746
  newEntries[index] = {
82696
82747
  value: actualValue,
82748
+ input: displayValue,
82697
82749
  isValid: isValidInput(actualValue, type)
82698
82750
  };
82699
82751
  updateEntries(newEntries);
@@ -82705,7 +82757,7 @@ function usePriceFactor(_ref) {
82705
82757
  while (1) switch (_context.prev = _context.next) {
82706
82758
  case 0:
82707
82759
  currentEntries = entries[type]; // Don't save if we only have a default entry
82708
- if (!(currentEntries.length === 1 && isDefaultValue(currentEntries[0].value, type))) {
82760
+ if (!(currentEntries.length === 1 && isDefaultValue(currentEntries[0].value))) {
82709
82761
  _context.next = 7;
82710
82762
  break;
82711
82763
  }
@@ -82726,7 +82778,7 @@ function usePriceFactor(_ref) {
82726
82778
  case 9:
82727
82779
  // Filter out default and invalid values
82728
82780
  effectiveValues = currentEntries.filter(function (entry) {
82729
- return !isDefaultValue(entry.value, type) && isEffectiveValue(entry.value, type);
82781
+ return !isDefaultValue(entry.value) && isEffectiveValue(entry.value, type);
82730
82782
  }).map(function (entry) {
82731
82783
  return parseFloat(entry.value);
82732
82784
  });
@@ -82765,7 +82817,7 @@ var space = "space-T5Mkd";
82765
82817
  var input$1 = "input-SK-Fo";
82766
82818
  var addButton = "addButton-AVN8Y";
82767
82819
  var helpText = "helpText-QYQQF";
82768
- var css_248z$3 = ".cell-Noc7s {\n min-width: 50px;\n height: 100%;\n}\n\n.typeSelector-Y8Yly {\n margin-bottom: 16px;\n}\n\n.space-T5Mkd {\n width: 100%;\n}\n\n.input-SK-Fo {\n width: 120px;\n}\n\n.addButton-AVN8Y {\n margin-top: 16px;\n text-align: right;\n}\n\n.helpText-QYQQF {\n margin-top: 8px;\n font-size: 12px;\n color: #666;\n}\n";
82820
+ var css_248z$3 = ".cell-Noc7s {\n min-width: 50px;\n height: 100%;\n}\n\n.typeSelector-Y8Yly {\n margin-bottom: 16px;\n}\n\n.space-T5Mkd {\n width: 100%;\n}\n\n.input-SK-Fo {\n width: 160px;\n}\n\n.addButton-AVN8Y {\n margin-top: 16px;\n text-align: right;\n}\n\n.helpText-QYQQF {\n margin-top: 8px;\n font-size: 12px;\n color: #666;\n}\n";
82769
82821
  styleInject(css_248z$3);
82770
82822
 
82771
82823
  function PriceFactorCellRenderer(props) {
@@ -82887,7 +82939,7 @@ function PriceFactorCellRenderer(props) {
82887
82939
  };
82888
82940
  }, []);
82889
82941
  var isDiscount = type === 'discount';
82890
- var isSingleDefaultEntry = entries.length === 1 && isDefaultValue(entries[0].value, type);
82942
+ var isSingleDefaultEntry = entries.length === 1 && isDefaultValue(entries[0].value);
82891
82943
  var hasInvalidEntries = entries.some(function (entry) {
82892
82944
  return entry.isValid === false;
82893
82945
  });
@@ -82927,21 +82979,22 @@ function PriceFactorCellRenderer(props) {
82927
82979
  }), /*#__PURE__*/jsx(List$1, {
82928
82980
  dataSource: entries,
82929
82981
  renderItem: function renderItem(entry, index) {
82982
+ var _entry$input;
82930
82983
  return /*#__PURE__*/jsx(List$1.Item, {
82931
82984
  children: /*#__PURE__*/jsx(Form$2.Item, {
82932
82985
  validateStatus: entry.isValid === false ? 'error' : undefined,
82933
- help: entry.isValid === false ? t(isDiscount ? 'backoffice.idmCatalog.prices.priceFactor.error.invalidFactor' : 'backoffice.idmCatalog.prices.priceFactor.error.invalidDiscount') : undefined,
82986
+ help: entry.isValid === false ? t(isDiscount ? 'backoffice.idmCatalog.prices.priceFactor.error.invalidDiscount' : 'backoffice.idmCatalog.prices.priceFactor.error.invalidFactor') : undefined,
82934
82987
  className: space,
82935
82988
  children: /*#__PURE__*/jsxs(Space, {
82936
82989
  children: [/*#__PURE__*/jsx(Input$1, {
82937
82990
  type: "number",
82938
- value: convertToDisplayValue(entry.value, type),
82991
+ value: (_entry$input = entry.input) !== null && _entry$input !== void 0 ? _entry$input : convertToDisplayValue(entry.value, type),
82939
82992
  onChange: function onChange(e) {
82940
82993
  return handleEntryValueChange(index, e.target.value);
82941
82994
  },
82942
- step: isDiscount ? '1' : '0.1',
82995
+ step: isDiscount ? 'any' : '0.1',
82943
82996
  min: isDiscount ? '0' : '1',
82944
- max: isDiscount ? '99' : undefined,
82997
+ max: isDiscount ? String(MAX_DISCOUNT) : undefined,
82945
82998
  className: input$1,
82946
82999
  addonAfter: isDiscount ? '%' : undefined
82947
83000
  }), /*#__PURE__*/jsx(Button, {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=priceFactorHelpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceFactorHelpers.test.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/tests/unit/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=usePriceFactor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePriceFactor.test.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/tests/unit/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/usePriceFactor.test.ts"],"names":[],"mappings":""}
@@ -12,7 +12,8 @@ type ArticleColumn = DivaColDef<ArticleRow> | DivaColGroupDef<ArticleRow>;
12
12
  export declare const ARTICLE_LANGUAGES: string[];
13
13
  /**
14
14
  * Distinct dropdown lists the article columns need — they become the `enumData` of the enum cells.
15
- * The 'X' flag and row-derived (dotted) keys stay plain text, like on the header page.
15
+ * The 'X' flag is among them (the hook serves its fixed list); row-derived (dotted) keys stay plain
16
+ * text, like on the header page.
16
17
  */
17
18
  export declare const ARTICLE_DROPDOWN_KEYS: string[];
18
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"articleColumns.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/AssortmentManager/ArticleData/logic/articleColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAoB,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAA0B,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAIvE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAqB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UAQjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,8BAG/B,CAAC;AAoBF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIvF,CAAC;AAuDH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAOjH;AAkRD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,SAAS,EACZ,wBAAwB,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,EACjE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAM,GAC1C,aAAa,EAAE,CAkFjB"}
1
+ {"version":3,"file":"articleColumns.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/AssortmentManager/ArticleData/logic/articleColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAoB,MAAM,4BAA4B,CAAC;AAE3F,OAAO,EAA0B,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAIvE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAqB,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,UAMjC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,8BAG/B,CAAC;AAoBF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIvF,CAAC;AA+DH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAOjH;AAmRD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,SAAS,EACZ,wBAAwB,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,EACjE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAM,GAC1C,aAAa,EAAE,CAkFjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/ui/AssortmentManager/HeaderData/components/HeaderField/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAWnD,OAAO,EAA0B,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AA+HtF;;;;;;;GAOG;AACH,UAAU,gBAAgB;IACxB,KAAK,EAAE,4BAA4B,CAAC;IACpC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,4BA2ExD;;;;AAED,wBAAqC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/ui/AssortmentManager/HeaderData/components/HeaderField/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAWnD,OAAO,EAA0B,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AA4HtF;;;;;;;GAOG;AACH,UAAU,gBAAgB;IACxB,KAAK,EAAE,4BAA4B,CAAC;IACpC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iBAAS,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,4BA2ExD;;;;AAED,wBAAqC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/ui/AssortmentManager/HeaderData/components/ItemGroupTable/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAuC,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAItG,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAS5D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,0BAA0B,CAAC;IAClC;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC7D,0GAA0G;IAC1G,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,oGAAoG;IACpG,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACjG,+GAA+G;IAC/G,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,iBAAS,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,KAAgB,EAAE,QAAgB,EAAE,EAAE,mBAAmB,qBAmElI;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/ui/AssortmentManager/HeaderData/components/ItemGroupTable/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAuC,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAItG,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAS5D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,0BAA0B,CAAC;IAClC;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC7D,0GAA0G;IAC1G,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACjE,oGAAoG;IACpG,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACjG,+GAA+G;IAC/G,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,mGAAmG;IACnG,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,iBAAS,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,KAAgB,EAAE,QAAgB,EAAE,EAAE,mBAAmB,qBAgElI;AAED,eAAe,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDropdownEnumData.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/AssortmentManager/HeaderData/hooks/useDropdownEnumData.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAKpD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sIAAsI;AACtI,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;CACvC;AAED,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,SAAS,MAAM,CAAC;AA4B7B;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAanD;AAKD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA4BzH;AAiDD,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE;;;;IAExD;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAmB5H"}
1
+ {"version":3,"file":"useDropdownEnumData.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/AssortmentManager/HeaderData/hooks/useDropdownEnumData.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,6BAA6B,CAAC;AAMpD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,sIAAsI;AACtI,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;CACvC;AAED,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,SAAS,MAAM,CAAC;AA+B7B;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAanD;AAKD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA4BzH;AAiDD,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE;;;;IAExD;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAmB5H"}
@@ -1 +1 @@
1
- {"version":3,"file":"itemGroupColumns.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/AssortmentManager/HeaderData/logic/itemGroupColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAOzD,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAMtE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKlE;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,SAAS,eAC7B;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,wBAEtC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EACtC,CAAC,EAAE,SAAS,EACZ,KAAK,GAAE,QAAQ,GAAG,SAAoB,GACrC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAiCvC"}
1
+ {"version":3,"file":"itemGroupColumns.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/AssortmentManager/HeaderData/logic/itemGroupColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAQzD,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,0BAA0B,EAAE,MAAM,CAMtE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKlE;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,SAAS,eAC7B;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,wBAEtC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EACtC,CAAC,EAAE,SAAS,EACZ,KAAK,GAAE,QAAQ,GAAG,SAAoB,GACrC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAmCvC"}
@@ -1,3 +1,9 @@
1
1
  import { AssortmentManagerFieldConfig } from '../types';
2
+ /**
3
+ * The SAP "X or blank" flag — `dropDownKey: 'X'` is not a key of the dropdownItems collection. Its
4
+ * list is fixed (the single entry `X`) and served without a request, so the flag fields render as
5
+ * selects everywhere: the header form and the grids.
6
+ */
7
+ export declare const FLAG_DROPDOWN_KEY = "X";
2
8
  export declare const ASSORTMENT_MANAGER_FIELDS: AssortmentManagerFieldConfig[];
3
9
  //# sourceMappingURL=fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/AssortmentManager/config/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAExD,eAAO,MAAM,yBAAyB,EAAE,4BAA4B,EAo7CnE,CAAC"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/AssortmentManager/config/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,eAAO,MAAM,yBAAyB,EAAE,4BAA4B,EAo7CnE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useDropdownEnumData.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDropdownEnumData.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/AssortmentManager/tests/useDropdownEnumData.test.tsx"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorDisplay.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/CommonComponents/UploadModal/ErrorDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAM5C,UAAU,iBAAiB;IACzB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,4BAyGjE"}
1
+ {"version":3,"file":"ErrorDisplay.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/CommonComponents/UploadModal/ErrorDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAM5C,UAAU,iBAAiB;IACzB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,4BAuHjE"}
@@ -25,6 +25,8 @@ export interface BulkErrorResponse {
25
25
  update?: BulkError[];
26
26
  remove?: BulkError[];
27
27
  restore?: BulkError[];
28
+ /** The whole request was rejected: no row was saved, including rows without an error entry of their own. */
29
+ transactionAborted?: boolean;
28
30
  }
29
31
  /**
30
32
  * Union type for upload errors - either simple string or structured bulk errors
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/CommonComponents/UploadModal/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,sCAAsC;IACtC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/CommonComponents/UploadModal/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,4GAA4G;IAC5G,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,2CAA2C;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,sCAAsC;IACtC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUploadState.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/CommonComponents/UploadModal/useUploadState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,GACR,EAAE,oBAAoB;;;;qBA4GS,GAAG;;;;EA+GlC"}
1
+ {"version":3,"file":"useUploadState.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/CommonComponents/UploadModal/useUploadState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AAQ/E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,GACR,EAAE,oBAAoB;;;;qBAyGS,GAAG;;;;EAuGlC"}
@@ -4,9 +4,13 @@ export type PriceType = 'factor' | 'discount';
4
4
  export interface PriceEntry {
5
5
  /** The value as string to support input handling */
6
6
  value: string;
7
+ /** The text as typed by the user; shown instead of the converted value so typing is not overwritten */
8
+ input?: string;
7
9
  /** Whether the current value is valid according to type rules */
8
10
  isValid: boolean;
9
11
  }
12
+ /** Largest discount in percent that can be entered */
13
+ export declare const MAX_DISCOUNT = 99.99999;
10
14
  /** State container for both factor and discount entries */
11
15
  export interface EntryState {
12
16
  /** List of price factor entries (values > 1) */
@@ -26,7 +30,7 @@ export declare const formatListValue: (values: number[], type: PriceType, locale
26
30
  /**
27
31
  * Converts an internal value to its display representation
28
32
  * For factors: keeps the decimal value
29
- * For discounts: converts from negative factor to percentage string (e.g., "0.95" -> "5")
33
+ * For discounts: converts from negative factor to percentage string (e.g., "0.8745" -> "12.55")
30
34
  * @param value - The internal value to convert
31
35
  * @param type - The type of price modification
32
36
  * @returns The display value as string
@@ -35,7 +39,8 @@ export declare const convertToDisplayValue: (value: string, type: PriceType) =>
35
39
  /**
36
40
  * Converts a display value back to its internal representation
37
41
  * For factors: keeps the input value
38
- * For discounts: converts the input as a negative factor (e.g., "5" -> "0.95" for a 5% discount)
42
+ * For discounts: converts the input as a negative factor (e.g., "12.55" -> "0.8745" for a 12.55% discount);
43
+ * an empty or non-numeric input is kept as is, so it fails validation
39
44
  * @param value - The display value to convert
40
45
  * @param type - The type of price modification
41
46
  * @returns The internal value as string
@@ -44,7 +49,7 @@ export declare const convertFromDisplayValue: (value: string, type: PriceType) =
44
49
  /**
45
50
  * Validates if an input value is valid for the given type
46
51
  * For factors: must be >= 1
47
- * For discounts: must be >= 0 and <= 0.99
52
+ * For discounts: the discount must be between 0 and 99.99999 percent
48
53
  * @param value - The value to validate
49
54
  * @param type - The type of price modification
50
55
  * @returns True if the value is valid for the given type
@@ -53,25 +58,22 @@ export declare const isValidInput: (value: string, type: PriceType) => boolean;
53
58
  /**
54
59
  * Checks if a value is effective (should be saved)
55
60
  * For factors: must be > 1 (1 is valid but not effective)
56
- * For discounts: must be >= 0.01 (0 is valid but not effective)
61
+ * For discounts: must be < 1 (a 0% discount is valid but not effective)
57
62
  * @param value - The value to check
58
63
  * @param type - The type of price modification
59
64
  * @returns True if the value should be saved
60
65
  */
61
66
  export declare const isEffectiveValue: (value: string, type: PriceType) => boolean;
62
67
  /**
63
- * Gets the default value for a given type
64
- * Factor: "1" (valid but not effective)
65
- * Discount: "0" (valid but not effective)
66
- * @param type - The type of price modification
68
+ * Gets the default value for both types: the factor "1", which leaves the price unchanged
69
+ * (shown as "1" for factors and "0" % for discounts; valid but not effective)
67
70
  * @returns The default value as string
68
71
  */
69
- export declare const getDefaultValue: (type: PriceType) => string;
72
+ export declare const getDefaultValue: () => string;
70
73
  /**
71
- * Checks if a value is the default value for its type
74
+ * Checks if a value is the default value
72
75
  * @param value - The value to check
73
- * @param type - The type of price modification
74
- * @returns True if the value is the default value for its type
76
+ * @returns True if the value is the default value
75
77
  */
76
- export declare const isDefaultValue: (value: string, type: PriceType) => boolean;
78
+ export declare const isDefaultValue: (value: string) => boolean;
77
79
  //# sourceMappingURL=priceFactorHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"priceFactorHelpers.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9C,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,wDAAwD;IACxD,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,WAAY,MAAM,EAAE,QAAQ,SAAS,UAAU,MAAM,KAAG,MASnF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,UAAW,MAAM,QAAQ,SAAS,KAAG,MAItE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,UAAW,MAAM,QAAQ,SAAS,KAAG,MAIxE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,QAAQ,SAAS,KAAG,OAI7D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,QAAQ,SAAS,KAAG,OAGjE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SAAU,SAAS,KAAG,MAEjD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,QAAQ,SAAS,KAAG,OAE/D,CAAC"}
1
+ {"version":3,"file":"priceFactorHelpers.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/priceFactorHelpers.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9C,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,sDAAsD;AACtD,eAAO,MAAM,YAAY,WAAW,CAAC;AAKrC,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,wDAAwD;IACxD,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,WAAY,MAAM,EAAE,QAAQ,SAAS,UAAU,MAAM,KAAG,MASnF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,UAAW,MAAM,QAAQ,SAAS,KAAG,MAItE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,UAAW,MAAM,QAAQ,SAAS,KAAG,MAIxE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,QAAQ,SAAS,KAAG,OAM7D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,QAAQ,SAAS,KAAG,OAGjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAO,MAAa,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,KAAG,OAE9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePriceFactor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/usePriceFactor.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,UAAU,EAOX,MAAM,sBAAsB,CAAC;AAE9B,UAAU,cAAc;IACtB,IAAI,EAAE,GAAG,CAAC;IACV,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,cAAc,GAAG,eAAe,CAkIlH"}
1
+ {"version":3,"file":"usePriceFactor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/components/PriceFactorCellRenderer/usePriceFactor.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,UAAU,EAOX,MAAM,sBAAsB,CAAC;AAE9B,UAAU,cAAc;IACtB,IAAI,EAAE,GAAG,CAAC;IACV,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,cAAc,GAAG,eAAe,CAmIlH"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/modules/TableEnrichment/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AA0EjF,QAAA,MAAM,oBAAoB,yBAEzB,CAAC;AACF,QAAA,MAAM,iBAAiB,yBAEtB,CAAC;AAEF,QAAA,MAAM,cAAc,yBAEnB,CAAC;AAEF,QAAA,MAAM,gBAAgB,yBAErB,CAAC;AAEF,QAAA,MAAM,eAAe,yBAEpB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/modules/TableEnrichment/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAoEjF,QAAA,MAAM,oBAAoB,yBAEzB,CAAC;AACF,QAAA,MAAM,iBAAiB,yBAEtB,CAAC;AAEF,QAAA,MAAM,cAAc,yBAEnB,CAAC;AAEF,QAAA,MAAM,gBAAgB,yBAErB,CAAC;AAEF,QAAA,MAAM,eAAe,yBAEpB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"propertyColumn.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/modules/TableEnrichment/propertyColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAgC,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAML,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAC;AAG1C,8IAA8I;AAC9I,eAAO,MAAM,oBAAoB,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CAQzF,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,8HAA8H;IAC9H,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,EAAE,SAAS,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,CAyE1H"}
1
+ {"version":3,"file":"propertyColumn.d.ts","sourceRoot":"","sources":["../../../../../../../../src/ui/IDMEnricherEditor/modules/TableEnrichment/propertyColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAgC,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAML,KAAK,gBAAgB,EAEtB,MAAM,kCAAkC,CAAC;AAG1C,8IAA8I;AAC9I,eAAO,MAAM,oBAAoB,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CASzF,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,8HAA8H;IAC9H,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,EAAE,SAAS,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,CAyE1H"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crystaldesign/diva-backoffice",
3
- "version": "26.12.0-beta.36",
3
+ "version": "26.12.0-beta.38",
4
4
  "description": "Ant Design backoffice shell (configuration modules) and the Diva Data Engine component hosting the IDM and enricher editors.",
5
5
  "license": "COMMERCIAL",
6
6
  "devDependencies": {
@@ -16,14 +16,14 @@
16
16
  "dependencies": {
17
17
  "@ant-design/icons": "6.3.4",
18
18
  "@babel/runtime": "7.24.7",
19
- "@crystaldesign/content-box": "26.12.0-beta.36",
20
- "@crystaldesign/content-item": "26.12.0-beta.36",
21
- "@crystaldesign/diva-agent": "26.12.0-beta.36",
22
- "@crystaldesign/diva-core": "26.12.0-beta.36",
23
- "@crystaldesign/diva-utils": "26.12.0-beta.36",
24
- "@crystaldesign/media-upload": "26.12.0-beta.36",
25
- "@crystaldesign/rtf-editor": "26.12.0-beta.36",
26
- "@crystaldesign/spreadsheet": "26.12.0-beta.36",
19
+ "@crystaldesign/content-box": "26.12.0-beta.38",
20
+ "@crystaldesign/content-item": "26.12.0-beta.38",
21
+ "@crystaldesign/diva-agent": "26.12.0-beta.38",
22
+ "@crystaldesign/diva-core": "26.12.0-beta.38",
23
+ "@crystaldesign/diva-utils": "26.12.0-beta.38",
24
+ "@crystaldesign/media-upload": "26.12.0-beta.38",
25
+ "@crystaldesign/rtf-editor": "26.12.0-beta.38",
26
+ "@crystaldesign/spreadsheet": "26.12.0-beta.38",
27
27
  "@dnd-kit/core": "^6.1.0",
28
28
  "@dnd-kit/sortable": "^8.0.0",
29
29
  "@dnd-kit/utilities": "^3.2.2",
@@ -57,5 +57,5 @@
57
57
  },
58
58
  "module": "build/esm/index.js",
59
59
  "types": "./build/types/backoffice/src/index.d.ts",
60
- "gitHead": "cebceaf719ec298fd1e33068a59e1722951b38c3"
60
+ "gitHead": "86af24a84325ee470f7dce9d1159a6577fde22bf"
61
61
  }