dsh-plugin-core 0.20.9 → 0.21.0

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.
@@ -14,6 +14,8 @@ export interface AlertModalProps {
14
14
  confirmText?: string;
15
15
  /** 点遮罩是否关闭(默认 true)。 */
16
16
  closeOnMask?: boolean;
17
+ /** 确认钮加载中(消费方在做异步处理):转圈 + 禁用,并锁死遮罩 / Esc 关闭。 */
18
+ confirmLoading?: boolean;
17
19
  /** 尺寸档(默认 sm 确认框宽度)。 */
18
20
  size?: ModalSize;
19
21
  /** 点击确认 / 遮罩 / Esc 的统一出口(单按钮弹窗,关闭即确认)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"AlertModal.d.ts","sourceRoot":"","sources":["../../src/ui/AlertModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIpD,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AASpE,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,wBAAwB;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAkBvE"}
1
+ {"version":3,"file":"AlertModal.d.ts","sourceRoot":"","sources":["../../src/ui/AlertModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIpD,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AASpE,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,wBAAwB;IACxB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAmBvE"}
@@ -24,9 +24,10 @@ export function AlertModal(props) {
24
24
  size: props.size ?? 'sm',
25
25
  hideHeader: props.title === undefined,
26
26
  closable: false,
27
- closeOnMask: props.closeOnMask,
28
- onClose: props.onConfirm,
29
- footer: h(Button, { variant: 'primary', onClick: () => props.onConfirm?.() }, props.confirmText ?? tt('dialogOk')),
27
+ closeOnMask: props.confirmLoading === true ? false : props.closeOnMask,
28
+ // 加载中锁死关闭路径(遮罩 / Esc 都走 onClose)。
29
+ onClose: props.confirmLoading === true ? undefined : props.onConfirm,
30
+ footer: h(Button, { variant: 'primary', loading: props.confirmLoading === true, onClick: () => props.onConfirm?.() }, props.confirmText ?? tt('dialogOk')),
30
31
  }, props.message ?? null);
31
32
  }
32
33
  //# sourceMappingURL=AlertModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlertModal.js","sourceRoot":"","sources":["../../src/ui/AlertModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAkB,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,CAAC,EAAkB,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,MAAM,cAAc,GAAkC;IACpD,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;CACX,CAAA;AAoBD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAA;IACzC,OAAO,CAAC,CACN,KAAK,EACL;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,oCAAoC,QAAQ,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxG,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,SAAS;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;KACnH,EACD,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"AlertModal.js","sourceRoot":"","sources":["../../src/ui/AlertModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAkB,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,CAAC,EAAkB,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,MAAM,cAAc,GAAkC;IACpD,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;CACX,CAAA;AAsBD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAA;IACzC,OAAO,CAAC,CACN,KAAK,EACL;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,oCAAoC,QAAQ,EAAE,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QACxG,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;QACtE,kCAAkC;QAClC,OAAO,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;QACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;KAC3J,EACD,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAA;AACH,CAAC"}
@@ -15,6 +15,10 @@ export interface ConfirmModalProps {
15
15
  cancelText?: string;
16
16
  /** 点遮罩是否关闭(默认 true;点了 = 取消)。 */
17
17
  closeOnMask?: boolean;
18
+ /** 确认钮加载中(消费方在做异步处理):转圈 + 禁用。任一钮加载中,整框都不许关。 */
19
+ confirmLoading?: boolean;
20
+ /** 取消钮加载中:同上。 */
21
+ cancelLoading?: boolean;
18
22
  size?: ModalSize;
19
23
  /** 确认回调。 */
20
24
  onConfirm?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../src/ui/ConfirmModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEpD,uBAAuB;AACvB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE1D,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAsB3E"}
1
+ {"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../src/ui/ConfirmModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAElD,OAAO,EAAK,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEpD,uBAAuB;AACvB,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;AAE1D,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,iBAAiB;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAwB3E"}
@@ -10,14 +10,16 @@ export function ConfirmModal(props) {
10
10
  const tt = props.translate ?? t;
11
11
  const tone = props.tone ?? 'primary';
12
12
  const confirmVariant = tone === 'danger' ? 'danger' : tone === 'warning' ? 'warning' : 'primary';
13
+ // 加载中整框锁死:遮罩 / Esc 都走 onClose,置空即封死(✕ 本来就没有)。
14
+ const busy = props.confirmLoading === true || props.cancelLoading === true;
13
15
  return h(Modal, {
14
16
  title: props.title,
15
17
  size: props.size ?? 'sm',
16
18
  hideHeader: props.title === undefined,
17
19
  closable: false,
18
- closeOnMask: props.closeOnMask,
19
- onClose: props.onCancel,
20
- footer: h('div', { style: { display: 'flex', gap: '8px', justifyContent: 'flex-end' } }, h(Button, { variant: 'outline', onClick: () => props.onCancel?.() }, props.cancelText ?? tt('cancel')), h(Button, { variant: confirmVariant, onClick: () => props.onConfirm?.() }, props.confirmText ?? tt('confirm'))),
20
+ closeOnMask: busy ? false : props.closeOnMask,
21
+ onClose: busy ? undefined : props.onCancel,
22
+ footer: h('div', { style: { display: 'flex', gap: '8px', justifyContent: 'flex-end' } }, h(Button, { variant: 'outline', loading: props.cancelLoading === true, onClick: () => props.onCancel?.() }, props.cancelText ?? tt('cancel')), h(Button, { variant: confirmVariant, loading: props.confirmLoading === true, onClick: () => props.onConfirm?.() }, props.confirmText ?? tt('confirm'))),
21
23
  }, props.message ?? null);
22
24
  }
23
25
  //# sourceMappingURL=ConfirmModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmModal.js","sourceRoot":"","sources":["../../src/ui/ConfirmModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAkB,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,CAAC,EAAkB,MAAM,kBAAkB,CAAA;AAyBpD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAA;IACpC,MAAM,cAAc,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAChG,OAAO,CAAC,CACN,KAAK,EACL;QACE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,QAAQ;QACvB,MAAM,EAAE,CAAC,CACP,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EACtE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EACtG,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAC/G;KACF,EACD,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ConfirmModal.js","sourceRoot":"","sources":["../../src/ui/ConfirmModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,CAAC,EAAkB,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,CAAC,EAAkB,MAAM,kBAAkB,CAAA;AA6BpD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAA;IACpC,MAAM,cAAc,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAChG,8CAA8C;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;IAC1E,OAAO,CAAC,CACN,KAAK,EACL;QACE,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,UAAU,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS;QACrC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;QAC7C,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QAC1C,MAAM,EAAE,CAAC,CACP,KAAK,EACL,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EACtE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAC7I,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CACvJ;KACF,EACD,KAAK,CAAC,OAAO,IAAI,IAAI,CACtB,CAAA;AACH,CAAC"}
@@ -17,14 +17,29 @@ export interface HostDialogHandlers {
17
17
  alert: (opts: HostAlertArgs) => Promise<void>;
18
18
  }
19
19
  export declare function registerHostDialog(handlers: HostDialogHandlers): void;
20
- export type ConfirmOptions = Omit<ConfirmModalProps, 'onConfirm' | 'onCancel'> & {
20
+ /** 点按钮的回调:返回 thenable 即视为「消费方要做异步处理」,弹窗转 loading 并锁死关闭,settle 后再收尾。 */
21
+ type DialogHandler = () => unknown;
22
+ export type ConfirmOptions = Omit<ConfirmModalProps, 'onConfirm' | 'onCancel' | 'confirmLoading' | 'cancelLoading'> & {
21
23
  skin?: 'core' | 'host';
24
+ /** 确认回调;异步期间确认钮转圈、整框不可关,resolve 后按 `true` 关闭,reject 后恢复可点。 */
25
+ onConfirm?: DialogHandler;
26
+ /** 取消 / 遮罩 / Esc 回调;异步语义同 `onConfirm`,resolve 后按 `false` 关闭。 */
27
+ onCancel?: DialogHandler;
22
28
  };
23
- export type AlertOptions = Omit<AlertModalProps, 'onConfirm'> & {
29
+ export type AlertOptions = Omit<AlertModalProps, 'onConfirm' | 'confirmLoading'> & {
24
30
  skin?: 'core' | 'host';
31
+ /** 确认回调(遮罩 / Esc 同一个出口);异步期间转圈并锁死关闭,resolve 后才关。 */
32
+ onConfirm?: DialogHandler;
25
33
  };
26
- /** 命令式确认框:Promise 形式,`true`=确定 / `false`=取消(或点遮罩 / Esc)。`skin:"host"` 走宿主原生 Modal。 */
34
+ /**
35
+ * 命令式确认框:Promise 形式,`true`=确定 / `false`=取消(或点遮罩 / Esc)。`skin:"host"` 走宿主原生 Modal。
36
+ * 回调返回 Promise 时进入 loading(按钮转圈 + 遮罩 / Esc 锁死),settle 后才真正关闭。
37
+ */
27
38
  export declare function confirmModal(opts: ConfirmOptions): Promise<boolean>;
28
- /** 命令式警告框:Promise 在关闭时 resolve(单按钮,关闭即确认)。`skin:"host"` 走宿主原生 Modal。 */
39
+ /**
40
+ * 命令式警告框:Promise 在关闭时 resolve(单按钮,关闭即确认)。`skin:"host"` 走宿主原生 Modal。
41
+ * 回调返回 Promise 时进入 loading(按钮转圈 + 遮罩 / Esc 锁死),settle 后才真正关闭。
42
+ */
29
43
  export declare function alertModal(opts: AlertOptions): Promise<void>;
44
+ export {};
30
45
  //# sourceMappingURL=modal-host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-host.d.ts","sourceRoot":"","sources":["../../src/ui/modal-host.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAmDxE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACpD,KAAK,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAErE;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAC3G,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAA;AAE1F,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BnE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5D"}
1
+ {"version":3,"file":"modal-host.d.ts","sourceRoot":"","sources":["../../src/ui/modal-host.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAmDxE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AACD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACpD,KAAK,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9C;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAErE;AAED,uEAAuE;AACvE,KAAK,aAAa,GAAG,MAAM,OAAO,CAAA;AAElC,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC,GAAG;IACpH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,aAAa,CAAA;CACzB,CAAA;AACD,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,gBAAgB,CAAC,GAAG;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,oDAAoD;IACpD,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B,CAAA;AAOD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2DnE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD5D"}
@@ -45,7 +45,15 @@ let hostHandlers = null;
45
45
  export function registerHostDialog(handlers) {
46
46
  hostHandlers = handlers;
47
47
  }
48
- /** 命令式确认框:Promise 形式,`true`=确定 / `false`=取消(或点遮罩 / Esc)。`skin:"host"` 走宿主原生 Modal。 */
48
+ function isThenable(value) {
49
+ if (value === null || value === undefined)
50
+ return false;
51
+ return typeof value.then === 'function';
52
+ }
53
+ /**
54
+ * 命令式确认框:Promise 形式,`true`=确定 / `false`=取消(或点遮罩 / Esc)。`skin:"host"` 走宿主原生 Modal。
55
+ * 回调返回 Promise 时进入 loading(按钮转圈 + 遮罩 / Esc 锁死),settle 后才真正关闭。
56
+ */
49
57
  export function confirmModal(opts) {
50
58
  if (opts.skin === 'host') {
51
59
  if (hostHandlers !== null) {
@@ -59,22 +67,59 @@ export function confirmModal(opts) {
59
67
  }
60
68
  console.warn('[dsh-plugin-core] confirmModal skin:"host" 需先引入官方适配层 official.js,已回落到 core 皮肤');
61
69
  }
62
- const { skin: _skin, ...core } = opts;
70
+ const { skin: _skin, onConfirm, onCancel, ...core } = opts;
63
71
  void _skin;
64
72
  return new Promise((resolve) => {
65
73
  const id = ++idSeq;
74
+ const entry = { id, node: null };
75
+ let busy = null;
76
+ let closed = false;
77
+ const draw = () => {
78
+ entry.node = h(ConfirmModal, {
79
+ ...core,
80
+ confirmLoading: busy === 'confirm',
81
+ cancelLoading: busy === 'cancel',
82
+ onConfirm: () => void run('confirm'),
83
+ onCancel: () => void run('cancel'),
84
+ });
85
+ flush();
86
+ };
66
87
  const close = (result) => {
88
+ closed = true;
67
89
  dismiss(id);
68
90
  resolve(result);
69
91
  };
70
- entries.push({
71
- id,
72
- node: h(ConfirmModal, { ...core, onConfirm: () => close(true), onCancel: () => close(false) }),
73
- });
74
- flush();
92
+ const run = async (which) => {
93
+ if (closed || busy !== null)
94
+ return;
95
+ const out = (which === 'confirm' ? onConfirm : onCancel)?.();
96
+ if (!isThenable(out)) {
97
+ close(which === 'confirm');
98
+ return;
99
+ }
100
+ busy = which;
101
+ draw();
102
+ try {
103
+ await out;
104
+ }
105
+ catch (err) {
106
+ // 失败:撤回 loading,框留着让人重试 / 取消;错误照常暴露出来,不吞。
107
+ busy = null;
108
+ draw();
109
+ console.error('[dsh-plugin-core] confirmModal 回调失败,弹窗已恢复可操作:', err);
110
+ return;
111
+ }
112
+ busy = null;
113
+ close(which === 'confirm');
114
+ };
115
+ entries.push(entry);
116
+ draw();
75
117
  });
76
118
  }
77
- /** 命令式警告框:Promise 在关闭时 resolve(单按钮,关闭即确认)。`skin:"host"` 走宿主原生 Modal。 */
119
+ /**
120
+ * 命令式警告框:Promise 在关闭时 resolve(单按钮,关闭即确认)。`skin:"host"` 走宿主原生 Modal。
121
+ * 回调返回 Promise 时进入 loading(按钮转圈 + 遮罩 / Esc 锁死),settle 后才真正关闭。
122
+ */
78
123
  export function alertModal(opts) {
79
124
  if (opts.skin === 'host') {
80
125
  if (hostHandlers !== null) {
@@ -86,16 +131,44 @@ export function alertModal(opts) {
86
131
  }
87
132
  console.warn('[dsh-plugin-core] alertModal skin:"host" 需先引入官方适配层 official.js,已回落到 core 皮肤');
88
133
  }
89
- const { skin: _skin, ...core } = opts;
134
+ const { skin: _skin, onConfirm, ...core } = opts;
90
135
  void _skin;
91
136
  return new Promise((resolve) => {
92
137
  const id = ++idSeq;
138
+ const entry = { id, node: null };
139
+ let busy = false;
140
+ const draw = () => {
141
+ entry.node = h(AlertModal, { ...core, confirmLoading: busy, onConfirm: () => void run() });
142
+ flush();
143
+ };
93
144
  const close = () => {
94
145
  dismiss(id);
95
146
  resolve();
96
147
  };
97
- entries.push({ id, node: h(AlertModal, { ...core, onConfirm: close }) });
98
- flush();
148
+ const run = async () => {
149
+ if (busy)
150
+ return;
151
+ const out = onConfirm?.();
152
+ if (!isThenable(out)) {
153
+ close();
154
+ return;
155
+ }
156
+ busy = true;
157
+ draw();
158
+ try {
159
+ await out;
160
+ }
161
+ catch (err) {
162
+ busy = false;
163
+ draw();
164
+ console.error('[dsh-plugin-core] alertModal 回调失败,弹窗已恢复可操作:', err);
165
+ return;
166
+ }
167
+ busy = false;
168
+ close();
169
+ };
170
+ entries.push(entry);
171
+ draw();
99
172
  });
100
173
  }
101
174
  //# sourceMappingURL=modal-host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-host.js","sourceRoot":"","sources":["../../src/ui/modal-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modal-host.js","sourceRoot":"","sources":["../../src/ui/modal-host.ts"],"names":[],"mappings":"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"}
@@ -759,7 +759,7 @@ const doc: DocTopic = {
759
759
  {
760
760
  id: 'ui-feedback',
761
761
  rows: [
762
- { name: 'showToast(message, opts?)', type: '', def: '', desc: { zh: '官方 Sonner 原生(对比 / demo 用)。opts: `{ variant?, durationMs?, color?, onDismiss?, position? }`,6 向定位,明暗跟随宿主', en: 'Raw official Sonner (comparison / demo). opts `{ variant?, durationMs?, color?, onDismiss?, position? }`, 6-way placement, theme follows host' } },
762
+ { name: 'showToast(message, opts?)', type: '', def: '', desc: { zh: '官方 Sonner 原味(轻量原生观感;demo 统一用 notify)。opts: `{ variant?, durationMs?, color?, onDismiss?, position? }`,6 向定位,明暗跟随宿主', en: 'Raw official Sonner flavour (lightweight, native look; the demo standardises on notify). opts `{ variant?, durationMs?, color?, onDismiss?, position? }`, 6-way placement, theme follows host' } },
763
763
  { name: 'notify(message, opts?)', type: '', def: '', desc: { zh: '默认用这个。opts: `{ variant?, description?, durationMs?, position?, actions? }`,actions 用自带 Button(1–2 个)', en: 'Use this by default. opts `{ variant?, description?, durationMs?, position?, actions? }`, actions use our own Button (1–2)' } },
764
764
  { name: 'showHostToast(message, opts?)', type: '', def: '', desc: { zh: '宿主原生 Toast,走 `dsh-plugin-core/ui/host` 子路径。opts: `{ tone?, holdMs?, actions?, onDismiss? }`', en: 'Host-native Toast from the `dsh-plugin-core/ui/host` subpath. opts `{ tone?, holdMs?, actions?, onDismiss? }`' } },
765
765
  { name: 'showLoading(opts?)', type: '', def: '', desc: { zh: '全局加载提示(全局唯一一处),返回 `{ close() }`。opts: `{ text?, variant?: \'toast\' | \'block\', position?, mask?, maskOpacity?, translate? }`;position 默认 bottom-center', en: 'Global loading hint (one spot globally) returning `{ close() }`. opts `{ text?, variant?: \'toast\' | \'block\', position?, mask?, maskOpacity?, translate? }`; position defaults to bottom-center' } },
package/docs/help/ui.md CHANGED
@@ -633,7 +633,7 @@ Modal 是自绘 overlay,不走 react-dom portal。
633
633
 
634
634
  | 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
635
635
  |---|---|---|---|---|
636
- | `showToast(message, opts?)` | `` | | 官方 Sonner 原生(对比 / demo 用)。opts: `{ variant?, durationMs?, color?, onDismiss?, position? }`,6 向定位,明暗跟随宿主 | Raw official Sonner (comparison / demo). opts `{ variant?, durationMs?, color?, onDismiss?, position? }`, 6-way placement, theme follows host |
636
+ | `showToast(message, opts?)` | `` | | 官方 Sonner 原味(轻量原生观感;demo 统一用 notify)。opts: `{ variant?, durationMs?, color?, onDismiss?, position? }`,6 向定位,明暗跟随宿主 | Raw official Sonner flavour (lightweight, native look; the demo standardises on notify). opts `{ variant?, durationMs?, color?, onDismiss?, position? }`, 6-way placement, theme follows host |
637
637
  | `notify(message, opts?)` | `` | | 默认用这个。opts: `{ variant?, description?, durationMs?, position?, actions? }`,actions 用自带 Button(1–2 个) | Use this by default. opts `{ variant?, description?, durationMs?, position?, actions? }`, actions use our own Button (1–2) |
638
638
  | `showHostToast(message, opts?)` | `` | | 宿主原生 Toast,走 `dsh-plugin-core/ui/host` 子路径。opts: `{ tone?, holdMs?, actions?, onDismiss? }` | Host-native Toast from the `dsh-plugin-core/ui/host` subpath. opts `{ tone?, holdMs?, actions?, onDismiss? }` |
639
639
  | `showLoading(opts?)` | `` | | 全局加载提示(全局唯一一处),返回 `{ close() }`。opts: `{ text?, variant?: 'toast' \| 'block', position?, mask?, maskOpacity?, translate? }`;position 默认 bottom-center | Global loading hint (one spot globally) returning `{ close() }`. opts `{ text?, variant?: 'toast' \| 'block', position?, mask?, maskOpacity?, translate? }`; position defaults to bottom-center |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-core",
3
- "version": "0.20.9",
3
+ "version": "0.21.0",
4
4
  "packageManager": "pnpm@12.3.4",
5
5
  "description": "Shared base for DSH plugins: design tokens, UI controls, utils, workspace explorer, session preview",
6
6
  "keywords": [