外观设置改为单页分区;发帖草稿与板块校验优化,WS 延迟释放避开 Strict Mode 误断。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,6 +10,8 @@ type BoardPickerProps = {
|
||||
onChange: (id: number) => void;
|
||||
disabled?: boolean;
|
||||
loading?: boolean;
|
||||
/** 提交校验失败后再为 true,用于红色错误态 */
|
||||
invalid?: boolean;
|
||||
id?: string;
|
||||
};
|
||||
|
||||
@@ -23,6 +25,7 @@ export default function BoardPicker({
|
||||
onChange,
|
||||
disabled,
|
||||
loading,
|
||||
invalid = false,
|
||||
id,
|
||||
}: BoardPickerProps) {
|
||||
const listId = useId();
|
||||
@@ -92,6 +95,7 @@ export default function BoardPicker({
|
||||
};
|
||||
|
||||
const empty = !loading && !selected;
|
||||
const showError = empty && invalid;
|
||||
const label = loading
|
||||
? "加载板块…"
|
||||
: selected
|
||||
@@ -109,12 +113,12 @@ export default function BoardPicker({
|
||||
<button
|
||||
id={id}
|
||||
type="button"
|
||||
className={`j13-board-trigger${empty ? " is-empty" : ""}`}
|
||||
className={`j13-board-trigger${showError ? " is-invalid" : ""}`}
|
||||
disabled={disabled || loading || boards.length === 0}
|
||||
aria-haspopup="listbox"
|
||||
aria-expanded={open}
|
||||
aria-controls={listId}
|
||||
aria-invalid={empty || undefined}
|
||||
aria-invalid={showError || undefined}
|
||||
onClick={() => setOpen((v) => !v)}
|
||||
onKeyDown={onTriggerKeyDown}
|
||||
>
|
||||
@@ -126,7 +130,9 @@ export default function BoardPicker({
|
||||
</span>
|
||||
<span className="j13-board-trigger-copy">
|
||||
<span className="j13-board-trigger-name">{label}</span>
|
||||
{empty ? (
|
||||
{showError ? (
|
||||
<span className="j13-board-trigger-hint">请选择板块后再发布</span>
|
||||
) : empty ? (
|
||||
<span className="j13-board-trigger-hint">发布前必须选择</span>
|
||||
) : loading ? (
|
||||
<span className="j13-board-trigger-hint">正在加载</span>
|
||||
|
||||
Reference in New Issue
Block a user