@bigbinary/neeto-fields-frontend 1.1.3 → 1.1.4

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/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import React, { useContext, useState, useRef, useEffect, useMemo, useLayoutEffect, useCallback, createContext, memo, useReducer } from 'react';
2
2
  import { Switch, TimePicker, DatePicker, Select, Input, Textarea, Typography, Pane, Label, Button as Button$1, Dropdown, NoData, Table, Spinner, Alert } from '@bigbinary/neetoui';
3
- import { toLabelAndValue, isNotEmpty, capitalize as capitalize$1, filterBy, findBy, humanize, countBy, existsBy, noop as noop$2 } from '@bigbinary/neeto-commons-frontend/pure';
3
+ import { toLabelAndValue, isNotEmpty, capitalize as capitalize$1, filterBy, findBy, slugify, humanize, countBy, existsBy, noop as noop$2 } from '@bigbinary/neeto-commons-frontend/pure';
4
4
  import { values, map, isNotNil, isNil, pluck, clone as clone$1, pipe, mergeAll, omit, prop, pick, isEmpty, assoc, any, not, head } from 'ramda';
5
5
  import { useFormikContext, useField, FieldArray } from 'formik';
6
6
  import * as yup from 'yup';
7
- import { Check, Delete, MenuHorizontal, Reorder } from '@bigbinary/neeto-icons';
7
+ import { Check, Info, Delete, MenuHorizontal, Reorder } from '@bigbinary/neeto-icons';
8
8
  import { Button, ActionBlock, Input as Input$1, Select as Select$1, Switch as Switch$1, Form } from '@bigbinary/neetoui/formik';
9
9
  import Container from '@bigbinary/neeto-molecules/Container';
10
10
  import Header from '@bigbinary/neeto-molecules/Header';
@@ -5306,9 +5306,12 @@ var fields = {
5306
5306
  }
5307
5307
  };
5308
5308
  var messages = {
5309
- noFields: "There are no fields to show",
5309
+ noFields: "There are no {{title}} to show",
5310
5310
  confirmDelete: "Are you sure want to delete the field? This action cannot be undone.",
5311
5311
  manageFieldFor: "Manage fields for {{resource}}",
5312
+ manageTitleForResource: "Manage {{title}} for {{resource}}",
5313
+ titleForResource: "{{title}} for {{resource}}",
5314
+ stateTitleForResource: "{{state}} {{title}} for {{resource}}",
5312
5315
  invalidKind: "Invalid kind",
5313
5316
  reorderFields: "Fields are displayed from top to bottom."
5314
5317
  };
@@ -5329,7 +5332,7 @@ var tooltips = {
5329
5332
  reorder: "Fields a are displayed from top to bottom. Re-order them"
5330
5333
  };
5331
5334
  var helpTexts = {
5332
- noData: "Here is how you can use <a>fields.</a>"
5335
+ noData: "Here is how you can use <a>{{title}}.</a>"
5333
5336
  };
5334
5337
  var en = {
5335
5338
  common: common,
@@ -6323,6 +6326,21 @@ var SINGULAR = {
6323
6326
  var PLURAL = {
6324
6327
  count: 2
6325
6328
  };
6329
+ var INFO_ICON_SIZE = 16;
6330
+
6331
+ var TitleWithHelpLink = function TitleWithHelpLink(_ref) {
6332
+ var title = _ref.title,
6333
+ helpUrl = _ref.helpUrl;
6334
+ return /*#__PURE__*/React.createElement("div", {
6335
+ className: "flex items-center gap-x-1"
6336
+ }, title, helpUrl && /*#__PURE__*/React.createElement("a", {
6337
+ href: helpUrl,
6338
+ rel: "noreferrer",
6339
+ target: "_blank"
6340
+ }, /*#__PURE__*/React.createElement(Info, {
6341
+ size: INFO_ICON_SIZE
6342
+ })));
6343
+ };
6326
6344
 
6327
6345
  var fieldUrl = function fieldUrl(fieldId) {
6328
6346
  return buildUrl(FIELD_URL, {
@@ -6764,6 +6782,7 @@ var FieldForm = function FieldForm(_ref) {
6764
6782
  className: "w-full space-y-4"
6765
6783
  }, /*#__PURE__*/React.createElement(Input$1, {
6766
6784
  required: true,
6785
+ "data-cy": "name-text-field",
6767
6786
  disabled: isSystem,
6768
6787
  label: t("labels.fieldName"),
6769
6788
  name: "name",
@@ -6776,12 +6795,15 @@ var FieldForm = function FieldForm(_ref) {
6776
6795
  options: kindSelectOptions,
6777
6796
  onChange: handleKindChange
6778
6797
  }), isAdditionalDataNeeded(chosenKind) && /*#__PURE__*/React.createElement(AdditionalInputs, null), !hideRequiredSwitch && /*#__PURE__*/React.createElement(Label, {
6779
- className: "flex items-center gap-2"
6798
+ className: "flex items-center gap-2",
6799
+ "data-cy": "is-required-switch-container"
6780
6800
  }, /*#__PURE__*/React.createElement(Switch$1, {
6801
+ "data-cy": "is-required-switch",
6781
6802
  name: "isRequired"
6782
6803
  }), /*#__PURE__*/React.createElement(Typography, {
6783
6804
  className: "leading-4",
6784
6805
  component: "span",
6806
+ "data-cy": "is-required-switch-label",
6785
6807
  style: "body2"
6786
6808
  }, t("labels.isRequired"))), children));
6787
6809
  };
@@ -6821,6 +6843,7 @@ var Add = function Add(_ref) {
6821
6843
  });
6822
6844
  };
6823
6845
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
6846
+ "data-cy": "add-pane-header",
6824
6847
  style: "h2"
6825
6848
  }, t("titles.addField"))), /*#__PURE__*/React.createElement(Form, {
6826
6849
  formikProps: {
@@ -6893,6 +6916,7 @@ var Edit = function Edit(_ref) {
6893
6916
  });
6894
6917
  };
6895
6918
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
6919
+ "data-cy": "edit-pane-header",
6896
6920
  style: "h2"
6897
6921
  }, t("titles.editField"))), isLoading ? /*#__PURE__*/React.createElement(PageLoader, null) : /*#__PURE__*/React.createElement(Form, {
6898
6922
  formikProps: {
@@ -6952,17 +6976,20 @@ var buildDefaultColumns = function buildDefaultColumns(_ref) {
6952
6976
  }, /*#__PURE__*/React.createElement(Typography, {
6953
6977
  style: "body2"
6954
6978
  }, name), /*#__PURE__*/React.createElement(Dropdown, {
6955
- buttonProps: {
6956
- className: "flex-shrink-0"
6957
- },
6958
6979
  buttonStyle: "text",
6959
6980
  icon: MenuHorizontal,
6960
- strategy: "fixed"
6981
+ strategy: "fixed",
6982
+ buttonProps: {
6983
+ className: "flex-shrink-0",
6984
+ "data-cy": "neeto-fields-options-dropdown"
6985
+ }
6961
6986
  }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
6987
+ "data-cy": "edit-menu-item-button",
6962
6988
  onClick: function onClick() {
6963
6989
  return onEditClick(field);
6964
6990
  }
6965
6991
  }, t$1("labels.edit")), !field.isSystem && /*#__PURE__*/React.createElement(MenuItem.Button, {
6992
+ "data-cy": "delete-menu-item-button",
6966
6993
  onClick: function onClick() {
6967
6994
  return onDeleteClick(field);
6968
6995
  }
@@ -6989,14 +7016,18 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
6989
7016
  isOwnerBased = _ref2.isOwnerBased,
6990
7017
  selectedMenu = _ref2.selectedMenu,
6991
7018
  handleBlockClick = _ref2.handleBlockClick,
6992
- nameAliases = _ref2.nameAliases;
7019
+ nameAliases = _ref2.nameAliases,
7020
+ title = _ref2.title;
7021
+ title = title.toLocaleLowerCase();
6993
7022
  if (isOwnerBased) {
6994
7023
  return items.map(function (item) {
6995
7024
  return /*#__PURE__*/React.createElement(MenuBar.Item, {
6996
7025
  active: selectedMenu === item.id,
7026
+ "data-cy": "menubar-".concat(slugify(item.name), "-menu-item"),
6997
7027
  key: item.id,
6998
7028
  label: humanize(item.name),
6999
- description: t$1("messages.manageFieldFor", {
7029
+ description: t$1("messages.manageTitleForResource", {
7030
+ title: title,
7000
7031
  resource: humanize(item.name).toLocaleLowerCase()
7001
7032
  }),
7002
7033
  onClick: handleBlockClick({
@@ -7006,11 +7037,14 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
7006
7037
  });
7007
7038
  }
7008
7039
  return items.length > 1 && items.map(function (item) {
7040
+ var label = nameAliases[item] || humanize(item);
7009
7041
  return /*#__PURE__*/React.createElement(MenuBar.Item, {
7010
7042
  active: selectedMenu === item,
7043
+ "data-cy": "neeto-fields-".concat(slugify(label), "-menu-item"),
7011
7044
  key: item,
7012
- label: nameAliases[item] || humanize(item),
7013
- description: t$1("messages.manageFieldFor", {
7045
+ label: label,
7046
+ description: t$1("messages.manageTitleForResource", {
7047
+ title: title,
7014
7048
  resource: humanize(item).toLocaleLowerCase()
7015
7049
  }),
7016
7050
  onClick: handleBlockClick({
@@ -7026,12 +7060,14 @@ var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7026
7060
  inactiveFieldsCount = _ref3.inactiveFieldsCount,
7027
7061
  handleBlockClick = _ref3.handleBlockClick;
7028
7062
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MenuBar.SubTitle, null, /*#__PURE__*/React.createElement(Typography, {
7063
+ "data-cy": "menubar-subtitle",
7029
7064
  style: "h5",
7030
7065
  textTransform: "uppercase",
7031
7066
  weight: "bold"
7032
7067
  }, t$1("titles.filters"))), /*#__PURE__*/React.createElement(MenuBar.Block, {
7033
7068
  active: selectedState === FIELD_STATES.active,
7034
7069
  count: activeFieldsCount,
7070
+ "data-cy": "menubar-active-block",
7035
7071
  label: fieldStatesTaxonomy.active,
7036
7072
  onClick: handleBlockClick({
7037
7073
  state: FIELD_STATES.active
@@ -7039,6 +7075,7 @@ var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7039
7075
  }), /*#__PURE__*/React.createElement(MenuBar.Block, {
7040
7076
  active: selectedState === FIELD_STATES.inactive,
7041
7077
  count: inactiveFieldsCount,
7078
+ "data-cy": "menubar-inactive-block",
7042
7079
  label: fieldStatesTaxonomy.inactive,
7043
7080
  onClick: handleBlockClick({
7044
7081
  state: FIELD_STATES.inactive
@@ -7050,19 +7087,41 @@ var getDashBoardTitle = function getDashBoardTitle(_ref4) {
7050
7087
  var isOwnerBased = _ref4.isOwnerBased,
7051
7088
  owners = _ref4.owners,
7052
7089
  selectedVal = _ref4.selectedVal,
7053
- nameAliases = _ref4.nameAliases;
7054
- return t$1("messages.manageFieldFor", {
7055
- resource: isOwnerBased ? (_findBy = findBy({
7056
- id: selectedVal
7057
- }, owners)) === null || _findBy === void 0 ? void 0 : _findBy.name : nameAliases[selectedVal] || selectedVal
7058
- });
7090
+ nameAliases = _ref4.nameAliases,
7091
+ isSingleResource = _ref4.isSingleResource,
7092
+ showStateFilter = _ref4.showStateFilter,
7093
+ selectedState = _ref4.selectedState,
7094
+ title = _ref4.title;
7095
+ var resource = isOwnerBased ? (_findBy = findBy({
7096
+ id: selectedVal
7097
+ }, owners)) === null || _findBy === void 0 ? void 0 : _findBy.name : nameAliases[selectedVal] || selectedVal;
7098
+ var displayTitle = title;
7099
+ if (showStateFilter && !isSingleResource) {
7100
+ displayTitle = t$1("messages.stateTitleForResource", {
7101
+ state: selectedState,
7102
+ title: title,
7103
+ resource: resource
7104
+ });
7105
+ } else if (showStateFilter && isSingleResource) {
7106
+ displayTitle = "".concat(selectedState, " ").concat(title);
7107
+ } else if (!showStateFilter && !isSingleResource) {
7108
+ displayTitle = t$1("messages.titleForResource", {
7109
+ title: title,
7110
+ resource: resource
7111
+ });
7112
+ }
7113
+ return humanize(displayTitle);
7059
7114
  };
7060
- var renderNoDataHelpText = function renderNoDataHelpText(url) {
7115
+ var renderNoDataHelpText = function renderNoDataHelpText(title, url) {
7061
7116
  return /*#__PURE__*/React.createElement(Trans, {
7062
7117
  i18nKey: "helpTexts.noData",
7118
+ values: {
7119
+ title: title
7120
+ },
7063
7121
  components: {
7064
7122
  a: /*#__PURE__*/React.createElement(Link, {
7065
7123
  className: "neeto-ui-text-primary-600 underline",
7124
+ "data-cy": "no-data-help-text-link",
7066
7125
  target: "_blank",
7067
7126
  to: {
7068
7127
  pathname: url
@@ -7091,9 +7150,12 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
7091
7150
  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; }
7092
7151
  var useFieldsDashboard = function useFieldsDashboard(_ref) {
7093
7152
  var buildColumnData = _ref.buildColumnData,
7094
- showOwnersInMenu = _ref.showOwnersInMenu,
7153
+ isOwnerBased = _ref.isOwnerBased,
7095
7154
  fieldStatesTaxonomy = _ref.fieldStatesTaxonomy,
7096
- nameAliases = _ref.nameAliases;
7155
+ nameAliases = _ref.nameAliases,
7156
+ title = _ref.title,
7157
+ resources = _ref.resources,
7158
+ showStateFilter = _ref.showStateFilter;
7097
7159
  var _useState = useState(false),
7098
7160
  _useState2 = _slicedToArray(_useState, 2),
7099
7161
  isPaneOpen = _useState2[0],
@@ -7118,15 +7180,17 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7118
7180
  _useState12 = _slicedToArray(_useState11, 2),
7119
7181
  searchTerm = _useState12[0],
7120
7182
  setSearchTerm = _useState12[1];
7121
- var _getQueryParams = getQueryParams(),
7122
- resource = _getQueryParams.resource,
7123
- state = _getQueryParams.state;
7124
- var ownerId = showOwnersInMenu ? resource : undefined;
7125
7183
  var debouncedSearchTerm = useDebounce(searchTerm.trim());
7126
7184
  var history = useHistory();
7127
7185
  var _useTranslation = useTranslation(),
7128
7186
  t = _useTranslation.t;
7129
- var _useFetchConfigs = useFetchConfigs(),
7187
+ var _getQueryParams = getQueryParams(),
7188
+ resource = _getQueryParams.resource,
7189
+ state = _getQueryParams.state;
7190
+ var ownerId = isOwnerBased ? resource : undefined;
7191
+ var _useFetchConfigs = useFetchConfigs({
7192
+ enabled: !resources
7193
+ }),
7130
7194
  _useFetchConfigs$data = _useFetchConfigs.data,
7131
7195
  _useFetchConfigs$data2 = _useFetchConfigs$data === void 0 ? {} : _useFetchConfigs$data,
7132
7196
  _useFetchConfigs$data3 = _useFetchConfigs$data2.owners,
@@ -7135,7 +7199,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7135
7199
  resourceTypes = _useFetchConfigs$data4 === void 0 ? [] : _useFetchConfigs$data4,
7136
7200
  isConfigsLoading = _useFetchConfigs.isLoading;
7137
7201
  var fieldParams = {
7138
- resourceType: !showOwnersInMenu ? resource : undefined,
7202
+ resourceType: !isOwnerBased ? resource : undefined,
7139
7203
  ownerId: ownerId,
7140
7204
  state: state || FIELD_STATES.active,
7141
7205
  searchTerm: debouncedSearchTerm
@@ -7211,14 +7275,15 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7211
7275
  state: state
7212
7276
  }, params)));
7213
7277
  };
7278
+ var menuItems = resources || (isOwnerBased ? owners : resourceTypes);
7214
7279
  var handleURLWithDefaultValues = function handleURLWithDefaultValues() {
7215
7280
  var queryParams = {
7216
7281
  resource: resource,
7217
7282
  state: state
7218
7283
  };
7219
7284
  if (!isConfigsLoading && isNil(resource)) {
7220
- var _owners$;
7221
- queryParams.resource = showOwnersInMenu ? (_owners$ = owners[0]) === null || _owners$ === void 0 ? void 0 : _owners$.id : resourceTypes[0];
7285
+ var _menuItems$;
7286
+ queryParams.resource = isOwnerBased ? menuItems === null || menuItems === void 0 ? void 0 : (_menuItems$ = menuItems[0]) === null || _menuItems$ === void 0 ? void 0 : _menuItems$.id : menuItems === null || menuItems === void 0 ? void 0 : menuItems[0];
7222
7287
  }
7223
7288
  if (!isConfigsLoading && isNil(state)) {
7224
7289
  queryParams.state = FIELD_STATES.active;
@@ -7227,7 +7292,6 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7227
7292
  history.replace(buildUrl("", queryParams));
7228
7293
  }
7229
7294
  };
7230
- var menuItems = showOwnersInMenu ? owners : resourceTypes;
7231
7295
  var isScreenLoading = isFieldsLoading || isConfigsLoading;
7232
7296
  var showCountSubheader = count > 0;
7233
7297
  var searchProps = {
@@ -7237,6 +7301,20 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7237
7301
  value: searchTerm,
7238
7302
  placeholder: t("placeholders.searchFields")
7239
7303
  };
7304
+ var isSingleResource = menuItems.length === 1;
7305
+ var isMenuBarNeeded = showStateFilter || !isSingleResource;
7306
+ var headerDisplayTitle = useMemo(function () {
7307
+ return getDashBoardTitle({
7308
+ isOwnerBased: isOwnerBased,
7309
+ owners: menuItems,
7310
+ selectedVal: resource,
7311
+ nameAliases: nameAliases,
7312
+ showStateFilter: showStateFilter,
7313
+ selectedState: state,
7314
+ isSingleResource: isSingleResource,
7315
+ title: title
7316
+ });
7317
+ }, [resource, state, isSingleResource, menuItems]);
7240
7318
  var menuBarFilters = useMemo(function () {
7241
7319
  return renderMenuBarFilters({
7242
7320
  selectedState: state,
@@ -7245,19 +7323,20 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7245
7323
  inactiveFieldsCount: inactiveFieldsCount,
7246
7324
  handleBlockClick: handleBlockClick
7247
7325
  });
7248
- }, [activeFieldsCount, inactiveFieldsCount, state]);
7326
+ }, [activeFieldsCount, inactiveFieldsCount]);
7249
7327
  var menuBarItems = useMemo(function () {
7250
7328
  return renderMenuBarItems({
7251
- isOwnerBased: showOwnersInMenu,
7329
+ isOwnerBased: isOwnerBased,
7252
7330
  items: menuItems,
7253
7331
  selectedMenu: resource,
7254
7332
  handleBlockClick: handleBlockClick,
7255
- nameAliases: nameAliases
7333
+ nameAliases: nameAliases,
7334
+ title: title
7256
7335
  });
7257
7336
  }, [menuItems, resource]);
7258
7337
  useEffect(function () {
7259
7338
  handleURLWithDefaultValues();
7260
- }, [isConfigsLoading]);
7339
+ }, [isConfigsLoading, resources]);
7261
7340
  return {
7262
7341
  isPaneOpen: isPaneOpen,
7263
7342
  setIsPaneOpen: setIsPaneOpen,
@@ -7267,9 +7346,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7267
7346
  isReorderPaneOpen: isReorderPaneOpen,
7268
7347
  setIsReorderPaneOpen: setIsReorderPaneOpen,
7269
7348
  fields: fields,
7270
- owners: owners,
7271
7349
  count: count,
7272
- menuItems: menuItems,
7273
7350
  columnData: columnData,
7274
7351
  selectedField: selectedField,
7275
7352
  selectedState: state,
@@ -7280,6 +7357,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7280
7357
  isDeleting: isDeleting,
7281
7358
  isScreenLoading: isScreenLoading,
7282
7359
  isConfigsLoading: isConfigsLoading,
7360
+ isMenuBarNeeded: isMenuBarNeeded,
7283
7361
  showCountSubheader: showCountSubheader,
7284
7362
  handleDelete: handleDelete,
7285
7363
  handleAlertClose: handleAlertClose,
@@ -7288,7 +7366,8 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7288
7366
  searchProps: searchProps,
7289
7367
  menuBarFilters: menuBarFilters,
7290
7368
  menuBarItems: menuBarItems,
7291
- allFields: allFields
7369
+ allFields: allFields,
7370
+ headerDisplayTitle: headerDisplayTitle
7292
7371
  };
7293
7372
  };
7294
7373
 
@@ -7298,16 +7377,20 @@ var FieldsTable = function FieldsTable(_ref) {
7298
7377
  rowData = _ref.rowData,
7299
7378
  columnData = _ref.columnData,
7300
7379
  setIsPaneOpen = _ref.setIsPaneOpen,
7301
- helpDocUrl = _ref.helpDocUrl;
7380
+ helpDocUrl = _ref.helpDocUrl,
7381
+ title = _ref.title;
7302
7382
  var _useTranslation = useTranslation(),
7303
7383
  t = _useTranslation.t;
7304
7384
  var showNoDataScreen = !isLoading && isEmpty(rowData);
7385
+ title = title.toLocaleLowerCase();
7305
7386
  return /*#__PURE__*/React.createElement(TableWrapper, null, showNoDataScreen ? /*#__PURE__*/React.createElement("div", {
7306
7387
  className: "flex h-full w-full items-center justify-center"
7307
7388
  }, /*#__PURE__*/React.createElement(NoData, _extends({}, helpDocUrl && {
7308
- helpText: renderNoDataHelpText(helpDocUrl)
7389
+ helpText: renderNoDataHelpText(title, helpDocUrl)
7309
7390
  }, {
7310
- title: t("messages.noFields"),
7391
+ title: t("messages.noFields", {
7392
+ title: title
7393
+ }),
7311
7394
  primaryButtonProps: {
7312
7395
  label: t("labels.addField"),
7313
7396
  onClick: function onClick() {
@@ -11582,12 +11665,15 @@ var FieldBlock = function FieldBlock(_ref) {
11582
11665
  ref: setNodeRef,
11583
11666
  style: style
11584
11667
  }, attributes, listeners, {
11585
- className: "neeto-ui-text-gray-800 mb-3 flex items-center space-x-4 font-medium"
11668
+ className: "neeto-ui-text-gray-800 mb-3 flex items-center space-x-4 font-medium",
11669
+ "data-cy": "reorder-field-block"
11586
11670
  }), /*#__PURE__*/React.createElement("div", {
11587
11671
  className: "neeto-ui-bg-gray-100 neeto-ui-text-gray-700 neeto-ui-rounded-sm flex h-6 w-6 flex-shrink-0 items-center justify-center p-1"
11588
11672
  }, index - systemFieldsCount + 1), /*#__PURE__*/React.createElement("div", {
11589
11673
  className: "neeto-ui-border-gray-400 neeto-ui-bg-white neeto-ui-rounded neeto-ui-shadow-xs flex w-96 items-center space-x-4 border border-solid p-3"
11590
- }, /*#__PURE__*/React.createElement(Reorder, null), /*#__PURE__*/React.createElement("div", null, field.name)));
11674
+ }, /*#__PURE__*/React.createElement(Reorder, null), /*#__PURE__*/React.createElement("div", {
11675
+ "data-cy": "reorder-field-block-name"
11676
+ }, field.name)));
11591
11677
  };
11592
11678
  var FieldBlock$1 = /*#__PURE__*/React.memo(FieldBlock);
11593
11679
 
@@ -11638,10 +11724,12 @@ var ReorderPane = function ReorderPane(_ref) {
11638
11724
  isOpen: isOpen,
11639
11725
  onClose: onClose
11640
11726
  }, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
11727
+ "data-cy": "reorder-pane-header",
11641
11728
  style: "h2",
11642
11729
  weight: "semibold"
11643
11730
  }, t("titles.reorderFields"))), /*#__PURE__*/React.createElement(Pane.Body, null, /*#__PURE__*/React.createElement(Typography, {
11644
11731
  className: "mb-3",
11732
+ "data-cy": "reorder-pane-message",
11645
11733
  style: "body2"
11646
11734
  }, t("messages.reorderFields")), /*#__PURE__*/React.createElement("div", {
11647
11735
  className: "flex flex-col items-center"
@@ -11662,11 +11750,13 @@ var ReorderPane = function ReorderPane(_ref) {
11662
11750
  }))))), /*#__PURE__*/React.createElement(Pane.Footer, {
11663
11751
  className: "flex items-center space-x-2"
11664
11752
  }, /*#__PURE__*/React.createElement(Button$1, {
11753
+ "data-cy": "save-changes-button",
11665
11754
  disabled: initialStateRef.current === fields,
11666
11755
  label: t("labels.saveChanges"),
11667
11756
  loading: isSubmitting,
11668
11757
  onClick: handleReorderSave
11669
11758
  }), /*#__PURE__*/React.createElement(Button$1, {
11759
+ "data-cy": "cancel-button",
11670
11760
  label: t("labels.cancel"),
11671
11761
  style: "text",
11672
11762
  onClick: onClose
@@ -11679,7 +11769,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11679
11769
  var _ref$rowData = _ref.rowData,
11680
11770
  rowData = _ref$rowData === void 0 ? [] : _ref$rowData,
11681
11771
  _ref$showOwnersInMenu = _ref.showOwnersInMenu,
11682
- showOwnersInMenu = _ref$showOwnersInMenu === void 0 ? false : _ref$showOwnersInMenu,
11772
+ isOwnerBased = _ref$showOwnersInMenu === void 0 ? false : _ref$showOwnersInMenu,
11683
11773
  _ref$resourceType = _ref.resourceType,
11684
11774
  resourceType = _ref$resourceType === void 0 ? "" : _ref$resourceType,
11685
11775
  _ref$allowedKinds = _ref.allowedKinds,
@@ -11699,14 +11789,20 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11699
11789
  fieldStatesTaxonomy = _ref$fieldStatesTaxon === void 0 ? DEFAULT_FIELD_STATE_TAXONOMY : _ref$fieldStatesTaxon,
11700
11790
  helpDocUrl = _ref.helpDocUrl,
11701
11791
  _ref$nameAliases = _ref.nameAliases,
11702
- nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases;
11792
+ nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases,
11793
+ headerTitle = _ref.headerTitle,
11794
+ resources = _ref.resources;
11703
11795
  var _useTranslation = useTranslation(),
11704
11796
  t = _useTranslation.t;
11797
+ var title = capitalize$1(headerTitle || t("titles.field", PLURAL));
11705
11798
  var _useFieldsDashboard = useFieldsDashboard({
11706
11799
  buildColumnData: buildColumnData,
11707
- showOwnersInMenu: showOwnersInMenu,
11800
+ isOwnerBased: isOwnerBased,
11708
11801
  fieldStatesTaxonomy: fieldStatesTaxonomy,
11709
- nameAliases: nameAliases
11802
+ nameAliases: nameAliases,
11803
+ title: title,
11804
+ resources: resources,
11805
+ showStateFilter: showStateFilter
11710
11806
  }),
11711
11807
  isPaneOpen = _useFieldsDashboard.isPaneOpen,
11712
11808
  setIsPaneOpen = _useFieldsDashboard.setIsPaneOpen,
@@ -11716,9 +11812,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11716
11812
  isReorderPaneOpen = _useFieldsDashboard.isReorderPaneOpen,
11717
11813
  setIsReorderPaneOpen = _useFieldsDashboard.setIsReorderPaneOpen,
11718
11814
  fields = _useFieldsDashboard.fields,
11719
- owners = _useFieldsDashboard.owners,
11720
11815
  count = _useFieldsDashboard.count,
11721
- menuItems = _useFieldsDashboard.menuItems,
11722
11816
  columnData = _useFieldsDashboard.columnData,
11723
11817
  selectedField = _useFieldsDashboard.selectedField,
11724
11818
  selectedState = _useFieldsDashboard.selectedState,
@@ -11728,6 +11822,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11728
11822
  isDeleting = _useFieldsDashboard.isDeleting,
11729
11823
  isScreenLoading = _useFieldsDashboard.isScreenLoading,
11730
11824
  isConfigsLoading = _useFieldsDashboard.isConfigsLoading,
11825
+ isMenuBarNeeded = _useFieldsDashboard.isMenuBarNeeded,
11731
11826
  showCountSubheader = _useFieldsDashboard.showCountSubheader,
11732
11827
  handleDelete = _useFieldsDashboard.handleDelete,
11733
11828
  handleAlertClose = _useFieldsDashboard.handleAlertClose,
@@ -11736,11 +11831,11 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11736
11831
  searchProps = _useFieldsDashboard.searchProps,
11737
11832
  menuBarFilters = _useFieldsDashboard.menuBarFilters,
11738
11833
  menuBarItems = _useFieldsDashboard.menuBarItems,
11739
- allFields = _useFieldsDashboard.allFields;
11740
- var isMenuBarNeeded = showStateFilter || menuItems.length > 1;
11834
+ allFields = _useFieldsDashboard.allFields,
11835
+ headerDisplayTitle = _useFieldsDashboard.headerDisplayTitle;
11741
11836
  return /*#__PURE__*/React.createElement(React.Fragment, null, isMenuBarNeeded && /*#__PURE__*/React.createElement(MenuBar, {
11742
11837
  showMenu: isMenuBarOpen,
11743
- title: t("titles.field", PLURAL)
11838
+ title: title
11744
11839
  }, isConfigsLoading ? /*#__PURE__*/React.createElement("div", {
11745
11840
  className: "flex items-center justify-center"
11746
11841
  }, /*#__PURE__*/React.createElement(Spinner, null)) : menuBarItems, showStateFilter && menuBarFilters), isScreenLoading && isEmpty(fields) ? /*#__PURE__*/React.createElement("div", {
@@ -11753,6 +11848,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11753
11848
  }
11754
11849
  }, {
11755
11850
  actionBlock: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button$1, {
11851
+ "data-cy": "neeto-fields-reorder-button",
11756
11852
  label: t("labels.reorder"),
11757
11853
  style: "secondary",
11758
11854
  disabled: selectedState === FIELD_STATES.inactive || !existsBy({
@@ -11763,45 +11859,46 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11763
11859
  return setIsReorderPaneOpen(true);
11764
11860
  }
11765
11861
  }), /*#__PURE__*/React.createElement(Button$1, {
11862
+ "data-cy": "neeto-fields-add-button",
11766
11863
  label: t("labels.addField"),
11767
11864
  onClick: function onClick() {
11768
11865
  return setIsPaneOpen(true);
11769
11866
  }
11770
11867
  })),
11771
11868
  searchProps: searchProps,
11772
- title: humanize(getDashBoardTitle({
11773
- isOwnerBased: showOwnersInMenu,
11774
- owners: owners,
11775
- selectedVal: selectedMenu,
11776
- nameAliases: nameAliases
11777
- }))
11869
+ title: /*#__PURE__*/React.createElement(TitleWithHelpLink, {
11870
+ helpUrl: helpDocUrl,
11871
+ title: headerDisplayTitle
11872
+ })
11778
11873
  })), showCountSubheader && /*#__PURE__*/React.createElement(SubHeader, {
11779
11874
  leftActionBlock: /*#__PURE__*/React.createElement(Typography, {
11780
11875
  className: "mr-4 font-semibold",
11876
+ "data-cy": "neeto-fields-subheader-text",
11781
11877
  style: "h4"
11782
- }, count, " ", selectedState, " ", t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
11878
+ }, "".concat(count, " "), t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
11783
11879
  }), /*#__PURE__*/React.createElement(FieldsTable, {
11784
11880
  columnData: columnData,
11785
11881
  helpDocUrl: helpDocUrl,
11786
11882
  isLoading: isFieldsFetching || isFieldsLoading,
11787
11883
  rowData: isEmpty(rowData) ? fields : rowData,
11788
11884
  setIsPaneOpen: setIsPaneOpen,
11789
- totalCount: count
11885
+ totalCount: count,
11886
+ title: title
11790
11887
  }), /*#__PURE__*/React.createElement(FieldsPane, {
11791
11888
  additionalValidations: paneProps === null || paneProps === void 0 ? void 0 : paneProps.validations,
11792
11889
  allowedKinds: allowedKinds,
11793
11890
  hideRequiredSwitch: paneProps === null || paneProps === void 0 ? void 0 : paneProps.hideRequiredSwitch,
11794
11891
  initialValues: paneProps === null || paneProps === void 0 ? void 0 : paneProps.initialValues,
11795
11892
  isOpen: isPaneOpen,
11796
- ownerId: showOwnersInMenu ? selectedMenu : "",
11797
- resourceType: showOwnersInMenu ? resourceType : selectedMenu //Currently we support only one resource type when fields are classified based on owners
11893
+ ownerId: isOwnerBased ? selectedMenu : "",
11894
+ resourceType: isOwnerBased ? resourceType : selectedMenu //Currently we support only one resource type when fields are classified based on owners
11798
11895
  ,
11799
11896
  selectedField: selectedField,
11800
11897
  onClose: handleClosePane,
11801
11898
  onMutationSuccess: paneProps === null || paneProps === void 0 ? void 0 : paneProps.onMutationSuccess
11802
11899
  }, paneProps === null || paneProps === void 0 ? void 0 : paneProps.children)), /*#__PURE__*/React.createElement(ReorderPane, {
11803
11900
  isOpen: isReorderPaneOpen,
11804
- ownerId: showOwnersInMenu ? selectedMenu : "",
11901
+ ownerId: isOwnerBased ? selectedMenu : "",
11805
11902
  onClose: handleReorderPaneClose,
11806
11903
  allFields: allFields
11807
11904
  }), /*#__PURE__*/React.createElement(Alert, {