{
  "synthetic": true,
  "execution": "Teaching record only; no live integration tested",
  "slug": "sortable-brief-drag-alternative",
  "group": "accessible-interaction",
  "title": [
    "A drag-sort brief needs a tap and keyboard route",
    "拖拽排序，也要有点击与键盘路径"
  ],
  "intro": [
    "An agency project brief may let customers rank priorities by dragging cards. Before accepting that interface, require an equivalent result through buttons or another single-pointer method, plus keyboard operation. A touch user who cannot drag should still be able to express the same priorities.",
    "项目需求表可能让客户拖卡片排列优先级。验收前，应要求按钮等单点操作能得到相同结果，同时支持键盘；无法拖拽的触屏客户也应能表达一样的优先顺序。"
  ],
  "facts": [
    [
      "WCAG 2.2 criterion 2.5.7 requires an alternative to dragging using a single pointer, subject to its exceptions. Keyboard equivalence is a separate requirement.",
      "WCAG2.2的2.5.7要求拖拽有单点操作替代，具体例外须按原文；键盘等价是另项要求。",
      "https://www.w3.org/WAI/WCAG22/Understanding/dragging-movements.html"
    ]
  ],
  "columns": [
    [
      "Synthetic starting order",
      "Alternative action",
      "Expected order / feedback"
    ],
    [
      "合成起始顺序",
      "替代动作",
      "预期顺序及反馈"
    ]
  ],
  "example": [
    [
      [
        "A brand;B enquiry;C catalogue",
        "Click Move C to position 1",
        "C,A,B; announce new position"
      ],
      [
        "A品牌、B询盘、C目录",
        "点击把C移到第1位",
        "C、A、B；反馈新位置"
      ]
    ],
    [
      [
        "C,A,B",
        "Keyboard Move B up once",
        "C,B,A; focus remains on B control"
      ],
      [
        "C、A、B",
        "键盘把B上移一次",
        "C、B、A；焦点留在B控件"
      ]
    ],
    [
      [
        "C,B,A",
        "Move first item up",
        "No change; boundary communicated"
      ],
      [
        "C、B、A",
        "把首项上移",
        "不变；明确边界"
      ]
    ],
    [
      [
        "C,B,A",
        "Submit brief",
        "Stored order exactlyC,B,A"
      ],
      [
        "C、B、A",
        "提交需求",
        "存储顺序准确为C、B、A"
      ]
    ]
  ],
  "steps": [
    [
      "Choose explicit controls such as Move up/down or a target-position selector. Labels identify the item and action; do not rely on an unlabeled grip icon.",
      "采用明确上下移按钮或目标位置选择器；标签指出项目及动作，不能只靠无标签拖动图标。"
    ],
    [
      "Write the state transitions above into the acceptance brief. Check first/last boundaries, repeated moves, cancellation and stable focus after the DOM changes.",
      "把上表状态变化写进验收说明，核对首尾边界、重复移动、取消及DOM改变后的焦点。"
    ],
    [
      "Test drag, pointer-only alternatives and keyboard separately, then inspect the submitted payload and readback. Visual order and saved order must match.",
      "分别测试拖拽、仅点击替代与键盘，再查提交数据及回读；视觉顺序必须与存储一致。"
    ]
  ],
  "result": [
    "The first move relocatesC, while the second relocatesB without losing its control. A supplier who only makes arrow-key dragging work has not demonstrated the pointer alternative. The final saved sequence is part of acceptance, not just animation polish.",
    "第一步移动C，第二步移动B且不丢控件焦点。只做到方向键拖拽，不能证明单点替代；最终存储顺序也是验收内容，不只是动画美观。"
  ],
  "accept": [
    "All supported input paths must reach the same ordered list, preserve usable focus and submit that exact list. Record the path used for each observation.",
    "各支持输入路径须到达同一顺序、保持可用焦点并准确提交；每条观察记录使用的路径。"
  ],
  "limit": [
    "Synthetic priority list. This is an interaction specification, not a tested drag-and-drop library or legal compliance opinion. Essential spatial tasks need separate assessment.",
    "合成优先级列表；这是交互规格，不是已实测的拖拽库或法律合规意见。必须依赖空间操作的任务另需评估。"
  ]
}
