esvn-react-barcode-print 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -58,7 +58,7 @@ var generateBarcodeHtml = (value, printType, height = 24) => {
58
58
  return `<div style="font-size: 10px; text-align: center; word-break: break-word;">${value}</div>`;
59
59
  }
60
60
  };
61
- var renderSingleLabelHtml = (item, settings, companyNameDefault, barcodeHeight = 22) => {
61
+ var renderSingleLabelHtml = (item, settings, companyNameDefault, barcodeHeight = 22, dynamicFontSize, isTest = false) => {
62
62
  const {
63
63
  printType = 0,
64
64
  hinge = false,
@@ -95,7 +95,15 @@ var renderSingleLabelHtml = (item, settings, companyNameDefault, barcodeHeight =
95
95
  const isItalic = !!field.italic;
96
96
  const isUnderline = !!field.underline;
97
97
  const textColor = field.color || "#000000";
98
- const customFontSize = field.fontSize ? `${field.fontSize}px` : void 0;
98
+ let customFontSize = void 0;
99
+ if (field.fontSize) {
100
+ if (isTest) {
101
+ customFontSize = `${field.fontSize}px`;
102
+ } else {
103
+ const baseScale = parseFloat(dynamicFontSize || "7.5");
104
+ customFontSize = `${(field.fontSize / 13 * baseScale).toFixed(1)}px`;
105
+ }
106
+ }
99
107
  const offsetLeft = field.offsetX && field.offsetX > 0 ? `${field.offsetX}px` : void 0;
100
108
  const styleRules = [
101
109
  `font-weight: ${isBold ? 700 : 400} !important`,
@@ -140,7 +148,10 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
140
148
  labelList = [sampleItem];
141
149
  } else {
142
150
  items.forEach((item) => {
143
- const qty = Math.max(1, Number(item.printQuantity || item.quantity || 1));
151
+ var _a2, _b;
152
+ const rawQty = (_b = (_a2 = item.printQuantity) != null ? _a2 : item.quantity) != null ? _b : 1;
153
+ const parsedQty = typeof rawQty === "number" ? rawQty : parseInt(String(rawQty), 10);
154
+ const qty = Math.max(1, isNaN(parsedQty) ? 1 : parsedQty);
144
155
  for (let i = 0; i < qty; i++) {
145
156
  labelList.push({ ...item, companyName: orgName });
146
157
  }
@@ -152,6 +163,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
152
163
  if (labelList.length === 0) {
153
164
  return { html: "", totalStamps: 0, paperLabel, uniqueProducts: items.length };
154
165
  }
166
+ const enabledFieldsCount = (settings.fields || []).filter((f) => f.enabled).length || 4;
155
167
  let cols = 3;
156
168
  let pageSizeCss = "105mm auto";
157
169
  let pageMargin = "0";
@@ -159,9 +171,9 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
159
171
  let labelHeight = "22mm";
160
172
  let labelGap = "1.5mm";
161
173
  let bodyPadding = "1mm";
162
- let stampPadding = "2px 4px";
163
- let dynamicFontSize = "8px";
164
- let barcodeHeight = 16;
174
+ let stampPadding = enabledFieldsCount >= 5 ? "1px 2px" : "1.5px 3px";
175
+ let dynamicFontSize = enabledFieldsCount >= 5 ? "6.8px" : enabledFieldsCount >= 4 ? "7.2px" : "7.8px";
176
+ let barcodeHeight = enabledFieldsCount >= 5 ? 12 : enabledFieldsCount >= 4 ? 14 : 16;
165
177
  let sheetWidth = "105mm";
166
178
  let sheetMinHeight = "60mm";
167
179
  let sheetPadding = "2mm 1mm";
@@ -191,9 +203,9 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
191
203
  labelHeight = "22mm";
192
204
  labelGap = "2mm";
193
205
  bodyPadding = "1mm";
194
- stampPadding = "2px 4px";
195
- dynamicFontSize = "8px";
196
- barcodeHeight = 18;
206
+ stampPadding = enabledFieldsCount >= 5 ? "1px 2px" : "1.5px 3px";
207
+ dynamicFontSize = enabledFieldsCount >= 5 ? "7px" : enabledFieldsCount >= 4 ? "7.5px" : "8px";
208
+ barcodeHeight = enabledFieldsCount >= 5 ? 13 : enabledFieldsCount >= 4 ? 15 : 18;
197
209
  sheetWidth = "80mm";
198
210
  sheetMinHeight = "60mm";
199
211
  sheetPadding = "2mm 1mm";
@@ -207,9 +219,9 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
207
219
  labelHeight = "22mm";
208
220
  labelGap = "1.5mm";
209
221
  bodyPadding = "1mm";
210
- stampPadding = "1px 3px";
211
- dynamicFontSize = "7.5px";
212
- barcodeHeight = 16;
222
+ stampPadding = enabledFieldsCount >= 5 ? "1px 2px" : "1px 3px";
223
+ dynamicFontSize = enabledFieldsCount >= 5 ? "6.8px" : enabledFieldsCount >= 4 ? "7.2px" : "7.6px";
224
+ barcodeHeight = enabledFieldsCount >= 5 ? 12 : enabledFieldsCount >= 4 ? 14 : 16;
213
225
  sheetWidth = "105mm";
214
226
  sheetMinHeight = "60mm";
215
227
  sheetPadding = "2mm 1mm";
@@ -280,7 +292,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
280
292
  pages.push({ items: labelList, emptyCount: 0 });
281
293
  }
282
294
  const pagesHtml = pages.map((page, pageIndex) => {
283
- const pageLabelsHtml = page.items.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight)).join("");
295
+ const pageLabelsHtml = page.items.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight, dynamicFontSize, isTest)).join("");
284
296
  let emptySlotsHtml = "";
285
297
  if (page.emptyCount > 0) {
286
298
  emptySlotsHtml = Array(page.emptyCount).fill(0).map(() => '<div class="empty-slot" title="V\u1ECB tr\xED tem tr\u1ED1ng tr\xEAn decal"></div>').join("");
@@ -360,6 +372,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
360
372
  width: 100%;
361
373
  min-height: ${isTest ? "48mm" : labelHeight === "auto" ? "22mm" : labelHeight};
362
374
  height: ${labelHeight === "auto" ? "auto" : labelHeight};
375
+ max-height: ${isTest ? "none" : labelHeight === "auto" ? "none" : labelHeight};
363
376
  padding: ${stampPadding};
364
377
  display: flex;
365
378
  flex-direction: column;
@@ -389,17 +402,21 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
389
402
  }
390
403
  .lbl-dynamic, .lbl-company, .lbl-code, .lbl-name, .lbl-price {
391
404
  font-size: ${dynamicFontSize};
392
- line-height: 1.2;
405
+ line-height: 1.15;
393
406
  word-break: break-word;
394
- white-space: normal;
395
- margin-bottom: 2px;
407
+ overflow: hidden;
408
+ text-overflow: ellipsis;
409
+ display: -webkit-box;
410
+ -webkit-box-orient: vertical;
411
+ -webkit-line-clamp: ${enabledFieldsCount >= 5 ? 1 : 2};
412
+ margin-bottom: ${enabledFieldsCount >= 5 ? "1px" : "1.5px"};
396
413
  }
397
414
  .code-wrapper {
398
415
  display: flex;
399
416
  flex-direction: column;
400
417
  justify-content: center;
401
418
  align-items: center;
402
- margin: 2px 0;
419
+ margin: ${enabledFieldsCount >= 5 ? "1px 0" : "1.5px 0"};
403
420
  width: 100%;
404
421
  }
405
422
  .barcode-svg-box {
@@ -426,7 +443,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
426
443
  </html>
427
444
  `;
428
445
  } else {
429
- const labelsHtml = labelList.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight)).join("");
446
+ const labelsHtml = labelList.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight, dynamicFontSize, isTest)).join("");
430
447
  printDocument = `
431
448
  <!DOCTYPE html>
432
449
  <html>
@@ -463,6 +480,8 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
463
480
  .stamp-item {
464
481
  width: 100%;
465
482
  min-height: ${isTest ? "48mm" : labelHeight === "auto" ? "22mm" : labelHeight};
483
+ height: ${isTest ? "auto" : labelHeight === "auto" ? "auto" : labelHeight};
484
+ max-height: ${isTest ? "none" : labelHeight === "auto" ? "none" : labelHeight};
466
485
  padding: ${stampPadding};
467
486
  display: flex;
468
487
  flex-direction: column;
@@ -473,6 +492,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
473
492
  border: 1px solid #d8d6de;
474
493
  border-radius: 4px;
475
494
  background: #fff;
495
+ box-sizing: border-box;
476
496
  }
477
497
  .text-left {
478
498
  text-align: left;
@@ -484,17 +504,21 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
484
504
  }
485
505
  .lbl-dynamic, .lbl-company, .lbl-code, .lbl-name, .lbl-price {
486
506
  font-size: ${dynamicFontSize};
487
- line-height: 1.2;
507
+ line-height: 1.15;
488
508
  word-break: break-word;
489
- white-space: normal;
490
- margin-bottom: 2px;
509
+ overflow: hidden;
510
+ text-overflow: ellipsis;
511
+ display: -webkit-box;
512
+ -webkit-box-orient: vertical;
513
+ -webkit-line-clamp: ${enabledFieldsCount >= 5 ? 1 : 2};
514
+ margin-bottom: ${enabledFieldsCount >= 5 ? "1px" : "1.5px"};
491
515
  }
492
516
  .code-wrapper {
493
517
  display: flex;
494
518
  flex-direction: column;
495
519
  justify-content: center;
496
520
  align-items: center;
497
- margin: 2px 0;
521
+ margin: ${enabledFieldsCount >= 5 ? "1px 0" : "1.5px 0"};
498
522
  width: 100%;
499
523
  }
500
524
  .barcode-svg-box {
@@ -816,10 +840,14 @@ var styles = {
816
840
  dynamicText: {
817
841
  fontSize: 13,
818
842
  color: "#111",
819
- lineHeight: 1.25,
843
+ lineHeight: 1.2,
820
844
  marginBottom: 2,
821
845
  wordBreak: "break-word",
822
- whiteSpace: "normal"
846
+ overflow: "hidden",
847
+ textOverflow: "ellipsis",
848
+ display: "-webkit-box",
849
+ WebkitBoxOrient: "vertical",
850
+ WebkitLineClamp: 2
823
851
  }
824
852
  };
825
853
  var preview_print_default = PreviewPrint;
@@ -921,7 +949,7 @@ var SettingPrint = (props) => {
921
949
  italic: false,
922
950
  underline: false,
923
951
  color: "#000000",
924
- fontSize: 13,
952
+ fontSize: void 0,
925
953
  offsetX: 0,
926
954
  prefix: fieldTemplate.prefix,
927
955
  customValue: fieldTemplate.customValue || "N\u1ED9i dung t\xF9y ch\u1EC9nh"