@pareto-engineering/design-system 4.0.0-alpha.81 → 4.0.0-alpha.83

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.
Files changed (42) hide show
  1. package/dist/cjs/a/People/styles.scss +1 -1
  2. package/dist/cjs/f/fields/SelectInput/common/Multiple/Multiple.js +1 -1
  3. package/dist/cjs/f/fields/SelectInput/common/Single/Single.js +1 -1
  4. package/dist/cjs/f/fields/TextInput/TextInput.js +1 -2
  5. package/dist/cjs/f/fields/TextareaInput/TextareaInput.js +1 -2
  6. package/dist/cjs/g/DragAndDrop/DragAndDrop.js +97 -0
  7. package/dist/cjs/g/DragAndDrop/common/DraggableItem/DraggableItem.js +80 -0
  8. package/dist/cjs/g/DragAndDrop/common/DraggableItem/index.js +13 -0
  9. package/dist/cjs/g/DragAndDrop/common/DraggableItem/styles.scss +12 -0
  10. package/dist/cjs/g/DragAndDrop/common/index.js +12 -0
  11. package/dist/cjs/g/DragAndDrop/index.js +13 -0
  12. package/dist/cjs/g/DragAndDrop/styles.scss +8 -0
  13. package/dist/cjs/g/index.js +8 -1
  14. package/dist/es/a/People/styles.scss +1 -1
  15. package/dist/es/f/fields/SelectInput/common/Multiple/Multiple.js +1 -1
  16. package/dist/es/f/fields/SelectInput/common/Single/Single.js +1 -1
  17. package/dist/es/f/fields/TextInput/TextInput.js +1 -2
  18. package/dist/es/f/fields/TextareaInput/TextareaInput.js +1 -2
  19. package/dist/es/g/DragAndDrop/DragAndDrop.js +88 -0
  20. package/dist/es/g/DragAndDrop/common/DraggableItem/DraggableItem.js +72 -0
  21. package/dist/es/g/DragAndDrop/common/DraggableItem/index.js +2 -0
  22. package/dist/es/g/DragAndDrop/common/DraggableItem/styles.scss +12 -0
  23. package/dist/es/g/DragAndDrop/common/index.js +1 -0
  24. package/dist/es/g/DragAndDrop/index.js +2 -0
  25. package/dist/es/g/DragAndDrop/styles.scss +8 -0
  26. package/dist/es/g/index.js +2 -1
  27. package/package.json +3 -3
  28. package/src/stories/g/DragAndDrop.stories.jsx +114 -0
  29. package/src/ui/a/People/styles.scss +1 -1
  30. package/src/ui/f/fields/SelectInput/common/Multiple/Multiple.jsx +16 -14
  31. package/src/ui/f/fields/SelectInput/common/Single/Single.jsx +9 -7
  32. package/src/ui/f/fields/TextInput/TextInput.jsx +9 -8
  33. package/src/ui/f/fields/TextareaInput/TextareaInput.jsx +9 -9
  34. package/src/ui/g/DragAndDrop/DragAndDrop.jsx +118 -0
  35. package/src/ui/g/DragAndDrop/common/DraggableItem/DraggableItem.jsx +98 -0
  36. package/src/ui/g/DragAndDrop/common/DraggableItem/index.js +2 -0
  37. package/src/ui/g/DragAndDrop/common/DraggableItem/styles.scss +12 -0
  38. package/src/ui/g/DragAndDrop/common/index.js +1 -0
  39. package/src/ui/g/DragAndDrop/index.js +2 -0
  40. package/src/ui/g/DragAndDrop/styles.scss +8 -0
  41. package/src/ui/g/index.js +1 -0
  42. package/tests/__snapshots__/Storyshots.test.js.snap +695 -0
@@ -11,7 +11,7 @@ $default-padding:var(--u);
11
11
  $default-horizontal-margin: .5em;
12
12
 
13
13
  $default-grid-gap: 1em;
14
- $default-margin: 1.5rem;
14
+ $default-margin: 1em;
15
15
  $default-image-margin: var(--default-image-margin, #{$default-margin});
16
16
  $default-color: var(--default-color, var(--paragraph));
17
17
 
@@ -160,7 +160,7 @@ const Multiple = _ref => {
160
160
  className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
161
161
  style: style,
162
162
  ref: parentRef
163
- }, getComboboxProps()), /*#__PURE__*/React.createElement(_.FormLabel, _extends({
163
+ }, getComboboxProps()), label && /*#__PURE__*/React.createElement(_.FormLabel, _extends({
164
164
  className: [baseClassName, componentClassName].filter(e => e).join(' ')
165
165
  }, getLabelProps(), {
166
166
  name: name,
@@ -59,7 +59,7 @@ const Single = _ref => {
59
59
  id: id,
60
60
  className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
61
61
  style: style
62
- }, /*#__PURE__*/React.createElement(_.FormLabel, {
62
+ }, label && /*#__PURE__*/React.createElement(_.FormLabel, {
63
63
  name: name,
64
64
  color: labelColor,
65
65
  optional: optional
@@ -58,11 +58,10 @@ const TextInput = _ref => {
58
58
  ...symbolStyle,
59
59
  ...style
60
60
  }
61
- }, /*#__PURE__*/React.createElement(_common.FormLabel, {
61
+ }, label && /*#__PURE__*/React.createElement(_common.FormLabel, {
62
62
  name: name,
63
63
  color: labelColor,
64
64
  optional: optional
65
- // {...otherProps}
66
65
  }, label), /*#__PURE__*/React.createElement(InputWrapper, inputWrapperProps, /*#__PURE__*/React.createElement("input", _extends({
67
66
  id: name,
68
67
  className: "input",
@@ -48,11 +48,10 @@ const TextareaInput = _ref => {
48
48
  id: id,
49
49
  className: [baseClassName, componentClassName, userClassName, `y-${color}`].filter(e => e).join(' '),
50
50
  style: style
51
- }, /*#__PURE__*/React.createElement(_common.FormLabel, {
51
+ }, label && /*#__PURE__*/React.createElement(_common.FormLabel, {
52
52
  name: name,
53
53
  color: labelColor,
54
54
  optional: optional
55
- // {...otherProps}
56
55
  }, label), /*#__PURE__*/React.createElement("textarea", _extends({
57
56
  id: name,
58
57
  className: "textarea"
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
11
+ var _common = require("./common");
12
+ require("./styles.scss");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /* @pareto-engineering/generator-front 1.0.12 */ // Local Definitions
17
+ const baseClassName = _exports.default.base;
18
+ const componentClassName = 'drag-and-drop';
19
+
20
+ /**
21
+ * This is the component description.
22
+ */
23
+ const DragAndDrop = _ref => {
24
+ let {
25
+ id,
26
+ className: userClassName,
27
+ style,
28
+ as: Wrapper,
29
+ onOrderChange,
30
+ items
31
+ // ...otherProps
32
+ } = _ref;
33
+ const [draggableItems, setDraggableItems] = (0, _react.useState)(items);
34
+ const handleDrop = (e, dragOverItemIndex) => {
35
+ e.preventDefault();
36
+ const dragItemIndex = e.dataTransfer.getData('text');
37
+ const orderedItems = [...draggableItems];
38
+ const [reorderedItem] = orderedItems.splice(dragItemIndex, 1);
39
+ orderedItems.splice(dragOverItemIndex, 0, reorderedItem);
40
+ setDraggableItems(orderedItems);
41
+ onOrderChange?.(orderedItems);
42
+ };
43
+ return /*#__PURE__*/React.createElement(Wrapper, {
44
+ id: id,
45
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
46
+ style: style
47
+ // {...otherProps}
48
+ }, draggableItems.map((_ref2, index) => {
49
+ let {
50
+ identifier,
51
+ disabled,
52
+ Content,
53
+ ...rest
54
+ } = _ref2;
55
+ return /*#__PURE__*/React.createElement(_common.DraggableItem, _extends({
56
+ draggable: true,
57
+ onDrop: e => handleDrop(e, index),
58
+ index: index,
59
+ key: identifier
60
+ }, rest), Content);
61
+ }));
62
+ };
63
+ DragAndDrop.propTypes = {
64
+ /**
65
+ * The HTML id for this element
66
+ */
67
+ id: _propTypes.default.string,
68
+ /**
69
+ * The HTML class names for this element
70
+ */
71
+ className: _propTypes.default.string,
72
+ /**
73
+ * The React-written, css properties for this element.
74
+ */
75
+ style: _propTypes.default.objectOf(_propTypes.default.string),
76
+ /**
77
+ * The html element to use to display this component.
78
+ */
79
+ as: _propTypes.default.string,
80
+ /**
81
+ * The node list of items to be dragged around
82
+ */
83
+ items: _propTypes.default.arrayOf(_propTypes.default.shape({
84
+ Content: _propTypes.default.node.isRequired,
85
+ identifier: _propTypes.default.string.isRequired,
86
+ as: _propTypes.default.string
87
+ })).isRequired,
88
+ /*
89
+ * A function to be called when the draggable items are re-ordered
90
+ */
91
+ onOrderChange: _propTypes.default.func
92
+ };
93
+ DragAndDrop.defaultProps = {
94
+ as: 'ul'
95
+ };
96
+ DragAndDrop.DraggableItem = _common.DraggableItem;
97
+ var _default = exports.default = DragAndDrop;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _exports = _interopRequireDefault(require("@pareto-engineering/bem/exports"));
11
+ require("./styles.scss");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /* @pareto-engineering/generator-front 1.0.12 */
16
+ // Local Definitions
17
+
18
+ const baseClassName = _exports.default.base;
19
+ const componentClassName = 'draggable-item';
20
+
21
+ /**
22
+ * This is the component description.
23
+ */
24
+ const DraggableItem = _ref => {
25
+ let {
26
+ id,
27
+ className: userClassName,
28
+ style,
29
+ as: Wrapper,
30
+ children,
31
+ index,
32
+ ...otherProps
33
+ } = _ref;
34
+ const [isDragging, setIsDragging] = (0, _react.useState)(false);
35
+ const handleDragStart = e => {
36
+ setIsDragging(true);
37
+ e.dataTransfer.effectAllowed = 'move';
38
+ e.dataTransfer.setData('text/plain', index);
39
+ };
40
+ const handleDragEnd = () => {
41
+ setIsDragging(false);
42
+ };
43
+ const handleDragOver = e => {
44
+ e.preventDefault();
45
+ };
46
+ return /*#__PURE__*/React.createElement(Wrapper, _extends({
47
+ id: id,
48
+ className: [baseClassName, componentClassName, userClassName, isDragging && 'dragging'].filter(e => e).join(' '),
49
+ style: style,
50
+ onDragStart: e => handleDragStart(e),
51
+ onDragOver: e => handleDragOver(e),
52
+ onDragEnd: e => handleDragEnd(e)
53
+ }, otherProps), children);
54
+ };
55
+ DraggableItem.propTypes = {
56
+ /**
57
+ * The HTML id for this element
58
+ */
59
+ id: _propTypes.default.string,
60
+ /**
61
+ * The HTML class names for this element
62
+ */
63
+ className: _propTypes.default.string,
64
+ /**
65
+ * The React-written, css properties for this element.
66
+ */
67
+ style: _propTypes.default.objectOf(_propTypes.default.string),
68
+ /**
69
+ * The children JSX
70
+ */
71
+ children: _propTypes.default.node,
72
+ /**
73
+ * The html element to use to display this component.
74
+ */
75
+ as: _propTypes.default.string
76
+ };
77
+ DraggableItem.defaultProps = {
78
+ as: 'li'
79
+ };
80
+ var _default = exports.default = DraggableItem;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DraggableItem", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _DraggableItem.default;
10
+ }
11
+ });
12
+ var _DraggableItem = _interopRequireDefault(require("./DraggableItem"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,12 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ .#{bem.$base}.draggable-item {
6
+ cursor: move;
7
+ list-style: none;
8
+
9
+ &.dragging {
10
+ opacity: .5;
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DraggableItem", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _DraggableItem.DraggableItem;
10
+ }
11
+ });
12
+ var _DraggableItem = require("./DraggableItem");
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DragAndDrop", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _DragAndDrop.default;
10
+ }
11
+ });
12
+ var _DragAndDrop = _interopRequireDefault(require("./DragAndDrop"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,8 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ .#{bem.$base}.drag-and-drop {
6
+ margin: 0;
7
+ padding: 0;
8
+ }
@@ -3,10 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "DragAndDrop", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _DragAndDrop.DragAndDrop;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "ExpandableLexicalPreview", {
7
13
  enumerable: true,
8
14
  get: function () {
9
15
  return _ExpandableLexicalPreview.ExpandableLexicalPreview;
10
16
  }
11
17
  });
12
- var _ExpandableLexicalPreview = require("./ExpandableLexicalPreview");
18
+ var _ExpandableLexicalPreview = require("./ExpandableLexicalPreview");
19
+ var _DragAndDrop = require("./DragAndDrop");
@@ -11,7 +11,7 @@ $default-padding:var(--u);
11
11
  $default-horizontal-margin: .5em;
12
12
 
13
13
  $default-grid-gap: 1em;
14
- $default-margin: 1.5rem;
14
+ $default-margin: 1em;
15
15
  $default-image-margin: var(--default-image-margin, #{$default-margin});
16
16
  $default-color: var(--default-color, var(--paragraph));
17
17
 
@@ -151,7 +151,7 @@ const Multiple = ({
151
151
  className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
152
152
  style: style,
153
153
  ref: parentRef
154
- }, getComboboxProps()), /*#__PURE__*/React.createElement(FormLabel, _extends({
154
+ }, getComboboxProps()), label && /*#__PURE__*/React.createElement(FormLabel, _extends({
155
155
  className: [baseClassName, componentClassName].filter(e => e).join(' ')
156
156
  }, getLabelProps(), {
157
157
  name: name,
@@ -51,7 +51,7 @@ const Single = ({
51
51
  id: id,
52
52
  className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
53
53
  style: style
54
- }, /*#__PURE__*/React.createElement(FormLabel, {
54
+ }, label && /*#__PURE__*/React.createElement(FormLabel, {
55
55
  name: name,
56
56
  color: labelColor,
57
57
  optional: optional
@@ -52,11 +52,10 @@ const TextInput = ({
52
52
  ...symbolStyle,
53
53
  ...style
54
54
  }
55
- }, /*#__PURE__*/React.createElement(FormLabel, {
55
+ }, label && /*#__PURE__*/React.createElement(FormLabel, {
56
56
  name: name,
57
57
  color: labelColor,
58
58
  optional: optional
59
- // {...otherProps}
60
59
  }, label), /*#__PURE__*/React.createElement(InputWrapper, inputWrapperProps, /*#__PURE__*/React.createElement("input", _extends({
61
60
  id: name,
62
61
  className: "input",
@@ -42,11 +42,10 @@ const TextareaInput = ({
42
42
  id: id,
43
43
  className: [baseClassName, componentClassName, userClassName, `y-${color}`].filter(e => e).join(' '),
44
44
  style: style
45
- }, /*#__PURE__*/React.createElement(FormLabel, {
45
+ }, label && /*#__PURE__*/React.createElement(FormLabel, {
46
46
  name: name,
47
47
  color: labelColor,
48
48
  optional: optional
49
- // {...otherProps}
50
49
  }, label), /*#__PURE__*/React.createElement("textarea", _extends({
51
50
  id: name,
52
51
  className: "textarea"
@@ -0,0 +1,88 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ /* @pareto-engineering/generator-front 1.0.12 */
3
+ import * as React from 'react';
4
+ import { useState } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import styleNames from '@pareto-engineering/bem/exports';
7
+ import { DraggableItem } from "./common";
8
+
9
+ // Local Definitions
10
+
11
+ import "./styles.scss";
12
+ const baseClassName = styleNames.base;
13
+ const componentClassName = 'drag-and-drop';
14
+
15
+ /**
16
+ * This is the component description.
17
+ */
18
+ const DragAndDrop = ({
19
+ id,
20
+ className: userClassName,
21
+ style,
22
+ as: Wrapper,
23
+ onOrderChange,
24
+ items
25
+ // ...otherProps
26
+ }) => {
27
+ const [draggableItems, setDraggableItems] = useState(items);
28
+ const handleDrop = (e, dragOverItemIndex) => {
29
+ e.preventDefault();
30
+ const dragItemIndex = e.dataTransfer.getData('text');
31
+ const orderedItems = [...draggableItems];
32
+ const [reorderedItem] = orderedItems.splice(dragItemIndex, 1);
33
+ orderedItems.splice(dragOverItemIndex, 0, reorderedItem);
34
+ setDraggableItems(orderedItems);
35
+ onOrderChange?.(orderedItems);
36
+ };
37
+ return /*#__PURE__*/React.createElement(Wrapper, {
38
+ id: id,
39
+ className: [baseClassName, componentClassName, userClassName].filter(e => e).join(' '),
40
+ style: style
41
+ // {...otherProps}
42
+ }, draggableItems.map(({
43
+ identifier,
44
+ disabled,
45
+ Content,
46
+ ...rest
47
+ }, index) => /*#__PURE__*/React.createElement(DraggableItem, _extends({
48
+ draggable: true,
49
+ onDrop: e => handleDrop(e, index),
50
+ index: index,
51
+ key: identifier
52
+ }, rest), Content)));
53
+ };
54
+ DragAndDrop.propTypes = {
55
+ /**
56
+ * The HTML id for this element
57
+ */
58
+ id: PropTypes.string,
59
+ /**
60
+ * The HTML class names for this element
61
+ */
62
+ className: PropTypes.string,
63
+ /**
64
+ * The React-written, css properties for this element.
65
+ */
66
+ style: PropTypes.objectOf(PropTypes.string),
67
+ /**
68
+ * The html element to use to display this component.
69
+ */
70
+ as: PropTypes.string,
71
+ /**
72
+ * The node list of items to be dragged around
73
+ */
74
+ items: PropTypes.arrayOf(PropTypes.shape({
75
+ Content: PropTypes.node.isRequired,
76
+ identifier: PropTypes.string.isRequired,
77
+ as: PropTypes.string
78
+ })).isRequired,
79
+ /*
80
+ * A function to be called when the draggable items are re-ordered
81
+ */
82
+ onOrderChange: PropTypes.func
83
+ };
84
+ DragAndDrop.defaultProps = {
85
+ as: 'ul'
86
+ };
87
+ DragAndDrop.DraggableItem = DraggableItem;
88
+ export default DragAndDrop;
@@ -0,0 +1,72 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ /* @pareto-engineering/generator-front 1.0.12 */
3
+ import * as React from 'react';
4
+ import { useState } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import styleNames from '@pareto-engineering/bem/exports';
7
+ import "./styles.scss";
8
+
9
+ // Local Definitions
10
+
11
+ const baseClassName = styleNames.base;
12
+ const componentClassName = 'draggable-item';
13
+
14
+ /**
15
+ * This is the component description.
16
+ */
17
+ const DraggableItem = ({
18
+ id,
19
+ className: userClassName,
20
+ style,
21
+ as: Wrapper,
22
+ children,
23
+ index,
24
+ ...otherProps
25
+ }) => {
26
+ const [isDragging, setIsDragging] = useState(false);
27
+ const handleDragStart = e => {
28
+ setIsDragging(true);
29
+ e.dataTransfer.effectAllowed = 'move';
30
+ e.dataTransfer.setData('text/plain', index);
31
+ };
32
+ const handleDragEnd = () => {
33
+ setIsDragging(false);
34
+ };
35
+ const handleDragOver = e => {
36
+ e.preventDefault();
37
+ };
38
+ return /*#__PURE__*/React.createElement(Wrapper, _extends({
39
+ id: id,
40
+ className: [baseClassName, componentClassName, userClassName, isDragging && 'dragging'].filter(e => e).join(' '),
41
+ style: style,
42
+ onDragStart: e => handleDragStart(e),
43
+ onDragOver: e => handleDragOver(e),
44
+ onDragEnd: e => handleDragEnd(e)
45
+ }, otherProps), children);
46
+ };
47
+ DraggableItem.propTypes = {
48
+ /**
49
+ * The HTML id for this element
50
+ */
51
+ id: PropTypes.string,
52
+ /**
53
+ * The HTML class names for this element
54
+ */
55
+ className: PropTypes.string,
56
+ /**
57
+ * The React-written, css properties for this element.
58
+ */
59
+ style: PropTypes.objectOf(PropTypes.string),
60
+ /**
61
+ * The children JSX
62
+ */
63
+ children: PropTypes.node,
64
+ /**
65
+ * The html element to use to display this component.
66
+ */
67
+ as: PropTypes.string
68
+ };
69
+ DraggableItem.defaultProps = {
70
+ as: 'li'
71
+ };
72
+ export default DraggableItem;
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as DraggableItem } from "./DraggableItem";
@@ -0,0 +1,12 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ .#{bem.$base}.draggable-item {
6
+ cursor: move;
7
+ list-style: none;
8
+
9
+ &.dragging {
10
+ opacity: .5;
11
+ }
12
+ }
@@ -0,0 +1 @@
1
+ export { DraggableItem } from "./DraggableItem";
@@ -0,0 +1,2 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+ export { default as DragAndDrop } from "./DragAndDrop";
@@ -0,0 +1,8 @@
1
+ /* @pareto-engineering/generator-front 1.0.12 */
2
+
3
+ @use "@pareto-engineering/bem";
4
+
5
+ .#{bem.$base}.drag-and-drop {
6
+ margin: 0;
7
+ padding: 0;
8
+ }
@@ -1 +1,2 @@
1
- export { ExpandableLexicalPreview } from "./ExpandableLexicalPreview";
1
+ export { ExpandableLexicalPreview } from "./ExpandableLexicalPreview";
2
+ export { DragAndDrop } from "./DragAndDrop";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pareto-engineering/design-system",
3
- "version": "4.0.0-alpha.81",
3
+ "version": "4.0.0-alpha.83",
4
4
  "description": "",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/es/index.js",
@@ -59,7 +59,7 @@
59
59
  "@lexical/selection": "0.12.2",
60
60
  "@lexical/table": "0.12.2",
61
61
  "@lexical/utils": "0.12.2",
62
- "@pareto-engineering/assets": "^4.0.0-alpha.81",
62
+ "@pareto-engineering/assets": "^4.0.0-alpha.82",
63
63
  "@pareto-engineering/bem": "^4.0.0-alpha.20",
64
64
  "@pareto-engineering/styles": "^4.0.0-alpha.73",
65
65
  "@pareto-engineering/utils": "^4.0.0-alpha.81",
@@ -82,5 +82,5 @@
82
82
  "relay-test-utils": "^15.0.0"
83
83
  },
84
84
  "browserslist": "> 2%",
85
- "gitHead": "b44cdb0922a67109aaf2fa1dce4943882ce3a512"
85
+ "gitHead": "0aaf2a086fb7dcc893ecf5a21f206897db01b1d4"
86
86
  }