@bigbinary/neeto-tags-frontend 2.2.18 → 2.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +0 -2
  2. package/app/javascript/src/translations/hu.json +63 -0
  3. package/dist/.ready +1 -0
  4. package/dist/ManageTags-BnIsCqI7.js +173 -0
  5. package/dist/ManageTags-BnIsCqI7.js.map +1 -0
  6. package/dist/ManageTags-CDe724nr.js +196 -0
  7. package/dist/ManageTags-CDe724nr.js.map +1 -0
  8. package/dist/ManageTags-Cxg9R7JI.js +189 -0
  9. package/dist/ManageTags-Cxg9R7JI.js.map +1 -0
  10. package/dist/ManageTags-D523YbMW.js +166 -0
  11. package/dist/ManageTags-D523YbMW.js.map +1 -0
  12. package/dist/ManageTags.js +24 -0
  13. package/dist/ManageTags.js.map +1 -0
  14. package/dist/NeetoTags.js +815 -38
  15. package/dist/NeetoTags.js.map +1 -1
  16. package/dist/TagsComponent.js +6 -6
  17. package/dist/TagsComponent.js.map +1 -1
  18. package/dist/cjs/ManageTags.js +30 -0
  19. package/dist/cjs/ManageTags.js.map +1 -0
  20. package/dist/cjs/NeetoTags.js +815 -42
  21. package/dist/cjs/NeetoTags.js.map +1 -1
  22. package/dist/cjs/TagsComponent.js +6 -6
  23. package/dist/cjs/TagsComponent.js.map +1 -1
  24. package/dist/cjs/index.js +15 -13
  25. package/dist/cjs/index.js.map +1 -1
  26. package/dist/cjs/utils.js +1 -1
  27. package/dist/cjs/v2/ManageTags.js +24 -0
  28. package/dist/cjs/v2/ManageTags.js.map +1 -0
  29. package/dist/cjs/v2/NeetoTags.js +823 -0
  30. package/dist/cjs/v2/NeetoTags.js.map +1 -0
  31. package/dist/cjs/v2/TagsComponent.js +316 -0
  32. package/dist/cjs/v2/TagsComponent.js.map +1 -0
  33. package/dist/cjs/v2/utils.js +15 -0
  34. package/dist/cjs/v2/utils.js.map +1 -0
  35. package/dist/constants-AJMWkdYm.js +36 -0
  36. package/dist/constants-AJMWkdYm.js.map +1 -0
  37. package/dist/constants-BP1u7ku6.js +43 -0
  38. package/dist/constants-BP1u7ku6.js.map +1 -0
  39. package/dist/index.js +13 -11
  40. package/dist/index.js.map +1 -1
  41. package/dist/inject-css-B6qYtOJe.js +6 -0
  42. package/dist/inject-css-B6qYtOJe.js.map +1 -0
  43. package/dist/inject-css-C2dztUxs.js +4 -0
  44. package/dist/inject-css-C2dztUxs.js.map +1 -0
  45. package/dist/pluralize-BjPF_ZHA.js +520 -0
  46. package/dist/pluralize-BjPF_ZHA.js.map +1 -0
  47. package/dist/pluralize-CSZDNFkc.js +518 -0
  48. package/dist/pluralize-CSZDNFkc.js.map +1 -0
  49. package/dist/useTagsApi-CaVQT--T.js +110 -0
  50. package/dist/useTagsApi-CaVQT--T.js.map +1 -0
  51. package/dist/{useTagsApi-CbashvsV.js → useTagsApi-DXIKl4Re.js} +2 -2
  52. package/dist/useTagsApi-DXIKl4Re.js.map +1 -0
  53. package/dist/{useTagsApi-CmFEGxns.js → useTagsApi-DpuKCFy0.js} +2 -2
  54. package/dist/{useTagsApi-CbashvsV.js.map → useTagsApi-DpuKCFy0.js.map} +1 -1
  55. package/dist/useTagsApi-LD-QEuoN.js +103 -0
  56. package/dist/useTagsApi-LD-QEuoN.js.map +1 -0
  57. package/dist/utils.js +1 -1
  58. package/dist/v2/ManageTags.js +18 -0
  59. package/dist/v2/ManageTags.js.map +1 -0
  60. package/dist/v2/NeetoTags.js +821 -0
  61. package/dist/v2/NeetoTags.js.map +1 -0
  62. package/dist/v2/TagsComponent.js +314 -0
  63. package/dist/v2/TagsComponent.js.map +1 -0
  64. package/dist/v2/utils.js +9 -0
  65. package/dist/v2/utils.js.map +1 -0
  66. package/package.json +38 -30
  67. package/dist/index-_sNMrsD3.js +0 -1489
  68. package/dist/index-_sNMrsD3.js.map +0 -1
  69. package/dist/index-hfjlurOH.js +0 -1511
  70. package/dist/index-hfjlurOH.js.map +0 -1
  71. package/dist/inject-css-DmrvuTKK.js +0 -4
  72. package/dist/inject-css-DmrvuTKK.js.map +0 -1
  73. package/dist/inject-css-vQvjPR2x.js +0 -6
  74. package/dist/inject-css-vQvjPR2x.js.map +0 -1
  75. package/dist/useTagsApi-CmFEGxns.js.map +0 -1
package/README.md CHANGED
@@ -42,8 +42,6 @@ The engine is used to manage tags for any entity across neeto products.
42
42
  ```ruby
43
43
  mount NeetoTagsEngine::Engine, at: "/neeto_tags"
44
44
  ```
45
- **NOTE: The mount point must be `/neeto_tags` and cannot be changed to any
46
- other path.**
47
45
  4. Run the following command to copy the migrations from the engine to the host
48
46
  application:
49
47
  ```ruby
@@ -0,0 +1,63 @@
1
+ {
2
+ "neetoTags": {
3
+ "alert": {
4
+ "title": {
5
+ "deleteTag": "Címke törlése?"
6
+ },
7
+ "message": {
8
+ "deleteTag_": "Örökre törli a <strong>{{name, anyCase}}</strong> címkét. Ez nem vonható vissza."
9
+ }
10
+ },
11
+ "button": {
12
+ "addTag_one": "Címke hozzáadása",
13
+ "addTag_other": "Címkék hozzáadása",
14
+ "cancel": "Mégse",
15
+ "delete": "Törlés",
16
+ "edit": "Szerkesztés",
17
+ "goBack": "Vissza",
18
+ "merge": "Egyesít",
19
+ "proceed": "Tovább",
20
+ "saveChanges": "Változások mentése"
21
+ },
22
+ "common": {
23
+ "addNewTag_one": "Új címke hozzáadása",
24
+ "addNewTag_other": "Új címkék hozzáadása",
25
+ "description": "Leírás",
26
+ "editTag": "Címke szerkesztése",
27
+ "mergeTag_one": "Címke egyesítése",
28
+ "mergeTag_other": "Címkék egyesítése",
29
+ "name": "Név",
30
+ "tag_one": "Címke",
31
+ "tag_other": "Címkék"
32
+ },
33
+ "helper": {
34
+ "mergeTagsMessage_one": "A {{- sourceTags, boldList}} címke egyesítve lesz a <strong>{{destinationTag}}</strong> címkével. Ez a {{entities}}-t is érinti, amelyek a <strong>{{sourceTags, anyCase}}</strong> címkéhez vannak rendelve. Folytatni szeretné?",
35
+ "mergeTagsMessage_other": "A {{- sourceTags, boldList}} címkék egyesítve lesznek a <strong>{{destinationTag}}</strong> címkével. Ez a {{entities}}-t is érinti, amelyek ezekkel a <strong>{{count}}</strong> címkével vannak ellátva. Folytatni szeretné?",
36
+ "tagWithCount_one": "{{count}} {{type}} címke",
37
+ "tagWithCount_other": "{{count}} {{type}} címkék",
38
+ "tagWithType_one": "{{type}} címke",
39
+ "tagWithType_other": "{{type}} címkék"
40
+ },
41
+ "placeholder": {
42
+ "selectOrCreateTag": "Válasszon vagy hozzon létre címkét",
43
+ "searchTags": "Címkék keresése"
44
+ },
45
+ "title": {
46
+ "noTagsToShow": "Nincsenek megjeleníthető címkék.",
47
+ "selectDestinationTag_one": "Válassza ki a célcímkét",
48
+ "selectDestinationTag_other": "Válassza ki a célcímkéket",
49
+ "selectSourceTag_one": "Válassza ki a forráscímkét",
50
+ "selectSourceTag_other": "Válassza ki a forrást címkéket"
51
+ },
52
+ "validation": {
53
+ "descriptionMustBeString": "A leírásnak szövegnek kell lennie.",
54
+ "descriptionMaxLength": "A leírásnak kevesebb mint {{length}} karakterből kell állnia.",
55
+ "nameMaxLength": "A névnek kevesebb mint {{length}} karakterből kell állnia.",
56
+ "nameRequired": "A név kötelező mező.",
57
+ "nameMustBeString": "A névnek szövegnek kell lennie."
58
+ },
59
+ "shortcuts": {
60
+ "addTag": "Címkék hozzáadása"
61
+ }
62
+ }
63
+ }
package/dist/.ready ADDED
@@ -0,0 +1 @@
1
+ Built at 2026-04-16T09:50:20.006Z
@@ -0,0 +1,173 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { useRef } from 'react';
3
+ import { toLabelAndValue } from '@bigbinary/neeto-cist';
4
+ import { DEFAULT_PAGE_SIZE, DEFAULT_PAGE_INDEX, SINGULAR } from '@bigbinary/neeto-commons-frontend/constants';
5
+ import Pane from '@bigbinary/neetoui/Pane';
6
+ import Typography from '@bigbinary/neetoui/Typography';
7
+ import ActionBlock from '@bigbinary/neetoui/formik/ActionBlock';
8
+ import Form from '@bigbinary/neetoui/formik/Form';
9
+ import Input from '@bigbinary/neetoui/formik/Input';
10
+ import Select from '@bigbinary/neetoui/formik/Select';
11
+ import Textarea from '@bigbinary/neetoui/formik/Textarea';
12
+ import { useTranslation } from 'react-i18next';
13
+ import { u as useUpdateTag, a as useCreateTag, T as TAG_STYLES, P as PANE_TYPES, I as INITIAL_TAG_VALUES } from './useTagsApi-DpuKCFy0.js';
14
+ import { mergeLeft } from 'ramda';
15
+ import { t } from 'i18next';
16
+ import * as yup from 'yup';
17
+ import { jsxs, jsx } from 'react/jsx-runtime';
18
+
19
+ var TAG_NAME_MAX_LENGTH = 50;
20
+ var TAG_DESCRIPTION_ROW_LENGTH = 3;
21
+ var TAG_DESCRIPTION_MAX_LENGTH = 255;
22
+ var TAG_SCHEMA = yup.object().shape({
23
+ name: yup.string().typeError(t("neetoTags.validation.nameMustBeString")).required(t("neetoTags.validation.nameRequired")).max(TAG_NAME_MAX_LENGTH, t("neetoTags.validation.nameMaxLength", {
24
+ length: TAG_NAME_MAX_LENGTH
25
+ })),
26
+ description: yup.string().typeError(t("neetoTags.validation.descriptionMustBeString")).nullable().max(TAG_DESCRIPTION_MAX_LENGTH, t("neetoTags.validation.descriptionMaxLength", {
27
+ length: TAG_DESCRIPTION_MAX_LENGTH
28
+ }))
29
+ });
30
+ var TAGS_FORMIK_PROPS = {
31
+ validateOnBlur: true,
32
+ validateOnChange: true,
33
+ validationSchema: TAG_SCHEMA
34
+ };
35
+ var DEFAULT_FILTERS = {
36
+ page: DEFAULT_PAGE_INDEX,
37
+ pageSize: DEFAULT_PAGE_SIZE,
38
+ sortBy: "",
39
+ orderBy: ""
40
+ };
41
+ var NEETO_FILTERS = [{
42
+ key: "name",
43
+ label: t("neetoTags.common.name"),
44
+ node: "name",
45
+ type: "text"
46
+ }];
47
+
48
+ var useTagsForm = function useTagsForm(_ref) {
49
+ var createTags = _ref.createTags,
50
+ goToFirstPage = _ref.goToFirstPage,
51
+ isEdit = _ref.isEdit,
52
+ onClose = _ref.onClose,
53
+ tagType = _ref.tagType,
54
+ updateTags = _ref.updateTags;
55
+ var tagModification = isEdit ? useUpdateTag : useCreateTag;
56
+ var tagOperation = isEdit ? updateTags : createTags;
57
+ var _tagModification = tagModification(),
58
+ mutate = _tagModification.mutate,
59
+ isSubmitting = _tagModification.isPending;
60
+ var handleSubmit = function handleSubmit(values, _ref2) {
61
+ var _values$description;
62
+ var resetForm = _ref2.resetForm;
63
+ var tagData = {
64
+ url: tagType.url,
65
+ payload: {
66
+ tag: mergeLeft({
67
+ description: (_values$description = values.description) === null || _values$description === void 0 ? void 0 : _values$description.trim(),
68
+ style: values.style.value
69
+ }, values)
70
+ }
71
+ };
72
+ if (isEdit) {
73
+ tagData.id = values.id;
74
+ }
75
+ mutate(tagData, {
76
+ onSuccess: function onSuccess(response) {
77
+ var _tagOperation$onSucce;
78
+ !isEdit && (goToFirstPage === null || goToFirstPage === void 0 ? void 0 : goToFirstPage());
79
+ tagOperation === null || tagOperation === void 0 || (_tagOperation$onSucce = tagOperation.onSuccess) === null || _tagOperation$onSucce === void 0 || _tagOperation$onSucce.callback(response);
80
+ onClose();
81
+ },
82
+ onError: function onError() {
83
+ resetForm();
84
+ }
85
+ });
86
+ };
87
+ return {
88
+ handleSubmit: handleSubmit,
89
+ isSubmitting: isSubmitting
90
+ };
91
+ };
92
+
93
+ 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; }
94
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
95
+ var ManageTags = function ManageTags(_ref) {
96
+ var createTags = _ref.createTags,
97
+ goToFirstPage = _ref.goToFirstPage,
98
+ onClose = _ref.onClose,
99
+ tag = _ref.tag,
100
+ tagType = _ref.tagType,
101
+ type = _ref.type,
102
+ updateTags = _ref.updateTags;
103
+ var _useTranslation = useTranslation(),
104
+ t = _useTranslation.t;
105
+ var isEdit = type === PANE_TYPES.EDIT;
106
+ var initialValues = isEdit ? tag : INITIAL_TAG_VALUES;
107
+ var inputReference = useRef(null);
108
+ var _useTagsForm = useTagsForm({
109
+ createTags: createTags,
110
+ goToFirstPage: goToFirstPage,
111
+ isEdit: isEdit,
112
+ onClose: onClose,
113
+ tagType: tagType,
114
+ updateTags: updateTags
115
+ }),
116
+ handleSubmit = _useTagsForm.handleSubmit,
117
+ isSubmitting = _useTagsForm.isSubmitting;
118
+ return /*#__PURE__*/jsxs(Pane, {
119
+ onClose: onClose,
120
+ initialFocusRef: inputReference,
121
+ isOpen: !!type,
122
+ children: [/*#__PURE__*/jsx(Pane.Header, {
123
+ children: /*#__PURE__*/jsx(Typography, {
124
+ style: "h2",
125
+ weight: "semibold",
126
+ children: isEdit ? t("neetoTags.common.editTag") : t("neetoTags.common.addNewTag", SINGULAR)
127
+ })
128
+ }), /*#__PURE__*/jsxs(Form, {
129
+ formikProps: _objectSpread(_objectSpread({}, TAGS_FORMIK_PROPS), {}, {
130
+ initialValues: initialValues,
131
+ onSubmit: handleSubmit
132
+ }),
133
+ children: [/*#__PURE__*/jsx(Pane.Body, {
134
+ children: /*#__PURE__*/jsxs("div", {
135
+ className: "neeto-ui-flex neeto-ui-w-full neeto-ui-flex-col neeto-ui-gap-4",
136
+ children: [/*#__PURE__*/jsx(Input, {
137
+ required: true,
138
+ unlimitedChars: true,
139
+ "data-testid": "tag-name-text-field",
140
+ label: t("neetoTags.common.name"),
141
+ maxLength: TAG_NAME_MAX_LENGTH,
142
+ name: "name",
143
+ ref: inputReference
144
+ }), /*#__PURE__*/jsx(Textarea, {
145
+ unlimitedChars: true,
146
+ "data-testid": "tag-description-text-area",
147
+ label: t("neetoTags.common.description"),
148
+ maxLength: TAG_DESCRIPTION_MAX_LENGTH,
149
+ name: "description",
150
+ rows: TAG_DESCRIPTION_ROW_LENGTH
151
+ }), /*#__PURE__*/jsx(Select, {
152
+ name: "style",
153
+ options: Object.values(TAG_STYLES).map(toLabelAndValue)
154
+ })]
155
+ })
156
+ }), /*#__PURE__*/jsx(Pane.Footer, {
157
+ children: /*#__PURE__*/jsx(ActionBlock, {
158
+ isSubmitting: isSubmitting,
159
+ cancelButtonProps: {
160
+ "data-testid": "neeto-tags-manage-tag-cancel-button",
161
+ onClick: onClose
162
+ },
163
+ submitButtonProps: {
164
+ "data-testid": "neeto-tags-manage-tag-submit-button"
165
+ }
166
+ })
167
+ })]
168
+ })]
169
+ });
170
+ };
171
+
172
+ export { DEFAULT_FILTERS as D, ManageTags as M, NEETO_FILTERS as N };
173
+ //# sourceMappingURL=ManageTags-BnIsCqI7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageTags-BnIsCqI7.js","sources":["../app/javascript/src/components/Dashboard/constants.js","../app/javascript/src/hooks/useTagsForm.js","../app/javascript/src/components/Dashboard/ManageTags.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE } from \"neetocommons/constants\";\nimport * as yup from \"yup\";\n\nexport const TAG_NAME_MAX_LENGTH = 50;\n\nexport const TAG_DESCRIPTION_ROW_LENGTH = 3;\n\nexport const TAG_DESCRIPTION_MAX_LENGTH = 255;\n\nexport const TAG_SCHEMA = yup.object().shape({\n name: yup\n .string()\n .typeError(t(\"neetoTags.validation.nameMustBeString\"))\n .required(t(\"neetoTags.validation.nameRequired\"))\n .max(\n TAG_NAME_MAX_LENGTH,\n t(\"neetoTags.validation.nameMaxLength\", {\n length: TAG_NAME_MAX_LENGTH,\n })\n ),\n description: yup\n .string()\n .typeError(t(\"neetoTags.validation.descriptionMustBeString\"))\n .nullable()\n .max(\n TAG_DESCRIPTION_MAX_LENGTH,\n t(\"neetoTags.validation.descriptionMaxLength\", {\n length: TAG_DESCRIPTION_MAX_LENGTH,\n })\n ),\n});\n\nexport const TAGS_FORMIK_PROPS = {\n validateOnBlur: true,\n validateOnChange: true,\n validationSchema: TAG_SCHEMA,\n};\n\nexport const DEFAULT_FILTERS = {\n page: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n sortBy: \"\",\n orderBy: \"\",\n};\n\nexport const NEETO_FILTERS = [\n {\n key: \"name\",\n label: t(\"neetoTags.common.name\"),\n node: \"name\",\n type: \"text\",\n },\n];\n","import { mergeLeft } from \"ramda\";\n\nimport { useCreateTag, useUpdateTag } from \"./useTagsApi\";\n\nconst useTagsForm = ({\n createTags,\n goToFirstPage,\n isEdit,\n onClose,\n tagType,\n updateTags,\n}) => {\n const tagModification = isEdit ? useUpdateTag : useCreateTag;\n const tagOperation = isEdit ? updateTags : createTags;\n const { mutate, isPending: isSubmitting } = tagModification();\n\n const handleSubmit = (values, { resetForm }) => {\n const tagData = {\n url: tagType.url,\n payload: {\n tag: mergeLeft(\n {\n description: values.description?.trim(),\n style: values.style.value,\n },\n values\n ),\n },\n };\n\n if (isEdit) {\n tagData.id = values.id;\n }\n\n mutate(tagData, {\n onSuccess: response => {\n !isEdit && goToFirstPage?.();\n tagOperation?.onSuccess?.callback(response);\n onClose();\n },\n onError: () => {\n resetForm();\n },\n });\n };\n\n return { handleSubmit, isSubmitting };\n};\n\nexport default useTagsForm;\n","import { useRef } from \"react\";\n\nimport { toLabelAndValue } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/constants\";\nimport { Pane, Typography } from \"neetoui\";\nimport { ActionBlock, Form, Input, Select, Textarea } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PANE_TYPES, INITIAL_TAG_VALUES, TAG_STYLES } from \"common/constants\";\nimport useTagsForm from \"src/hooks/useTagsForm\";\n\nimport {\n TAGS_FORMIK_PROPS,\n TAG_DESCRIPTION_MAX_LENGTH,\n TAG_DESCRIPTION_ROW_LENGTH,\n TAG_NAME_MAX_LENGTH,\n} from \"./constants\";\n\nconst ManageTags = ({\n createTags,\n goToFirstPage,\n onClose,\n tag,\n tagType,\n type,\n updateTags,\n}) => {\n const { t } = useTranslation();\n const isEdit = type === PANE_TYPES.EDIT;\n const initialValues = isEdit ? tag : INITIAL_TAG_VALUES;\n const inputReference = useRef(null);\n\n const { handleSubmit, isSubmitting } = useTagsForm({\n createTags,\n goToFirstPage,\n isEdit,\n onClose,\n tagType,\n updateTags,\n });\n\n return (\n <Pane {...{ onClose }} initialFocusRef={inputReference} isOpen={!!type}>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {isEdit\n ? t(\"neetoTags.common.editTag\")\n : t(\"neetoTags.common.addNewTag\", SINGULAR)}\n </Typography>\n </Pane.Header>\n <Form\n formikProps={{\n ...TAGS_FORMIK_PROPS,\n initialValues,\n onSubmit: handleSubmit,\n }}\n >\n <Pane.Body>\n <div className=\"neeto-ui-flex neeto-ui-w-full neeto-ui-flex-col neeto-ui-gap-4\">\n <Input\n required\n unlimitedChars\n data-testid=\"tag-name-text-field\"\n label={t(\"neetoTags.common.name\")}\n maxLength={TAG_NAME_MAX_LENGTH}\n name=\"name\"\n ref={inputReference}\n />\n <Textarea\n unlimitedChars\n data-testid=\"tag-description-text-area\"\n label={t(\"neetoTags.common.description\")}\n maxLength={TAG_DESCRIPTION_MAX_LENGTH}\n name=\"description\"\n rows={TAG_DESCRIPTION_ROW_LENGTH}\n />\n <Select\n name=\"style\"\n options={Object.values(TAG_STYLES).map(toLabelAndValue)}\n />\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{\n \"data-testid\": \"neeto-tags-manage-tag-cancel-button\",\n onClick: onClose,\n }}\n submitButtonProps={{\n \"data-testid\": \"neeto-tags-manage-tag-submit-button\",\n }}\n />\n </Pane.Footer>\n </Form>\n </Pane>\n );\n};\n\nexport default ManageTags;\n"],"names":["TAG_NAME_MAX_LENGTH","TAG_DESCRIPTION_ROW_LENGTH","TAG_DESCRIPTION_MAX_LENGTH","TAG_SCHEMA","yup","object","shape","name","string","typeError","t","required","max","length","description","nullable","TAGS_FORMIK_PROPS","validateOnBlur","validateOnChange","validationSchema","DEFAULT_FILTERS","page","DEFAULT_PAGE_INDEX","pageSize","DEFAULT_PAGE_SIZE","sortBy","orderBy","NEETO_FILTERS","key","label","node","type","useTagsForm","_ref","createTags","goToFirstPage","isEdit","onClose","tagType","updateTags","tagModification","useUpdateTag","useCreateTag","tagOperation","_tagModification","mutate","isSubmitting","isPending","handleSubmit","values","_ref2","_values$description","resetForm","tagData","url","payload","tag","mergeLeft","trim","style","value","id","onSuccess","response","_tagOperation$onSucce","callback","onError","ManageTags","_useTranslation","useTranslation","PANE_TYPES","EDIT","initialValues","INITIAL_TAG_VALUES","inputReference","useRef","_useTagsForm","_jsxs","Pane","initialFocusRef","isOpen","children","_jsx","Header","Typography","weight","SINGULAR","Form","formikProps","_objectSpread","onSubmit","Body","className","Input","unlimitedChars","maxLength","ref","Textarea","rows","Select","options","Object","TAG_STYLES","map","toLabelAndValue","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var react = require('react');
5
+ var neetoCist = require('@bigbinary/neeto-cist');
6
+ var constants = require('@bigbinary/neeto-commons-frontend/constants');
7
+ var Pane = require('@bigbinary/neetoui/Pane');
8
+ var Typography = require('@bigbinary/neetoui/Typography');
9
+ var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
10
+ var Form = require('@bigbinary/neetoui/formik/Form');
11
+ var Input = require('@bigbinary/neetoui/formik/Input');
12
+ var Select = require('@bigbinary/neetoui/formik/Select');
13
+ var Textarea = require('@bigbinary/neetoui/formik/Textarea');
14
+ var reactI18next = require('react-i18next');
15
+ var useTagsApi = require('./useTagsApi-DXIKl4Re.js');
16
+ var ramda = require('ramda');
17
+ var i18next = require('i18next');
18
+ var yup = require('yup');
19
+ var jsxRuntime = require('react/jsx-runtime');
20
+
21
+ function _interopNamespaceDefault(e) {
22
+ var n = Object.create(null);
23
+ if (e) {
24
+ Object.keys(e).forEach(function (k) {
25
+ if (k !== 'default') {
26
+ var d = Object.getOwnPropertyDescriptor(e, k);
27
+ Object.defineProperty(n, k, d.get ? d : {
28
+ enumerable: true,
29
+ get: function () { return e[k]; }
30
+ });
31
+ }
32
+ });
33
+ }
34
+ n.default = e;
35
+ return Object.freeze(n);
36
+ }
37
+
38
+ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
39
+
40
+ var TAG_NAME_MAX_LENGTH = 50;
41
+ var TAG_DESCRIPTION_ROW_LENGTH = 3;
42
+ var TAG_DESCRIPTION_MAX_LENGTH = 255;
43
+ var TAG_SCHEMA = yup__namespace.object().shape({
44
+ name: yup__namespace.string().typeError(i18next.t("neetoTags.validation.nameMustBeString")).required(i18next.t("neetoTags.validation.nameRequired")).max(TAG_NAME_MAX_LENGTH, i18next.t("neetoTags.validation.nameMaxLength", {
45
+ length: TAG_NAME_MAX_LENGTH
46
+ })),
47
+ description: yup__namespace.string().typeError(i18next.t("neetoTags.validation.descriptionMustBeString")).nullable().max(TAG_DESCRIPTION_MAX_LENGTH, i18next.t("neetoTags.validation.descriptionMaxLength", {
48
+ length: TAG_DESCRIPTION_MAX_LENGTH
49
+ }))
50
+ });
51
+ var TAGS_FORMIK_PROPS = {
52
+ validateOnBlur: true,
53
+ validateOnChange: true,
54
+ validationSchema: TAG_SCHEMA
55
+ };
56
+ var DEFAULT_FILTERS = {
57
+ page: constants.DEFAULT_PAGE_INDEX,
58
+ pageSize: constants.DEFAULT_PAGE_SIZE,
59
+ sortBy: "",
60
+ orderBy: ""
61
+ };
62
+ var NEETO_FILTERS = [{
63
+ key: "name",
64
+ label: i18next.t("neetoTags.common.name"),
65
+ node: "name",
66
+ type: "text"
67
+ }];
68
+
69
+ var useTagsForm = function useTagsForm(_ref) {
70
+ var createTags = _ref.createTags,
71
+ goToFirstPage = _ref.goToFirstPage,
72
+ isEdit = _ref.isEdit,
73
+ onClose = _ref.onClose,
74
+ tagType = _ref.tagType,
75
+ updateTags = _ref.updateTags;
76
+ var tagModification = isEdit ? useTagsApi.useUpdateTag : useTagsApi.useCreateTag;
77
+ var tagOperation = isEdit ? updateTags : createTags;
78
+ var _tagModification = tagModification(),
79
+ mutate = _tagModification.mutate,
80
+ isSubmitting = _tagModification.isPending;
81
+ var handleSubmit = function handleSubmit(values, _ref2) {
82
+ var _values$description;
83
+ var resetForm = _ref2.resetForm;
84
+ var tagData = {
85
+ url: tagType.url,
86
+ payload: {
87
+ tag: ramda.mergeLeft({
88
+ description: (_values$description = values.description) === null || _values$description === void 0 ? void 0 : _values$description.trim(),
89
+ style: values.style.value
90
+ }, values)
91
+ }
92
+ };
93
+ if (isEdit) {
94
+ tagData.id = values.id;
95
+ }
96
+ mutate(tagData, {
97
+ onSuccess: function onSuccess(response) {
98
+ var _tagOperation$onSucce;
99
+ !isEdit && (goToFirstPage === null || goToFirstPage === void 0 ? void 0 : goToFirstPage());
100
+ tagOperation === null || tagOperation === void 0 || (_tagOperation$onSucce = tagOperation.onSuccess) === null || _tagOperation$onSucce === void 0 || _tagOperation$onSucce.callback(response);
101
+ onClose();
102
+ },
103
+ onError: function onError() {
104
+ resetForm();
105
+ }
106
+ });
107
+ };
108
+ return {
109
+ handleSubmit: handleSubmit,
110
+ isSubmitting: isSubmitting
111
+ };
112
+ };
113
+
114
+ 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; }
115
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
116
+ var ManageTags = function ManageTags(_ref) {
117
+ var createTags = _ref.createTags,
118
+ goToFirstPage = _ref.goToFirstPage,
119
+ onClose = _ref.onClose,
120
+ tag = _ref.tag,
121
+ tagType = _ref.tagType,
122
+ type = _ref.type,
123
+ updateTags = _ref.updateTags;
124
+ var _useTranslation = reactI18next.useTranslation(),
125
+ t = _useTranslation.t;
126
+ var isEdit = type === useTagsApi.PANE_TYPES.EDIT;
127
+ var initialValues = isEdit ? tag : useTagsApi.INITIAL_TAG_VALUES;
128
+ var inputReference = react.useRef(null);
129
+ var _useTagsForm = useTagsForm({
130
+ createTags: createTags,
131
+ goToFirstPage: goToFirstPage,
132
+ isEdit: isEdit,
133
+ onClose: onClose,
134
+ tagType: tagType,
135
+ updateTags: updateTags
136
+ }),
137
+ handleSubmit = _useTagsForm.handleSubmit,
138
+ isSubmitting = _useTagsForm.isSubmitting;
139
+ return /*#__PURE__*/jsxRuntime.jsxs(Pane, {
140
+ onClose: onClose,
141
+ initialFocusRef: inputReference,
142
+ isOpen: !!type,
143
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Header, {
144
+ children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
145
+ style: "h2",
146
+ weight: "semibold",
147
+ children: isEdit ? t("neetoTags.common.editTag") : t("neetoTags.common.addNewTag", constants.SINGULAR)
148
+ })
149
+ }), /*#__PURE__*/jsxRuntime.jsxs(Form, {
150
+ formikProps: _objectSpread(_objectSpread({}, TAGS_FORMIK_PROPS), {}, {
151
+ initialValues: initialValues,
152
+ onSubmit: handleSubmit
153
+ }),
154
+ children: [/*#__PURE__*/jsxRuntime.jsx(Pane.Body, {
155
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
156
+ className: "neeto-ui-flex neeto-ui-w-full neeto-ui-flex-col neeto-ui-gap-4",
157
+ children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
158
+ required: true,
159
+ unlimitedChars: true,
160
+ "data-testid": "tag-name-text-field",
161
+ label: t("neetoTags.common.name"),
162
+ maxLength: TAG_NAME_MAX_LENGTH,
163
+ name: "name",
164
+ ref: inputReference
165
+ }), /*#__PURE__*/jsxRuntime.jsx(Textarea, {
166
+ unlimitedChars: true,
167
+ "data-testid": "tag-description-text-area",
168
+ label: t("neetoTags.common.description"),
169
+ maxLength: TAG_DESCRIPTION_MAX_LENGTH,
170
+ name: "description",
171
+ rows: TAG_DESCRIPTION_ROW_LENGTH
172
+ }), /*#__PURE__*/jsxRuntime.jsx(Select, {
173
+ name: "style",
174
+ options: Object.values(useTagsApi.TAG_STYLES).map(neetoCist.toLabelAndValue)
175
+ })]
176
+ })
177
+ }), /*#__PURE__*/jsxRuntime.jsx(Pane.Footer, {
178
+ children: /*#__PURE__*/jsxRuntime.jsx(ActionBlock, {
179
+ isSubmitting: isSubmitting,
180
+ cancelButtonProps: {
181
+ "data-testid": "neeto-tags-manage-tag-cancel-button",
182
+ onClick: onClose
183
+ },
184
+ submitButtonProps: {
185
+ "data-testid": "neeto-tags-manage-tag-submit-button"
186
+ }
187
+ })
188
+ })]
189
+ })]
190
+ });
191
+ };
192
+
193
+ exports.DEFAULT_FILTERS = DEFAULT_FILTERS;
194
+ exports.ManageTags = ManageTags;
195
+ exports.NEETO_FILTERS = NEETO_FILTERS;
196
+ //# sourceMappingURL=ManageTags-CDe724nr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageTags-CDe724nr.js","sources":["../app/javascript/src/components/Dashboard/constants.js","../app/javascript/src/hooks/useTagsForm.js","../app/javascript/src/components/Dashboard/ManageTags.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE } from \"neetocommons/constants\";\nimport * as yup from \"yup\";\n\nexport const TAG_NAME_MAX_LENGTH = 50;\n\nexport const TAG_DESCRIPTION_ROW_LENGTH = 3;\n\nexport const TAG_DESCRIPTION_MAX_LENGTH = 255;\n\nexport const TAG_SCHEMA = yup.object().shape({\n name: yup\n .string()\n .typeError(t(\"neetoTags.validation.nameMustBeString\"))\n .required(t(\"neetoTags.validation.nameRequired\"))\n .max(\n TAG_NAME_MAX_LENGTH,\n t(\"neetoTags.validation.nameMaxLength\", {\n length: TAG_NAME_MAX_LENGTH,\n })\n ),\n description: yup\n .string()\n .typeError(t(\"neetoTags.validation.descriptionMustBeString\"))\n .nullable()\n .max(\n TAG_DESCRIPTION_MAX_LENGTH,\n t(\"neetoTags.validation.descriptionMaxLength\", {\n length: TAG_DESCRIPTION_MAX_LENGTH,\n })\n ),\n});\n\nexport const TAGS_FORMIK_PROPS = {\n validateOnBlur: true,\n validateOnChange: true,\n validationSchema: TAG_SCHEMA,\n};\n\nexport const DEFAULT_FILTERS = {\n page: DEFAULT_PAGE_INDEX,\n pageSize: DEFAULT_PAGE_SIZE,\n sortBy: \"\",\n orderBy: \"\",\n};\n\nexport const NEETO_FILTERS = [\n {\n key: \"name\",\n label: t(\"neetoTags.common.name\"),\n node: \"name\",\n type: \"text\",\n },\n];\n","import { mergeLeft } from \"ramda\";\n\nimport { useCreateTag, useUpdateTag } from \"./useTagsApi\";\n\nconst useTagsForm = ({\n createTags,\n goToFirstPage,\n isEdit,\n onClose,\n tagType,\n updateTags,\n}) => {\n const tagModification = isEdit ? useUpdateTag : useCreateTag;\n const tagOperation = isEdit ? updateTags : createTags;\n const { mutate, isPending: isSubmitting } = tagModification();\n\n const handleSubmit = (values, { resetForm }) => {\n const tagData = {\n url: tagType.url,\n payload: {\n tag: mergeLeft(\n {\n description: values.description?.trim(),\n style: values.style.value,\n },\n values\n ),\n },\n };\n\n if (isEdit) {\n tagData.id = values.id;\n }\n\n mutate(tagData, {\n onSuccess: response => {\n !isEdit && goToFirstPage?.();\n tagOperation?.onSuccess?.callback(response);\n onClose();\n },\n onError: () => {\n resetForm();\n },\n });\n };\n\n return { handleSubmit, isSubmitting };\n};\n\nexport default useTagsForm;\n","import { useRef } from \"react\";\n\nimport { toLabelAndValue } from \"neetocist\";\nimport { SINGULAR } from \"neetocommons/constants\";\nimport { Pane, Typography } from \"neetoui\";\nimport { ActionBlock, Form, Input, Select, Textarea } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { PANE_TYPES, INITIAL_TAG_VALUES, TAG_STYLES } from \"common/constants\";\nimport useTagsForm from \"src/hooks/useTagsForm\";\n\nimport {\n TAGS_FORMIK_PROPS,\n TAG_DESCRIPTION_MAX_LENGTH,\n TAG_DESCRIPTION_ROW_LENGTH,\n TAG_NAME_MAX_LENGTH,\n} from \"./constants\";\n\nconst ManageTags = ({\n createTags,\n goToFirstPage,\n onClose,\n tag,\n tagType,\n type,\n updateTags,\n}) => {\n const { t } = useTranslation();\n const isEdit = type === PANE_TYPES.EDIT;\n const initialValues = isEdit ? tag : INITIAL_TAG_VALUES;\n const inputReference = useRef(null);\n\n const { handleSubmit, isSubmitting } = useTagsForm({\n createTags,\n goToFirstPage,\n isEdit,\n onClose,\n tagType,\n updateTags,\n });\n\n return (\n <Pane {...{ onClose }} initialFocusRef={inputReference} isOpen={!!type}>\n <Pane.Header>\n <Typography style=\"h2\" weight=\"semibold\">\n {isEdit\n ? t(\"neetoTags.common.editTag\")\n : t(\"neetoTags.common.addNewTag\", SINGULAR)}\n </Typography>\n </Pane.Header>\n <Form\n formikProps={{\n ...TAGS_FORMIK_PROPS,\n initialValues,\n onSubmit: handleSubmit,\n }}\n >\n <Pane.Body>\n <div className=\"neeto-ui-flex neeto-ui-w-full neeto-ui-flex-col neeto-ui-gap-4\">\n <Input\n required\n unlimitedChars\n data-testid=\"tag-name-text-field\"\n label={t(\"neetoTags.common.name\")}\n maxLength={TAG_NAME_MAX_LENGTH}\n name=\"name\"\n ref={inputReference}\n />\n <Textarea\n unlimitedChars\n data-testid=\"tag-description-text-area\"\n label={t(\"neetoTags.common.description\")}\n maxLength={TAG_DESCRIPTION_MAX_LENGTH}\n name=\"description\"\n rows={TAG_DESCRIPTION_ROW_LENGTH}\n />\n <Select\n name=\"style\"\n options={Object.values(TAG_STYLES).map(toLabelAndValue)}\n />\n </div>\n </Pane.Body>\n <Pane.Footer>\n <ActionBlock\n {...{ isSubmitting }}\n cancelButtonProps={{\n \"data-testid\": \"neeto-tags-manage-tag-cancel-button\",\n onClick: onClose,\n }}\n submitButtonProps={{\n \"data-testid\": \"neeto-tags-manage-tag-submit-button\",\n }}\n />\n </Pane.Footer>\n </Form>\n </Pane>\n );\n};\n\nexport default ManageTags;\n"],"names":["TAG_NAME_MAX_LENGTH","TAG_DESCRIPTION_ROW_LENGTH","TAG_DESCRIPTION_MAX_LENGTH","TAG_SCHEMA","yup","object","shape","name","string","typeError","t","required","max","length","description","nullable","TAGS_FORMIK_PROPS","validateOnBlur","validateOnChange","validationSchema","DEFAULT_FILTERS","page","DEFAULT_PAGE_INDEX","pageSize","DEFAULT_PAGE_SIZE","sortBy","orderBy","NEETO_FILTERS","key","label","node","type","useTagsForm","_ref","createTags","goToFirstPage","isEdit","onClose","tagType","updateTags","tagModification","useUpdateTag","useCreateTag","tagOperation","_tagModification","mutate","isSubmitting","isPending","handleSubmit","values","_ref2","_values$description","resetForm","tagData","url","payload","tag","mergeLeft","trim","style","value","id","onSuccess","response","_tagOperation$onSucce","callback","onError","ManageTags","_useTranslation","useTranslation","PANE_TYPES","EDIT","initialValues","INITIAL_TAG_VALUES","inputReference","useRef","_useTagsForm","_jsxs","Pane","initialFocusRef","isOpen","children","_jsx","Header","Typography","weight","SINGULAR","Form","formikProps","_objectSpread","onSubmit","Body","className","Input","unlimitedChars","maxLength","ref","Textarea","rows","Select","options","Object","TAG_STYLES","map","toLabelAndValue","Footer","ActionBlock","cancelButtonProps","onClick","submitButtonProps"],"mappings":"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"}