@bigbinary/neeto-folders-frontend 1.1.0 → 1.2.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/dist/cjs/components.js +161 -39
- package/dist/cjs/components.js.map +1 -1
- package/dist/cjs/hooks.js +1 -1
- package/dist/components.js +163 -41
- package/dist/components.js.map +1 -1
- package/dist/hooks.js +1 -1
- package/dist/{useFolderActions-DCs7hXdW.js → useFolderActions-BaDwQAdE.js} +7 -5
- package/dist/useFolderActions-BaDwQAdE.js.map +1 -0
- package/dist/{useFolderActions-AZ7a_96r.js → useFolderActions-BoLQ9bAf.js} +8 -6
- package/dist/useFolderActions-BoLQ9bAf.js.map +1 -0
- package/package.json +5 -5
- package/dist/useFolderActions-AZ7a_96r.js.map +0 -1
- package/dist/useFolderActions-DCs7hXdW.js.map +0 -1
package/dist/cjs/hooks.js
CHANGED
package/dist/components.js
CHANGED
|
@@ -7,21 +7,23 @@ import { buildUrl } from '@bigbinary/neeto-commons-frontend/utils';
|
|
|
7
7
|
import Alert from '@bigbinary/neetoui/Alert';
|
|
8
8
|
import { useTranslation, Trans } from 'react-i18next';
|
|
9
9
|
import { useHistory, Link, NavLink } from 'react-router-dom';
|
|
10
|
-
import { c as useFolderStore, d as useDestroyFolder, a as useFolders, i as isActiveFolder, e as useFetchFolders, f as useCreateFolder, g as useUpdateFolder, h as useReorderFolders, D as DEFAULT_CONFIG, u as useFolder, b as useFolderActions
|
|
10
|
+
import { c as useFolderStore, d as useDestroyFolder, a as useFolders, i as isActiveFolder, e as useFetchFolders, f as useCreateFolder, g as useUpdateFolder, h as getActiveFolderId, j as useReorderFolders, D as DEFAULT_CONFIG, u as useFolder, b as useFolderActions } from './useFolderActions-BoLQ9bAf.js';
|
|
11
11
|
import { p as pathToFolder, t as treeToMap, m as measureDepth, a as mapToTree } from './pathUtils-B2uokQlx.js';
|
|
12
12
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
13
13
|
import Pane from '@bigbinary/neetoui/Pane';
|
|
14
|
-
import {
|
|
15
|
-
import { Formik, Form } from 'formik';
|
|
14
|
+
import { forwardRef, useMemo, createElement, useState, useEffect, startTransition } from 'react';
|
|
15
|
+
import { useField, Formik, Form } from 'formik';
|
|
16
16
|
import Typography from '@bigbinary/neetoui/Typography';
|
|
17
17
|
import Input from '@bigbinary/neetoui/formik/Input';
|
|
18
|
-
import Select from '@bigbinary/neetoui/formik/Select';
|
|
19
18
|
import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
|
|
20
|
-
import { pipe, values, prop, isEmpty, assoc } from 'ramda';
|
|
21
19
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
22
|
-
import Button from '@bigbinary/neetoui/Button';
|
|
23
20
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
21
|
+
import { ConfigProvider, TreeSelect as TreeSelect$1 } from 'antd';
|
|
24
22
|
import classNames from 'classnames';
|
|
23
|
+
import Down from '@bigbinary/neeto-icons/Down';
|
|
24
|
+
import Label from '@bigbinary/neetoui/Label';
|
|
25
|
+
import { values, isEmpty, assoc, pick } from 'ramda';
|
|
26
|
+
import Button from '@bigbinary/neetoui/Button';
|
|
25
27
|
import { noop, isNotPresent } from '@bigbinary/neeto-cist';
|
|
26
28
|
import Radio from '@bigbinary/neetoui/Radio';
|
|
27
29
|
import Tooltip from '@bigbinary/neetoui/Tooltip';
|
|
@@ -37,8 +39,8 @@ import '@tanstack/react-query';
|
|
|
37
39
|
import './constants.js';
|
|
38
40
|
import 'zustand';
|
|
39
41
|
|
|
40
|
-
function ownKeys$
|
|
41
|
-
function _objectSpread$
|
|
42
|
+
function ownKeys$a(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; }
|
|
43
|
+
function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$a(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
42
44
|
var FoldersAlerts = function FoldersAlerts(_ref) {
|
|
43
45
|
var config = _ref.config;
|
|
44
46
|
var _useFolderStore = useFolderStore(function (store) {
|
|
@@ -101,7 +103,7 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
|
|
|
101
103
|
}
|
|
102
104
|
return _context.abrupt("return");
|
|
103
105
|
case 9:
|
|
104
|
-
history.replace(buildUrl(config.folderPath, _objectSpread$
|
|
106
|
+
history.replace(buildUrl(config.folderPath, _objectSpread$a(_objectSpread$a({}, queryParams), {}, {
|
|
105
107
|
folderId: parent.sid
|
|
106
108
|
})));
|
|
107
109
|
case 10:
|
|
@@ -123,13 +125,125 @@ var FoldersAlerts = function FoldersAlerts(_ref) {
|
|
|
123
125
|
if (config.customizeAlerts) config.customizeAlerts(type, item, alertProps);
|
|
124
126
|
alertProps.onSubmit = onConfirmDelete;
|
|
125
127
|
}
|
|
126
|
-
return /*#__PURE__*/jsx(Alert, _objectSpread$
|
|
128
|
+
return /*#__PURE__*/jsx(Alert, _objectSpread$a({}, alertProps));
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
var _excluded$4 = ["className", "disabled", "fieldNames", "label", "loading", "name", "placeholder", "required", "showSearch", "size", "treeData"];
|
|
132
|
+
function ownKeys$9(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; }
|
|
133
|
+
function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
134
|
+
var TreeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
135
|
+
var _fieldNames$label;
|
|
136
|
+
var className = _ref.className,
|
|
137
|
+
_ref$disabled = _ref.disabled,
|
|
138
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
139
|
+
fieldNames = _ref.fieldNames,
|
|
140
|
+
_ref$label = _ref.label,
|
|
141
|
+
label = _ref$label === void 0 ? "" : _ref$label,
|
|
142
|
+
_ref$loading = _ref.loading,
|
|
143
|
+
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
144
|
+
name = _ref.name,
|
|
145
|
+
_ref$placeholder = _ref.placeholder,
|
|
146
|
+
placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
|
|
147
|
+
_ref$required = _ref.required,
|
|
148
|
+
required = _ref$required === void 0 ? false : _ref$required,
|
|
149
|
+
_ref$showSearch = _ref.showSearch,
|
|
150
|
+
showSearch = _ref$showSearch === void 0 ? true : _ref$showSearch,
|
|
151
|
+
_ref$size = _ref.size,
|
|
152
|
+
size = _ref$size === void 0 ? "middle" : _ref$size,
|
|
153
|
+
treeData = _ref.treeData,
|
|
154
|
+
otherProps = _objectWithoutProperties(_ref, _excluded$4);
|
|
155
|
+
var _useField = useField(name),
|
|
156
|
+
_useField2 = _slicedToArray(_useField, 3),
|
|
157
|
+
field = _useField2[0],
|
|
158
|
+
meta = _useField2[1],
|
|
159
|
+
_useField2$ = _useField2[2],
|
|
160
|
+
setValue = _useField2$.setValue,
|
|
161
|
+
setTouched = _useField2$.setTouched;
|
|
162
|
+
var hasLeafNodes = treeData === null || treeData === void 0 ? void 0 : treeData.some(function (node) {
|
|
163
|
+
return (node === null || node === void 0 ? void 0 : node.pId) !== null;
|
|
164
|
+
});
|
|
165
|
+
return /*#__PURE__*/jsxs("div", {
|
|
166
|
+
className: "neeto-ui-input__wrapper",
|
|
167
|
+
children: [label && /*#__PURE__*/jsx(Label, {
|
|
168
|
+
required: required,
|
|
169
|
+
children: label
|
|
170
|
+
}), /*#__PURE__*/jsx(ConfigProvider, {
|
|
171
|
+
theme: {
|
|
172
|
+
components: {
|
|
173
|
+
TreeSelect: {
|
|
174
|
+
titleHeight: 28
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
children: /*#__PURE__*/jsx(TreeSelect$1, _objectSpread$9(_objectSpread$9({
|
|
179
|
+
treeDataSimpleMode: true,
|
|
180
|
+
"data-cy": "nui-select-container-wrapper",
|
|
181
|
+
dropdownStyle: {
|
|
182
|
+
zIndex: 100000
|
|
183
|
+
},
|
|
184
|
+
name: field.name,
|
|
185
|
+
popupClassName: "neeto-ui-tree-select-dropdown",
|
|
186
|
+
suffixIcon: /*#__PURE__*/jsx(Down, {}),
|
|
187
|
+
treeNodeFilterProp: (_fieldNames$label = fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.label) !== null && _fieldNames$label !== void 0 ? _fieldNames$label : "title",
|
|
188
|
+
value: field.value || undefined,
|
|
189
|
+
className: classNames("neeto-ui-tree-select__wrapper", className, {
|
|
190
|
+
"neeto-ui-tree-select__error": meta.error
|
|
191
|
+
}),
|
|
192
|
+
switcherIcon: function switcherIcon(props) {
|
|
193
|
+
return /*#__PURE__*/jsx("div", _objectSpread$9(_objectSpread$9({}, props), {}, {
|
|
194
|
+
children: /*#__PURE__*/jsx(Down, {})
|
|
195
|
+
}));
|
|
196
|
+
},
|
|
197
|
+
onBlur: function onBlur() {
|
|
198
|
+
return setTouched(true);
|
|
199
|
+
},
|
|
200
|
+
onChange: function onChange(value) {
|
|
201
|
+
return setValue(value);
|
|
202
|
+
}
|
|
203
|
+
}, _objectSpread$9({
|
|
204
|
+
disabled: disabled,
|
|
205
|
+
fieldNames: fieldNames,
|
|
206
|
+
loading: loading,
|
|
207
|
+
placeholder: placeholder,
|
|
208
|
+
ref: ref,
|
|
209
|
+
showSearch: showSearch,
|
|
210
|
+
size: size,
|
|
211
|
+
treeData: treeData
|
|
212
|
+
}, otherProps)), {}, {
|
|
213
|
+
dropdownRender: function dropdownRender(menu) {
|
|
214
|
+
return hasLeafNodes ? menu : /*#__PURE__*/jsx("div", {
|
|
215
|
+
className: "-mx-5 -ml-6",
|
|
216
|
+
children: menu
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}))
|
|
220
|
+
}), meta.error && /*#__PURE__*/jsx("p", {
|
|
221
|
+
className: "neeto-ui-input__error",
|
|
222
|
+
children: meta.error
|
|
223
|
+
})]
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
TreeSelect.displayName = "TreeSelect";
|
|
227
|
+
|
|
228
|
+
var createFolderOptions = function createFolderOptions(foldersMap, config) {
|
|
229
|
+
return values(foldersMap).map(function (folder) {
|
|
230
|
+
var _folder$meta$parent;
|
|
231
|
+
return {
|
|
232
|
+
id: folder.id,
|
|
233
|
+
title: folder.name,
|
|
234
|
+
value: folder.id,
|
|
235
|
+
pId: (_folder$meta$parent = folder.meta.parent) === null || _folder$meta$parent === void 0 ? void 0 : _folder$meta$parent.id,
|
|
236
|
+
disabled: folder.meta.depth >= config.maxDepth
|
|
237
|
+
};
|
|
238
|
+
});
|
|
127
239
|
};
|
|
128
240
|
|
|
129
|
-
var flattenTree = pipe(treeToMap, values);
|
|
130
241
|
var AddEditPane = function AddEditPane(_ref) {
|
|
131
|
-
var
|
|
242
|
+
var setFocusField = _ref.setFocusField,
|
|
243
|
+
config = _ref.config,
|
|
132
244
|
onClose = _ref.onClose;
|
|
245
|
+
var _useTranslation = useTranslation(),
|
|
246
|
+
t = _useTranslation.t;
|
|
133
247
|
var _useFolderStore = useFolderStore(function (store) {
|
|
134
248
|
var _store$paneState, _store$paneState2;
|
|
135
249
|
return {
|
|
@@ -145,16 +259,23 @@ var AddEditPane = function AddEditPane(_ref) {
|
|
|
145
259
|
createFolder = _useCreateFolder.mutate;
|
|
146
260
|
var _useUpdateFolder = useUpdateFolder(config),
|
|
147
261
|
updateFolder = _useUpdateFolder.mutateAsync;
|
|
148
|
-
var _useTranslation = useTranslation(),
|
|
149
|
-
t = _useTranslation.t;
|
|
150
262
|
var isEditing = type === "edit" && item;
|
|
151
|
-
var
|
|
152
|
-
|
|
153
|
-
parentId: null
|
|
154
|
-
};
|
|
155
|
-
var folderOptions = useMemo(function () {
|
|
156
|
-
return flattenTree(folders);
|
|
263
|
+
var foldersMap = useMemo(function () {
|
|
264
|
+
return treeToMap(folders, "sid");
|
|
157
265
|
}, [folders]);
|
|
266
|
+
var folderOptions = useMemo(function () {
|
|
267
|
+
return createFolderOptions(foldersMap, config);
|
|
268
|
+
}, [foldersMap]);
|
|
269
|
+
var activeFolderSid = getActiveFolderId(config);
|
|
270
|
+
var activeFolder = foldersMap[activeFolderSid];
|
|
271
|
+
var isValidParent = (activeFolder === null || activeFolder === void 0 ? void 0 : activeFolder.meta.depth) < config.maxDepth;
|
|
272
|
+
var parentId = isValidParent ? activeFolder.id : null;
|
|
273
|
+
var initialValues = useMemo(function () {
|
|
274
|
+
return isEditing ? item : {
|
|
275
|
+
name: "",
|
|
276
|
+
parentId: parentId
|
|
277
|
+
};
|
|
278
|
+
}, [isEditing, item, parentId]);
|
|
158
279
|
var onSubmitForm = /*#__PURE__*/function () {
|
|
159
280
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
|
|
160
281
|
var payload;
|
|
@@ -200,31 +321,24 @@ var AddEditPane = function AddEditPane(_ref) {
|
|
|
200
321
|
})
|
|
201
322
|
}), /*#__PURE__*/jsx(Formik, {
|
|
202
323
|
initialValues: initialValues,
|
|
324
|
+
enableReinitialize: true,
|
|
203
325
|
onSubmit: onSubmitForm,
|
|
204
|
-
children: function children(
|
|
205
|
-
var setFieldValue = _ref3.setFieldValue;
|
|
326
|
+
children: function children() {
|
|
206
327
|
return /*#__PURE__*/jsxs(Fragment, {
|
|
207
328
|
children: [/*#__PURE__*/jsx(Pane.Body, {
|
|
208
329
|
children: /*#__PURE__*/jsxs(Form, {
|
|
209
330
|
className: "w-full space-y-5",
|
|
210
331
|
children: [/*#__PURE__*/jsx(Input, {
|
|
211
332
|
label: t("folders.name"),
|
|
212
|
-
name: "name"
|
|
333
|
+
name: "name",
|
|
334
|
+
ref: setFocusField
|
|
213
335
|
}), /*#__PURE__*/jsxs("div", {
|
|
214
|
-
children: [/*#__PURE__*/jsx(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
var value = _ref4.value;
|
|
218
|
-
return value !== initialValues.id;
|
|
219
|
-
},
|
|
220
|
-
getOptionLabel: prop("name"),
|
|
221
|
-
getOptionValue: prop("id"),
|
|
336
|
+
children: [/*#__PURE__*/jsx(TreeSelect, {
|
|
337
|
+
allowClear: true,
|
|
338
|
+
showSearch: true,
|
|
222
339
|
label: t("createFolder.parentTitle"),
|
|
223
340
|
name: "parentId",
|
|
224
|
-
|
|
225
|
-
onChange: function onChange(option) {
|
|
226
|
-
return setFieldValue("parentId", option ? option.id : null);
|
|
227
|
-
}
|
|
341
|
+
treeData: folderOptions
|
|
228
342
|
}), /*#__PURE__*/jsx(Typography, {
|
|
229
343
|
style: "nano",
|
|
230
344
|
children: t("createFolder.parentInfo")
|
|
@@ -672,10 +786,17 @@ var FoldersPane = function FoldersPane(_ref) {
|
|
|
672
786
|
config: config,
|
|
673
787
|
onClose: onClose
|
|
674
788
|
};
|
|
675
|
-
return /*#__PURE__*/
|
|
789
|
+
return /*#__PURE__*/jsx(Pane, {
|
|
676
790
|
onClose: onClose,
|
|
677
791
|
isOpen: !!type,
|
|
678
|
-
children:
|
|
792
|
+
children: function children(_ref2) {
|
|
793
|
+
var setFocusField = _ref2.setFocusField;
|
|
794
|
+
return /*#__PURE__*/jsxs(Fragment, {
|
|
795
|
+
children: [(type === "edit" || type === "add") && /*#__PURE__*/jsx(AddEditPane, _objectSpread$3({}, _objectSpread$3({
|
|
796
|
+
setFocusField: setFocusField
|
|
797
|
+
}, commonProps))), type === "move" && /*#__PURE__*/jsx(MoveFolderPane, _objectSpread$3({}, commonProps)), type === "reorder" && /*#__PURE__*/jsx(ReorderFoldersPane, _objectSpread$3({}, commonProps))]
|
|
798
|
+
});
|
|
799
|
+
}
|
|
679
800
|
});
|
|
680
801
|
};
|
|
681
802
|
|
|
@@ -777,12 +898,13 @@ var FoldersList = function FoldersList(_ref) {
|
|
|
777
898
|
configProps = _ref.config,
|
|
778
899
|
onSelect = _ref.onSelect;
|
|
779
900
|
var config = _objectSpread$2(_objectSpread$2({}, DEFAULT_CONFIG), configProps);
|
|
780
|
-
var params = useQueryParams(
|
|
781
|
-
toCamelCase: false
|
|
782
|
-
});
|
|
901
|
+
var params = useQueryParams();
|
|
783
902
|
var _useTranslation = useTranslation(),
|
|
784
903
|
t = _useTranslation.t;
|
|
785
|
-
var
|
|
904
|
+
var fetchParams = pick(["sortBy", "orderBy"], params);
|
|
905
|
+
var _useFolders = useFolders(_objectSpread$2(_objectSpread$2({}, config), {}, {
|
|
906
|
+
params: fetchParams
|
|
907
|
+
})),
|
|
786
908
|
folders = _useFolders.folders;
|
|
787
909
|
var _useFolder = useFolder(config),
|
|
788
910
|
folderId = _useFolder.folderId,
|