@isi-ui7/bos7-shared 0.3.2 → 0.3.4

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.
@@ -145,6 +145,26 @@ export type FormSection<TData extends Record<string, unknown>> = {
145
145
  /** Number of equal columns in the section grid. Default 1. */
146
146
  columns?: 1 | 2 | 3;
147
147
  fields: FormField<TData>[];
148
+ /**
149
+ * Jalan keluar: render konten sendiri MENGGANTIKAN grid `fields`.
150
+ *
151
+ * Ada untuk panel yang harus MEMBACA dan MENULIS state form sekaligus, yang
152
+ * tidak bisa dinyatakan sebagai field — mis. panel "Cek Identitas" pada
153
+ * registrasi nasabah, yang memanggil backend lalu menyetel penanda hasilnya
154
+ * agar gerbang `canLeavePage` bisa membacanya.
155
+ *
156
+ * `description` sudah ReactNode, tapi ia tidak punya akses ke `value` maupun
157
+ * cara menulis balik — jadi tidak cukup untuk keperluan ini.
158
+ *
159
+ * Opsional: section tanpa `render` dirender persis seperti sebelumnya.
160
+ * `fields` tetap wajib (pakai `[]`) supaya tipe section tidak bercabang dua.
161
+ */
162
+ render?: (ctx: {
163
+ value: TData;
164
+ setValue: (patch: Partial<TData>) => void;
165
+ mode: FormMode;
166
+ disabled: boolean;
167
+ }) => ReactNode;
148
168
  };
149
169
  export type FormPageDef<TData extends Record<string, unknown>> = {
150
170
  label: string;
@@ -162,6 +182,29 @@ export type FormLayout<TData extends Record<string, unknown>> = {
162
182
  type: "wizard";
163
183
  pages: FormPageDef<TData>[];
164
184
  validateOnNext?: boolean;
185
+ /**
186
+ * Gerbang antar-langkah. Dipanggil SEBELUM pindah dari `fromPage`;
187
+ * mengembalikan `{ ok: false, message }` membatalkan navigasi dan
188
+ * menampilkan pesannya.
189
+ *
190
+ * Ada karena sebagian wizard punya langkah yang berfungsi sebagai
191
+ * GERBANG, bukan sekadar formulir — mis. registrasi nasabah: verifikasi
192
+ * identitas di Langkah 1 harus berhasil sebelum data lengkap boleh
193
+ * diisi, supaya dua CIF untuk satu orang tidak pernah terbentuk.
194
+ *
195
+ * Tanpa ini, satu-satunya cara menegakkannya adalah membangun wizard
196
+ * bespoke per layar — dan ada EMPAT layar registrasi (perorangan,
197
+ * badan usaha, WIC perorangan, WIC badan usaha) yang butuh gerbang yang
198
+ * sama persis.
199
+ *
200
+ * ⚠️ Ini penjaga NAVIGASI, bukan penjaga keamanan. Ia mencegah operator
201
+ * melangkah lebih jauh; ia TIDAK mencegah payload dikirim langsung ke
202
+ * backend. Aturan yang sama WAJIB ditegakkan lagi di server.
203
+ */
204
+ canLeavePage?: (fromPage: number, data: TData) => {
205
+ ok: boolean;
206
+ message?: string;
207
+ };
165
208
  };
166
209
  export type CrudForm<TData extends Record<string, unknown>> = {
167
210
  title: {
@@ -27391,7 +27391,7 @@ function ba(M, L) {
27391
27391
  return String(pr(M, L));
27392
27392
  }
27393
27393
  async function Io(M, L, r) {
27394
- const { default: x } = await import("./jspdf.es.min-CnDMxfNp.js").then((o) => o.j), { default: w } = await import("./jspdf.plugin.autotable-DcntYaes.js"), c = new x({ orientation: "landscape" });
27394
+ const { default: x } = await import("./jspdf.es.min-iZWDIC-k.js").then((o) => o.j), { default: w } = await import("./jspdf.plugin.autotable-DFaknRns.js"), c = new x({ orientation: "landscape" });
27395
27395
  c.setFontSize(14), c.text(r, 14, 15), c.setFontSize(10), w(c, {
27396
27396
  head: [L.map((o) => o.title)],
27397
27397
  body: M.map((o) => L.map((a) => ba(o[a.field], a.displayFormat))),
@@ -28689,77 +28689,77 @@ async function rl(M, L) {
28689
28689
  return o.columnTypes = { ...a, ...L.extraColumnTypes }, Dt.NextResponse.json(o, { status: c.status });
28690
28690
  }
28691
28691
  export {
28692
- Ho as $,
28693
- Bi as A,
28694
- lo as B,
28695
- uo as C,
28696
- co as D,
28697
- Eo as E,
28698
- ko as F,
28699
- To as G,
28700
- Ao as H,
28701
- Co as I,
28702
- Ro as J,
28703
- Mo as K,
28704
- Oo as L,
28705
- Io as M,
28706
- Po as N,
28692
+ Wi as $,
28693
+ vo as A,
28694
+ Lo as B,
28695
+ Vo as C,
28696
+ wi as D,
28697
+ io as E,
28698
+ Jr as F,
28699
+ Oo as G,
28700
+ Io as H,
28701
+ jo as I,
28702
+ Bo as J,
28703
+ uo as K,
28704
+ ho as L,
28705
+ dr as M,
28706
+ ga as N,
28707
28707
  go as O,
28708
- So as P,
28709
- No as Q,
28710
- ga as R,
28711
- ya as S,
28712
- jo as T,
28713
- Do as U,
28714
- Lo as V,
28715
- Bo as W,
28716
- Fo as X,
28717
- wi as Y,
28718
- Uo as Z,
28719
- wa as _,
28720
- rl as a,
28721
- zo as a0,
28722
- $o as a1,
28723
- Bt as a2,
28724
- Wo as a3,
28725
- _a as a4,
28726
- xa as a5,
28727
- Sa as a6,
28728
- qo as a7,
28729
- Vo as a8,
28730
- Xo as a9,
28731
- Ko as aa,
28732
- Go as ab,
28733
- Yo as ac,
28734
- Zo as ad,
28735
- Jo as ae,
28736
- Qo as af,
28737
- Za as ag,
28738
- el as ah,
28739
- tl as ai,
28740
- Fi as b,
28708
+ ko as P,
28709
+ qo as Q,
28710
+ xa as R,
28711
+ Sa as S,
28712
+ ao as T,
28713
+ Wo as U,
28714
+ Ko as V,
28715
+ Go as W,
28716
+ Yo as X,
28717
+ Zo as Y,
28718
+ xo as Z,
28719
+ Do as _,
28720
+ Xo as a,
28721
+ _a as a0,
28722
+ Uo as a1,
28723
+ wa as a2,
28724
+ Qa as a3,
28725
+ rl as a4,
28726
+ Po as a5,
28727
+ $i as a6,
28728
+ _o as a7,
28729
+ Ho as a8,
28730
+ so as a9,
28731
+ Jo as aa,
28732
+ wo as ab,
28733
+ lo as ac,
28734
+ qi as ad,
28735
+ Fi as ae,
28736
+ En as af,
28737
+ tl as ag,
28738
+ Fo as ah,
28739
+ fo as ai,
28740
+ Bi as b,
28741
28741
  Ze as c,
28742
- fo as d,
28743
- ho as e,
28744
- po as f,
28742
+ yo as d,
28743
+ To as e,
28744
+ Eo as f,
28745
28745
  Qi as g,
28746
- Jr as h,
28747
- mo as i,
28748
- bo as j,
28749
- xo as k,
28750
- yo as l,
28751
- vo as m,
28752
- no as n,
28753
- io as o,
28754
- Qa as p,
28755
- $i as q,
28756
- _o as r,
28757
- wo as s,
28758
- so as t,
28759
- En as u,
28760
- ao as v,
28761
- Wi as w,
28762
- qi as x,
28763
- oo as y,
28764
- dr as z
28746
+ So as h,
28747
+ Bt as i,
28748
+ $o as j,
28749
+ zo as k,
28750
+ Qo as l,
28751
+ Mo as m,
28752
+ Ao as n,
28753
+ Co as o,
28754
+ Ro as p,
28755
+ no as q,
28756
+ el as r,
28757
+ Za as s,
28758
+ No as t,
28759
+ mo as u,
28760
+ co as v,
28761
+ po as w,
28762
+ oo as x,
28763
+ ya as y,
28764
+ bo as z
28765
28765
  };
@@ -1,5 +1,5 @@
1
- import { c as Ke, g as Do } from "./index-1k-PSj-b.js";
2
- import { _ as Xa } from "./jspdf.es.min-CnDMxfNp.js";
1
+ import { c as Ke, g as Do } from "./index-DV8lJjii.js";
2
+ import { _ as Xa } from "./jspdf.es.min-iZWDIC-k.js";
3
3
  var vt = function(a) {
4
4
  return a && a.Math === Math && a;
5
5
  }, _ = (
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { m as s, a9 as o, A as t, Y as r, R as i, O as n, l, F as c, G as d, E as u, P as S, a3 as h, a2 as A, a1 as T, a0 as k, af as C, K as _, H as O, I as U, J as g, n as N, ah as P, ag as m, Q as E, i as F, D as p, f, y as I, S as R, j as x, V as v, a8 as y, o as L, h as b, L as B, M as D, T as M, W as H, C as V, e as W, z as q, a7 as K, a5 as w, a6 as z, v as G, aa as Q, ab as X, ac as Y, ad as j, k as J, U as Z, w as $, a4 as aa, Z as ea, _ as sa, p as oa, a as ta, N as ra, q as ia, r as na, $ as la, t as ca, ae as da, s as ua, B as Sa, x as ha, b as Aa, u as Ta, ai as ka, X as Ca, d as _a } from "./index-1k-PSj-b.js";
1
+ import { A as s, a as o, b as t, D as r, N as i, O as n, d as l, P as c, e as d, f as u, h as S, U as h, i as A, j as T, k, l as C, m as _, n as O, o as U, p as g, q as N, r as P, s as m, t as E, u as F, v as p, w as f, x as I, y as R, z as x, B as v, C as y, E as L, F as b, G as B, H as D, I as M, J as H, K as V, L as W, M as q, Q as K, R as w, S as z, T as G, V as Q, W as X, X as Y, Y as j, Z as J, _ as Z, $, a0 as aa, a1 as ea, a2 as sa, a3 as oa, a4 as ta, a5 as ra, a6 as ia, a7 as na, a8 as la, a9 as ca, aa as da, ab as ua, ac as Sa, ad as ha, ae as Aa, af as Ta, ag as ka, ah as Ca, ai as _a } from "./index-DV8lJjii.js";
2
2
  export {
3
3
  s as AUTH7_SCOPES,
4
4
  o as AppShellLayout,
@@ -8506,7 +8506,7 @@ function(n) {
8506
8506
  });
8507
8507
  }
8508
8508
  function t() {
8509
- return (Kt.DOMPurify ? Promise.resolve(Kt.DOMPurify) : import("./purify.es-CiEWEeUM.js")).catch(function(l) {
8509
+ return (Kt.DOMPurify ? Promise.resolve(Kt.DOMPurify) : import("./purify.es-Cm3utOpm.js")).catch(function(l) {
8510
8510
  return Promise.reject(new Error("Could not load dompurify: " + l));
8511
8511
  }).then(function(l) {
8512
8512
  return l.default ? l.default : l;
@@ -9216,7 +9216,7 @@ function(n) {
9216
9216
  var d = h.getContext("2d");
9217
9217
  d.fillStyle = "#fff", d.fillRect(0, 0, h.width, h.height);
9218
9218
  var m = { ignoreMouse: !0, ignoreAnimation: !0, ignoreDimensions: !0 }, _ = this;
9219
- return (Kt.canvg ? Promise.resolve(Kt.canvg) : import("./index.es-zuTIhIvp.js")).catch(function(k) {
9219
+ return (Kt.canvg ? Promise.resolve(Kt.canvg) : import("./index.es-DqL2wDqB.js")).catch(function(k) {
9220
9220
  return Promise.reject(new Error("Could not load canvg: " + k));
9221
9221
  }).then(function(k) {
9222
9222
  return k.default ? k.default : k;
@@ -256,8 +256,8 @@ function ot(e, t, r, i, n) {
256
256
  isNaN(p) || (a.fontSize = p / s);
257
257
  var y = st(i);
258
258
  y && (a.fontStyle = y);
259
- var C = (i.fontFamily || "").toLowerCase();
260
- return e.indexOf(C) !== -1 && (a.font = C), a;
259
+ var x = (i.fontFamily || "").toLowerCase();
260
+ return e.indexOf(x) !== -1 && (a.font = x), a;
261
261
  }
262
262
  function st(e) {
263
263
  var t = "";
@@ -398,10 +398,10 @@ function dt(e, t) {
398
398
  t.showFoot === !0 ? p = "everyPage" : t.showFoot === !1 ? p = "never" : p = (i = t.showFoot) !== null && i !== void 0 ? i : "everyPage";
399
399
  var y;
400
400
  t.showHead === !0 ? y = "everyPage" : t.showHead === !1 ? y = "never" : y = (n = t.showHead) !== null && n !== void 0 ? n : "everyPage";
401
- var C = (a = t.useCss) !== null && a !== void 0 ? a : !1, c = t.theme || (C ? "plain" : "striped"), x = !!t.horizontalPageBreak, rt = (s = t.horizontalPageBreakRepeat) !== null && s !== void 0 ? s : null;
401
+ var x = (a = t.useCss) !== null && a !== void 0 ? a : !1, c = t.theme || (x ? "plain" : "striped"), C = !!t.horizontalPageBreak, rt = (s = t.horizontalPageBreakRepeat) !== null && s !== void 0 ? s : null;
402
402
  return {
403
403
  includeHiddenHtml: (h = t.includeHiddenHtml) !== null && h !== void 0 ? h : !1,
404
- useCss: C,
404
+ useCss: x,
405
405
  theme: c,
406
406
  startY: m,
407
407
  margin: d,
@@ -412,7 +412,7 @@ function dt(e, t) {
412
412
  showFoot: p,
413
413
  tableLineWidth: (g = t.tableLineWidth) !== null && g !== void 0 ? g : 0,
414
414
  tableLineColor: (u = t.tableLineColor) !== null && u !== void 0 ? u : 200,
415
- horizontalPageBreak: x,
415
+ horizontalPageBreak: C,
416
416
  horizontalPageBreakRepeat: rt,
417
417
  horizontalPageBreakBehaviour: (v = t.horizontalPageBreakBehaviour) !== null && v !== void 0 ? v : "afterAllRows"
418
418
  };
@@ -604,8 +604,8 @@ var A = (
604
604
  }, e;
605
605
  }()
606
606
  );
607
- function Ct(e, t) {
608
- xt(e, t);
607
+ function xt(e, t) {
608
+ Ct(e, t);
609
609
  var r = [], i = 0;
610
610
  t.columns.forEach(function(a) {
611
611
  var s = a.getMaxCustomCellWidth(t);
@@ -618,7 +618,7 @@ function Ct(e, t) {
618
618
  return a.minWidth;
619
619
  })), n = Math.abs(n), !t.settings.horizontalPageBreak && n > 0.1 / e.scaleFactor() && (n = n < 1 ? n : Math.round(n), console.log("Of the table content, ".concat(n, " units width could not fit page"))), Ht(t), Dt(t, e), Pt(t);
620
620
  }
621
- function xt(e, t) {
621
+ function Ct(e, t) {
622
622
  var r = e.scaleFactor(), i = t.settings.horizontalPageBreak, n = U(e, t);
623
623
  t.allRows().forEach(function(a) {
624
624
  for (var s = 0, h = t.columns; s < h.length; s++) {
@@ -747,7 +747,7 @@ function Wt(e, t, r, i, n) {
747
747
  }
748
748
  function V(e, t) {
749
749
  var r = new P(e), i = Ft(t, r.scaleFactor()), n = new wt(t, i);
750
- return Ct(r, n), r.applyStyles(r.userStyles), n;
750
+ return xt(r, n), r.applyStyles(r.userStyles), n;
751
751
  }
752
752
  function Ft(e, t) {
753
753
  var r = e.content, i = kt(r.columns);
@@ -775,11 +775,11 @@ function k(e, t, r, i, n, a) {
775
775
  if (v === 0) {
776
776
  var y = void 0;
777
777
  Array.isArray(f) ? y = f[p.index - u - l] : y = f[p.dataKey];
778
- var C = {};
779
- typeof y == "object" && !Array.isArray(y) && (C = (y == null ? void 0 : y.styles) || {});
780
- var c = Rt(e, p, o, n, i, a, C), x = new Z(y, c, e);
781
- g[p.dataKey] = x, g[p.index] = x, v = x.colSpan - 1, s[p.index] = {
782
- left: x.rowSpan - 1,
778
+ var x = {};
779
+ typeof y == "object" && !Array.isArray(y) && (x = (y == null ? void 0 : y.styles) || {});
780
+ var c = Rt(e, p, o, n, i, a, x), C = new Z(y, c, e);
781
+ g[p.dataKey] = C, g[p.index] = C, v = C.colSpan - 1, s[p.index] = {
782
+ left: C.rowSpan - 1,
783
783
  times: v
784
784
  };
785
785
  } else
@@ -908,14 +908,11 @@ function jt(e, t, r, i, n) {
908
908
  }
909
909
  function N(e, t, r, i, n, a) {
910
910
  e.applyStyles(e.userStyles), a = a ?? t.body.length;
911
- for (var s = Math.min(r + a, t.body.length), h = -1, f = t.body.slice(r, s), o = 0; o < f.length; o++) {
912
- var l = f[o], g = r + o === t.body.length - 1, u = et(e, t, g, i);
913
- if (l.canEntireRowFit(u, n))
914
- S(e, t, l, i, n), h = r + o;
915
- else
916
- break;
917
- }
918
- return h;
911
+ var s = Math.min(r + a, t.body.length), h = -1;
912
+ return t.body.slice(r, s).forEach(function(f, o) {
913
+ var l = r + o === t.body.length - 1, g = et(e, t, l, i);
914
+ f.canEntireRowFit(g, n) && (S(e, t, f, i, n), h = r + o);
915
+ }), h;
919
916
  }
920
917
  function R(e, t, r, i) {
921
918
  var n = t.settings;