@coveord/plasma-mantine 56.17.0 → 56.20.0
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.
- package/.turbo/turbo-build.log +4 -4
- package/.turbo/turbo-test.log +120 -116
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/ActionIcon/ActionIcon.d.ts +1 -1
- package/dist/cjs/components/ActionIcon/ActionIcon.d.ts.map +1 -1
- package/dist/cjs/components/ActionIcon/ActionIcon.js +10 -0
- package/dist/cjs/components/ActionIcon/ActionIcon.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.d.ts.map +1 -1
- package/dist/cjs/components/Alert/Alert.js +5 -0
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Button/Button.d.ts.map +1 -1
- package/dist/cjs/components/Button/Button.js +10 -0
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/cjs/components/CodeEditor/CodeEditor.js +1 -0
- package/dist/cjs/components/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/cjs/components/Collection/Collection.d.ts +75 -12
- package/dist/cjs/components/Collection/Collection.d.ts.map +1 -1
- package/dist/cjs/components/Collection/Collection.js +94 -38
- package/dist/cjs/components/Collection/Collection.js.map +1 -1
- package/dist/cjs/components/Collection/Collection.module.css +13 -1
- package/dist/cjs/components/Collection/CollectionAddButton.d.ts +25 -0
- package/dist/cjs/components/Collection/CollectionAddButton.d.ts.map +1 -0
- package/dist/cjs/components/Collection/CollectionAddButton.js +33 -0
- package/dist/cjs/components/Collection/CollectionAddButton.js.map +1 -0
- package/dist/cjs/components/Collection/CollectionColumn.types.d.ts +72 -0
- package/dist/cjs/components/Collection/CollectionColumn.types.d.ts.map +1 -0
- package/dist/cjs/components/Collection/CollectionColumn.types.js +6 -0
- package/dist/cjs/components/Collection/CollectionColumn.types.js.map +1 -0
- package/dist/cjs/components/Collection/CollectionContext.d.ts +5 -0
- package/dist/cjs/components/Collection/CollectionContext.d.ts.map +1 -1
- package/dist/cjs/components/Collection/CollectionContext.js.map +1 -1
- package/dist/cjs/components/Collection/CollectionItem.d.ts +2 -2
- package/dist/cjs/components/Collection/CollectionItem.d.ts.map +1 -1
- package/dist/cjs/components/Collection/CollectionItem.js +18 -38
- package/dist/cjs/components/Collection/CollectionItem.js.map +1 -1
- package/dist/cjs/components/Collection/layouts/CollectionLayout.types.d.ts +46 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayout.types.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayout.types.js +6 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayout.types.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayouts.d.ts +26 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayouts.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayouts.js +29 -0
- package/dist/cjs/components/Collection/layouts/CollectionLayouts.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.d.ts +12 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.js +24 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayout.module.css +37 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.d.ts +6 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js +78 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.d.ts +6 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js +56 -0
- package/dist/cjs/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/DragHandle.d.ts +12 -0
- package/dist/cjs/components/Collection/layouts/shared/DragHandle.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/DragHandle.js +28 -0
- package/dist/cjs/components/Collection/layouts/shared/DragHandle.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/RemoveButton.d.ts +11 -0
- package/dist/cjs/components/Collection/layouts/shared/RemoveButton.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/RemoveButton.js +39 -0
- package/dist/cjs/components/Collection/layouts/shared/RemoveButton.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/columnUtils.d.ts +8 -0
- package/dist/cjs/components/Collection/layouts/shared/columnUtils.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/columnUtils.js +24 -0
- package/dist/cjs/components/Collection/layouts/shared/columnUtils.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/headerUtils.d.ts +8 -0
- package/dist/cjs/components/Collection/layouts/shared/headerUtils.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/headerUtils.js +21 -0
- package/dist/cjs/components/Collection/layouts/shared/headerUtils.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/itemRenderer.d.ts +78 -0
- package/dist/cjs/components/Collection/layouts/shared/itemRenderer.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/itemRenderer.js +160 -0
- package/dist/cjs/components/Collection/layouts/shared/itemRenderer.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/layoutConstants.d.ts +38 -0
- package/dist/cjs/components/Collection/layouts/shared/layoutConstants.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/shared/layoutConstants.js +31 -0
- package/dist/cjs/components/Collection/layouts/shared/layoutConstants.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.d.ts +12 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.js +24 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayout.module.css +35 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.d.ts +6 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js +134 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js.map +1 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.d.ts +10 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.d.ts.map +1 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js +15 -0
- package/dist/cjs/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js.map +1 -0
- package/dist/cjs/components/LastUpdated/LastUpdated.js +1 -0
- package/dist/cjs/components/LastUpdated/LastUpdated.js.map +1 -1
- package/dist/cjs/components/StickyFooter/StickyFooter.d.ts.map +1 -1
- package/dist/cjs/components/StickyFooter/StickyFooter.js +1 -0
- package/dist/cjs/components/StickyFooter/StickyFooter.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/ActionIcon/ActionIcon.d.ts +1 -1
- package/dist/esm/components/ActionIcon/ActionIcon.d.ts.map +1 -1
- package/dist/esm/components/ActionIcon/ActionIcon.js +10 -0
- package/dist/esm/components/ActionIcon/ActionIcon.js.map +1 -1
- package/dist/esm/components/Alert/Alert.d.ts.map +1 -1
- package/dist/esm/components/Alert/Alert.js +5 -0
- package/dist/esm/components/Alert/Alert.js.map +1 -1
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +10 -0
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/esm/components/CodeEditor/CodeEditor.js +1 -0
- package/dist/esm/components/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/esm/components/Collection/Collection.d.ts +75 -12
- package/dist/esm/components/Collection/Collection.d.ts.map +1 -1
- package/dist/esm/components/Collection/Collection.js +87 -32
- package/dist/esm/components/Collection/Collection.js.map +1 -1
- package/dist/esm/components/Collection/Collection.module.css +13 -1
- package/dist/esm/components/Collection/CollectionAddButton.d.ts +25 -0
- package/dist/esm/components/Collection/CollectionAddButton.d.ts.map +1 -0
- package/dist/esm/components/Collection/CollectionAddButton.js +19 -0
- package/dist/esm/components/Collection/CollectionAddButton.js.map +1 -0
- package/dist/esm/components/Collection/CollectionColumn.types.d.ts +72 -0
- package/dist/esm/components/Collection/CollectionColumn.types.d.ts.map +1 -0
- package/dist/esm/components/Collection/CollectionColumn.types.js +5 -0
- package/dist/esm/components/Collection/CollectionColumn.types.js.map +1 -0
- package/dist/esm/components/Collection/CollectionContext.d.ts +5 -0
- package/dist/esm/components/Collection/CollectionContext.d.ts.map +1 -1
- package/dist/esm/components/Collection/CollectionContext.js.map +1 -1
- package/dist/esm/components/Collection/CollectionItem.d.ts +2 -2
- package/dist/esm/components/Collection/CollectionItem.d.ts.map +1 -1
- package/dist/esm/components/Collection/CollectionItem.js +15 -34
- package/dist/esm/components/Collection/CollectionItem.js.map +1 -1
- package/dist/esm/components/Collection/layouts/CollectionLayout.types.d.ts +46 -0
- package/dist/esm/components/Collection/layouts/CollectionLayout.types.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/CollectionLayout.types.js +6 -0
- package/dist/esm/components/Collection/layouts/CollectionLayout.types.js.map +1 -0
- package/dist/esm/components/Collection/layouts/CollectionLayouts.d.ts +26 -0
- package/dist/esm/components/Collection/layouts/CollectionLayouts.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/CollectionLayouts.js +10 -0
- package/dist/esm/components/Collection/layouts/CollectionLayouts.js.map +1 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayout.d.ts +12 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayout.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayout.js +11 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayout.js.map +1 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayout.module.css +37 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.d.ts +6 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js +49 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.js.map +1 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.d.ts +6 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js +36 -0
- package/dist/esm/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.js.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/DragHandle.d.ts +12 -0
- package/dist/esm/components/Collection/layouts/shared/DragHandle.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/DragHandle.js +20 -0
- package/dist/esm/components/Collection/layouts/shared/DragHandle.js.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/RemoveButton.d.ts +11 -0
- package/dist/esm/components/Collection/layouts/shared/RemoveButton.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/RemoveButton.js +30 -0
- package/dist/esm/components/Collection/layouts/shared/RemoveButton.js.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/columnUtils.d.ts +8 -0
- package/dist/esm/components/Collection/layouts/shared/columnUtils.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/columnUtils.js +17 -0
- package/dist/esm/components/Collection/layouts/shared/columnUtils.js.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/headerUtils.d.ts +8 -0
- package/dist/esm/components/Collection/layouts/shared/headerUtils.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/headerUtils.js +14 -0
- package/dist/esm/components/Collection/layouts/shared/headerUtils.js.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/itemRenderer.d.ts +78 -0
- package/dist/esm/components/Collection/layouts/shared/itemRenderer.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/itemRenderer.js +150 -0
- package/dist/esm/components/Collection/layouts/shared/itemRenderer.js.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/layoutConstants.d.ts +38 -0
- package/dist/esm/components/Collection/layouts/shared/layoutConstants.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/shared/layoutConstants.js +18 -0
- package/dist/esm/components/Collection/layouts/shared/layoutConstants.js.map +1 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayout.d.ts +12 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayout.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayout.js +11 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayout.js.map +1 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayout.module.css +35 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutBody.d.ts +6 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutBody.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js +103 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutBody.js.map +1 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.d.ts +10 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.d.ts.map +1 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js +6 -0
- package/dist/esm/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.js.map +1 -0
- package/dist/esm/components/LastUpdated/LastUpdated.js +1 -0
- package/dist/esm/components/LastUpdated/LastUpdated.js.map +1 -1
- package/dist/esm/components/StickyFooter/StickyFooter.d.ts.map +1 -1
- package/dist/esm/components/StickyFooter/StickyFooter.js +1 -0
- package/dist/esm/components/StickyFooter/StickyFooter.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/ActionIcon/ActionIcon.tsx +15 -4
- package/src/components/Alert/Alert.tsx +7 -0
- package/src/components/Button/Button.tsx +12 -1
- package/src/components/CodeEditor/CodeEditor.tsx +4 -4
- package/src/components/Collection/Collection.module.css +13 -1
- package/src/components/Collection/Collection.tsx +149 -50
- package/src/components/Collection/CollectionAddButton.tsx +42 -0
- package/src/components/Collection/CollectionColumn.types.ts +79 -0
- package/src/components/Collection/CollectionContext.ts +5 -0
- package/src/components/Collection/CollectionItem.tsx +10 -21
- package/src/components/Collection/__tests__/CollectionWithColumns.spec.tsx +560 -0
- package/src/components/Collection/layouts/CollectionLayout.types.ts +56 -0
- package/src/components/Collection/layouts/CollectionLayouts.tsx +15 -0
- package/src/components/Collection/layouts/horizontal-layout/HorizontalLayout.module.css +37 -0
- package/src/components/Collection/layouts/horizontal-layout/HorizontalLayout.tsx +9 -0
- package/src/components/Collection/layouts/horizontal-layout/HorizontalLayoutBody.tsx +68 -0
- package/src/components/Collection/layouts/horizontal-layout/HorizontalLayoutHeader.tsx +33 -0
- package/src/components/Collection/layouts/shared/DragHandle.tsx +22 -0
- package/src/components/Collection/layouts/shared/RemoveButton.tsx +30 -0
- package/src/components/Collection/layouts/shared/columnUtils.ts +20 -0
- package/src/components/Collection/layouts/shared/headerUtils.ts +14 -0
- package/src/components/Collection/layouts/shared/itemRenderer.tsx +242 -0
- package/src/components/Collection/layouts/shared/layoutConstants.ts +51 -0
- package/src/components/Collection/layouts/vertical-layout/VerticalLayout.module.css +35 -0
- package/src/components/Collection/layouts/vertical-layout/VerticalLayout.tsx +9 -0
- package/src/components/Collection/layouts/vertical-layout/VerticalLayoutBody.tsx +120 -0
- package/src/components/Collection/layouts/vertical-layout/VerticalLayoutHeader.tsx +8 -0
- package/src/components/LastUpdated/LastUpdated.tsx +2 -0
- package/src/components/StickyFooter/StickyFooter.tsx +3 -2
- package/src/index.ts +11 -0
|
@@ -13,17 +13,17 @@ var _object_spread = require("@swc/helpers/_/_object_spread");
|
|
|
13
13
|
var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
|
|
14
14
|
var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
|
|
15
15
|
var _jsxruntime = require("react/jsx-runtime");
|
|
16
|
-
var _plasmareacticons = require("@coveord/plasma-react-icons");
|
|
17
16
|
var _core = require("@dnd-kit/core");
|
|
18
17
|
var _modifiers = require("@dnd-kit/modifiers");
|
|
19
18
|
var _sortable = require("@dnd-kit/sortable");
|
|
20
19
|
var _core1 = require("@mantine/core");
|
|
21
20
|
var _hooks = require("@mantine/hooks");
|
|
22
21
|
var _createFactoryComponent = require("../../utils/createFactoryComponent.js");
|
|
23
|
-
var _Button = require("../Button/Button.js");
|
|
24
22
|
var _Collectionmodulecss = /*#__PURE__*/ _interop_require_default._(require("./Collection.module.css"));
|
|
23
|
+
var _CollectionAddButton = require("./CollectionAddButton.js");
|
|
25
24
|
var _CollectionContext = require("./CollectionContext.js");
|
|
26
25
|
var _CollectionItem = require("./CollectionItem.js");
|
|
26
|
+
var _CollectionLayouts = require("./layouts/CollectionLayouts.js");
|
|
27
27
|
var defaultProps = {
|
|
28
28
|
draggable: false,
|
|
29
29
|
addLabel: 'Add item',
|
|
@@ -38,7 +38,7 @@ var defaultProps = {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
var Collection = function(props) {
|
|
41
|
-
var _useProps = (0, _core1.useProps)('Collection', defaultProps, props), value = _useProps.value, onChange = _useProps.onChange, onRemoveItem = _useProps.onRemoveItem, onReorderItem = _useProps.onReorderItem, onInsertItem = _useProps.onInsertItem, disabled = _useProps.disabled, readOnly = _useProps.readOnly, draggable = _useProps.draggable, children = _useProps.children, gap = _useProps.gap, required = _useProps.required, newItem = _useProps.newItem, addLabel = _useProps.addLabel, addDisabledTooltip = _useProps.addDisabledTooltip, allowAdd = _useProps.allowAdd, label = _useProps.label, labelProps = _useProps.labelProps, withAsterisk = _useProps.withAsterisk, description = _useProps.description, descriptionProps = _useProps.descriptionProps, error = _useProps.error, errorProps = _useProps.errorProps, getItemId = _useProps.getItemId, ref = _useProps.ref, // Style props
|
|
41
|
+
var _useProps = (0, _core1.useProps)('Collection', defaultProps, props), value = _useProps.value, onChange = _useProps.onChange, onRemoveItem = _useProps.onRemoveItem, onReorderItem = _useProps.onReorderItem, onInsertItem = _useProps.onInsertItem, disabled = _useProps.disabled, readOnly = _useProps.readOnly, draggable = _useProps.draggable, children = _useProps.children, columns = _useProps.columns, layout = _useProps.layout, gap = _useProps.gap, required = _useProps.required, newItem = _useProps.newItem, addLabel = _useProps.addLabel, addDisabledTooltip = _useProps.addDisabledTooltip, allowAdd = _useProps.allowAdd, label = _useProps.label, labelProps = _useProps.labelProps, withAsterisk = _useProps.withAsterisk, description = _useProps.description, descriptionProps = _useProps.descriptionProps, error = _useProps.error, errorProps = _useProps.errorProps, getItemId = _useProps.getItemId, ref = _useProps.ref, // Style props
|
|
42
42
|
style = _useProps.style, className = _useProps.className, classNames = _useProps.classNames, styles = _useProps.styles, unstyled = _useProps.unstyled, others = _object_without_properties._(_useProps, [
|
|
43
43
|
"value",
|
|
44
44
|
"onChange",
|
|
@@ -49,6 +49,8 @@ var Collection = function(props) {
|
|
|
49
49
|
"readOnly",
|
|
50
50
|
"draggable",
|
|
51
51
|
"children",
|
|
52
|
+
"columns",
|
|
53
|
+
"layout",
|
|
52
54
|
"gap",
|
|
53
55
|
"required",
|
|
54
56
|
"newItem",
|
|
@@ -70,6 +72,13 @@ var Collection = function(props) {
|
|
|
70
72
|
"styles",
|
|
71
73
|
"unstyled"
|
|
72
74
|
]);
|
|
75
|
+
// Runtime validation: ensure columns and children are mutually exclusive
|
|
76
|
+
if (columns && children) {
|
|
77
|
+
throw new Error('Collection: Cannot use both "columns" and "children" props.');
|
|
78
|
+
}
|
|
79
|
+
if (layout && !columns) {
|
|
80
|
+
throw new Error('Collection: "layout" prop can only be used with "columns" prop.');
|
|
81
|
+
}
|
|
73
82
|
var getStyles = (0, _core1.useStyles)({
|
|
74
83
|
name: 'Collection',
|
|
75
84
|
classes: _Collectionmodulecss.default,
|
|
@@ -84,13 +93,14 @@ var Collection = function(props) {
|
|
|
84
93
|
coordinateGetter: _sortable.sortableKeyboardCoordinates
|
|
85
94
|
}));
|
|
86
95
|
var canEdit = !disabled && !readOnly;
|
|
87
|
-
var
|
|
96
|
+
var items = value !== null && value !== void 0 ? value : [];
|
|
97
|
+
var hasOnlyOneItem = items.length === 1;
|
|
88
98
|
/**
|
|
89
99
|
* Enforcing onChange when the value is modified will make sure the errors are carried through.
|
|
90
100
|
*/ (0, _hooks.useDidUpdate)(function() {
|
|
91
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(
|
|
101
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(items);
|
|
92
102
|
}, [
|
|
93
|
-
JSON.stringify(
|
|
103
|
+
JSON.stringify(items)
|
|
94
104
|
]);
|
|
95
105
|
var isRequired = typeof withAsterisk === 'boolean' ? withAsterisk : required;
|
|
96
106
|
var _label = label ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_core1.Input.Label, _object_spread_props._(_object_spread._({
|
|
@@ -113,43 +123,13 @@ var Collection = function(props) {
|
|
|
113
123
|
_description
|
|
114
124
|
]
|
|
115
125
|
}) : null;
|
|
116
|
-
var standardizedItems =
|
|
126
|
+
var standardizedItems = items.map(function(item, index) {
|
|
117
127
|
var _getItemId;
|
|
118
128
|
return {
|
|
119
129
|
id: (_getItemId = getItemId === null || getItemId === void 0 ? void 0 : getItemId(item, index)) !== null && _getItemId !== void 0 ? _getItemId : String(index),
|
|
120
130
|
data: item
|
|
121
131
|
};
|
|
122
132
|
});
|
|
123
|
-
var items = standardizedItems.map(function(item, index) {
|
|
124
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_CollectionItem.CollectionItem, {
|
|
125
|
-
id: item.id,
|
|
126
|
-
disabled: !canEdit,
|
|
127
|
-
draggable: draggable,
|
|
128
|
-
onRemove: function() {
|
|
129
|
-
return onRemoveItem === null || onRemoveItem === void 0 ? void 0 : onRemoveItem(index);
|
|
130
|
-
},
|
|
131
|
-
removable: !(isRequired && hasOnlyOneItem),
|
|
132
|
-
children: children(item.data, index)
|
|
133
|
-
}, item.id);
|
|
134
|
-
});
|
|
135
|
-
var _allowAdd;
|
|
136
|
-
var addAllowed = typeof allowAdd === 'boolean' ? allowAdd : (_allowAdd = allowAdd === null || allowAdd === void 0 ? void 0 : allowAdd(value)) !== null && _allowAdd !== void 0 ? _allowAdd : true;
|
|
137
|
-
var _addButton = canEdit ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_core1.Box, {
|
|
138
|
-
className: _Collectionmodulecss.default.addButtonContainer,
|
|
139
|
-
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.Button.Quaternary, {
|
|
140
|
-
leftSection: /*#__PURE__*/ (0, _jsxruntime.jsx)(_plasmareacticons.IconPlus, {
|
|
141
|
-
size: 16
|
|
142
|
-
}),
|
|
143
|
-
onClick: function() {
|
|
144
|
-
var newItemValue = typeof newItem === 'function' ? newItem() : newItem;
|
|
145
|
-
var _value_length;
|
|
146
|
-
onInsertItem(newItemValue, (_value_length = value === null || value === void 0 ? void 0 : value.length) !== null && _value_length !== void 0 ? _value_length : 0);
|
|
147
|
-
},
|
|
148
|
-
disabled: !addAllowed,
|
|
149
|
-
disabledTooltip: addDisabledTooltip,
|
|
150
|
-
children: addLabel
|
|
151
|
-
})
|
|
152
|
-
}) : null;
|
|
153
133
|
var getIndex = function(id) {
|
|
154
134
|
return standardizedItems.findIndex(function(item) {
|
|
155
135
|
return item.id === id;
|
|
@@ -168,6 +148,81 @@ var Collection = function(props) {
|
|
|
168
148
|
}
|
|
169
149
|
}
|
|
170
150
|
};
|
|
151
|
+
var _allowAdd;
|
|
152
|
+
var addAllowed = typeof allowAdd === 'boolean' ? allowAdd : (_allowAdd = allowAdd === null || allowAdd === void 0 ? void 0 : allowAdd(items)) !== null && _allowAdd !== void 0 ? _allowAdd : true;
|
|
153
|
+
var handleAdd = function() {
|
|
154
|
+
var newItemValue = typeof newItem === 'function' ? newItem() : newItem;
|
|
155
|
+
var _items_length;
|
|
156
|
+
onInsertItem === null || onInsertItem === void 0 ? void 0 : onInsertItem(newItemValue, (_items_length = items === null || items === void 0 ? void 0 : items.length) !== null && _items_length !== void 0 ? _items_length : 0);
|
|
157
|
+
};
|
|
158
|
+
var _addButton = canEdit ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_CollectionAddButton.CollectionAddButton, {
|
|
159
|
+
addLabel: addLabel,
|
|
160
|
+
addDisabledTooltip: addDisabledTooltip,
|
|
161
|
+
addAllowed: addAllowed,
|
|
162
|
+
onAdd: handleAdd
|
|
163
|
+
}) : null;
|
|
164
|
+
// Column-based layout pattern
|
|
165
|
+
if (columns) {
|
|
166
|
+
var Layout = layout || _CollectionLayouts.CollectionLayouts.Horizontal;
|
|
167
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_CollectionContext.CollectionProvider, {
|
|
168
|
+
value: {
|
|
169
|
+
getStyles: getStyles,
|
|
170
|
+
columns: columns
|
|
171
|
+
},
|
|
172
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.DndContext, {
|
|
173
|
+
onDragEnd: handleDragEnd,
|
|
174
|
+
sensors: sensors,
|
|
175
|
+
modifiers: [
|
|
176
|
+
_modifiers.restrictToVerticalAxis,
|
|
177
|
+
_modifiers.restrictToParentElement
|
|
178
|
+
],
|
|
179
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_sortable.SortableContext, {
|
|
180
|
+
items: standardizedItems,
|
|
181
|
+
strategy: _sortable.verticalListSortingStrategy,
|
|
182
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core1.Box, _object_spread_props._(_object_spread._({
|
|
183
|
+
ref: ref
|
|
184
|
+
}, others, getStyles('root')), {
|
|
185
|
+
children: [
|
|
186
|
+
_header,
|
|
187
|
+
/*#__PURE__*/ (0, _jsxruntime.jsxs)(Layout, {
|
|
188
|
+
children: [
|
|
189
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(Layout.Header, {
|
|
190
|
+
draggable: draggable && canEdit,
|
|
191
|
+
removable: canEdit && !(isRequired && hasOnlyOneItem)
|
|
192
|
+
}),
|
|
193
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(Layout.Body, {
|
|
194
|
+
items: items,
|
|
195
|
+
onRemove: canEdit ? onRemoveItem : undefined,
|
|
196
|
+
removable: canEdit && !(isRequired && hasOnlyOneItem),
|
|
197
|
+
draggable: draggable && canEdit,
|
|
198
|
+
disabled: disabled,
|
|
199
|
+
readOnly: readOnly,
|
|
200
|
+
getItemId: getItemId,
|
|
201
|
+
gap: gap
|
|
202
|
+
})
|
|
203
|
+
]
|
|
204
|
+
}),
|
|
205
|
+
_addButton,
|
|
206
|
+
_error
|
|
207
|
+
]
|
|
208
|
+
}))
|
|
209
|
+
})
|
|
210
|
+
})
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
// Legacy children render prop pattern
|
|
214
|
+
var renderedItems = standardizedItems.map(function(item, index) {
|
|
215
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_CollectionItem.CollectionItem, {
|
|
216
|
+
id: item.id,
|
|
217
|
+
disabled: !canEdit,
|
|
218
|
+
draggable: draggable,
|
|
219
|
+
onRemove: function() {
|
|
220
|
+
return onRemoveItem === null || onRemoveItem === void 0 ? void 0 : onRemoveItem(index);
|
|
221
|
+
},
|
|
222
|
+
removable: !(isRequired && hasOnlyOneItem),
|
|
223
|
+
children: children(item.data, index)
|
|
224
|
+
}, item.id);
|
|
225
|
+
});
|
|
171
226
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_CollectionContext.CollectionProvider, {
|
|
172
227
|
value: {
|
|
173
228
|
getStyles: getStyles
|
|
@@ -191,7 +246,7 @@ var Collection = function(props) {
|
|
|
191
246
|
gap: gap
|
|
192
247
|
}, getStyles('items')), {
|
|
193
248
|
children: [
|
|
194
|
-
|
|
249
|
+
renderedItems,
|
|
195
250
|
_addButton
|
|
196
251
|
]
|
|
197
252
|
})),
|
|
@@ -204,5 +259,6 @@ var Collection = function(props) {
|
|
|
204
259
|
};
|
|
205
260
|
Collection.displayName = 'Collection';
|
|
206
261
|
Collection.extend = _createFactoryComponent.identity;
|
|
262
|
+
Collection.Layouts = _CollectionLayouts.CollectionLayouts;
|
|
207
263
|
|
|
208
264
|
//# sourceMappingURL=Collection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Collection/Collection.tsx"],"sourcesContent":["import {IconPlus} from '@coveord/plasma-react-icons';\nimport {DndContext, DragEndEvent, KeyboardSensor, PointerSensor, useSensor, useSensors} from '@dnd-kit/core';\nimport {restrictToParentElement, restrictToVerticalAxis} from '@dnd-kit/modifiers';\nimport {SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy} from '@dnd-kit/sortable';\nimport {\n __InputWrapperProps,\n Box,\n BoxProps,\n Factory,\n Input,\n MantineSpacing,\n Stack,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {ForwardedRef, ReactNode} from 'react';\n\nimport {CustomComponentThemeExtend, identity} from '../../utils/createFactoryComponent.js';\nimport {Button} from '../Button/Button.js';\nimport classes from './Collection.module.css';\nimport {CollectionProvider} from './CollectionContext.js';\nimport {CollectionItem} from './CollectionItem.js';\n\nexport interface CollectionProps<T> extends __InputWrapperProps, BoxProps, StylesApiProps<CollectionFactory> {\n /**\n * The default value each new item should have\n */\n newItem: T | (() => T);\n /**\n * A render function called for each item passed in the `value` prop.\n *\n * @param item The current item's value\n * @param index The current item's index\n */\n children: (item: T, index: number) => ReactNode;\n /**\n * The list of items to display inside the collection\n *\n * @default []\n */\n value?: T[];\n /**\n * Defines how each item is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n *\n * This method is required when using this component with ReactHookForm.\n *\n * @see {@link https://react-hook-form.com/api/usefieldarray/} for using a collection with ReactHookForm.\n *\n * @param originalItem The original item\n * @param itemIndex The index of the original item\n */\n getItemId?: (originalItem: T, itemIndex: number) => string;\n /**\n * Unused, has no effect\n */\n onFocus?: () => void;\n /**\n * Function called whenever the value needs to be updated\n *\n * @param value The whole list of items after the change\n */\n onChange?: (value: T[]) => void;\n /**\n * Function called after an item is removed from the collection using the remove button\n *\n * @param itemIndex The index of the item that was removed\n */\n onRemoveItem?: (itemIndex: number) => void;\n /**\n * Function that gets called whenever a collection item needs to be reordered\n *\n * @param payload The origin and destination index of the item to reorder\n */\n onReorderItem?: (payload: {from: number; to: number}) => void;\n /**\n * Function that gets called when a new item needs to be added to the collection\n *\n * @param value The value of the item to insert\n * @param index The index of the new item to insert\n */\n onInsertItem?: (value: T, index: number) => void;\n /**\n * Whether the collection should have drag and drop behavior enabled\n *\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether the collection is disabled, or in other words in read only mode\n *\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the collection is readOnly. If true, the collection will not allow adding or removing items\n *\n * @default false\n */\n readOnly?: boolean;\n /**\n * Function that determines if the add item button should be enabled given the current items of the collection.\n * The button is always enabled if this props remains undefined\n *\n * @param values The current items of the collection\n */\n allowAdd?: boolean | ((values: T[]) => boolean);\n /**\n * The label of the add item button\n *\n * @default \"Add item\"\n */\n addLabel?: string;\n /**\n * The tooltip text displayed when hovering over the disabled add item button\n *\n * @default 'There is already an empty item'\n */\n addDisabledTooltip?: string;\n /**\n * The gap between the colleciton items\n *\n * @default 'xs'\n */\n gap?: MantineSpacing;\n /**\n * Whether the collection is required. When required is true, the collection will hide the remove button if there is only one item\n *\n * @default false\n */\n required?: boolean;\n}\n\nexport type CollectionStylesNames = 'root' | 'item' | 'items' | 'itemDragging' | 'dragHandle';\n\nexport type CollectionFactory = Factory<{\n props: CollectionProps<unknown>;\n ref: HTMLDivElement;\n stylesNames: CollectionStylesNames;\n}>;\n\nconst defaultProps: Partial<CollectionProps<unknown>> = {\n draggable: false,\n addLabel: 'Add item',\n addDisabledTooltip: 'There is already an empty item',\n disabled: false,\n readOnly: false,\n gap: 'md',\n required: false,\n getItemId: ({id}: any) => id,\n};\n\nexport const Collection = <T,>(props: CollectionProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const {\n value,\n onChange,\n onRemoveItem,\n onReorderItem,\n onInsertItem,\n disabled,\n readOnly,\n draggable,\n children,\n gap,\n required,\n newItem,\n addLabel,\n addDisabledTooltip,\n allowAdd,\n label,\n labelProps,\n withAsterisk,\n description,\n descriptionProps,\n error,\n errorProps,\n getItemId,\n ref,\n\n // Style props\n style,\n className,\n classNames,\n styles,\n unstyled,\n ...others\n } = useProps('Collection', defaultProps as CollectionProps<T>, props);\n\n const getStyles = useStyles<CollectionFactory>({\n name: 'Collection',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n });\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const canEdit = !disabled && !readOnly;\n const hasOnlyOneItem = value.length === 1;\n\n /**\n * Enforcing onChange when the value is modified will make sure the errors are carried through.\n */\n useDidUpdate(() => {\n onChange?.(value);\n }, [JSON.stringify(value)]);\n\n const isRequired = typeof withAsterisk === 'boolean' ? withAsterisk : required;\n const _label = label ? (\n <Input.Label required={isRequired} {...labelProps}>\n {label}\n </Input.Label>\n ) : null;\n\n const _description = description ? (\n <Input.Description {...descriptionProps}>{description}</Input.Description>\n ) : null;\n const _error = error ? (\n <Input.Error {...errorProps} pt=\"xs\">\n {error}\n </Input.Error>\n ) : null;\n const _header =\n _label || _description ? (\n <Stack gap=\"xxs\" pb=\"xs\">\n {_label}\n {_description}\n </Stack>\n ) : null;\n\n const standardizedItems = value.map((item, index) => ({id: getItemId?.(item, index) ?? String(index), data: item}));\n\n const items = standardizedItems.map((item, index) => (\n <CollectionItem\n key={item.id}\n id={item.id}\n disabled={!canEdit}\n draggable={draggable}\n onRemove={() => onRemoveItem?.(index)}\n removable={!(isRequired && hasOnlyOneItem)}\n >\n {children(item.data, index)}\n </CollectionItem>\n ));\n\n const addAllowed = typeof allowAdd === 'boolean' ? allowAdd : (allowAdd?.(value) ?? true);\n\n const _addButton = canEdit ? (\n <Box className={classes.addButtonContainer}>\n <Button.Quaternary\n leftSection={<IconPlus size={16} />}\n onClick={() => {\n const newItemValue = typeof newItem === 'function' ? (newItem as () => T)() : newItem;\n onInsertItem(newItemValue, value?.length ?? 0);\n }}\n disabled={!addAllowed}\n disabledTooltip={addDisabledTooltip}\n >\n {addLabel}\n </Button.Quaternary>\n </Box>\n ) : null;\n\n const getIndex = (id: string) => standardizedItems.findIndex((item) => item.id === id);\n\n const handleDragEnd = ({over, active}: DragEndEvent): void => {\n if (over) {\n const activeIndex = getIndex(String(active.id));\n const overIndex = getIndex(String(over.id));\n if (activeIndex !== overIndex) {\n onReorderItem?.({from: activeIndex, to: overIndex});\n }\n }\n };\n\n return (\n <CollectionProvider value={{getStyles}}>\n <DndContext\n onDragEnd={handleDragEnd}\n sensors={sensors}\n modifiers={[restrictToVerticalAxis, restrictToParentElement]}\n >\n <SortableContext items={standardizedItems} strategy={verticalListSortingStrategy}>\n <Box ref={ref} {...others} {...getStyles('root')}>\n {_header}\n <Stack gap={gap} {...getStyles('items')}>\n {items}\n {_addButton}\n </Stack>\n {_error}\n </Box>\n </SortableContext>\n </DndContext>\n </CollectionProvider>\n );\n};\n\nCollection.displayName = 'Collection';\n\nCollection.extend = identity as CustomComponentThemeExtend<CollectionFactory>;\n"],"names":["Collection","defaultProps","draggable","addLabel","addDisabledTooltip","disabled","readOnly","gap","required","getItemId","id","props","useProps","value","onChange","onRemoveItem","onReorderItem","onInsertItem","children","newItem","allowAdd","label","labelProps","withAsterisk","description","descriptionProps","error","errorProps","ref","style","className","classNames","styles","unstyled","others","getStyles","useStyles","name","classes","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","canEdit","hasOnlyOneItem","length","useDidUpdate","JSON","stringify","isRequired","_label","Input","Label","_description","Description","_error","Error","pt","_header","Stack","pb","standardizedItems","map","item","index","String","data","items","CollectionItem","onRemove","removable","addAllowed","_addButton","Box","addButtonContainer","Button","Quaternary","leftSection","IconPlus","size","onClick","newItemValue","disabledTooltip","getIndex","findIndex","handleDragEnd","over","active","activeIndex","overIndex","from","to","CollectionProvider","DndContext","onDragEnd","modifiers","restrictToVerticalAxis","restrictToParentElement","SortableContext","strategy","verticalListSortingStrategy","displayName","extend","identity"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Collection/Collection.tsx"],"sourcesContent":["import {DndContext, DragEndEvent, KeyboardSensor, PointerSensor, useSensor, useSensors} from '@dnd-kit/core';\nimport {restrictToParentElement, restrictToVerticalAxis} from '@dnd-kit/modifiers';\nimport {SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy} from '@dnd-kit/sortable';\nimport {\n __InputWrapperProps,\n Box,\n BoxProps,\n Factory,\n Input,\n MantineSpacing,\n Stack,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport {useDidUpdate} from '@mantine/hooks';\nimport {ForwardedRef, ReactNode} from 'react';\n\nimport {CustomComponentThemeExtend, identity} from '../../utils/createFactoryComponent.js';\nimport classes from './Collection.module.css';\nimport {CollectionAddButton} from './CollectionAddButton.js';\nimport {CollectionColumnDef} from './CollectionColumn.types.js';\nimport {CollectionProvider} from './CollectionContext.js';\nimport {CollectionItem} from './CollectionItem.js';\nimport {CollectionLayout} from './layouts/CollectionLayout.types.js';\nimport {CollectionLayouts} from './layouts/CollectionLayouts.js';\n\n/**\n * Base props shared by both column-based and children-based patterns\n */\ninterface BaseCollectionProps<T> extends __InputWrapperProps, BoxProps, StylesApiProps<CollectionFactory> {\n /**\n * The default value each new item should have\n */\n newItem: T | (() => T);\n /**\n * The list of items to display inside the collection\n *\n * @default []\n */\n value?: T[];\n /**\n * Defines how each item is uniquely identified. It is highly recommended that you specify this prop to an ID that makes sense.\n *\n * This method is required when using this component with ReactHookForm.\n *\n * @see {@link https://react-hook-form.com/api/usefieldarray/} for using a collection with ReactHookForm.\n *\n * @param originalItem The original item\n * @param itemIndex The index of the original item\n */\n getItemId?: (originalItem: T, itemIndex: number) => string;\n /**\n * Unused, has no effect\n */\n onFocus?: () => void;\n /**\n * Function called whenever the value needs to be updated\n *\n * @param value The whole list of items after the change\n */\n onChange?: (value: T[]) => void;\n /**\n * Function called after an item is removed from the collection using the remove button\n *\n * @param itemIndex The index of the item that was removed\n */\n onRemoveItem?: (itemIndex: number) => void;\n /**\n * Function that gets called whenever a collection item needs to be reordered\n *\n * @param payload The origin and destination index of the item to reorder\n */\n onReorderItem?: (payload: {from: number; to: number}) => void;\n /**\n * Function that gets called when a new item needs to be added to the collection\n *\n * @param value The value of the item to insert\n * @param index The index of the new item to insert\n */\n onInsertItem?: (value: T, index: number) => void;\n /**\n * Whether the collection should have drag and drop behavior enabled\n *\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether the collection is disabled, or in other words in read only mode\n *\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the collection is readOnly. If true, the collection will not allow adding or removing items\n *\n * @default false\n */\n readOnly?: boolean;\n /**\n * Function that determines if the add item button should be enabled given the current items of the collection.\n * The button is always enabled if this props remains undefined\n *\n * @param values The current items of the collection\n */\n allowAdd?: boolean | ((values: T[]) => boolean);\n /**\n * The label of the add item button\n *\n * @default \"Add item\"\n */\n addLabel?: ReactNode;\n /**\n * The tooltip text displayed when hovering over the disabled add item button\n *\n * @default 'There is already an empty item'\n */\n addDisabledTooltip?: string;\n /**\n * The gap between the collection items\n *\n * @default 'md'\n */\n gap?: MantineSpacing;\n /**\n * Whether the collection is required. When required is true, the collection will hide the remove button if there is only one item\n *\n * @default false\n */\n required?: boolean;\n}\n\n/**\n * Collection with column-based layout\n */\ninterface CollectionWithColumns<T> extends BaseCollectionProps<T> {\n /**\n * Column definitions for the collection\n */\n columns: Array<CollectionColumnDef<T>>;\n\n /**\n * Layout component to use for rendering\n * @default CollectionLayouts.Horizontal\n */\n layout?: CollectionLayout;\n\n /**\n * Must not have children when using columns\n */\n children?: never;\n}\n\n/**\n * Collection with legacy children render prop\n */\ninterface CollectionWithChildren<T> extends BaseCollectionProps<T> {\n /**\n * A render function called for each item passed in the `value` prop.\n *\n * @param item The current item's value\n * @param index The current item's index\n */\n children: (item: T, index: number) => ReactNode;\n\n /**\n * Must not have columns when using children\n */\n columns?: never;\n\n /**\n * Must not have layout when using children\n */\n layout?: never;\n}\n\n/**\n * Collection props - either columns OR children, never both\n */\nexport type CollectionProps<T> = CollectionWithColumns<T> | CollectionWithChildren<T>;\n\nexport type CollectionStylesNames = 'root' | 'item' | 'items' | 'itemDragging' | 'dragHandle' | 'removeButton';\n\nexport type CollectionFactory = Factory<{\n props: CollectionProps<unknown>;\n ref: HTMLDivElement;\n stylesNames: CollectionStylesNames;\n}>;\n\nconst defaultProps: Partial<CollectionProps<unknown>> = {\n draggable: false,\n addLabel: 'Add item',\n addDisabledTooltip: 'There is already an empty item',\n disabled: false,\n readOnly: false,\n gap: 'md',\n required: false,\n getItemId: ({id}: any) => id,\n};\n\nexport const Collection = <T,>(props: CollectionProps<T> & {ref?: ForwardedRef<HTMLDivElement>}) => {\n const {\n value,\n onChange,\n onRemoveItem,\n onReorderItem,\n onInsertItem,\n disabled,\n readOnly,\n draggable,\n children,\n columns,\n layout,\n gap,\n required,\n newItem,\n addLabel,\n addDisabledTooltip,\n allowAdd,\n label,\n labelProps,\n withAsterisk,\n description,\n descriptionProps,\n error,\n errorProps,\n getItemId,\n ref,\n\n // Style props\n style,\n className,\n classNames,\n styles,\n unstyled,\n ...others\n } = useProps('Collection', defaultProps as CollectionProps<T>, props);\n\n // Runtime validation: ensure columns and children are mutually exclusive\n if (columns && children) {\n throw new Error('Collection: Cannot use both \"columns\" and \"children\" props.');\n }\n\n if (layout && !columns) {\n throw new Error('Collection: \"layout\" prop can only be used with \"columns\" prop.');\n }\n\n const getStyles = useStyles<CollectionFactory>({\n name: 'Collection',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n });\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const canEdit = !disabled && !readOnly;\n const items = value ?? [];\n const hasOnlyOneItem = items.length === 1;\n\n /**\n * Enforcing onChange when the value is modified will make sure the errors are carried through.\n */\n useDidUpdate(() => {\n onChange?.(items);\n }, [JSON.stringify(items)]);\n\n const isRequired = typeof withAsterisk === 'boolean' ? withAsterisk : required;\n const _label = label ? (\n <Input.Label required={isRequired} {...labelProps}>\n {label}\n </Input.Label>\n ) : null;\n\n const _description = description ? (\n <Input.Description {...descriptionProps}>{description}</Input.Description>\n ) : null;\n const _error = error ? (\n <Input.Error {...errorProps} pt=\"xs\">\n {error}\n </Input.Error>\n ) : null;\n const _header =\n _label || _description ? (\n <Stack gap=\"xxs\" pb=\"xs\">\n {_label}\n {_description}\n </Stack>\n ) : null;\n\n const standardizedItems = items.map((item, index) => ({id: getItemId?.(item, index) ?? String(index), data: item}));\n\n const getIndex = (id: string) => standardizedItems.findIndex((item) => item.id === id);\n\n const handleDragEnd = ({over, active}: DragEndEvent): void => {\n if (over) {\n const activeIndex = getIndex(String(active.id));\n const overIndex = getIndex(String(over.id));\n if (activeIndex !== overIndex) {\n onReorderItem?.({from: activeIndex, to: overIndex});\n }\n }\n };\n\n const addAllowed = typeof allowAdd === 'boolean' ? allowAdd : (allowAdd?.(items) ?? true);\n\n const handleAdd = () => {\n const newItemValue = typeof newItem === 'function' ? (newItem as () => T)() : newItem;\n onInsertItem?.(newItemValue, items?.length ?? 0);\n };\n\n const _addButton = canEdit ? (\n <CollectionAddButton\n addLabel={addLabel}\n addDisabledTooltip={addDisabledTooltip}\n addAllowed={addAllowed}\n onAdd={handleAdd}\n />\n ) : null;\n\n // Column-based layout pattern\n if (columns) {\n const Layout = layout || CollectionLayouts.Horizontal;\n\n return (\n <CollectionProvider value={{getStyles, columns: columns as Array<CollectionColumnDef<unknown>>}}>\n <DndContext\n onDragEnd={handleDragEnd}\n sensors={sensors}\n modifiers={[restrictToVerticalAxis, restrictToParentElement]}\n >\n <SortableContext items={standardizedItems} strategy={verticalListSortingStrategy}>\n <Box ref={ref} {...others} {...getStyles('root')}>\n {_header}\n <Layout>\n <Layout.Header\n draggable={draggable && canEdit}\n removable={canEdit && !(isRequired && hasOnlyOneItem)}\n />\n <Layout.Body\n items={items}\n onRemove={canEdit ? onRemoveItem : undefined}\n removable={canEdit && !(isRequired && hasOnlyOneItem)}\n draggable={draggable && canEdit}\n disabled={disabled}\n readOnly={readOnly}\n getItemId={getItemId}\n gap={gap}\n />\n </Layout>\n {_addButton}\n {_error}\n </Box>\n </SortableContext>\n </DndContext>\n </CollectionProvider>\n );\n }\n\n // Legacy children render prop pattern\n const renderedItems = standardizedItems.map((item, index) => (\n <CollectionItem\n key={item.id}\n id={item.id}\n disabled={!canEdit}\n draggable={draggable}\n onRemove={() => onRemoveItem?.(index)}\n removable={!(isRequired && hasOnlyOneItem)}\n >\n {children(item.data, index)}\n </CollectionItem>\n ));\n\n return (\n <CollectionProvider value={{getStyles}}>\n <DndContext\n onDragEnd={handleDragEnd}\n sensors={sensors}\n modifiers={[restrictToVerticalAxis, restrictToParentElement]}\n >\n <SortableContext items={standardizedItems} strategy={verticalListSortingStrategy}>\n <Box ref={ref} {...others} {...getStyles('root')}>\n {_header}\n <Stack gap={gap} {...getStyles('items')}>\n {renderedItems}\n {_addButton}\n </Stack>\n {_error}\n </Box>\n </SortableContext>\n </DndContext>\n </CollectionProvider>\n );\n};\n\nCollection.displayName = 'Collection';\n\nCollection.extend = identity as CustomComponentThemeExtend<CollectionFactory>;\n\nCollection.Layouts = CollectionLayouts;\n"],"names":["Collection","defaultProps","draggable","addLabel","addDisabledTooltip","disabled","readOnly","gap","required","getItemId","id","props","useProps","value","onChange","onRemoveItem","onReorderItem","onInsertItem","children","columns","layout","newItem","allowAdd","label","labelProps","withAsterisk","description","descriptionProps","error","errorProps","ref","style","className","classNames","styles","unstyled","others","Error","getStyles","useStyles","name","classes","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","canEdit","items","hasOnlyOneItem","length","useDidUpdate","JSON","stringify","isRequired","_label","Input","Label","_description","Description","_error","pt","_header","Stack","pb","standardizedItems","map","item","index","String","data","getIndex","findIndex","handleDragEnd","over","active","activeIndex","overIndex","from","to","addAllowed","handleAdd","newItemValue","_addButton","CollectionAddButton","onAdd","Layout","CollectionLayouts","Horizontal","CollectionProvider","DndContext","onDragEnd","modifiers","restrictToVerticalAxis","restrictToParentElement","SortableContext","strategy","verticalListSortingStrategy","Box","Header","removable","Body","onRemove","undefined","renderedItems","CollectionItem","displayName","extend","identity","Layouts"],"mappings":"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"}
|
|
@@ -20,9 +20,21 @@
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.dragHandle {
|
|
23
|
-
cursor:
|
|
23
|
+
cursor: grab;
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
|
|
27
|
+
&:active {
|
|
28
|
+
cursor: grabbing;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.removeButton {
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
24
35
|
}
|
|
25
36
|
|
|
26
37
|
.addButtonContainer {
|
|
27
38
|
align-self: flex-start;
|
|
39
|
+
width: min-content;
|
|
28
40
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface CollectionAddButtonProps {
|
|
3
|
+
/**
|
|
4
|
+
* The label of the add item button
|
|
5
|
+
*
|
|
6
|
+
* @default "Add item"
|
|
7
|
+
*/
|
|
8
|
+
addLabel?: ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* The tooltip text displayed when hovering over the disabled add item button
|
|
11
|
+
*
|
|
12
|
+
* @default 'There is already an empty item'
|
|
13
|
+
*/
|
|
14
|
+
addDisabledTooltip?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the add button is allowed/enabled
|
|
17
|
+
*/
|
|
18
|
+
addAllowed: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when the add button is clicked
|
|
21
|
+
*/
|
|
22
|
+
onAdd: () => void;
|
|
23
|
+
}
|
|
24
|
+
export declare const CollectionAddButton: ({ addLabel, addDisabledTooltip, addAllowed, onAdd }: CollectionAddButtonProps) => import("react/jsx-runtime.js").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=CollectionAddButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollectionAddButton.d.ts","sourceRoot":"","sources":["../../../../src/components/Collection/CollectionAddButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAKhC,MAAM,WAAW,wBAAwB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,mBAAmB,GAAI,qDAAmD,wBAAwB,+CAW9G,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "CollectionAddButton", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return CollectionAddButton;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
12
|
+
var _jsxruntime = require("react/jsx-runtime");
|
|
13
|
+
var _plasmareacticons = require("@coveord/plasma-react-icons");
|
|
14
|
+
var _core = require("@mantine/core");
|
|
15
|
+
var _Button = require("../Button/Button.js");
|
|
16
|
+
var _Collectionmodulecss = /*#__PURE__*/ _interop_require_default._(require("./Collection.module.css"));
|
|
17
|
+
var CollectionAddButton = function(param) {
|
|
18
|
+
var addLabel = param.addLabel, addDisabledTooltip = param.addDisabledTooltip, addAllowed = param.addAllowed, onAdd = param.onAdd;
|
|
19
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_core.Box, {
|
|
20
|
+
className: _Collectionmodulecss.default.addButtonContainer,
|
|
21
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Button.Button.Quaternary, {
|
|
22
|
+
leftSection: /*#__PURE__*/ (0, _jsxruntime.jsx)(_plasmareacticons.IconPlus, {
|
|
23
|
+
size: 16
|
|
24
|
+
}),
|
|
25
|
+
onClick: onAdd,
|
|
26
|
+
disabled: !addAllowed,
|
|
27
|
+
disabledTooltip: addDisabledTooltip,
|
|
28
|
+
children: addLabel
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=CollectionAddButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Collection/CollectionAddButton.tsx"],"sourcesContent":["import {IconPlus} from '@coveord/plasma-react-icons';\nimport {Box} from '@mantine/core';\nimport {ReactNode} from 'react';\n\nimport {Button} from '../Button/Button.js';\nimport classes from './Collection.module.css';\n\nexport interface CollectionAddButtonProps {\n /**\n * The label of the add item button\n *\n * @default \"Add item\"\n */\n addLabel?: ReactNode;\n /**\n * The tooltip text displayed when hovering over the disabled add item button\n *\n * @default 'There is already an empty item'\n */\n addDisabledTooltip?: string;\n /**\n * Whether the add button is allowed/enabled\n */\n addAllowed: boolean;\n /**\n * Callback when the add button is clicked\n */\n onAdd: () => void;\n}\n\nexport const CollectionAddButton = ({addLabel, addDisabledTooltip, addAllowed, onAdd}: CollectionAddButtonProps) => (\n <Box className={classes.addButtonContainer}>\n <Button.Quaternary\n leftSection={<IconPlus size={16} />}\n onClick={onAdd}\n disabled={!addAllowed}\n disabledTooltip={addDisabledTooltip}\n >\n {addLabel}\n </Button.Quaternary>\n </Box>\n);\n"],"names":["CollectionAddButton","addLabel","addDisabledTooltip","addAllowed","onAdd","Box","className","classes","addButtonContainer","Button","Quaternary","leftSection","IconPlus","size","onClick","disabled","disabledTooltip"],"mappings":";;;;+BA8BaA;;;eAAAA;;;;;gCA9BU;oBACL;sBAGG;4EACD;AAyBb,IAAMA,sBAAsB;QAAEC,iBAAAA,UAAUC,2BAAAA,oBAAoBC,mBAAAA,YAAYC,cAAAA;yBAC3E,qBAACC,SAAG;QAACC,WAAWC,4BAAO,CAACC,kBAAkB;kBACtC,cAAA,qBAACC,cAAM,CAACC,UAAU;YACdC,2BAAa,qBAACC,0BAAQ;gBAACC,MAAM;;YAC7BC,SAASV;YACTW,UAAU,CAACZ;YACXa,iBAAiBd;sBAEhBD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Context provided to header render functions
|
|
4
|
+
*/
|
|
5
|
+
export interface CollectionHeaderContext {
|
|
6
|
+
/** Column index */
|
|
7
|
+
index: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Context provided to cell render functions.
|
|
11
|
+
*
|
|
12
|
+
* Use `context.disabled` and `context.readOnly` to pass the collection's state to your form inputs:
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* cell: (item, index, context) => (
|
|
16
|
+
* <TextInput
|
|
17
|
+
* {...form.getInputProps(`items.${index}.name`)}
|
|
18
|
+
* disabled={context.disabled}
|
|
19
|
+
* readOnly={context.readOnly}
|
|
20
|
+
* />
|
|
21
|
+
* )
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export interface CollectionCellContext<T = unknown> {
|
|
25
|
+
/** Whether the item can be removed */
|
|
26
|
+
removable?: boolean;
|
|
27
|
+
/** Whether the collection is draggable */
|
|
28
|
+
draggable?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Whether the collection is disabled.
|
|
31
|
+
* Pass this to your form inputs: `disabled={context.disabled}`
|
|
32
|
+
*/
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Whether the collection is read-only.
|
|
36
|
+
* Pass this to your form inputs: `readOnly={context.readOnly}`
|
|
37
|
+
*/
|
|
38
|
+
readOnly?: boolean;
|
|
39
|
+
/** Callback to remove the item */
|
|
40
|
+
onRemove?: () => void;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Column definition for Collection component
|
|
44
|
+
*/
|
|
45
|
+
export interface CollectionColumnDef<T = unknown> {
|
|
46
|
+
/**
|
|
47
|
+
* Column header content
|
|
48
|
+
* Can be a ReactNode or a function that receives header context
|
|
49
|
+
*/
|
|
50
|
+
header?: ReactNode | ((context: CollectionHeaderContext) => ReactNode);
|
|
51
|
+
/**
|
|
52
|
+
* Cell render function
|
|
53
|
+
* @param item The current item's data
|
|
54
|
+
* @param index The current item's index
|
|
55
|
+
* @param context Additional context for rendering
|
|
56
|
+
*/
|
|
57
|
+
cell: (item: T, index: number, context: CollectionCellContext<T>) => ReactNode;
|
|
58
|
+
/**
|
|
59
|
+
* Minimum column size
|
|
60
|
+
*/
|
|
61
|
+
minSize?: string | number;
|
|
62
|
+
/**
|
|
63
|
+
* Maximum column size
|
|
64
|
+
*/
|
|
65
|
+
maxSize?: string | number;
|
|
66
|
+
/**
|
|
67
|
+
* Unique identifier for the column
|
|
68
|
+
* Auto-generated if not provided
|
|
69
|
+
*/
|
|
70
|
+
id?: string;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=CollectionColumn.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollectionColumn.types.d.ts","sourceRoot":"","sources":["../../../../src/components/Collection/CollectionColumn.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAC9C,sCAAsC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC5C;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS,CAAC,CAAC;IAEvE;;;;;OAKG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IAE/E;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1B;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Collection/CollectionColumn.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { type GetStylesApi } from '@mantine/core';
|
|
2
2
|
import type { CollectionFactory } from './Collection.js';
|
|
3
|
+
import type { CollectionColumnDef } from './CollectionColumn.types.js';
|
|
3
4
|
interface CollectionContextType {
|
|
4
5
|
getStyles: GetStylesApi<CollectionFactory>;
|
|
6
|
+
/**
|
|
7
|
+
* Column definitions for the collection (only present when using column-based layout)
|
|
8
|
+
*/
|
|
9
|
+
columns?: Array<CollectionColumnDef<unknown>>;
|
|
5
10
|
}
|
|
6
11
|
export declare const CollectionProvider: ({ children, value }: {
|
|
7
12
|
value: CollectionContextType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionContext.d.ts","sourceRoot":"","sources":["../../../../src/components/Collection/CollectionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CollectionContext.d.ts","sourceRoot":"","sources":["../../../../src/components/Collection/CollectionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAErE,UAAU,qBAAqB;IAC3B,SAAS,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC3C;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;CACjD;AAED,eAAO,MAAO,kBAAkB;;;kDAAE,oBAAoB,6BAErD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Collection/CollectionContext.ts"],"sourcesContent":["import {createSafeContext, type GetStylesApi} from '@mantine/core';\nimport type {CollectionFactory} from './Collection.js';\n\ninterface CollectionContextType {\n getStyles: GetStylesApi<CollectionFactory>;\n}\n\nexport const [CollectionProvider, useCollectionContext] = createSafeContext<CollectionContextType>(\n 'Collection component was not found in tree',\n);\n"],"names":["CollectionProvider","useCollectionContext","createSafeContext"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Collection/CollectionContext.ts"],"sourcesContent":["import {createSafeContext, type GetStylesApi} from '@mantine/core';\nimport type {CollectionFactory} from './Collection.js';\nimport type {CollectionColumnDef} from './CollectionColumn.types.js';\n\ninterface CollectionContextType {\n getStyles: GetStylesApi<CollectionFactory>;\n /**\n * Column definitions for the collection (only present when using column-based layout)\n */\n columns?: Array<CollectionColumnDef<unknown>>;\n}\n\nexport const [CollectionProvider, useCollectionContext] = createSafeContext<CollectionContextType>(\n 'Collection component was not found in tree',\n);\n"],"names":["CollectionProvider","useCollectionContext","createSafeContext"],"mappings":";;;;;;;;;;;QAYcA;eAAAA;;QAAoBC;eAAAA;;;;oBAZiB;IAYOC,wCAAAA,IAAAA,uBAAiB,EACvE;AADG,IAAOF,qBAA4CE,uBAAxBD,uBAAwBC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { GroupProps } from '@mantine/core';
|
|
2
|
-
import { FunctionComponent, PropsWithChildren } from 'react';
|
|
2
|
+
import { FunctionComponent, type MouseEventHandler, PropsWithChildren } from 'react';
|
|
3
3
|
interface CollectionItemProps extends CollectionItemSharedProps {
|
|
4
4
|
draggable?: boolean;
|
|
5
5
|
disabled: boolean;
|
|
6
6
|
}
|
|
7
7
|
interface CollectionItemSharedProps extends GroupProps {
|
|
8
8
|
id: string;
|
|
9
|
-
onRemove?:
|
|
9
|
+
onRemove?: MouseEventHandler<HTMLButtonElement>;
|
|
10
10
|
removable?: boolean;
|
|
11
11
|
}
|
|
12
12
|
export declare const CollectionItem: FunctionComponent<PropsWithChildren<CollectionItemProps>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectionItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Collection/CollectionItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CollectionItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Collection/CollectionItem.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAQ,UAAU,EAAW,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAMnF,UAAU,mBAAoB,SAAQ,yBAAyB;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,yBAA0B,SAAQ,UAAU;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAyGD,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAYpF,CAAC"}
|
|
@@ -12,36 +12,16 @@ var _object_spread = require("@swc/helpers/_/_object_spread");
|
|
|
12
12
|
var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
|
|
13
13
|
var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
|
|
14
14
|
var _jsxruntime = require("react/jsx-runtime");
|
|
15
|
-
var _plasmareacticons = require("@coveord/plasma-react-icons");
|
|
16
15
|
var _sortable = require("@dnd-kit/sortable");
|
|
17
16
|
var _utilities = require("@dnd-kit/utilities");
|
|
18
17
|
var _core = require("@mantine/core");
|
|
19
|
-
var _ActionIcon = require("../ActionIcon/ActionIcon.js");
|
|
20
18
|
var _CollectionContext = require("./CollectionContext.js");
|
|
19
|
+
var _DragHandle = require("./layouts/shared/DragHandle.js");
|
|
20
|
+
var _RemoveButton = require("./layouts/shared/RemoveButton.js");
|
|
21
21
|
var defaultProps = {
|
|
22
22
|
removable: true,
|
|
23
23
|
gap: 'sm'
|
|
24
24
|
};
|
|
25
|
-
var RemoveButton = function(param) {
|
|
26
|
-
var onClick = param.onClick;
|
|
27
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_ActionIcon.ActionIcon.Quaternary, {
|
|
28
|
-
style: {
|
|
29
|
-
alignSelf: 'center'
|
|
30
|
-
},
|
|
31
|
-
onClick: onClick,
|
|
32
|
-
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_plasmareacticons.IconTrash, {
|
|
33
|
-
"aria-label": "Remove",
|
|
34
|
-
size: 16
|
|
35
|
-
})
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
var RemoveButtonPlaceholder = function() {
|
|
39
|
-
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
40
|
-
style: {
|
|
41
|
-
width: 28
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
25
|
var StaticCollectionItem = function(props) {
|
|
46
26
|
var _useProps = (0, _core.useProps)('CollectionItem', defaultProps, props), children = _useProps.children, removable = _useProps.removable, onRemove = _useProps.onRemove, id = _useProps.id, // Style props
|
|
47
27
|
style = _useProps.style, className = _useProps.className, classNames = _useProps.classNames, styles = _useProps.styles, others = _object_without_properties._(_useProps, [
|
|
@@ -55,9 +35,6 @@ var StaticCollectionItem = function(props) {
|
|
|
55
35
|
"styles"
|
|
56
36
|
]);
|
|
57
37
|
var ctx = (0, _CollectionContext.useCollectionContext)();
|
|
58
|
-
var removeButton = removable && onRemove ? /*#__PURE__*/ (0, _jsxruntime.jsx)(RemoveButton, {
|
|
59
|
-
onClick: onRemove
|
|
60
|
-
}) : /*#__PURE__*/ (0, _jsxruntime.jsx)(RemoveButtonPlaceholder, {});
|
|
61
38
|
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_core.Group, _object_spread_props._(_object_spread._({
|
|
62
39
|
"data-testid": "item-".concat(id)
|
|
63
40
|
}, ctx.getStyles('item', {
|
|
@@ -68,16 +45,21 @@ var StaticCollectionItem = function(props) {
|
|
|
68
45
|
}), others), {
|
|
69
46
|
children: [
|
|
70
47
|
children,
|
|
71
|
-
|
|
48
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_RemoveButton.RemoveButton, {
|
|
49
|
+
removable: removable,
|
|
50
|
+
onRemove: onRemove
|
|
51
|
+
})
|
|
72
52
|
]
|
|
73
53
|
}));
|
|
74
54
|
};
|
|
75
55
|
var DisabledCollectionItem = function(props) {
|
|
76
56
|
var ctx = (0, _CollectionContext.useCollectionContext)();
|
|
77
|
-
var _useProps = (0, _core.useProps)('CollectionItem', defaultProps, props), children = _useProps.children, id = _useProps.id, // Style props
|
|
57
|
+
var _useProps = (0, _core.useProps)('CollectionItem', defaultProps, props), children = _useProps.children, id = _useProps.id, _removable = _useProps.removable, _onRemove = _useProps.onRemove, // Style props
|
|
78
58
|
style = _useProps.style, className = _useProps.className, classNames = _useProps.classNames, styles = _useProps.styles, others = _object_without_properties._(_useProps, [
|
|
79
59
|
"children",
|
|
80
60
|
"id",
|
|
61
|
+
"removable",
|
|
62
|
+
"onRemove",
|
|
81
63
|
"style",
|
|
82
64
|
"className",
|
|
83
65
|
"classNames",
|
|
@@ -106,9 +88,6 @@ var DraggableCollectionItem = function(props) {
|
|
|
106
88
|
"classNames",
|
|
107
89
|
"styles"
|
|
108
90
|
]);
|
|
109
|
-
var removeButton = removable && onRemove ? /*#__PURE__*/ (0, _jsxruntime.jsx)(RemoveButton, {
|
|
110
|
-
onClick: onRemove
|
|
111
|
-
}) : null;
|
|
112
91
|
var _useSortable = (0, _sortable.useSortable)({
|
|
113
92
|
id: id
|
|
114
93
|
}), attributes = _useSortable.attributes, listeners = _useSortable.listeners, setNodeRef = _useSortable.setNodeRef, transform = _useSortable.transform, transition = _useSortable.transition, isDragging = _useSortable.isDragging, setActivatorNodeRef = _useSortable.setActivatorNodeRef;
|
|
@@ -127,15 +106,16 @@ var DraggableCollectionItem = function(props) {
|
|
|
127
106
|
"data-isdragging": isDragging
|
|
128
107
|
}), others), {
|
|
129
108
|
children: [
|
|
130
|
-
/*#__PURE__*/ (0, _jsxruntime.jsx)(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
})
|
|
136
|
-
})),
|
|
109
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_DragHandle.DragHandle, {
|
|
110
|
+
setActivatorNodeRef: setActivatorNodeRef,
|
|
111
|
+
listeners: listeners,
|
|
112
|
+
attributes: attributes
|
|
113
|
+
}),
|
|
137
114
|
children,
|
|
138
|
-
|
|
115
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_RemoveButton.RemoveButton, {
|
|
116
|
+
removable: removable,
|
|
117
|
+
onRemove: onRemove
|
|
118
|
+
})
|
|
139
119
|
]
|
|
140
120
|
}));
|
|
141
121
|
};
|