@bigbinary/neeto-molecules 3.15.24 → 3.15.26
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/dist/BoardView.js +44 -29
- package/dist/BoardView.js.map +1 -1
- package/dist/ShareViaLink.js +100 -10
- package/dist/ShareViaLink.js.map +1 -1
- package/dist/cjs/BoardView.js +44 -29
- package/dist/cjs/BoardView.js.map +1 -1
- package/dist/cjs/ShareViaLink.js +99 -9
- package/dist/cjs/ShareViaLink.js.map +1 -1
- package/package.json +1 -1
- package/src/translations/en.json +9 -1
- package/types/ShareViaLink.d.ts +7 -1
package/dist/BoardView.js
CHANGED
|
@@ -105,14 +105,11 @@ var DndIndicator = function DndIndicator(_ref) {
|
|
|
105
105
|
|
|
106
106
|
function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
107
107
|
function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
108
|
-
var
|
|
108
|
+
var DragDropContainer$1 = function DragDropContainer(_ref) {
|
|
109
109
|
var id = _ref.id,
|
|
110
110
|
index = _ref.index,
|
|
111
111
|
data = _ref.data,
|
|
112
112
|
render = _ref.render;
|
|
113
|
-
var mutables = useRef({
|
|
114
|
-
containerHeight: 128
|
|
115
|
-
}).current;
|
|
116
113
|
var _useDraggable = useDraggable({
|
|
117
114
|
data: _objectSpread$3(_objectSpread$3({}, data), {}, {
|
|
118
115
|
index: index,
|
|
@@ -133,6 +130,25 @@ var ItemContainer = function ItemContainer(_ref) {
|
|
|
133
130
|
}),
|
|
134
131
|
isOver = _useDroppable.isOver,
|
|
135
132
|
setDroppableNodeRef = _useDroppable.setNodeRef;
|
|
133
|
+
var isIndicatorVisible = !isDragging && isOver;
|
|
134
|
+
return /*#__PURE__*/jsxs("div", _objectSpread$3(_objectSpread$3(_objectSpread$3({
|
|
135
|
+
className: classnames("relative h-full w-full", {
|
|
136
|
+
"opacity-65": isDragging
|
|
137
|
+
}),
|
|
138
|
+
ref: function ref(node) {
|
|
139
|
+
setDraggableNodeRef(node);
|
|
140
|
+
setDroppableNodeRef(node);
|
|
141
|
+
}
|
|
142
|
+
}, attributes), listeners), {}, {
|
|
143
|
+
children: [render(), isIndicatorVisible && /*#__PURE__*/jsx(DndIndicator, {
|
|
144
|
+
layout: "horizontal"
|
|
145
|
+
})]
|
|
146
|
+
}));
|
|
147
|
+
};
|
|
148
|
+
var ItemContainer = function ItemContainer(props) {
|
|
149
|
+
var mutables = useRef({
|
|
150
|
+
containerHeight: 128
|
|
151
|
+
}).current;
|
|
136
152
|
var _useInView = useInView({
|
|
137
153
|
onChange: function onChange(inView, entry) {
|
|
138
154
|
if (inView) return; // We need the last height value when elements moves out.
|
|
@@ -142,26 +158,17 @@ var ItemContainer = function ItemContainer(_ref) {
|
|
|
142
158
|
_useInView2 = _slicedToArray(_useInView, 2),
|
|
143
159
|
setViewRef = _useInView2[0],
|
|
144
160
|
inView = _useInView2[1];
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
"opacity-65": isDragging
|
|
149
|
-
}),
|
|
150
|
-
ref: function ref(node) {
|
|
151
|
-
setDraggableNodeRef(node);
|
|
152
|
-
setDroppableNodeRef(node);
|
|
153
|
-
setViewRef(node);
|
|
154
|
-
}
|
|
155
|
-
}, _objectSpread$3(_objectSpread$3({
|
|
156
|
-
id: id
|
|
157
|
-
}, attributes), listeners)), {}, {
|
|
161
|
+
return /*#__PURE__*/jsx("div", {
|
|
162
|
+
className: "relative mt-4",
|
|
163
|
+
id: props.id,
|
|
158
164
|
style: {
|
|
159
165
|
height: inView ? undefined : mutables.containerHeight
|
|
160
166
|
},
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
167
|
+
ref: function ref(node) {
|
|
168
|
+
setViewRef(node);
|
|
169
|
+
},
|
|
170
|
+
children: inView && /*#__PURE__*/jsx(DragDropContainer$1, _objectSpread$3({}, props))
|
|
171
|
+
});
|
|
165
172
|
};
|
|
166
173
|
|
|
167
174
|
function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -238,15 +245,11 @@ Section.propTypes = {
|
|
|
238
245
|
|
|
239
246
|
function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
240
247
|
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
241
|
-
var
|
|
248
|
+
var DragDropContainer = function DragDropContainer(_ref) {
|
|
242
249
|
var id = _ref.id,
|
|
243
250
|
index = _ref.index,
|
|
244
251
|
data = _ref.data,
|
|
245
252
|
render = _ref.render;
|
|
246
|
-
var _useInView = useInView(),
|
|
247
|
-
_useInView2 = _slicedToArray(_useInView, 2),
|
|
248
|
-
setViewRef = _useInView2[0],
|
|
249
|
-
inView = _useInView2[1];
|
|
250
253
|
var _useDraggable = useDraggable({
|
|
251
254
|
data: _objectSpread$1(_objectSpread$1({}, data), {}, {
|
|
252
255
|
type: DRAGGABLE_TYPES.SECTION,
|
|
@@ -269,19 +272,31 @@ var SectionContainer = function SectionContainer(_ref) {
|
|
|
269
272
|
setDroppableNodeRef = _useDroppable.setNodeRef;
|
|
270
273
|
var isIndicatorVisible = !isDragging && isOver;
|
|
271
274
|
return /*#__PURE__*/jsxs("div", _objectSpread$1(_objectSpread$1(_objectSpread$1({}, listeners), attributes), {}, {
|
|
272
|
-
className: classnames("
|
|
275
|
+
className: classnames("relative h-full w-full flex-col", {
|
|
273
276
|
"opacity-65": isDragging
|
|
274
277
|
}),
|
|
275
278
|
ref: function ref(node) {
|
|
276
279
|
setDraggableNodeRef(node);
|
|
277
280
|
setDroppableNodeRef(node);
|
|
278
|
-
setViewRef(node);
|
|
279
281
|
},
|
|
280
|
-
children: [
|
|
282
|
+
children: [render(), isIndicatorVisible && /*#__PURE__*/jsx(DndIndicator, {
|
|
281
283
|
layout: "vertical"
|
|
282
284
|
})]
|
|
283
285
|
}));
|
|
284
286
|
};
|
|
287
|
+
var SectionContainer = function SectionContainer(props) {
|
|
288
|
+
var _useInView = useInView(),
|
|
289
|
+
_useInView2 = _slicedToArray(_useInView, 2),
|
|
290
|
+
setViewRef = _useInView2[0],
|
|
291
|
+
inView = _useInView2[1];
|
|
292
|
+
return /*#__PURE__*/jsx("div", {
|
|
293
|
+
className: "neeto-molecules-boardview-section relative mr-3 h-full last-of-type:mr-0",
|
|
294
|
+
ref: function ref(node) {
|
|
295
|
+
setViewRef(node);
|
|
296
|
+
},
|
|
297
|
+
children: inView && /*#__PURE__*/jsx(DragDropContainer, _objectSpread$1({}, props))
|
|
298
|
+
});
|
|
299
|
+
};
|
|
285
300
|
|
|
286
301
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
287
302
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
package/dist/BoardView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoardView.js","sources":["../src/components/BoardView/closestCenter.js","../src/components/BoardView/constants.js","../src/components/BoardView/Overlay.jsx","../src/components/BoardView/Indicator.jsx","../src/components/BoardView/Item/Container.jsx","../src/components/BoardView/Item/Placeholder.jsx","../src/components/BoardView/Section/index.jsx","../src/components/BoardView/Section/Container.jsx","../src/components/BoardView/Section/Placeholder.jsx","../src/components/BoardView/index.jsx"],"sourcesContent":["// Customised collision detection algorithm based on `closestCenter` implementation for dnd-kit\n// Extracts collisions by respecting `accepts` property\n\nconst distanceBetween = (p1, p2) =>\n Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n\nconst centerOfRectangle = (rect, left = rect.left, top = rect.top) => ({\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5,\n});\n\nconst matchType = (draggable, droppable) =>\n droppable.data.current.accepts.includes(draggable.data.current.type);\n\n// `active` attribute from the `dnd-kit` is unreliable since the data can be lost on unmount during a drag.\nexport const closestCenter =\n ({ active }) =>\n ({ collisionRect, droppableRects, droppableContainers }) => {\n const centerRect = centerOfRectangle(\n collisionRect,\n collisionRect.left,\n collisionRect.top\n );\n\n let minDistance = Number.POSITIVE_INFINITY;\n let collision = { id: undefined };\n\n // eslint-disable-next-line @bigbinary/neeto/use-array-methods\n for (const droppableContainer of droppableContainers) {\n const rect = droppableRects.get(droppableContainer.id);\n\n if (!rect || droppableContainer.id === active.id) continue;\n else if (!matchType(active, droppableContainer)) continue;\n\n const distance = distanceBetween(centerOfRectangle(rect), centerRect);\n if (distance < minDistance) {\n minDistance = distance;\n collision = {\n id: droppableContainer.id,\n data: { droppableContainer, value: distance },\n };\n }\n }\n\n return [collision];\n };\n","export const DRAGGABLE_TYPES = { SECTION: \"section\", ITEM: \"item\" };\n","import { DragOverlay } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"./constants\";\n\nconst DndOverlay = ({ props, state }) => {\n const { renderSectionOverlay, renderItemOverlay } = props;\n const data = state.active?.data.current || {};\n\n return (\n <DragOverlay>\n {data.type === DRAGGABLE_TYPES.ITEM && renderItemOverlay?.(data)}\n {data.type === DRAGGABLE_TYPES.SECTION && renderSectionOverlay?.(data)}\n </DragOverlay>\n );\n};\n\nexport default DndOverlay;\n","import classNames from \"classnames\";\n\nconst DndIndicator = ({ layout = \"vertical\" }) => (\n <div\n className={classNames(\n \"neeto-ui-rounded-xl neeto-ui-bg-accent-600 absolute\",\n {\n \"-bottom-3 left-0 right-0 h-1\": layout === \"horizontal\",\n \"-right-2 bottom-0 top-0 w-1\": layout === \"vertical\",\n }\n )}\n />\n);\n\nexport default DndIndicator;\n","import { useRef } from \"react\";\n\nimport { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst ItemContainer = ({ id, index, data, render }) => {\n const mutables = useRef({ containerHeight: 128 }).current;\n\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, index, type: DRAGGABLE_TYPES.ITEM },\n id: `draggable-item--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index: index + 1 },\n id: `droppable-item--${id}`,\n });\n\n const [setViewRef, inView] = useInView({\n onChange: (inView, entry) => {\n if (inView) return; // We need the last height value when elements moves out.\n mutables.containerHeight = entry.target.clientHeight;\n },\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n className={classNames(\"relative mt-4\", {\n \"opacity-65\": isDragging,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n setViewRef(node);\n }}\n {...{ id, ...attributes, ...listeners }}\n style={{ height: inView ? undefined : mutables.containerHeight }}\n >\n {inView && render()}\n {isIndicatorVisible && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nexport default ItemContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst ItemPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index },\n id: `droppable-item--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nexport default ItemPlaceholder;\n","import { forwardRef } from \"react\";\n\nimport PropTypes from \"prop-types\";\n\nimport ItemContainer from \"../Item/Container\";\nimport ItemPlaceholder from \"../Item/Placeholder\";\n\nconst Section = forwardRef(({ section, items, renderItem }, ref) => (\n <div {...{ ref }} className=\"relative min-h-0 flex-1 basis-0 overflow-auto\">\n <ItemPlaceholder data={{ section }} />\n {items.map((item, index) => (\n <ItemContainer\n {...{ index }}\n data={{ section, item }}\n id={`${section.id}--${item.id}`}\n key={`${section.id}--${item.id}`}\n render={() => renderItem({ index, item, section })}\n />\n ))}\n </div>\n));\n\nSection.displayName = \"Section\";\nSection.propTypes = {\n /** A reference to the section container element. */\n ref: PropTypes.any,\n\n /** The current section data */\n section: PropTypes.shape({ id: PropTypes.string.isRequired }).isRequired,\n\n /** An array of items belonging to the current section. */\n items: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string.isRequired }))\n .isRequired,\n\n /** A function that renders the content of each item in the list. */\n renderItem: PropTypes.func.isRequired,\n};\n\nexport default Section;\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst SectionContainer = ({ id, index, data, render }) => {\n const [setViewRef, inView] = useInView();\n\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, type: DRAGGABLE_TYPES.SECTION, index },\n id: `draggable-section--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index: index + 1 },\n id: `droppable-section--${id}`,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n {...listeners}\n {...attributes}\n className={classNames(\n \"neeto-molecules-boardview-section relative mr-3 flex h-full flex-col last-of-type:mr-0\",\n { \"opacity-65\": isDragging }\n )}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n setViewRef(node);\n }}\n >\n {inView && render()}\n {isIndicatorVisible && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nexport default SectionContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst SectionPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index },\n id: `droppable-section--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nexport default SectionPlaceholder;\n","import { forwardRef, useState } from \"react\";\n\nimport {\n DndContext,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport \"./boardview.scss\";\nimport { closestCenter } from \"./closestCenter\";\nimport { DRAGGABLE_TYPES } from \"./constants\";\nimport DndOverlay from \"./Overlay\";\nimport Section from \"./Section\";\nimport SectionContainer from \"./Section/Container\";\nimport SectionPlaceholder from \"./Section/Placeholder\";\n\nconst sensorConfig = { activationConstraint: { distance: 8 } };\nconst measuringConfig = { droppable: { frequency: 500 } };\n\nconst BoardView = forwardRef((props, ref) => {\n const { sections, onMoveSection, onMoveItem, renderSection, className } =\n props;\n\n const [dragState, setDragState] = useState({});\n const sensors = useSensors(useSensor(PointerSensor, sensorConfig));\n\n const onDragEnd = drag => {\n const active = dragState.active.data.current;\n const over = drag.over?.data.current;\n if (!active || !over) return;\n\n if (active.type === DRAGGABLE_TYPES.ITEM) {\n onMoveItem?.(active, over);\n } else if (active.type === DRAGGABLE_TYPES.SECTION) {\n onMoveSection?.(active, over);\n }\n };\n\n return (\n <DndContext\n {...{ onDragEnd, sensors }}\n collisionDetection={closestCenter(dragState)}\n measuring={measuringConfig}\n onDragStart={setDragState}\n >\n <div\n {...{ ref }}\n className={classNames(\n \"neeto-molecules-boardview-outer-wrapper flex w-full flex-1 overflow-x-auto\",\n className\n )}\n >\n <SectionPlaceholder />\n {sections.map((section, index) => (\n <SectionContainer\n {...{ index }}\n data={{ section }}\n id={section.id}\n key={section.id}\n render={() => renderSection({ index, section })}\n />\n ))}\n </div>\n <DndOverlay {...{ props }} state={dragState} />\n </DndContext>\n );\n});\n\nBoardView.displayName = \"BoardView\";\nBoardView.Section = Section;\nBoardView.propTypes = {\n /** A reference to the container element. */\n ref: PropTypes.any,\n\n /**\n An array of sections, each defined by an object with an `id` string.\n */\n sections: PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string.isRequired })\n ).isRequired,\n\n /** function to render each section content in the board view */\n renderSection: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual sections (drag preview) */\n renderSectionOverlay: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual items (drag preview) */\n renderItemOverlay: PropTypes.func.isRequired,\n\n /** Callback function triggered when a section is reordered */\n onMoveSection: PropTypes.func,\n\n /** Callback function triggered when an item is moved */\n onMoveItem: PropTypes.func,\n /**\n * Additional classes passed on to the board view.\n */\n className: PropTypes.string,\n};\n\nexport default BoardView;\n"],"names":["distanceBetween","p1","p2","Math","sqrt","pow","x","y","centerOfRectangle","rect","left","arguments","length","undefined","top","width","height","matchType","draggable","droppable","data","current","accepts","includes","type","closestCenter","_ref","active","_ref2","collisionRect","droppableRects","droppableContainers","centerRect","minDistance","Number","POSITIVE_INFINITY","collision","id","_iterator","_createForOfIteratorHelper","_step","s","n","done","droppableContainer","value","get","distance","err","e","f","DRAGGABLE_TYPES","SECTION","ITEM","DndOverlay","_state$active","props","state","renderSectionOverlay","renderItemOverlay","_jsxs","DragOverlay","children","DndIndicator","_ref$layout","layout","_jsx","className","classNames","ItemContainer","index","render","mutables","useRef","containerHeight","_useDraggable","useDraggable","_objectSpread","concat","attributes","listeners","isDragging","setDraggableNodeRef","setNodeRef","_useDroppable","useDroppable","isOver","setDroppableNodeRef","_useInView","useInView","onChange","inView","entry","target","clientHeight","_useInView2","_slicedToArray","setViewRef","isIndicatorVisible","ref","node","style","ItemPlaceholder","_ref$index","useId","Section","forwardRef","section","items","renderItem","map","item","_createElement","key","displayName","propTypes","PropTypes","any","shape","string","isRequired","arrayOf","func","SectionContainer","SectionPlaceholder","sensorConfig","activationConstraint","measuringConfig","frequency","BoardView","sections","onMoveSection","onMoveItem","renderSection","_useState","useState","_useState2","dragState","setDragState","sensors","useSensors","useSensor","PointerSensor","onDragEnd","drag","_drag$over","over","DndContext","collisionDetection","measuring","onDragStart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BoardView.js","sources":["../src/components/BoardView/closestCenter.js","../src/components/BoardView/constants.js","../src/components/BoardView/Overlay.jsx","../src/components/BoardView/Indicator.jsx","../src/components/BoardView/Item/Container.jsx","../src/components/BoardView/Item/Placeholder.jsx","../src/components/BoardView/Section/index.jsx","../src/components/BoardView/Section/Container.jsx","../src/components/BoardView/Section/Placeholder.jsx","../src/components/BoardView/index.jsx"],"sourcesContent":["// Customised collision detection algorithm based on `closestCenter` implementation for dnd-kit\n// Extracts collisions by respecting `accepts` property\n\nconst distanceBetween = (p1, p2) =>\n Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n\nconst centerOfRectangle = (rect, left = rect.left, top = rect.top) => ({\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5,\n});\n\nconst matchType = (draggable, droppable) =>\n droppable.data.current.accepts.includes(draggable.data.current.type);\n\n// `active` attribute from the `dnd-kit` is unreliable since the data can be lost on unmount during a drag.\nexport const closestCenter =\n ({ active }) =>\n ({ collisionRect, droppableRects, droppableContainers }) => {\n const centerRect = centerOfRectangle(\n collisionRect,\n collisionRect.left,\n collisionRect.top\n );\n\n let minDistance = Number.POSITIVE_INFINITY;\n let collision = { id: undefined };\n\n // eslint-disable-next-line @bigbinary/neeto/use-array-methods\n for (const droppableContainer of droppableContainers) {\n const rect = droppableRects.get(droppableContainer.id);\n\n if (!rect || droppableContainer.id === active.id) continue;\n else if (!matchType(active, droppableContainer)) continue;\n\n const distance = distanceBetween(centerOfRectangle(rect), centerRect);\n if (distance < minDistance) {\n minDistance = distance;\n collision = {\n id: droppableContainer.id,\n data: { droppableContainer, value: distance },\n };\n }\n }\n\n return [collision];\n };\n","export const DRAGGABLE_TYPES = { SECTION: \"section\", ITEM: \"item\" };\n","import { DragOverlay } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"./constants\";\n\nconst DndOverlay = ({ props, state }) => {\n const { renderSectionOverlay, renderItemOverlay } = props;\n const data = state.active?.data.current || {};\n\n return (\n <DragOverlay>\n {data.type === DRAGGABLE_TYPES.ITEM && renderItemOverlay?.(data)}\n {data.type === DRAGGABLE_TYPES.SECTION && renderSectionOverlay?.(data)}\n </DragOverlay>\n );\n};\n\nexport default DndOverlay;\n","import classNames from \"classnames\";\n\nconst DndIndicator = ({ layout = \"vertical\" }) => (\n <div\n className={classNames(\n \"neeto-ui-rounded-xl neeto-ui-bg-accent-600 absolute\",\n {\n \"-bottom-3 left-0 right-0 h-1\": layout === \"horizontal\",\n \"-right-2 bottom-0 top-0 w-1\": layout === \"vertical\",\n }\n )}\n />\n);\n\nexport default DndIndicator;\n","import { useRef } from \"react\";\n\nimport { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst DragDropContainer = ({ id, index, data, render }) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, index, type: DRAGGABLE_TYPES.ITEM },\n id: `draggable-item--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index: index + 1 },\n id: `droppable-item--${id}`,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n className={classNames(\"relative h-full w-full\", {\n \"opacity-65\": isDragging,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n }}\n {...attributes}\n {...listeners}\n >\n {render()}\n {isIndicatorVisible && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nconst ItemContainer = props => {\n const mutables = useRef({ containerHeight: 128 }).current;\n\n const [setViewRef, inView] = useInView({\n onChange: (inView, entry) => {\n if (inView) return; // We need the last height value when elements moves out.\n mutables.containerHeight = entry.target.clientHeight;\n },\n });\n\n return (\n <div\n className=\"relative mt-4\"\n id={props.id}\n style={{ height: inView ? undefined : mutables.containerHeight }}\n ref={node => {\n setViewRef(node);\n }}\n >\n {inView && <DragDropContainer {...props} />}\n </div>\n );\n};\n\nexport default ItemContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst ItemPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index },\n id: `droppable-item--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nexport default ItemPlaceholder;\n","import { forwardRef } from \"react\";\n\nimport PropTypes from \"prop-types\";\n\nimport ItemContainer from \"../Item/Container\";\nimport ItemPlaceholder from \"../Item/Placeholder\";\n\nconst Section = forwardRef(({ section, items, renderItem }, ref) => (\n <div {...{ ref }} className=\"relative min-h-0 flex-1 basis-0 overflow-auto\">\n <ItemPlaceholder data={{ section }} />\n {items.map((item, index) => (\n <ItemContainer\n {...{ index }}\n data={{ section, item }}\n id={`${section.id}--${item.id}`}\n key={`${section.id}--${item.id}`}\n render={() => renderItem({ index, item, section })}\n />\n ))}\n </div>\n));\n\nSection.displayName = \"Section\";\nSection.propTypes = {\n /** A reference to the section container element. */\n ref: PropTypes.any,\n\n /** The current section data */\n section: PropTypes.shape({ id: PropTypes.string.isRequired }).isRequired,\n\n /** An array of items belonging to the current section. */\n items: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string.isRequired }))\n .isRequired,\n\n /** A function that renders the content of each item in the list. */\n renderItem: PropTypes.func.isRequired,\n};\n\nexport default Section;\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst DragDropContainer = ({ id, index, data, render }) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, type: DRAGGABLE_TYPES.SECTION, index },\n id: `draggable-section--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index: index + 1 },\n id: `droppable-section--${id}`,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n {...listeners}\n {...attributes}\n className={classNames(\"relative h-full w-full flex-col\", {\n \"opacity-65\": isDragging,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n }}\n >\n {render()}\n {isIndicatorVisible && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nconst SectionContainer = props => {\n const [setViewRef, inView] = useInView();\n\n return (\n <div\n className=\"neeto-molecules-boardview-section relative mr-3 h-full last-of-type:mr-0\"\n ref={node => {\n setViewRef(node);\n }}\n >\n {inView && <DragDropContainer {...props} />}\n </div>\n );\n};\n\nexport default SectionContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst SectionPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index },\n id: `droppable-section--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nexport default SectionPlaceholder;\n","import { forwardRef, useState } from \"react\";\n\nimport {\n DndContext,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport \"./boardview.scss\";\nimport { closestCenter } from \"./closestCenter\";\nimport { DRAGGABLE_TYPES } from \"./constants\";\nimport DndOverlay from \"./Overlay\";\nimport Section from \"./Section\";\nimport SectionContainer from \"./Section/Container\";\nimport SectionPlaceholder from \"./Section/Placeholder\";\n\nconst sensorConfig = { activationConstraint: { distance: 8 } };\nconst measuringConfig = { droppable: { frequency: 500 } };\n\nconst BoardView = forwardRef((props, ref) => {\n const { sections, onMoveSection, onMoveItem, renderSection, className } =\n props;\n\n const [dragState, setDragState] = useState({});\n const sensors = useSensors(useSensor(PointerSensor, sensorConfig));\n\n const onDragEnd = drag => {\n const active = dragState.active.data.current;\n const over = drag.over?.data.current;\n if (!active || !over) return;\n\n if (active.type === DRAGGABLE_TYPES.ITEM) {\n onMoveItem?.(active, over);\n } else if (active.type === DRAGGABLE_TYPES.SECTION) {\n onMoveSection?.(active, over);\n }\n };\n\n return (\n <DndContext\n {...{ onDragEnd, sensors }}\n collisionDetection={closestCenter(dragState)}\n measuring={measuringConfig}\n onDragStart={setDragState}\n >\n <div\n {...{ ref }}\n className={classNames(\n \"neeto-molecules-boardview-outer-wrapper flex w-full flex-1 overflow-x-auto\",\n className\n )}\n >\n <SectionPlaceholder />\n {sections.map((section, index) => (\n <SectionContainer\n {...{ index }}\n data={{ section }}\n id={section.id}\n key={section.id}\n render={() => renderSection({ index, section })}\n />\n ))}\n </div>\n <DndOverlay {...{ props }} state={dragState} />\n </DndContext>\n );\n});\n\nBoardView.displayName = \"BoardView\";\nBoardView.Section = Section;\nBoardView.propTypes = {\n /** A reference to the container element. */\n ref: PropTypes.any,\n\n /**\n An array of sections, each defined by an object with an `id` string.\n */\n sections: PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string.isRequired })\n ).isRequired,\n\n /** function to render each section content in the board view */\n renderSection: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual sections (drag preview) */\n renderSectionOverlay: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual items (drag preview) */\n renderItemOverlay: PropTypes.func.isRequired,\n\n /** Callback function triggered when a section is reordered */\n onMoveSection: PropTypes.func,\n\n /** Callback function triggered when an item is moved */\n onMoveItem: PropTypes.func,\n /**\n * Additional classes passed on to the board view.\n */\n className: PropTypes.string,\n};\n\nexport default BoardView;\n"],"names":["distanceBetween","p1","p2","Math","sqrt","pow","x","y","centerOfRectangle","rect","left","arguments","length","undefined","top","width","height","matchType","draggable","droppable","data","current","accepts","includes","type","closestCenter","_ref","active","_ref2","collisionRect","droppableRects","droppableContainers","centerRect","minDistance","Number","POSITIVE_INFINITY","collision","id","_iterator","_createForOfIteratorHelper","_step","s","n","done","droppableContainer","value","get","distance","err","e","f","DRAGGABLE_TYPES","SECTION","ITEM","DndOverlay","_state$active","props","state","renderSectionOverlay","renderItemOverlay","_jsxs","DragOverlay","children","DndIndicator","_ref$layout","layout","_jsx","className","classNames","DragDropContainer","index","render","_useDraggable","useDraggable","_objectSpread","concat","attributes","listeners","isDragging","setDraggableNodeRef","setNodeRef","_useDroppable","useDroppable","isOver","setDroppableNodeRef","isIndicatorVisible","ref","node","ItemContainer","mutables","useRef","containerHeight","_useInView","useInView","onChange","inView","entry","target","clientHeight","_useInView2","_slicedToArray","setViewRef","style","ItemPlaceholder","_ref$index","useId","Section","forwardRef","section","items","renderItem","map","item","_createElement","key","displayName","propTypes","PropTypes","any","shape","string","isRequired","arrayOf","func","SectionContainer","SectionPlaceholder","sensorConfig","activationConstraint","measuringConfig","frequency","BoardView","sections","onMoveSection","onMoveItem","renderSection","_useState","useState","_useState2","dragState","setDragState","sensors","useSensors","useSensor","PointerSensor","onDragEnd","drag","_drag$over","over","DndContext","collisionDetection","measuring","onDragStart"],"mappings":"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"}
|
package/dist/ShareViaLink.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isPresent, slugify, noop } from '@bigbinary/neeto-cist';
|
|
2
2
|
import { omit } from 'ramda';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import Typography from '@bigbinary/neetoui/Typography';
|
|
5
|
+
import { useTranslation, Trans } from 'react-i18next';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
3
7
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
4
8
|
import React__default, { useRef, useCallback, useEffect, useState, createElement } from 'react';
|
|
5
9
|
import ExternalLink from '@bigbinary/neeto-icons/ExternalLink';
|
|
6
10
|
import Button from '@bigbinary/neetoui/Button';
|
|
7
|
-
import { useTranslation, Trans } from 'react-i18next';
|
|
8
11
|
import CopyToClipboardButton from './CopyToClipboardButton.js';
|
|
9
12
|
import MoreDropdown from './MoreDropdown.js';
|
|
10
13
|
import { Formik, Form } from 'formik';
|
|
11
|
-
import Typography from '@bigbinary/neetoui/Typography';
|
|
12
14
|
import Pane from '@bigbinary/neetoui/Pane';
|
|
13
15
|
import Input from '@bigbinary/neetoui/formik/Input';
|
|
14
16
|
import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
|
|
@@ -19,11 +21,12 @@ import Twitter from '@bigbinary/neeto-icons/Twitter';
|
|
|
19
21
|
import * as yup from 'yup';
|
|
20
22
|
import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils/general';
|
|
21
23
|
import { n } from './inject-css-DmrvuTKK.js';
|
|
22
|
-
import {
|
|
24
|
+
import { dayjs } from '@bigbinary/neeto-commons-frontend/utils';
|
|
23
25
|
import Modal from '@bigbinary/neetoui/Modal';
|
|
24
26
|
import Input$1 from '@bigbinary/neetoui/Input';
|
|
27
|
+
import Select from '@bigbinary/neetoui/Select';
|
|
28
|
+
import DatePicker from '@bigbinary/neetoui/DatePicker';
|
|
25
29
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
26
|
-
import classnames from 'classnames';
|
|
27
30
|
import { Link as Link$1 } from 'react-router-dom';
|
|
28
31
|
import '@babel/runtime/helpers/objectWithoutProperties';
|
|
29
32
|
import '@bigbinary/neeto-icons/Copy';
|
|
@@ -33,6 +36,32 @@ import '@bigbinary/neeto-icons/MenuVertical';
|
|
|
33
36
|
import '@bigbinary/neetoui/Dropdown';
|
|
34
37
|
import '@bigbinary/neetoui/Tooltip';
|
|
35
38
|
|
|
39
|
+
var ExpiryNotice = function ExpiryNotice(_ref) {
|
|
40
|
+
var expiryConfiguration = _ref.expiryConfiguration;
|
|
41
|
+
var _useTranslation = useTranslation(),
|
|
42
|
+
t = _useTranslation.t;
|
|
43
|
+
var daysBeforeExpiry = expiryConfiguration.daysBeforeExpiry;
|
|
44
|
+
var notice = t("neetoMolecules.shareViaLink.expiryNotice.daysRemaining", {
|
|
45
|
+
count: daysBeforeExpiry
|
|
46
|
+
});
|
|
47
|
+
if (daysBeforeExpiry < 1) {
|
|
48
|
+
notice = t("neetoMolecules.shareViaLink.expiryNotice.expiresToday");
|
|
49
|
+
}
|
|
50
|
+
if (daysBeforeExpiry <= 0) {
|
|
51
|
+
notice = t("neetoMolecules.shareViaLink.expiryNotice.expired");
|
|
52
|
+
}
|
|
53
|
+
return /*#__PURE__*/jsx(Typography, {
|
|
54
|
+
"data-testid": "expiry-notice",
|
|
55
|
+
lineHeight: "normal",
|
|
56
|
+
style: "body2",
|
|
57
|
+
className: classnames({
|
|
58
|
+
"neeto-ui-text-error-800": daysBeforeExpiry <= 1,
|
|
59
|
+
"neeto-ui-text-gray-700": daysBeforeExpiry > 1
|
|
60
|
+
}),
|
|
61
|
+
children: notice
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
|
|
36
65
|
var facebookShareLink = function facebookShareLink(_ref) {
|
|
37
66
|
var url = _ref.url;
|
|
38
67
|
return buildUrl("https://www.facebook.com/sharer/sharer.php", {
|
|
@@ -206,14 +235,42 @@ var EditURL = function EditURL(_ref) {
|
|
|
206
235
|
};
|
|
207
236
|
|
|
208
237
|
var RegenerateURL = function RegenerateURL(_ref) {
|
|
238
|
+
var _regenerateConfig$exp, _regenerateConfig$exp2, _globalProps$user$dat, _globalProps;
|
|
209
239
|
var isOpen = _ref.isOpen,
|
|
210
240
|
onClose = _ref.onClose,
|
|
211
241
|
url = _ref.url,
|
|
212
242
|
isLoading = _ref.isLoading,
|
|
213
|
-
handleRegenerate = _ref.handleRegenerate
|
|
243
|
+
handleRegenerate = _ref.handleRegenerate,
|
|
244
|
+
_ref$regenerateConfig = _ref.regenerateConfig,
|
|
245
|
+
regenerateConfig = _ref$regenerateConfig === void 0 ? {
|
|
246
|
+
expiresInOptions: []
|
|
247
|
+
} : _ref$regenerateConfig;
|
|
214
248
|
var _useTranslation = useTranslation(),
|
|
215
249
|
t = _useTranslation.t;
|
|
216
250
|
var prevIsLoadingRef = useRef(isLoading);
|
|
251
|
+
var regenerateStrategy = isPresent(regenerateConfig === null || regenerateConfig === void 0 ? void 0 : regenerateConfig.expiresInOptions) ? "expiryBased" : "basic";
|
|
252
|
+
var _useState = useState(regenerateConfig === null || regenerateConfig === void 0 || (_regenerateConfig$exp = regenerateConfig.expiresInOptions) === null || _regenerateConfig$exp === void 0 || (_regenerateConfig$exp = _regenerateConfig$exp[0]) === null || _regenerateConfig$exp === void 0 ? void 0 : _regenerateConfig$exp.value),
|
|
253
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
254
|
+
selectedExpiresInOption = _useState2[0],
|
|
255
|
+
setSelectedExpiresInOption = _useState2[1];
|
|
256
|
+
var _useState3 = useState(dayjs().add(10, "day").toDate()),
|
|
257
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
258
|
+
selectedExpiresOnDate = _useState4[0],
|
|
259
|
+
setSelectedExpiresOnDate = _useState4[1];
|
|
260
|
+
var isSelectedExpiresInOptionNever = selectedExpiresInOption === "never";
|
|
261
|
+
var isSelectedExpiresInOptionCustom = selectedExpiresInOption === "custom";
|
|
262
|
+
var isSelectedExpiresInOptionValidNumberOfDays = isPresent(selectedExpiresInOption) && !isSelectedExpiresInOptionCustom && !isSelectedExpiresInOptionNever;
|
|
263
|
+
var isValidExpiryConfig = isSelectedExpiresInOptionNever || isSelectedExpiresInOptionCustom && isPresent(selectedExpiresOnDate) || isSelectedExpiresInOptionValidNumberOfDays;
|
|
264
|
+
var expiryConfigPayload = isSelectedExpiresInOptionValidNumberOfDays ? {
|
|
265
|
+
expiresInDays: selectedExpiresInOption
|
|
266
|
+
} : {
|
|
267
|
+
expiresOnDate: selectedExpiresOnDate
|
|
268
|
+
};
|
|
269
|
+
var onSubmit = function onSubmit() {
|
|
270
|
+
return regenerateStrategy === "basic" || isSelectedExpiresInOptionNever ? handleRegenerate() : handleRegenerate({
|
|
271
|
+
payload: expiryConfigPayload
|
|
272
|
+
});
|
|
273
|
+
};
|
|
217
274
|
useEffect(function () {
|
|
218
275
|
if (prevIsLoadingRef.current && !isLoading) onClose();
|
|
219
276
|
prevIsLoadingRef.current = isLoading;
|
|
@@ -222,6 +279,7 @@ var RegenerateURL = function RegenerateURL(_ref) {
|
|
|
222
279
|
isOpen: isOpen,
|
|
223
280
|
onClose: onClose,
|
|
224
281
|
"data-testid": "regenerate-url-modal",
|
|
282
|
+
size: regenerateStrategy === "basic" ? "medium" : "large",
|
|
225
283
|
children: [/*#__PURE__*/jsx(Modal.Header, {
|
|
226
284
|
children: /*#__PURE__*/jsx(Typography, {
|
|
227
285
|
lineHeight: "normal",
|
|
@@ -232,10 +290,36 @@ var RegenerateURL = function RegenerateURL(_ref) {
|
|
|
232
290
|
}), /*#__PURE__*/jsx(Modal.Body, {
|
|
233
291
|
children: /*#__PURE__*/jsxs("div", {
|
|
234
292
|
className: "w-full space-y-6",
|
|
235
|
-
children: [/*#__PURE__*/jsx(Input$1, {
|
|
293
|
+
children: [regenerateStrategy === "basic" && /*#__PURE__*/jsx(Input$1, {
|
|
236
294
|
disabled: true,
|
|
237
295
|
label: t("neetoMolecules.shareViaLink.regenerateUrl.inputLabel"),
|
|
238
296
|
value: url
|
|
297
|
+
}), regenerateStrategy === "expiryBased" && /*#__PURE__*/jsxs("div", {
|
|
298
|
+
className: "flex flex-row gap-2",
|
|
299
|
+
children: [/*#__PURE__*/jsx(Select, {
|
|
300
|
+
"data-testid": "expires-in-select",
|
|
301
|
+
defaultValue: (_regenerateConfig$exp2 = regenerateConfig.expiresInOptions) === null || _regenerateConfig$exp2 === void 0 ? void 0 : _regenerateConfig$exp2[0],
|
|
302
|
+
options: regenerateConfig.expiresInOptions,
|
|
303
|
+
className: classnames({
|
|
304
|
+
"w-1/2": isSelectedExpiresInOptionCustom,
|
|
305
|
+
"w-full": !isSelectedExpiresInOptionCustom
|
|
306
|
+
}),
|
|
307
|
+
label: t("neetoMolecules.shareViaLink.regenerateUrl.expiresInLabel"),
|
|
308
|
+
onChange: function onChange(option) {
|
|
309
|
+
return setSelectedExpiresInOption(option.value);
|
|
310
|
+
}
|
|
311
|
+
}), isSelectedExpiresInOptionCustom && /*#__PURE__*/jsx(DatePicker, {
|
|
312
|
+
"data-testid": "expires-on-date-picker",
|
|
313
|
+
dateFormat: (_globalProps$user$dat = (_globalProps = globalProps) === null || _globalProps === void 0 || (_globalProps = _globalProps.user) === null || _globalProps === void 0 ? void 0 : _globalProps.dateFormat) !== null && _globalProps$user$dat !== void 0 ? _globalProps$user$dat : undefined,
|
|
314
|
+
disabledDate: function disabledDate(d) {
|
|
315
|
+
return !d || d.isBefore(dayjs());
|
|
316
|
+
},
|
|
317
|
+
picker: "date",
|
|
318
|
+
type: "date",
|
|
319
|
+
value: selectedExpiresOnDate,
|
|
320
|
+
label: t("neetoMolecules.shareViaLink.regenerateUrl.expiresOnLabel"),
|
|
321
|
+
onChange: setSelectedExpiresOnDate
|
|
322
|
+
})]
|
|
239
323
|
}), /*#__PURE__*/jsx(Typography, {
|
|
240
324
|
className: "neeto-ui-text-gray-700",
|
|
241
325
|
lineHeight: "normal",
|
|
@@ -249,8 +333,9 @@ var RegenerateURL = function RegenerateURL(_ref) {
|
|
|
249
333
|
"data-cy": "regenerate-url-confirm-button",
|
|
250
334
|
"data-testid": "regenerate-url-confirm-button",
|
|
251
335
|
loading: isLoading,
|
|
336
|
+
disabled: regenerateStrategy === "expiryBased" && !isValidExpiryConfig,
|
|
252
337
|
label: t("neetoMolecules.shareViaLink.regenerateUrl.submitButtonLabel"),
|
|
253
|
-
onClick:
|
|
338
|
+
onClick: onSubmit
|
|
254
339
|
}), /*#__PURE__*/jsx(Button, {
|
|
255
340
|
"data-cy": "regenerate-url-cancel-button",
|
|
256
341
|
"data-testid": "regenerate-url-cancel-button",
|
|
@@ -316,7 +401,7 @@ var Link = function Link(_ref) {
|
|
|
316
401
|
}), isDropdownEnabled && /*#__PURE__*/jsxs(Fragment, {
|
|
317
402
|
children: [/*#__PURE__*/jsx(MoreDropdown, {
|
|
318
403
|
menuItems: [{
|
|
319
|
-
isVisible: enabledOptions.regenerate,
|
|
404
|
+
isVisible: enabledOptions.regenerate || isPresent(enabledOptions.regenerate),
|
|
320
405
|
"data-testid": "regenerate-url-button",
|
|
321
406
|
"data-cy": "regenerate-url-button",
|
|
322
407
|
onClick: function onClick() {
|
|
@@ -339,6 +424,7 @@ var Link = function Link(_ref) {
|
|
|
339
424
|
isLoading: isLoading,
|
|
340
425
|
url: url,
|
|
341
426
|
isOpen: isRegenerateURLModalOpen,
|
|
427
|
+
regenerateConfig: enabledOptions.regenerate,
|
|
342
428
|
onClose: function onClose() {
|
|
343
429
|
return setIsRegenerateURLModalOpen(false);
|
|
344
430
|
}
|
|
@@ -1406,7 +1492,9 @@ var ShareViaLink = function ShareViaLink(_ref) {
|
|
|
1406
1492
|
_ref$disableShareSoci = _ref.disableShareSocialMedia,
|
|
1407
1493
|
disableShareSocialMedia = _ref$disableShareSoci === void 0 ? false : _ref$disableShareSoci,
|
|
1408
1494
|
_ref$disableQRDownloa = _ref.disableQRDownload,
|
|
1409
|
-
disableQRDownload = _ref$disableQRDownloa === void 0 ? false : _ref$disableQRDownloa
|
|
1495
|
+
disableQRDownload = _ref$disableQRDownloa === void 0 ? false : _ref$disableQRDownloa,
|
|
1496
|
+
_ref$publicLinkExpiry = _ref.publicLinkExpiryConfiguration,
|
|
1497
|
+
publicLinkExpiryConfiguration = _ref$publicLinkExpiry === void 0 ? {} : _ref$publicLinkExpiry;
|
|
1410
1498
|
return /*#__PURE__*/jsxs("div", {
|
|
1411
1499
|
className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white col-span-2 space-y-4 border p-6 sm:p-8",
|
|
1412
1500
|
"data-testid": "share-via-link",
|
|
@@ -1422,6 +1510,8 @@ var ShareViaLink = function ShareViaLink(_ref) {
|
|
|
1422
1510
|
previewUrl: urlOption.previewUrl,
|
|
1423
1511
|
url: urlOption.url
|
|
1424
1512
|
});
|
|
1513
|
+
}), isPresent(publicLinkExpiryConfiguration) && /*#__PURE__*/jsx(ExpiryNotice, {
|
|
1514
|
+
expiryConfiguration: publicLinkExpiryConfiguration
|
|
1425
1515
|
}), isOtherShareOptionsEnabled && /*#__PURE__*/jsx(ShareBlock, {
|
|
1426
1516
|
disableQRDownload: disableQRDownload,
|
|
1427
1517
|
disableShareSocialMedia: disableShareSocialMedia,
|