DragFeedback.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Copyright (C) 2015 - present Instructure, Inc.
  3. *
  4. * This file is part of Canvas.
  5. *
  6. * Canvas is free software: you can redistribute it and/or modify it under
  7. * the terms of the GNU Affero General Public License as published by the Free
  8. * Software Foundation, version 3 of the License.
  9. *
  10. * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
  11. * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  12. * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
  13. * details.
  14. *
  15. * You should have received a copy of the GNU Affero General Public License along
  16. * with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. import React from 'react'
  19. import PropTypes from 'prop-types'
  20. import FilesystemObjectThumbnail from 'jsx/files/FilesystemObjectThumbnail'
  21. import customPropTypes from 'compiled/react_files/modules/customPropTypes'
  22. var MAX_THUMBNAILS_TO_SHOW = 10;
  23. var DragFeedback = React.createClass({
  24. displayName: 'DragFeedback',
  25. propTypes: {
  26. itemsToDrag: PropTypes.arrayOf(customPropTypes.filesystemObject).isRequired,
  27. pageX: PropTypes.number.isRequired,
  28. pageY: PropTypes.number.isRequired
  29. },
  30. render () {
  31. return (
  32. <div className='DragFeedback' style={{
  33. WebkitTransform: `translate3d(${this.props.pageX + 6}px, ${this.props.pageY + 6}px, 0)`,
  34. transform: `translate3d(${this.props.pageX + 6}px, ${this.props.pageY + 6}px, 0)`
  35. }}>
  36. {this.props.itemsToDrag.slice(0, MAX_THUMBNAILS_TO_SHOW).map((model, index) => {
  37. return (
  38. <FilesystemObjectThumbnail
  39. model={model}
  40. key={model.id}
  41. style={{
  42. left: 10 + index * 5 - index,
  43. top: 10 + index * 5 - index
  44. }}
  45. />
  46. );
  47. })}
  48. <span className='badge badge-important'>{this.props.itemsToDrag.length}</span>
  49. </div>
  50. );
  51. }
  52. });
  53. export default DragFeedback