one-design-next 0.0.81 → 0.0.82
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.
|
@@ -215,16 +215,16 @@ var MULTI_UNSELECTED_ACTIVE_FILL = 'rgba(33, 34, 38, 0.08)';
|
|
|
215
215
|
*/
|
|
216
216
|
export var CLARIFY_DOCK_MAX_OPTIONS = 5;
|
|
217
217
|
|
|
218
|
-
/**
|
|
219
|
-
var
|
|
218
|
+
/** 徽标序号硬顶 1–26,防止异常大值。 */
|
|
219
|
+
var OPTION_INDEX_HARD_CAP = 26;
|
|
220
220
|
function resolveMaxOptions(maxOptions) {
|
|
221
221
|
var raw = maxOptions !== null && maxOptions !== void 0 ? maxOptions : CLARIFY_DOCK_MAX_OPTIONS;
|
|
222
222
|
if (!Number.isFinite(raw)) return CLARIFY_DOCK_MAX_OPTIONS;
|
|
223
|
-
return Math.max(1, Math.min(Math.floor(raw),
|
|
223
|
+
return Math.max(1, Math.min(Math.floor(raw), OPTION_INDEX_HARD_CAP));
|
|
224
224
|
}
|
|
225
|
-
function
|
|
226
|
-
if (idx < 0 || idx >=
|
|
227
|
-
return String
|
|
225
|
+
function optionIndexLabel(idx) {
|
|
226
|
+
if (idx < 0 || idx >= OPTION_INDEX_HARD_CAP) return '';
|
|
227
|
+
return String(idx + 1);
|
|
228
228
|
}
|
|
229
229
|
export function ClarifyDockPanel(_ref2) {
|
|
230
230
|
var msgId = _ref2.msgId,
|
|
@@ -248,24 +248,28 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
248
248
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
249
249
|
otherDraft = _useState10[0],
|
|
250
250
|
setOtherDraft = _useState10[1];
|
|
251
|
-
var _useState11 = useState(
|
|
251
|
+
var _useState11 = useState(''),
|
|
252
252
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
textDraft = _useState12[0],
|
|
254
|
+
setTextDraft = _useState12[1];
|
|
255
255
|
var _useState13 = useState(null),
|
|
256
256
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
var _useState15 = useState(0),
|
|
257
|
+
dateDraft = _useState14[0],
|
|
258
|
+
setDateDraft = _useState14[1];
|
|
259
|
+
var _useState15 = useState(null),
|
|
261
260
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
dateRangeDraft = _useState16[0],
|
|
262
|
+
setDateRangeDraft = _useState16[1];
|
|
263
|
+
/** AutoHeight 过渡结束后再递增,驱动选项延后 autofocus */
|
|
264
|
+
var _useState17 = useState(0),
|
|
265
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
266
|
+
inputFocusEpoch = _useState18[0],
|
|
267
|
+
setInputFocusEpoch = _useState18[1];
|
|
264
268
|
var question = spec.questions[page];
|
|
265
269
|
var answer = answers[page];
|
|
266
270
|
var input = question.input;
|
|
267
271
|
|
|
268
|
-
/* 切页:回显 other / date / date-range 草稿 */
|
|
272
|
+
/* 切页:回显 other / text / date / date-range 草稿 */
|
|
269
273
|
useEffect(function () {
|
|
270
274
|
if ((answer === null || answer === void 0 ? void 0 : answer.kind) === 'options' || (answer === null || answer === void 0 ? void 0 : answer.kind) === 'options-multi') {
|
|
271
275
|
var _answer$otherText;
|
|
@@ -273,6 +277,11 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
273
277
|
} else {
|
|
274
278
|
setOtherDraft('');
|
|
275
279
|
}
|
|
280
|
+
if ((answer === null || answer === void 0 ? void 0 : answer.kind) === 'text') {
|
|
281
|
+
setTextDraft(answer.value);
|
|
282
|
+
} else {
|
|
283
|
+
setTextDraft('');
|
|
284
|
+
}
|
|
276
285
|
if ((answer === null || answer === void 0 ? void 0 : answer.kind) === 'date') {
|
|
277
286
|
setDateDraft(answer.value ? new Date("".concat(answer.value, "T00:00:00")) : null);
|
|
278
287
|
} else {
|
|
@@ -309,6 +318,8 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
309
318
|
if (hasOther && otherDraft.trim().length === 0) return false;
|
|
310
319
|
return hasRegular || hasOther;
|
|
311
320
|
}
|
|
321
|
+
case 'text':
|
|
322
|
+
return answer.value.trim().length > 0;
|
|
312
323
|
case 'date':
|
|
313
324
|
return answer.value.trim().length > 0;
|
|
314
325
|
case 'date-range':
|
|
@@ -360,6 +371,8 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
360
371
|
}
|
|
361
372
|
return labels.join('、');
|
|
362
373
|
}
|
|
374
|
+
case 'text':
|
|
375
|
+
return ans.value;
|
|
363
376
|
case 'date':
|
|
364
377
|
return ans.value;
|
|
365
378
|
case 'date-range':
|
|
@@ -381,6 +394,12 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
381
394
|
otherText: otherDraft
|
|
382
395
|
});
|
|
383
396
|
}
|
|
397
|
+
if (a.kind === 'text') {
|
|
398
|
+
return {
|
|
399
|
+
kind: 'text',
|
|
400
|
+
value: textDraft
|
|
401
|
+
};
|
|
402
|
+
}
|
|
384
403
|
if (a.kind === 'date' && dateDraft) {
|
|
385
404
|
return {
|
|
386
405
|
kind: 'date',
|
|
@@ -420,6 +439,9 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
420
439
|
data[q.key] = values;
|
|
421
440
|
break;
|
|
422
441
|
}
|
|
442
|
+
case 'text':
|
|
443
|
+
data[q.key] = a.value;
|
|
444
|
+
break;
|
|
423
445
|
case 'date':
|
|
424
446
|
data[q.key] = a.value;
|
|
425
447
|
break;
|
|
@@ -483,6 +505,7 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
483
505
|
kind: 'skipped'
|
|
484
506
|
};
|
|
485
507
|
setOtherDraft('');
|
|
508
|
+
setTextDraft('');
|
|
486
509
|
setDateDraft(null);
|
|
487
510
|
setDateRangeDraft(null);
|
|
488
511
|
/* 不按顺序跳过:任意一题跳过后若已全部有值(含已跳),直接提交 */
|
|
@@ -502,6 +525,7 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
502
525
|
if (!isSkipped) return;
|
|
503
526
|
setAnswerForPage(undefined);
|
|
504
527
|
setOtherDraft('');
|
|
528
|
+
setTextDraft('');
|
|
505
529
|
setDateDraft(null);
|
|
506
530
|
setDateRangeDraft(null);
|
|
507
531
|
};
|
|
@@ -552,6 +576,7 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
552
576
|
answer: isSkipped ? undefined : answer,
|
|
553
577
|
focusEpoch: inputFocusEpoch,
|
|
554
578
|
otherDraft: otherDraft,
|
|
579
|
+
textDraft: textDraft,
|
|
555
580
|
dateDraft: dateDraft,
|
|
556
581
|
dateRangeDraft: dateRangeDraft,
|
|
557
582
|
onOtherDraftChange: function onOtherDraftChange(v) {
|
|
@@ -570,6 +595,13 @@ export function ClarifyDockPanel(_ref2) {
|
|
|
570
595
|
});
|
|
571
596
|
}
|
|
572
597
|
},
|
|
598
|
+
onTextChange: function onTextChange(v) {
|
|
599
|
+
setTextDraft(v);
|
|
600
|
+
setAnswerForPage(v.trim() ? {
|
|
601
|
+
kind: 'text',
|
|
602
|
+
value: v
|
|
603
|
+
} : undefined);
|
|
604
|
+
},
|
|
573
605
|
onDateChange: function onDateChange(d) {
|
|
574
606
|
setDateDraft(d);
|
|
575
607
|
setAnswerForPage(d ? {
|
|
@@ -671,8 +703,8 @@ function withOtherOption(options, allowOther, maxOptions) {
|
|
|
671
703
|
|
|
672
704
|
/**
|
|
673
705
|
* 按 input.kind 适配录入组件:
|
|
674
|
-
* options / options-multi → 选项列表;
|
|
675
|
-
* date-range → DateRangePicker
|
|
706
|
+
* options / options-multi → 选项列表;text → Input 单行;
|
|
707
|
+
* date → DatePicker;date-range → DateRangePicker。
|
|
676
708
|
*/
|
|
677
709
|
function QuestionInput(_ref3) {
|
|
678
710
|
var input = _ref3.input,
|
|
@@ -680,9 +712,11 @@ function QuestionInput(_ref3) {
|
|
|
680
712
|
answer = _ref3.answer,
|
|
681
713
|
focusEpoch = _ref3.focusEpoch,
|
|
682
714
|
otherDraft = _ref3.otherDraft,
|
|
715
|
+
textDraft = _ref3.textDraft,
|
|
683
716
|
dateDraft = _ref3.dateDraft,
|
|
684
717
|
dateRangeDraft = _ref3.dateRangeDraft,
|
|
685
718
|
onOtherDraftChange = _ref3.onOtherDraftChange,
|
|
719
|
+
onTextChange = _ref3.onTextChange,
|
|
686
720
|
onDateChange = _ref3.onDateChange,
|
|
687
721
|
onDateRangeChange = _ref3.onDateRangeChange,
|
|
688
722
|
onPickSingle = _ref3.onPickSingle,
|
|
@@ -704,6 +738,17 @@ function QuestionInput(_ref3) {
|
|
|
704
738
|
})
|
|
705
739
|
);
|
|
706
740
|
}
|
|
741
|
+
if (input.kind === 'text') {
|
|
742
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
743
|
+
"data-odn-clarify-dock-input-row": true,
|
|
744
|
+
"data-kind": "text"
|
|
745
|
+
}, /*#__PURE__*/React.createElement(TextQuestionInput, {
|
|
746
|
+
value: textDraft,
|
|
747
|
+
placeholder: input.placeholder,
|
|
748
|
+
focusEpoch: focusEpoch,
|
|
749
|
+
onChange: onTextChange
|
|
750
|
+
}));
|
|
751
|
+
}
|
|
707
752
|
if (input.kind === 'date') {
|
|
708
753
|
return /*#__PURE__*/React.createElement("div", {
|
|
709
754
|
"data-odn-clarify-dock-input-row": true
|
|
@@ -734,25 +779,57 @@ function QuestionInput(_ref3) {
|
|
|
734
779
|
}
|
|
735
780
|
|
|
736
781
|
/* ------------------------------------------------------------------ */
|
|
737
|
-
/*
|
|
782
|
+
/* TextQuestionInput · 迷你单行输入(撑满宽度,13px) */
|
|
738
783
|
/* ------------------------------------------------------------------ */
|
|
739
784
|
|
|
740
|
-
function
|
|
741
|
-
var
|
|
742
|
-
|
|
743
|
-
answer = _ref4.answer,
|
|
785
|
+
function TextQuestionInput(_ref4) {
|
|
786
|
+
var value = _ref4.value,
|
|
787
|
+
placeholder = _ref4.placeholder,
|
|
744
788
|
focusEpoch = _ref4.focusEpoch,
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
789
|
+
_onChange = _ref4.onChange;
|
|
790
|
+
var ref = useRef(null);
|
|
791
|
+
useEffect(function () {
|
|
792
|
+
if (focusEpoch <= 0) return;
|
|
793
|
+
var id = window.requestAnimationFrame(function () {
|
|
794
|
+
var _ref$current;
|
|
795
|
+
(_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.focus();
|
|
796
|
+
});
|
|
797
|
+
return function () {
|
|
798
|
+
return window.cancelAnimationFrame(id);
|
|
799
|
+
};
|
|
800
|
+
}, [focusEpoch]);
|
|
801
|
+
return /*#__PURE__*/React.createElement(Input, {
|
|
802
|
+
ref: ref,
|
|
803
|
+
value: value,
|
|
804
|
+
onChange: function onChange(_, next) {
|
|
805
|
+
return _onChange(next);
|
|
806
|
+
},
|
|
807
|
+
placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : '请输入…',
|
|
808
|
+
size: "small",
|
|
809
|
+
className: "w-full"
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
/* ------------------------------------------------------------------ */
|
|
814
|
+
/* OptionsList · 1–N 序号徽标 + ↑↓ 框选(焦点隔离,不抢 Composer) */
|
|
815
|
+
/* ------------------------------------------------------------------ */
|
|
816
|
+
|
|
817
|
+
function OptionsList(_ref5) {
|
|
818
|
+
var options = _ref5.options,
|
|
819
|
+
multi = _ref5.multi,
|
|
820
|
+
answer = _ref5.answer,
|
|
821
|
+
focusEpoch = _ref5.focusEpoch,
|
|
822
|
+
otherDraft = _ref5.otherDraft,
|
|
823
|
+
otherPlaceholder = _ref5.otherPlaceholder,
|
|
824
|
+
onOtherDraftChange = _ref5.onOtherDraftChange,
|
|
825
|
+
onPickSingle = _ref5.onPickSingle,
|
|
826
|
+
onToggleMulti = _ref5.onToggleMulti;
|
|
750
827
|
var optionRefs = useRef([]);
|
|
751
828
|
/** roving tabindex:当前键盘焦点项;与选中态解耦,避免重渲染丢焦 */
|
|
752
|
-
var
|
|
753
|
-
|
|
754
|
-
focusedIdx =
|
|
755
|
-
setFocusedIdx =
|
|
829
|
+
var _useState19 = useState(0),
|
|
830
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
831
|
+
focusedIdx = _useState20[0],
|
|
832
|
+
setFocusedIdx = _useState20[1];
|
|
756
833
|
/** 选中态导致「其他」编辑行等结构切换后,在 layout 再聚焦 */
|
|
757
834
|
var pendingFocusIdxRef = useRef(null);
|
|
758
835
|
var resolveSelectedIdx = function resolveSelectedIdx() {
|
|
@@ -832,7 +909,7 @@ function OptionsList(_ref4) {
|
|
|
832
909
|
}, options.map(function (opt, idx) {
|
|
833
910
|
var active = (answer === null || answer === void 0 ? void 0 : answer.kind) === 'options' ? answer.value === opt.value : (answer === null || answer === void 0 ? void 0 : answer.kind) === 'options-multi' ? answer.values.includes(opt.value) : false;
|
|
834
911
|
var isOther = opt.value === OTHER_VALUE;
|
|
835
|
-
var
|
|
912
|
+
var seq = optionIndexLabel(idx);
|
|
836
913
|
if (isOther && active) {
|
|
837
914
|
var editingRow = /*#__PURE__*/React.createElement("div", {
|
|
838
915
|
"data-odn-clarify-dock-option": true,
|
|
@@ -854,10 +931,10 @@ function OptionsList(_ref4) {
|
|
|
854
931
|
onToggleMulti(opt);
|
|
855
932
|
}
|
|
856
933
|
}
|
|
857
|
-
},
|
|
934
|
+
}, seq) : /*#__PURE__*/React.createElement("span", {
|
|
858
935
|
"data-odn-clarify-dock-option-letter": true,
|
|
859
936
|
"aria-hidden": true
|
|
860
|
-
},
|
|
937
|
+
}, seq), /*#__PURE__*/React.createElement(Input, {
|
|
861
938
|
value: otherDraft,
|
|
862
939
|
onChange: function onChange(_, value) {
|
|
863
940
|
return onOtherDraftChange(value);
|
|
@@ -903,7 +980,7 @@ function OptionsList(_ref4) {
|
|
|
903
980
|
var optionContent = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
|
|
904
981
|
"data-odn-clarify-dock-option-letter": true,
|
|
905
982
|
"aria-hidden": true
|
|
906
|
-
},
|
|
983
|
+
}, seq), /*#__PURE__*/React.createElement("span", {
|
|
907
984
|
"data-odn-clarify-dock-option-label": true
|
|
908
985
|
}, opt.label));
|
|
909
986
|
|
|
@@ -950,10 +1027,10 @@ function OptionsList(_ref4) {
|
|
|
950
1027
|
* - recordAnswer 后 Panel 消失,Trigger 切 Approval 式锁态卡
|
|
951
1028
|
*/
|
|
952
1029
|
export function useClarifyDockState(messages, sessionKey, resetVer) {
|
|
953
|
-
var
|
|
954
|
-
|
|
955
|
-
answers =
|
|
956
|
-
setAnswers =
|
|
1030
|
+
var _useState21 = useState({}),
|
|
1031
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
1032
|
+
answers = _useState22[0],
|
|
1033
|
+
setAnswers = _useState22[1];
|
|
957
1034
|
|
|
958
1035
|
/* 切换会话或点「重置」时清空已答标记,避免 Panel / Trigger 状态脱节 */
|
|
959
1036
|
useEffect(function () {
|
|
@@ -142,16 +142,20 @@ div[data-odn-clarify-dock] [data-odn-clarify-dock-body] {
|
|
|
142
142
|
[data-odn-clarify-dock-actions] [data-odn-pagination] {
|
|
143
143
|
flex-shrink: 0;
|
|
144
144
|
font-size: 12px;
|
|
145
|
+
font-family: inherit;
|
|
146
|
+
font-variant-numeric: normal;
|
|
145
147
|
line-height: 1.5;
|
|
146
148
|
color: var(--odn-color-black-9);
|
|
147
149
|
}
|
|
148
150
|
|
|
149
151
|
[data-odn-clarify-dock-actions] [data-odn-pagination-simple-page-value] {
|
|
152
|
+
font-family: inherit;
|
|
153
|
+
font-variant-numeric: normal;
|
|
150
154
|
color: var(--odn-color-black-9);
|
|
151
155
|
}
|
|
152
156
|
|
|
153
157
|
/* ============================================================== */
|
|
154
|
-
/* Options ·
|
|
158
|
+
/* Options · 1–N 序号徽标 + 通栏灰底(不复用 Button 尺寸体系) */
|
|
155
159
|
/* ============================================================== */
|
|
156
160
|
[data-odn-clarify-dock] [data-odn-clarify-dock-options] {
|
|
157
161
|
display: flex;
|
|
@@ -238,7 +242,8 @@ div[data-odn-clarify-dock] [data-odn-clarify-dock-body] {
|
|
|
238
242
|
color: var(--odn-color-black-10);
|
|
239
243
|
font-size: 11px;
|
|
240
244
|
font-weight: 600;
|
|
241
|
-
font-
|
|
245
|
+
font-family: inherit;
|
|
246
|
+
font-variant-numeric: normal;
|
|
242
247
|
line-height: 1;
|
|
243
248
|
}
|
|
244
249
|
|
|
@@ -288,7 +293,8 @@ div[data-odn-clarify-dock] [data-odn-clarify-dock-body] {
|
|
|
288
293
|
line-height: 1;
|
|
289
294
|
font-size: 11px;
|
|
290
295
|
font-weight: 600;
|
|
291
|
-
font-
|
|
296
|
+
font-family: inherit;
|
|
297
|
+
font-variant-numeric: normal;
|
|
292
298
|
border: 1px solid var(--odn-color-brand-6);
|
|
293
299
|
background: var(--odn-color-brand-6);
|
|
294
300
|
color: var(--odn-color-bg-elevated);
|
|
@@ -542,6 +548,14 @@ div[data-odn-clarify-dock] [data-odn-clarify-dock-body] {
|
|
|
542
548
|
flex: 0 0 auto;
|
|
543
549
|
}
|
|
544
550
|
|
|
551
|
+
/* 纯文本题:迷你单行输入,默认撑满宽度,字号 13px,左右 padding 6px,圆角 4px */
|
|
552
|
+
[data-odn-clarify-dock-input-row][data-kind=text] {
|
|
553
|
+
width: 100%;
|
|
554
|
+
--odn-input-font-size-small: var(--odn-font-size-text-sm);
|
|
555
|
+
--odn-input-padding-inline-small: var(--odn-input-padding-block-medium);
|
|
556
|
+
--odn-input-border-radius-small: var(--odn-border-radius);
|
|
557
|
+
}
|
|
558
|
+
|
|
545
559
|
div[data-odn-clarify-dock] [data-odn-date-picker-container]:not([data-odn-date-picker-container-range]) {
|
|
546
560
|
display: inline-block;
|
|
547
561
|
box-sizing: border-box;
|
|
@@ -12,7 +12,7 @@ export function toISODate(d) {
|
|
|
12
12
|
|
|
13
13
|
/** 解析 Host 传入的日期边界;非法则忽略。 */
|
|
14
14
|
export function parseClarifyBoundDate(value) {
|
|
15
|
-
if (value
|
|
15
|
+
if (value === undefined || value === null) return undefined;
|
|
16
16
|
if (value instanceof Date) {
|
|
17
17
|
return Number.isNaN(value.getTime()) ? undefined : value;
|
|
18
18
|
}
|