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.d.mts CHANGED
@@ -51,7 +51,7 @@ interface IExtraFieldOption {
51
51
 
52
52
  declare const getOrganizationName: () => string;
53
53
  declare const generateBarcodeHtml: (value: string, printType: number, height?: number) => string;
54
- declare const renderSingleLabelHtml: (item: IBarcodePrintItem, settings: ISettingPrint, companyNameDefault?: string, barcodeHeight?: number) => string;
54
+ declare const renderSingleLabelHtml: (item: IBarcodePrintItem, settings: ISettingPrint, companyNameDefault?: string, barcodeHeight?: number, dynamicFontSize?: string, isTest?: boolean) => string;
55
55
  declare const getPaperSizeLabel: (paperSize?: number, stampNumber?: number) => string;
56
56
  declare const generatePrintDocument: (settings: ISettingPrint, items: IBarcodePrintItem[], isTest?: boolean, isPreview?: boolean) => {
57
57
  html: string;
package/dist/index.d.ts CHANGED
@@ -51,7 +51,7 @@ interface IExtraFieldOption {
51
51
 
52
52
  declare const getOrganizationName: () => string;
53
53
  declare const generateBarcodeHtml: (value: string, printType: number, height?: number) => string;
54
- declare const renderSingleLabelHtml: (item: IBarcodePrintItem, settings: ISettingPrint, companyNameDefault?: string, barcodeHeight?: number) => string;
54
+ declare const renderSingleLabelHtml: (item: IBarcodePrintItem, settings: ISettingPrint, companyNameDefault?: string, barcodeHeight?: number, dynamicFontSize?: string, isTest?: boolean) => string;
55
55
  declare const getPaperSizeLabel: (paperSize?: number, stampNumber?: number) => string;
56
56
  declare const generatePrintDocument: (settings: ISettingPrint, items: IBarcodePrintItem[], isTest?: boolean, isPreview?: boolean) => {
57
57
  html: string;
package/dist/index.js CHANGED
@@ -102,7 +102,7 @@ var generateBarcodeHtml = (value, printType, height = 24) => {
102
102
  return `<div style="font-size: 10px; text-align: center; word-break: break-word;">${value}</div>`;
103
103
  }
104
104
  };
105
- var renderSingleLabelHtml = (item, settings, companyNameDefault, barcodeHeight = 22) => {
105
+ var renderSingleLabelHtml = (item, settings, companyNameDefault, barcodeHeight = 22, dynamicFontSize, isTest = false) => {
106
106
  const {
107
107
  printType = 0,
108
108
  hinge = false,
@@ -139,7 +139,15 @@ var renderSingleLabelHtml = (item, settings, companyNameDefault, barcodeHeight =
139
139
  const isItalic = !!field.italic;
140
140
  const isUnderline = !!field.underline;
141
141
  const textColor = field.color || "#000000";
142
- const customFontSize = field.fontSize ? `${field.fontSize}px` : void 0;
142
+ let customFontSize = void 0;
143
+ if (field.fontSize) {
144
+ if (isTest) {
145
+ customFontSize = `${field.fontSize}px`;
146
+ } else {
147
+ const baseScale = parseFloat(dynamicFontSize || "7.5");
148
+ customFontSize = `${(field.fontSize / 13 * baseScale).toFixed(1)}px`;
149
+ }
150
+ }
143
151
  const offsetLeft = field.offsetX && field.offsetX > 0 ? `${field.offsetX}px` : void 0;
144
152
  const styleRules = [
145
153
  `font-weight: ${isBold ? 700 : 400} !important`,
@@ -184,7 +192,10 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
184
192
  labelList = [sampleItem];
185
193
  } else {
186
194
  items.forEach((item) => {
187
- const qty = Math.max(1, Number(item.printQuantity || item.quantity || 1));
195
+ var _a2, _b;
196
+ const rawQty = (_b = (_a2 = item.printQuantity) != null ? _a2 : item.quantity) != null ? _b : 1;
197
+ const parsedQty = typeof rawQty === "number" ? rawQty : parseInt(String(rawQty), 10);
198
+ const qty = Math.max(1, isNaN(parsedQty) ? 1 : parsedQty);
188
199
  for (let i = 0; i < qty; i++) {
189
200
  labelList.push({ ...item, companyName: orgName });
190
201
  }
@@ -196,6 +207,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
196
207
  if (labelList.length === 0) {
197
208
  return { html: "", totalStamps: 0, paperLabel, uniqueProducts: items.length };
198
209
  }
210
+ const enabledFieldsCount = (settings.fields || []).filter((f) => f.enabled).length || 4;
199
211
  let cols = 3;
200
212
  let pageSizeCss = "105mm auto";
201
213
  let pageMargin = "0";
@@ -203,9 +215,9 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
203
215
  let labelHeight = "22mm";
204
216
  let labelGap = "1.5mm";
205
217
  let bodyPadding = "1mm";
206
- let stampPadding = "2px 4px";
207
- let dynamicFontSize = "8px";
208
- let barcodeHeight = 16;
218
+ let stampPadding = enabledFieldsCount >= 5 ? "1px 2px" : "1.5px 3px";
219
+ let dynamicFontSize = enabledFieldsCount >= 5 ? "6.8px" : enabledFieldsCount >= 4 ? "7.2px" : "7.8px";
220
+ let barcodeHeight = enabledFieldsCount >= 5 ? 12 : enabledFieldsCount >= 4 ? 14 : 16;
209
221
  let sheetWidth = "105mm";
210
222
  let sheetMinHeight = "60mm";
211
223
  let sheetPadding = "2mm 1mm";
@@ -235,9 +247,9 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
235
247
  labelHeight = "22mm";
236
248
  labelGap = "2mm";
237
249
  bodyPadding = "1mm";
238
- stampPadding = "2px 4px";
239
- dynamicFontSize = "8px";
240
- barcodeHeight = 18;
250
+ stampPadding = enabledFieldsCount >= 5 ? "1px 2px" : "1.5px 3px";
251
+ dynamicFontSize = enabledFieldsCount >= 5 ? "7px" : enabledFieldsCount >= 4 ? "7.5px" : "8px";
252
+ barcodeHeight = enabledFieldsCount >= 5 ? 13 : enabledFieldsCount >= 4 ? 15 : 18;
241
253
  sheetWidth = "80mm";
242
254
  sheetMinHeight = "60mm";
243
255
  sheetPadding = "2mm 1mm";
@@ -251,9 +263,9 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
251
263
  labelHeight = "22mm";
252
264
  labelGap = "1.5mm";
253
265
  bodyPadding = "1mm";
254
- stampPadding = "1px 3px";
255
- dynamicFontSize = "7.5px";
256
- barcodeHeight = 16;
266
+ stampPadding = enabledFieldsCount >= 5 ? "1px 2px" : "1px 3px";
267
+ dynamicFontSize = enabledFieldsCount >= 5 ? "6.8px" : enabledFieldsCount >= 4 ? "7.2px" : "7.6px";
268
+ barcodeHeight = enabledFieldsCount >= 5 ? 12 : enabledFieldsCount >= 4 ? 14 : 16;
257
269
  sheetWidth = "105mm";
258
270
  sheetMinHeight = "60mm";
259
271
  sheetPadding = "2mm 1mm";
@@ -324,7 +336,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
324
336
  pages.push({ items: labelList, emptyCount: 0 });
325
337
  }
326
338
  const pagesHtml = pages.map((page, pageIndex) => {
327
- const pageLabelsHtml = page.items.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight)).join("");
339
+ const pageLabelsHtml = page.items.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight, dynamicFontSize, isTest)).join("");
328
340
  let emptySlotsHtml = "";
329
341
  if (page.emptyCount > 0) {
330
342
  emptySlotsHtml = Array(page.emptyCount).fill(0).map(() => '<div class="empty-slot" title="V\u1ECB tr\xED tem tr\u1ED1ng tr\xEAn decal"></div>').join("");
@@ -404,6 +416,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
404
416
  width: 100%;
405
417
  min-height: ${isTest ? "48mm" : labelHeight === "auto" ? "22mm" : labelHeight};
406
418
  height: ${labelHeight === "auto" ? "auto" : labelHeight};
419
+ max-height: ${isTest ? "none" : labelHeight === "auto" ? "none" : labelHeight};
407
420
  padding: ${stampPadding};
408
421
  display: flex;
409
422
  flex-direction: column;
@@ -433,17 +446,21 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
433
446
  }
434
447
  .lbl-dynamic, .lbl-company, .lbl-code, .lbl-name, .lbl-price {
435
448
  font-size: ${dynamicFontSize};
436
- line-height: 1.2;
449
+ line-height: 1.15;
437
450
  word-break: break-word;
438
- white-space: normal;
439
- margin-bottom: 2px;
451
+ overflow: hidden;
452
+ text-overflow: ellipsis;
453
+ display: -webkit-box;
454
+ -webkit-box-orient: vertical;
455
+ -webkit-line-clamp: ${enabledFieldsCount >= 5 ? 1 : 2};
456
+ margin-bottom: ${enabledFieldsCount >= 5 ? "1px" : "1.5px"};
440
457
  }
441
458
  .code-wrapper {
442
459
  display: flex;
443
460
  flex-direction: column;
444
461
  justify-content: center;
445
462
  align-items: center;
446
- margin: 2px 0;
463
+ margin: ${enabledFieldsCount >= 5 ? "1px 0" : "1.5px 0"};
447
464
  width: 100%;
448
465
  }
449
466
  .barcode-svg-box {
@@ -470,7 +487,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
470
487
  </html>
471
488
  `;
472
489
  } else {
473
- const labelsHtml = labelList.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight)).join("");
490
+ const labelsHtml = labelList.map((item) => renderSingleLabelHtml(item, settings, orgName, barcodeHeight, dynamicFontSize, isTest)).join("");
474
491
  printDocument = `
475
492
  <!DOCTYPE html>
476
493
  <html>
@@ -507,6 +524,8 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
507
524
  .stamp-item {
508
525
  width: 100%;
509
526
  min-height: ${isTest ? "48mm" : labelHeight === "auto" ? "22mm" : labelHeight};
527
+ height: ${isTest ? "auto" : labelHeight === "auto" ? "auto" : labelHeight};
528
+ max-height: ${isTest ? "none" : labelHeight === "auto" ? "none" : labelHeight};
510
529
  padding: ${stampPadding};
511
530
  display: flex;
512
531
  flex-direction: column;
@@ -517,6 +536,7 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
517
536
  border: 1px solid #d8d6de;
518
537
  border-radius: 4px;
519
538
  background: #fff;
539
+ box-sizing: border-box;
520
540
  }
521
541
  .text-left {
522
542
  text-align: left;
@@ -528,17 +548,21 @@ var generatePrintDocument = (settings, items, isTest = false, isPreview = false)
528
548
  }
529
549
  .lbl-dynamic, .lbl-company, .lbl-code, .lbl-name, .lbl-price {
530
550
  font-size: ${dynamicFontSize};
531
- line-height: 1.2;
551
+ line-height: 1.15;
532
552
  word-break: break-word;
533
- white-space: normal;
534
- margin-bottom: 2px;
553
+ overflow: hidden;
554
+ text-overflow: ellipsis;
555
+ display: -webkit-box;
556
+ -webkit-box-orient: vertical;
557
+ -webkit-line-clamp: ${enabledFieldsCount >= 5 ? 1 : 2};
558
+ margin-bottom: ${enabledFieldsCount >= 5 ? "1px" : "1.5px"};
535
559
  }
536
560
  .code-wrapper {
537
561
  display: flex;
538
562
  flex-direction: column;
539
563
  justify-content: center;
540
564
  align-items: center;
541
- margin: 2px 0;
565
+ margin: ${enabledFieldsCount >= 5 ? "1px 0" : "1.5px 0"};
542
566
  width: 100%;
543
567
  }
544
568
  .barcode-svg-box {
@@ -860,10 +884,14 @@ var styles = {
860
884
  dynamicText: {
861
885
  fontSize: 13,
862
886
  color: "#111",
863
- lineHeight: 1.25,
887
+ lineHeight: 1.2,
864
888
  marginBottom: 2,
865
889
  wordBreak: "break-word",
866
- whiteSpace: "normal"
890
+ overflow: "hidden",
891
+ textOverflow: "ellipsis",
892
+ display: "-webkit-box",
893
+ WebkitBoxOrient: "vertical",
894
+ WebkitLineClamp: 2
867
895
  }
868
896
  };
869
897
  var preview_print_default = PreviewPrint;
@@ -945,7 +973,7 @@ var SettingPrint = (props) => {
945
973
  italic: false,
946
974
  underline: false,
947
975
  color: "#000000",
948
- fontSize: 13,
976
+ fontSize: void 0,
949
977
  offsetX: 0,
950
978
  prefix: fieldTemplate.prefix,
951
979
  customValue: fieldTemplate.customValue || "N\u1ED9i dung t\xF9y ch\u1EC9nh"