关于
实用拖放功能是一个低级别的拖放工具链,它能够安全有效地使用浏览器内置的拖放功能。实用拖放功能可以与任何视图层(react
、svelte
、vue
、angular
等)一起使用。实用拖放功能正在为一些网络上最大的产品提供支持,包括 Trello、Jira 和 Confluence。
功能
实用拖放功能由几个高级部分组成:
- 低级别拖放行为
实用拖放功能包含一个核心包和多个可选包,为您提供创建任何拖放体验所需的组件。
这些组件对视觉语言或可访问性没有特定要求,也不依赖于 Atlassian 设计系统。
- 体积小:核心包仅 ~
4.7kB
- 增量式:只使用您需要的部分
- 无头:完全控制渲染和样式
- 框架无关:适用于任何前端框架
- 延迟加载兼容:延迟加载核心包和可选包,以进一步提高页面加载速度
- 灵活性:创建任何您想要的体验,在拖动操作期间进行任何更改
- 广泛兼容:在 Firefox、Safari 和 Chrome、iOS 和 Android 上完全支持所有功能
- 支持虚拟化:创建任何您想要的虚拟体验!
- 可选的视觉输出
我们创建了可选的视觉输出(例如我们的放置指示器),以便快速构建一致的 Atlassian 用户体验。非 Atlassian 用户也可以使用这些输出,创建自己的复制视觉样式的输出,或者采用完全不同的方向。
- 可选的辅助技术控件
并非所有用户都能实现基于指针的拖放体验。为了为使用辅助技术的用户提供出色的体验,我们提供了一个工具链,让您可以快速连接高性能的、适合辅助技术的流程,适用于任何体验。
我们提供的可选辅助控件基于 Atlassian 设计系统。如果您不想使用 Atlassian 设计系统,可以使用我们的指南并用您自己的组件替换我们的组件,或者您可以选择采用不同的方式来实现可访问性。
这个仓库是什么?
这个仓库目前是我们内部单一代码库的单向镜像,包含了实用拖放功能的所有代码。
这个仓库的目的是公开我们的代码,但目前不接受代码贡献。将来我们可能会探索建立双向镜像,以便对这个仓库的贡献也能反馈到我们的单一代码库中。您仍然可以在这个仓库中提出问题或建议!
所有文档和 npm
包都是公开的,可供所有人使用。
我可以将其用于自己的设计系统吗?
当然可以!实用拖放功能有一个小型核心包,以及一系列可选包。一些可选包依赖于样式解决方案(如 emotion
)、视图库(如 react
)或一些额外的 Atlassian 输出(如 @atlaskit/tokens
)。我们将具有其他依赖项的可选包分开,以便可以轻松地用您自己的技术栈和视觉输出替换它们。
我可以使用自己的设计语言吗?
当然可以!我们创建了一些设计指南,体现了我们希望在产品中实现拖放的方式,其中一些决策体现在一些可选包中。但是,您可以自由使用任何您喜欢的设计语言,包括我们的!
什么是 @atlaskit
?
实用拖放功能包在 npm
上以 @atlaskit
命名空间发布。
import { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
@atlaskit
是我们在内部单一代码库中发布所有公共包的 npm
命名空间。将来我们可能会考虑为实用拖放功能创建一个单独的命名空间。如果我们这样做,我们会发布一些工具来帮助用户自动切换。
致谢
由以下人员倾情制作:
- Alex Reardon
- Declan Warn
- Lewis Healey
- Eleni Misthos
- Jesse Bauer
- Mitch Gavan
- Michael Abrahamian
- Tim Keir
- Greta Ritchard
- Atlassian 的许多其他人员
- 标志由 Michelle Holik 和 Vojta Holik 创作
实用拖放功能站在巨人的肩膀上,包括创建拖放规范的人员、在浏览器中实现拖放功能的人员,以及之前的许多拖放库。