@bigbinary/neeto-tags-frontend 1.5.14 → 1.5.16

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/README.md CHANGED
@@ -1,19 +1,153 @@
1
- # neetoTagsNano
2
1
 
3
- This repo acts as the source of truth for the new nano's structure, configs,
4
- data etc.
2
+ # neeto-tags-nano
3
+ The `neeto-tags-nano` manages tags across neeto applications. The nano exports the `@bigbinary/neeto-tags-frontend` NPM package and `neeto-tags-engine` Rails engine for development.
5
4
 
6
- # Local Development Setup
5
+ # Contents
6
+ 1. [Development with Host Application](#development-with-host-application)
7
+ - [Engine](#engine)
8
+ - [Installation](#installation)
9
+ - [Usage](#usage)
10
+ - [Frontend package](#frontend-package)
11
+ - [Installation](#installation-1)
12
+ - [Components](#components)
13
+ 2. [Instructions for Publishing](#instructions-for-publishing)
7
14
 
8
- 1. Setup
9
- [Instructions](https://github.com/bigbinary/neeto-engineering/tree/main/Local-Development-Setup).
15
+ # Development with Host Application
16
+ ## Engine
17
+ The engine is used to manage tags for any entity across neeto products.
10
18
 
11
- 2. Run `yarn build` to bundle the app.
19
+ ### Installation
20
+ 1. Add this line to your application's Gemfile:
21
+ ```ruby
22
+ source "NEETO_GEM_SERVER_URL" do
23
+ # ..existing gems
12
24
 
13
- 3. Visit http://spinkart.lvh.me:9100 and login with email `oliver@example.com`
14
- and password `welcome`.
25
+ gem 'neeto-tags-engine'
26
+ end
27
+ ```
28
+ 2. And then execute:
29
+ ```ruby
30
+ bundle install
31
+ ```
32
+ 3. Add this line to your application's `config/routes.rb` file:
33
+ ```ruby
34
+ mount NeetoTagsEngine::Engine => "/neeto_tags_engine"
35
+ ```
36
+ 4. Run the following command to copy the migrations from the engine to the host application:
37
+ ```ruby
38
+ bundle exec rails neeto_tags_engine:install:migrations
39
+ ```
40
+ 5. Add the migrations to the database:
41
+ ```ruby
42
+ bundle exec rails db:migrate
43
+ ```
44
+ ### Usage
45
+ You can learn more about the setup and usage here:
46
+ 1. [Models](/docs/engine/models.md)
47
+ 2. [Controllers](/docs/engine/controllers.md)
15
48
 
16
- # Publish instructions
49
+ ## Frontend package
50
+ The package exports two components: `NeetoTags` and `Tags`.
17
51
 
18
- 1. [Engine and package installation](./docs/engine-and-package-installation.md)
19
- 2. [Building and releasing](./docs/building-and-releasing.md)
52
+ The package also exports one hook: `refetchTags`.
53
+
54
+ ### Installation
55
+ 1. `neeto-tags-nano` has a few peer dependencies that are required for the proper functioning of the package. Install all the peer dependencies using the below command:
56
+ ```zsh
57
+ yarn add @bigbinary/neeto-commons-frontend@2.0.35 @bigbinary/neeto-icons@1.9.10 @bigbinary/neetoui@4.3.3 @honeybadger-io/js@5.1.1 @honeybadger-io/react@5.1.2 axios@1.3.3 classnames@2.3.2 formik@2.2.9 js-logger@1.6.1 ramda@0.28.0 react-helmet@6.1.0 react-query@3.39.3 react-router-dom@5.3.4 react-toastify@8.2.0 yup@1.0.0
58
+ ```
59
+
60
+ 2. Now install the latest `neeto-tags-nano` package using the below command:
61
+ ```zsh
62
+ yarn add @bigbinary/neeto-tags-frontend
63
+ ```
64
+
65
+ ### Components
66
+ #### `NeetoTags` ([source code](https://github.com/bigbinary/neeto-tags-nano/blob/e61f7bd2b9cab9fbf29fcfecf57e66131c86e6ef/app/javascript/src/index.jsx))
67
+ This component provides a dashboard to manage tags for an application.
68
+
69
+ ##### Props
70
+ - `config`: Configuration object that includes specifications for tags, display menu, and breadcrumbs.
71
+
72
+ ##### Configuration
73
+ Refer to the [NeetoTags](/docs/frontend/neeto_tags.md) section for detailed information on the available configurations for the `NeetoTags` component.
74
+
75
+ ##### Usage
76
+ ```jsx
77
+ import React from "react";
78
+
79
+ import { NeetoTags } from "@bigbinary/neeto-tags-frontend";
80
+
81
+ const App = () => {
82
+ return <NeetoTags config={config} />;
83
+ };
84
+ export default App;
85
+ ```
86
+
87
+ #### `Tags` ([source code](https://github.com/bigbinary/neeto-tags-nano/blob/e61f7bd2b9cab9fbf29fcfecf57e66131c86e6ef/app/javascript/src/components/Tags/index.jsx#L22))
88
+
89
+ This component provides functionality to assign tags to an entity.
90
+
91
+ ##### Configuration
92
+ Refer to the [Tags](/docs/frontend/tags.md) section for detailed information on the available configurations for the `Tags` component.
93
+
94
+ ##### Usage
95
+ ```jsx
96
+ import React from "react";
97
+
98
+ import { TagsComponent } from "@bigbinary/neeto-tags-frontend";
99
+
100
+ const App = ({
101
+ allTags,
102
+ buttonProps,
103
+ selectProps,
104
+ selectedTags,
105
+ handleTagCreate,
106
+ handleTagRemove,
107
+ handleTagSelect,
108
+ }) => {
109
+ return (
110
+ <TagsComponent
111
+ allTags={allTags}
112
+ buttonProps={buttonProps}
113
+ selectProps={selectProps}
114
+ selectedTags={selectedTags}
115
+ onTagCreate={handleTagCreate}
116
+ onTagDelete={handleTagRemove}
117
+ onTagSelect={handleTagSelect}
118
+ />
119
+ );
120
+ };
121
+
122
+ export default App;
123
+ ```
124
+
125
+ ### Hooks
126
+ #### `refetchTags` ([source code](https://github.com/bigbinary/neeto-tags-nano/blob/e61f7bd2b9cab9fbf29fcfecf57e66131c86e6ef/app/javascript/src/hooks/useTagsApi.js#L39))
127
+ This function refetches the tags list.
128
+
129
+ ##### Usage
130
+ Below is an example usage of the `refetchTags` hook:
131
+
132
+ ```js
133
+ const useBulkUpdateTickets = () =>
134
+ useMutationWithInvalidation(
135
+ ({ payload }) => ticketsApi.bulkUpdateTickets(payload),
136
+ {
137
+ keysToInvalidate: [
138
+ [QUERY_KEYS.TICKETS_LIST],
139
+ [QUERY_KEYS.TICKETS_DEFAULT_VIEWS],
140
+ [QUERY_KEYS.TEAMS],
141
+ ...REPORT_DATA_KEYS_TO_INVALIDATE,
142
+ ],
143
+ onSuccess: () => {
144
+ refetchTags();
145
+ },
146
+ }
147
+ );
148
+ ```
149
+ Used by [neetoDesk](https://github.com/bigbinary/neeto-desk-web/blob/5ba3471deae047bc9d08dca6bf26537194b9a209/app/javascript/src/hooks/reactQuery/tickets/useTicketsApi.js#L83)
150
+
151
+
152
+ # Instructions for Publishing
153
+ Consult the [building and releasing packages](https://neeto-engineering.neetokb.com/articles/building-and-releasing-packages) guide for details on how to publish.
package/dist/index.cjs.js CHANGED
@@ -17,9 +17,9 @@ var reactRouterDom = require('react-router-dom');
17
17
  var Container$1 = require('@bigbinary/neeto-molecules/Container');
18
18
  var reactQuery = require('react-query');
19
19
  var axios = require('axios');
20
+ var yup = require('yup');
20
21
  var NeetoHeader = require('@bigbinary/neeto-molecules/Header');
21
22
  var formik = require('@bigbinary/neetoui/formik');
22
- var yup = require('yup');
23
23
  var SubHeader = require('@bigbinary/neeto-molecules/SubHeader');
24
24
  var TableWrapper = require('@bigbinary/neeto-molecules/TableWrapper');
25
25
  var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
@@ -50,8 +50,8 @@ var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
50
50
  var Metadata__default = /*#__PURE__*/_interopDefaultLegacy(Metadata);
51
51
  var Container__default = /*#__PURE__*/_interopDefaultLegacy(Container$1);
52
52
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
53
- var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
54
53
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
54
+ var NeetoHeader__default = /*#__PURE__*/_interopDefaultLegacy(NeetoHeader);
55
55
  var SubHeader__default = /*#__PURE__*/_interopDefaultLegacy(SubHeader);
56
56
  var TableWrapper__default = /*#__PURE__*/_interopDefaultLegacy(TableWrapper);
57
57
  var PageLoader__default = /*#__PURE__*/_interopDefaultLegacy(PageLoader);
@@ -204,7 +204,8 @@ var Container = function Container(_ref) {
204
204
  if (isMetadataBlock) {
205
205
  return /*#__PURE__*/React__default["default"].createElement(Metadata__default["default"].Block, _extends({}, containerProps, {
206
206
  actionBlock: /*#__PURE__*/React__default["default"].createElement(TitleActionBlock, actionBlockProps),
207
- title: /*#__PURE__*/React__default["default"].createElement(Title, titleComponentProps)
207
+ title: /*#__PURE__*/React__default["default"].createElement(Title, titleComponentProps),
208
+ className: "space-y-4"
208
209
  }), isTagsBodyVisible && children);
209
210
  }
210
211
  return /*#__PURE__*/React__default["default"].createElement("div", _extends({
@@ -257,7 +258,6 @@ var TagsSelector = reactUtils.withT(function (_ref) {
257
258
  onCreateOption: onCreateOption,
258
259
  autoFocus: true,
259
260
  isCreateable: true,
260
- className: "neeto-ui-mt-4",
261
261
  maxLength: 50,
262
262
  options: tags,
263
263
  placeholder: t("neetoTags.placeholder.selectOrCreateTag")
@@ -375,7 +375,6 @@ var Tags$2 = function Tags(_ref) {
375
375
  isTagsBodyVisible: isTagsBodyVisible,
376
376
  titleComponentProps: titleComponentProps
377
377
  }, neetoCist.isNotEmpty(selectedTags) && /*#__PURE__*/React__default["default"].createElement(TagsList, tagsListProps), isTagsDropdownVisible && /*#__PURE__*/React__default["default"].createElement(TagsSelector, tagsSelectorProps), isAddTagsButtonVisible && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, _extends({
378
- className: "neeto-ui-mt-4",
379
378
  disabled: isDisabled,
380
379
  icon: neetoIcons.Plus,
381
380
  label: t("neetoTags.button.addTag", constants.SINGULAR),
@@ -522,13 +521,13 @@ var queryClient = new reactQuery.QueryClient({
522
521
  })
523
522
  });
524
523
 
525
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
526
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
524
+ function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
525
+ function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
527
526
  var useFetchTags = function useFetchTags(params) {
528
527
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
529
528
  return reactQuery.useQuery([TAG_KEY, params], function () {
530
529
  return tagsApi.fetch(params);
531
- }, _objectSpread$3({
530
+ }, _objectSpread$4({
532
531
  staleTime: STALE_TIME,
533
532
  select: function select(response) {
534
533
  return response.data || response;
@@ -577,6 +576,29 @@ var refetchTags = function refetchTags() {
577
576
  return queryClient.invalidateQueries([TAG_KEY]);
578
577
  };
579
578
 
579
+ var TAG_NAME_MAX_LENGTH = 50;
580
+ var TAG_DESCRIPTION_ROW_LENGTH = 3;
581
+ var TAG_DESCRIPTION_MAX_LENGTH = 255;
582
+ var TAG_SCHEMA = yup__namespace.object().shape({
583
+ 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", {
584
+ length: TAG_NAME_MAX_LENGTH
585
+ })),
586
+ description: yup__namespace.string().typeError(i18next.t("neetoTags.validation.descriptionMustBeString")).nullable().max(TAG_DESCRIPTION_MAX_LENGTH, i18next.t("neetoTags.validation.descriptionMaxLength", {
587
+ length: TAG_DESCRIPTION_MAX_LENGTH
588
+ }))
589
+ });
590
+ var TAGS_FORMIK_PROPS = {
591
+ validateOnBlur: true,
592
+ validateOnChange: true,
593
+ validationSchema: TAG_SCHEMA
594
+ };
595
+ var DEFAULT_FILTERS = {
596
+ page: constants.DEFAULT_PAGE_INDEX,
597
+ pageSize: constants.DEFAULT_PAGE_SIZE,
598
+ sortBy: "",
599
+ orderBy: ""
600
+ };
601
+
580
602
  var Header = function Header(_ref) {
581
603
  var breadcrumbs = _ref.breadcrumbs,
582
604
  _ref$tagsMergable = _ref.tagsMergable,
@@ -665,25 +687,8 @@ var useTagsForm = function useTagsForm(_ref) {
665
687
  };
666
688
  };
667
689
 
668
- var TAG_NAME_MAX_LENGTH = 50;
669
- var TAG_DESCRIPTION_ROW_LENGTH = 3;
670
- var TAG_DESCRIPTION_MAX_LENGTH = 255;
671
- var TAG_SCHEMA = yup__namespace.object().shape({
672
- 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", {
673
- length: TAG_NAME_MAX_LENGTH
674
- })),
675
- description: yup__namespace.string().typeError(i18next.t("neetoTags.validation.descriptionMustBeString")).nullable().max(TAG_DESCRIPTION_MAX_LENGTH, i18next.t("neetoTags.validation.descriptionMaxLength", {
676
- length: TAG_DESCRIPTION_MAX_LENGTH
677
- }))
678
- });
679
- var TAGS_FORMIK_PROPS = {
680
- validateOnBlur: true,
681
- validateOnChange: true,
682
- validationSchema: TAG_SCHEMA
683
- };
684
-
685
- function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
686
- function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
690
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
691
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
687
692
  var ManageTags = function ManageTags(_ref) {
688
693
  var createTags = _ref.createTags,
689
694
  goToFirstPage = _ref.goToFirstPage,
@@ -715,7 +720,7 @@ var ManageTags = function ManageTags(_ref) {
715
720
  style: "h2",
716
721
  weight: "semibold"
717
722
  }, isEdit ? t("neetoTags.common.editTag") : t("neetoTags.common.addNewTag", constants.SINGULAR))), /*#__PURE__*/React__default["default"].createElement(formik.Form, {
718
- formikProps: _objectSpread$2(_objectSpread$2({}, TAGS_FORMIK_PROPS), {}, {
723
+ formikProps: _objectSpread$3(_objectSpread$3({}, TAGS_FORMIK_PROPS), {}, {
719
724
  initialValues: initialValues,
720
725
  onSubmit: handleSubmit
721
726
  })
@@ -836,13 +841,13 @@ var renderColumnData = function renderColumnData(handleEdit, handleDelete) {
836
841
  var Table = function Table(_ref) {
837
842
  var _data$tags;
838
843
  var data = _ref.data,
844
+ filters = _ref.filters,
839
845
  handleDelete = _ref.handleDelete,
840
846
  handleEdit = _ref.handleEdit,
847
+ handleOnChange = _ref.handleOnChange,
841
848
  isLoading = _ref.isLoading,
842
849
  onTagRowClick = _ref.onTagRowClick,
843
- page = _ref.page,
844
850
  primaryButtonProps = _ref.primaryButtonProps,
845
- setPage = _ref.setPage,
846
851
  tagType = _ref.tagType;
847
852
  var _useTranslation = reactI18next.useTranslation(),
848
853
  t = _useTranslation.t;
@@ -866,13 +871,12 @@ var Table = function Table(_ref) {
866
871
  type: (tagType === null || tagType === void 0 ? void 0 : tagType.label) || ""
867
872
  }))
868
873
  }), /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], {
869
- hasPagination: (data === null || data === void 0 ? void 0 : data.totalCount) > constants.DEFAULT_PAGE_SIZE
874
+ hasPagination: (data === null || data === void 0 ? void 0 : data.totalCount) > filters.pageSize
870
875
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Table, {
871
876
  fixedHeight: true,
872
877
  allowRowClick: !!onTagRowClick,
873
- currentPageNumber: page,
874
- defaultPageSize: constants.DEFAULT_PAGE_SIZE,
875
- handlePageChange: setPage,
878
+ currentPageNumber: filters.page,
879
+ defaultPageSize: filters.pageSize,
876
880
  loading: isLoading,
877
881
  paginationProps: {
878
882
  showSizeChanger: false
@@ -884,6 +888,7 @@ var Table = function Table(_ref) {
884
888
  },
885
889
  totalCount: data === null || data === void 0 ? void 0 : data.totalCount,
886
890
  columnData: renderColumnData(handleEdit, handleDelete, tagType.columns),
891
+ onChange: handleOnChange,
887
892
  onRowClick: function onRowClick(event, record, rowIndex) {
888
893
  return onTagRowClick({
889
894
  event: event,
@@ -894,6 +899,8 @@ var Table = function Table(_ref) {
894
899
  })));
895
900
  };
896
901
 
902
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
903
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
897
904
  var Dashboard = function Dashboard(_ref) {
898
905
  var breadcrumbs = _ref.breadcrumbs,
899
906
  createTags = _ref.createTags,
@@ -911,27 +918,25 @@ var Dashboard = function Dashboard(_ref) {
911
918
  _useState2 = _slicedToArray(_useState, 2),
912
919
  selectedTag = _useState2[0],
913
920
  setSelectedTag = _useState2[1];
914
- var _useState3 = React.useState(constants.DEFAULT_PAGE_INDEX),
921
+ var _useState3 = React.useState(null),
915
922
  _useState4 = _slicedToArray(_useState3, 2),
916
- page = _useState4[0],
917
- setPage = _useState4[1];
918
- var _useState5 = React.useState(null),
923
+ paneType = _useState4[0],
924
+ setPaneType = _useState4[1];
925
+ var _useState5 = React.useState(false),
919
926
  _useState6 = _slicedToArray(_useState5, 2),
920
- paneType = _useState6[0],
921
- setPaneType = _useState6[1];
922
- var _useState7 = React.useState(false),
927
+ isDeleteAlertOpen = _useState6[0],
928
+ setIsDeleteAlertOpen = _useState6[1];
929
+ var _useState7 = React.useState(DEFAULT_FILTERS),
923
930
  _useState8 = _slicedToArray(_useState7, 2),
924
- isDeleteAlertOpen = _useState8[0],
925
- setIsDeleteAlertOpen = _useState8[1];
931
+ filters = _useState8[0],
932
+ setFilters = _useState8[1];
926
933
  var _useQueryParams = reactUtils.useQueryParams(),
927
934
  _useQueryParams$searc = _useQueryParams.search_term,
928
935
  searchTerm = _useQueryParams$searc === void 0 ? "" : _useQueryParams$searc;
929
- var _useFetchTags = useFetchTags({
936
+ var _useFetchTags = useFetchTags(_objectSpread$2({
930
937
  url: tagType.url,
931
- searchTerm: searchTerm,
932
- pageSize: constants.DEFAULT_PAGE_SIZE,
933
- page: page
934
- }),
938
+ searchTerm: searchTerm
939
+ }, filters)),
935
940
  data = _useFetchTags.data,
936
941
  isLoading = _useFetchTags.isLoading;
937
942
  var _useTranslation = reactI18next.useTranslation(),
@@ -956,6 +961,16 @@ var Dashboard = function Dashboard(_ref) {
956
961
  setIsDeleteAlertOpen(false);
957
962
  setSelectedTag(null);
958
963
  };
964
+ var handleOnChange = function handleOnChange(_ref2, _, _ref3) {
965
+ var page = _ref2.current;
966
+ var sortBy = _ref3.field,
967
+ orderBy = _ref3.order;
968
+ return setFilters(ramda.mergeLeft({
969
+ page: page,
970
+ sortBy: orderBy && sortBy,
971
+ orderBy: orderBy
972
+ }));
973
+ };
959
974
  var _useDeleteTag = useDeleteTag(),
960
975
  mutate = _useDeleteTag.mutate,
961
976
  isDeletingTag = _useDeleteTag.isLoading;
@@ -970,9 +985,9 @@ var Dashboard = function Dashboard(_ref) {
970
985
  var _data$tags, _deleteTags$onSuccess;
971
986
  setIsDeleteAlertOpen(false);
972
987
  if ((data === null || data === void 0 || (_data$tags = data.tags) === null || _data$tags === void 0 ? void 0 : _data$tags.length) === 1) {
973
- setPage(function (page) {
974
- return page - 1;
975
- });
988
+ setFilters(ramda.mergeLeft({
989
+ page: filters.page - 1
990
+ }));
976
991
  }
977
992
  deleteTags === null || deleteTags === void 0 || (_deleteTags$onSuccess = deleteTags.onSuccess) === null || _deleteTags$onSuccess === void 0 ? void 0 : _deleteTags$onSuccess.callback();
978
993
  // @ts-ignore
@@ -983,6 +998,11 @@ var Dashboard = function Dashboard(_ref) {
983
998
  }
984
999
  });
985
1000
  };
1001
+ var resetPage = function resetPage() {
1002
+ return setFilters(ramda.mergeLeft({
1003
+ page: constants.DEFAULT_PAGE_INDEX
1004
+ }));
1005
+ };
986
1006
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Container__default["default"], null, /*#__PURE__*/React__default["default"].createElement(Header, {
987
1007
  breadcrumbs: breadcrumbs,
988
1008
  data: data,
@@ -991,30 +1011,26 @@ var Dashboard = function Dashboard(_ref) {
991
1011
  setSelectedTag: setSelectedTag,
992
1012
  tagsMergable: tagsMergable,
993
1013
  tagsPath: tagsPath,
994
- goToFirstPage: function goToFirstPage() {
995
- return setPage(constants.DEFAULT_PAGE_INDEX);
996
- }
1014
+ goToFirstPage: resetPage
997
1015
  }), displayMenu && /*#__PURE__*/React__default["default"].createElement(Menu$1, {
998
1016
  setTagType: setTagType,
999
1017
  tagType: tagType,
1000
1018
  tagTypes: tagTypes
1001
1019
  }), /*#__PURE__*/React__default["default"].createElement(Table, {
1002
1020
  data: data,
1021
+ filters: filters,
1003
1022
  handleDelete: handleDelete,
1004
1023
  handleEdit: handleEdit,
1024
+ handleOnChange: handleOnChange,
1005
1025
  isLoading: isLoading,
1006
1026
  onTagRowClick: onTagRowClick,
1007
- page: page,
1008
1027
  primaryButtonProps: primaryButtonProps,
1009
- setPage: setPage,
1010
1028
  tagType: tagType
1011
1029
  })), /*#__PURE__*/React__default["default"].createElement(ManageTags, {
1012
1030
  createTags: createTags,
1013
1031
  tagType: tagType,
1014
1032
  updateTags: updateTags,
1015
- goToFirstPage: function goToFirstPage() {
1016
- return setPage(constants.DEFAULT_PAGE_INDEX);
1017
- },
1033
+ goToFirstPage: resetPage,
1018
1034
  tag: selectedTag,
1019
1035
  type: paneType,
1020
1036
  onClose: function onClose() {