@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/README.md CHANGED
@@ -186,6 +186,15 @@ default, but you can customize its behavior by passing optional props.
186
186
  URL will be shown in the `NoData` screen.
187
187
  11. `nameAliases`: This property accepts alias names as key-value pairs to be
188
188
  displayed for the names of resource types in header and menubar.
189
+ 12. `headerTitle`: Specify the header title explicitly. Default is 'fields'
190
+ 13. `resources`: For owner-based field categorization, provide an array of
191
+ objects with `id` and `name` properties for each owner. For resource
192
+ type-based categorization, use an array of strings representing resource
193
+ types.
194
+
195
+ > If no resources are provided, for resource type-based categorization, the
196
+ > menu bar will fetch all resource types. For owner-based categorization, it
197
+ > will fetch and list all owners in the organization.
189
198
 
190
199
  #### Usage:
191
200
 
package/dist/index.cjs.js CHANGED
@@ -5341,9 +5341,12 @@ var fields = {
5341
5341
  }
5342
5342
  };
5343
5343
  var messages = {
5344
- noFields: "There are no fields to show",
5344
+ noFields: "There are no {{title}} to show",
5345
5345
  confirmDelete: "Are you sure want to delete the field? This action cannot be undone.",
5346
5346
  manageFieldFor: "Manage fields for {{resource}}",
5347
+ manageTitleForResource: "Manage {{title}} for {{resource}}",
5348
+ titleForResource: "{{title}} for {{resource}}",
5349
+ stateTitleForResource: "{{state}} {{title}} for {{resource}}",
5347
5350
  invalidKind: "Invalid kind",
5348
5351
  reorderFields: "Fields are displayed from top to bottom."
5349
5352
  };
@@ -5364,7 +5367,7 @@ var tooltips = {
5364
5367
  reorder: "Fields a are displayed from top to bottom. Re-order them"
5365
5368
  };
5366
5369
  var helpTexts = {
5367
- noData: "Here is how you can use <a>fields.</a>"
5370
+ noData: "Here is how you can use <a>{{title}}.</a>"
5368
5371
  };
5369
5372
  var en = {
5370
5373
  common: common,
@@ -6358,6 +6361,21 @@ var SINGULAR = {
6358
6361
  var PLURAL = {
6359
6362
  count: 2
6360
6363
  };
6364
+ var INFO_ICON_SIZE = 16;
6365
+
6366
+ var TitleWithHelpLink = function TitleWithHelpLink(_ref) {
6367
+ var title = _ref.title,
6368
+ helpUrl = _ref.helpUrl;
6369
+ return /*#__PURE__*/React__default["default"].createElement("div", {
6370
+ className: "flex items-center gap-x-1"
6371
+ }, title, helpUrl && /*#__PURE__*/React__default["default"].createElement("a", {
6372
+ href: helpUrl,
6373
+ rel: "noreferrer",
6374
+ target: "_blank"
6375
+ }, /*#__PURE__*/React__default["default"].createElement(neetoIcons.Info, {
6376
+ size: INFO_ICON_SIZE
6377
+ })));
6378
+ };
6361
6379
 
6362
6380
  var fieldUrl = function fieldUrl(fieldId) {
6363
6381
  return utils.buildUrl(FIELD_URL, {
@@ -6799,6 +6817,7 @@ var FieldForm = function FieldForm(_ref) {
6799
6817
  className: "w-full space-y-4"
6800
6818
  }, /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
6801
6819
  required: true,
6820
+ "data-cy": "name-text-field",
6802
6821
  disabled: isSystem,
6803
6822
  label: t("labels.fieldName"),
6804
6823
  name: "name",
@@ -6811,12 +6830,15 @@ var FieldForm = function FieldForm(_ref) {
6811
6830
  options: kindSelectOptions,
6812
6831
  onChange: handleKindChange
6813
6832
  }), isAdditionalDataNeeded(chosenKind) && /*#__PURE__*/React__default["default"].createElement(AdditionalInputs, null), !hideRequiredSwitch && /*#__PURE__*/React__default["default"].createElement(neetoui.Label, {
6814
- className: "flex items-center gap-2"
6833
+ className: "flex items-center gap-2",
6834
+ "data-cy": "is-required-switch-container"
6815
6835
  }, /*#__PURE__*/React__default["default"].createElement(formik$1.Switch, {
6836
+ "data-cy": "is-required-switch",
6816
6837
  name: "isRequired"
6817
6838
  }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6818
6839
  className: "leading-4",
6819
6840
  component: "span",
6841
+ "data-cy": "is-required-switch-label",
6820
6842
  style: "body2"
6821
6843
  }, t("labels.isRequired"))), children));
6822
6844
  };
@@ -6856,6 +6878,7 @@ var Add = function Add(_ref) {
6856
6878
  });
6857
6879
  };
6858
6880
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6881
+ "data-cy": "add-pane-header",
6859
6882
  style: "h2"
6860
6883
  }, t("titles.addField"))), /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
6861
6884
  formikProps: {
@@ -6928,6 +6951,7 @@ var Edit = function Edit(_ref) {
6928
6951
  });
6929
6952
  };
6930
6953
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6954
+ "data-cy": "edit-pane-header",
6931
6955
  style: "h2"
6932
6956
  }, t("titles.editField"))), isLoading ? /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null) : /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
6933
6957
  formikProps: {
@@ -6987,17 +7011,20 @@ var buildDefaultColumns = function buildDefaultColumns(_ref) {
6987
7011
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
6988
7012
  style: "body2"
6989
7013
  }, name), /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
6990
- buttonProps: {
6991
- className: "flex-shrink-0"
6992
- },
6993
7014
  buttonStyle: "text",
6994
7015
  icon: neetoIcons.MenuHorizontal,
6995
- strategy: "fixed"
7016
+ strategy: "fixed",
7017
+ buttonProps: {
7018
+ className: "flex-shrink-0",
7019
+ "data-cy": "neeto-fields-options-dropdown"
7020
+ }
6996
7021
  }, /*#__PURE__*/React__default["default"].createElement(Menu, null, /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
7022
+ "data-cy": "edit-menu-item-button",
6997
7023
  onClick: function onClick() {
6998
7024
  return onEditClick(field);
6999
7025
  }
7000
7026
  }, t$1("labels.edit")), !field.isSystem && /*#__PURE__*/React__default["default"].createElement(MenuItem.Button, {
7027
+ "data-cy": "delete-menu-item-button",
7001
7028
  onClick: function onClick() {
7002
7029
  return onDeleteClick(field);
7003
7030
  }
@@ -7024,14 +7051,18 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
7024
7051
  isOwnerBased = _ref2.isOwnerBased,
7025
7052
  selectedMenu = _ref2.selectedMenu,
7026
7053
  handleBlockClick = _ref2.handleBlockClick,
7027
- nameAliases = _ref2.nameAliases;
7054
+ nameAliases = _ref2.nameAliases,
7055
+ title = _ref2.title;
7056
+ title = title.toLocaleLowerCase();
7028
7057
  if (isOwnerBased) {
7029
7058
  return items.map(function (item) {
7030
7059
  return /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Item, {
7031
7060
  active: selectedMenu === item.id,
7061
+ "data-cy": "menubar-".concat(pure.slugify(item.name), "-menu-item"),
7032
7062
  key: item.id,
7033
7063
  label: pure.humanize(item.name),
7034
- description: t$1("messages.manageFieldFor", {
7064
+ description: t$1("messages.manageTitleForResource", {
7065
+ title: title,
7035
7066
  resource: pure.humanize(item.name).toLocaleLowerCase()
7036
7067
  }),
7037
7068
  onClick: handleBlockClick({
@@ -7041,11 +7072,14 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
7041
7072
  });
7042
7073
  }
7043
7074
  return items.length > 1 && items.map(function (item) {
7075
+ var label = nameAliases[item] || pure.humanize(item);
7044
7076
  return /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Item, {
7045
7077
  active: selectedMenu === item,
7078
+ "data-cy": "neeto-fields-".concat(pure.slugify(label), "-menu-item"),
7046
7079
  key: item,
7047
- label: nameAliases[item] || pure.humanize(item),
7048
- description: t$1("messages.manageFieldFor", {
7080
+ label: label,
7081
+ description: t$1("messages.manageTitleForResource", {
7082
+ title: title,
7049
7083
  resource: pure.humanize(item).toLocaleLowerCase()
7050
7084
  }),
7051
7085
  onClick: handleBlockClick({
@@ -7061,12 +7095,14 @@ var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7061
7095
  inactiveFieldsCount = _ref3.inactiveFieldsCount,
7062
7096
  handleBlockClick = _ref3.handleBlockClick;
7063
7097
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].SubTitle, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
7098
+ "data-cy": "menubar-subtitle",
7064
7099
  style: "h5",
7065
7100
  textTransform: "uppercase",
7066
7101
  weight: "bold"
7067
7102
  }, t$1("titles.filters"))), /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Block, {
7068
7103
  active: selectedState === FIELD_STATES.active,
7069
7104
  count: activeFieldsCount,
7105
+ "data-cy": "menubar-active-block",
7070
7106
  label: fieldStatesTaxonomy.active,
7071
7107
  onClick: handleBlockClick({
7072
7108
  state: FIELD_STATES.active
@@ -7074,6 +7110,7 @@ var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7074
7110
  }), /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"].Block, {
7075
7111
  active: selectedState === FIELD_STATES.inactive,
7076
7112
  count: inactiveFieldsCount,
7113
+ "data-cy": "menubar-inactive-block",
7077
7114
  label: fieldStatesTaxonomy.inactive,
7078
7115
  onClick: handleBlockClick({
7079
7116
  state: FIELD_STATES.inactive
@@ -7085,19 +7122,41 @@ var getDashBoardTitle = function getDashBoardTitle(_ref4) {
7085
7122
  var isOwnerBased = _ref4.isOwnerBased,
7086
7123
  owners = _ref4.owners,
7087
7124
  selectedVal = _ref4.selectedVal,
7088
- nameAliases = _ref4.nameAliases;
7089
- return t$1("messages.manageFieldFor", {
7090
- resource: isOwnerBased ? (_findBy = pure.findBy({
7091
- id: selectedVal
7092
- }, owners)) === null || _findBy === void 0 ? void 0 : _findBy.name : nameAliases[selectedVal] || selectedVal
7093
- });
7125
+ nameAliases = _ref4.nameAliases,
7126
+ isSingleResource = _ref4.isSingleResource,
7127
+ showStateFilter = _ref4.showStateFilter,
7128
+ selectedState = _ref4.selectedState,
7129
+ title = _ref4.title;
7130
+ var resource = isOwnerBased ? (_findBy = pure.findBy({
7131
+ id: selectedVal
7132
+ }, owners)) === null || _findBy === void 0 ? void 0 : _findBy.name : nameAliases[selectedVal] || selectedVal;
7133
+ var displayTitle = title;
7134
+ if (showStateFilter && !isSingleResource) {
7135
+ displayTitle = t$1("messages.stateTitleForResource", {
7136
+ state: selectedState,
7137
+ title: title,
7138
+ resource: resource
7139
+ });
7140
+ } else if (showStateFilter && isSingleResource) {
7141
+ displayTitle = "".concat(selectedState, " ").concat(title);
7142
+ } else if (!showStateFilter && !isSingleResource) {
7143
+ displayTitle = t$1("messages.titleForResource", {
7144
+ title: title,
7145
+ resource: resource
7146
+ });
7147
+ }
7148
+ return pure.humanize(displayTitle);
7094
7149
  };
7095
- var renderNoDataHelpText = function renderNoDataHelpText(url) {
7150
+ var renderNoDataHelpText = function renderNoDataHelpText(title, url) {
7096
7151
  return /*#__PURE__*/React__default["default"].createElement(Trans, {
7097
7152
  i18nKey: "helpTexts.noData",
7153
+ values: {
7154
+ title: title
7155
+ },
7098
7156
  components: {
7099
7157
  a: /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Link, {
7100
7158
  className: "neeto-ui-text-primary-600 underline",
7159
+ "data-cy": "no-data-help-text-link",
7101
7160
  target: "_blank",
7102
7161
  to: {
7103
7162
  pathname: url
@@ -7126,9 +7185,12 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
7126
7185
  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; }
7127
7186
  var useFieldsDashboard = function useFieldsDashboard(_ref) {
7128
7187
  var buildColumnData = _ref.buildColumnData,
7129
- showOwnersInMenu = _ref.showOwnersInMenu,
7188
+ isOwnerBased = _ref.isOwnerBased,
7130
7189
  fieldStatesTaxonomy = _ref.fieldStatesTaxonomy,
7131
- nameAliases = _ref.nameAliases;
7190
+ nameAliases = _ref.nameAliases,
7191
+ title = _ref.title,
7192
+ resources = _ref.resources,
7193
+ showStateFilter = _ref.showStateFilter;
7132
7194
  var _useState = React.useState(false),
7133
7195
  _useState2 = _slicedToArray(_useState, 2),
7134
7196
  isPaneOpen = _useState2[0],
@@ -7153,15 +7215,17 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7153
7215
  _useState12 = _slicedToArray(_useState11, 2),
7154
7216
  searchTerm = _useState12[0],
7155
7217
  setSearchTerm = _useState12[1];
7156
- var _getQueryParams = utils.getQueryParams(),
7157
- resource = _getQueryParams.resource,
7158
- state = _getQueryParams.state;
7159
- var ownerId = showOwnersInMenu ? resource : undefined;
7160
7218
  var debouncedSearchTerm = reactUtils.useDebounce(searchTerm.trim());
7161
7219
  var history = reactRouterDom.useHistory();
7162
7220
  var _useTranslation = useTranslation(),
7163
7221
  t = _useTranslation.t;
7164
- var _useFetchConfigs = useFetchConfigs(),
7222
+ var _getQueryParams = utils.getQueryParams(),
7223
+ resource = _getQueryParams.resource,
7224
+ state = _getQueryParams.state;
7225
+ var ownerId = isOwnerBased ? resource : undefined;
7226
+ var _useFetchConfigs = useFetchConfigs({
7227
+ enabled: !resources
7228
+ }),
7165
7229
  _useFetchConfigs$data = _useFetchConfigs.data,
7166
7230
  _useFetchConfigs$data2 = _useFetchConfigs$data === void 0 ? {} : _useFetchConfigs$data,
7167
7231
  _useFetchConfigs$data3 = _useFetchConfigs$data2.owners,
@@ -7170,7 +7234,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7170
7234
  resourceTypes = _useFetchConfigs$data4 === void 0 ? [] : _useFetchConfigs$data4,
7171
7235
  isConfigsLoading = _useFetchConfigs.isLoading;
7172
7236
  var fieldParams = {
7173
- resourceType: !showOwnersInMenu ? resource : undefined,
7237
+ resourceType: !isOwnerBased ? resource : undefined,
7174
7238
  ownerId: ownerId,
7175
7239
  state: state || FIELD_STATES.active,
7176
7240
  searchTerm: debouncedSearchTerm
@@ -7246,14 +7310,15 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7246
7310
  state: state
7247
7311
  }, params)));
7248
7312
  };
7313
+ var menuItems = resources || (isOwnerBased ? owners : resourceTypes);
7249
7314
  var handleURLWithDefaultValues = function handleURLWithDefaultValues() {
7250
7315
  var queryParams = {
7251
7316
  resource: resource,
7252
7317
  state: state
7253
7318
  };
7254
7319
  if (!isConfigsLoading && ramda.isNil(resource)) {
7255
- var _owners$;
7256
- queryParams.resource = showOwnersInMenu ? (_owners$ = owners[0]) === null || _owners$ === void 0 ? void 0 : _owners$.id : resourceTypes[0];
7320
+ var _menuItems$;
7321
+ 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];
7257
7322
  }
7258
7323
  if (!isConfigsLoading && ramda.isNil(state)) {
7259
7324
  queryParams.state = FIELD_STATES.active;
@@ -7262,7 +7327,6 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7262
7327
  history.replace(utils.buildUrl("", queryParams));
7263
7328
  }
7264
7329
  };
7265
- var menuItems = showOwnersInMenu ? owners : resourceTypes;
7266
7330
  var isScreenLoading = isFieldsLoading || isConfigsLoading;
7267
7331
  var showCountSubheader = count > 0;
7268
7332
  var searchProps = {
@@ -7272,6 +7336,20 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7272
7336
  value: searchTerm,
7273
7337
  placeholder: t("placeholders.searchFields")
7274
7338
  };
7339
+ var isSingleResource = menuItems.length === 1;
7340
+ var isMenuBarNeeded = showStateFilter || !isSingleResource;
7341
+ var headerDisplayTitle = React.useMemo(function () {
7342
+ return getDashBoardTitle({
7343
+ isOwnerBased: isOwnerBased,
7344
+ owners: menuItems,
7345
+ selectedVal: resource,
7346
+ nameAliases: nameAliases,
7347
+ showStateFilter: showStateFilter,
7348
+ selectedState: state,
7349
+ isSingleResource: isSingleResource,
7350
+ title: title
7351
+ });
7352
+ }, [resource, state, isSingleResource, menuItems]);
7275
7353
  var menuBarFilters = React.useMemo(function () {
7276
7354
  return renderMenuBarFilters({
7277
7355
  selectedState: state,
@@ -7280,19 +7358,20 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7280
7358
  inactiveFieldsCount: inactiveFieldsCount,
7281
7359
  handleBlockClick: handleBlockClick
7282
7360
  });
7283
- }, [activeFieldsCount, inactiveFieldsCount, state]);
7361
+ }, [activeFieldsCount, inactiveFieldsCount]);
7284
7362
  var menuBarItems = React.useMemo(function () {
7285
7363
  return renderMenuBarItems({
7286
- isOwnerBased: showOwnersInMenu,
7364
+ isOwnerBased: isOwnerBased,
7287
7365
  items: menuItems,
7288
7366
  selectedMenu: resource,
7289
7367
  handleBlockClick: handleBlockClick,
7290
- nameAliases: nameAliases
7368
+ nameAliases: nameAliases,
7369
+ title: title
7291
7370
  });
7292
7371
  }, [menuItems, resource]);
7293
7372
  React.useEffect(function () {
7294
7373
  handleURLWithDefaultValues();
7295
- }, [isConfigsLoading]);
7374
+ }, [isConfigsLoading, resources]);
7296
7375
  return {
7297
7376
  isPaneOpen: isPaneOpen,
7298
7377
  setIsPaneOpen: setIsPaneOpen,
@@ -7302,9 +7381,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7302
7381
  isReorderPaneOpen: isReorderPaneOpen,
7303
7382
  setIsReorderPaneOpen: setIsReorderPaneOpen,
7304
7383
  fields: fields,
7305
- owners: owners,
7306
7384
  count: count,
7307
- menuItems: menuItems,
7308
7385
  columnData: columnData,
7309
7386
  selectedField: selectedField,
7310
7387
  selectedState: state,
@@ -7315,6 +7392,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7315
7392
  isDeleting: isDeleting,
7316
7393
  isScreenLoading: isScreenLoading,
7317
7394
  isConfigsLoading: isConfigsLoading,
7395
+ isMenuBarNeeded: isMenuBarNeeded,
7318
7396
  showCountSubheader: showCountSubheader,
7319
7397
  handleDelete: handleDelete,
7320
7398
  handleAlertClose: handleAlertClose,
@@ -7323,7 +7401,8 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7323
7401
  searchProps: searchProps,
7324
7402
  menuBarFilters: menuBarFilters,
7325
7403
  menuBarItems: menuBarItems,
7326
- allFields: allFields
7404
+ allFields: allFields,
7405
+ headerDisplayTitle: headerDisplayTitle
7327
7406
  };
7328
7407
  };
7329
7408
 
@@ -7333,16 +7412,20 @@ var FieldsTable = function FieldsTable(_ref) {
7333
7412
  rowData = _ref.rowData,
7334
7413
  columnData = _ref.columnData,
7335
7414
  setIsPaneOpen = _ref.setIsPaneOpen,
7336
- helpDocUrl = _ref.helpDocUrl;
7415
+ helpDocUrl = _ref.helpDocUrl,
7416
+ title = _ref.title;
7337
7417
  var _useTranslation = useTranslation(),
7338
7418
  t = _useTranslation.t;
7339
7419
  var showNoDataScreen = !isLoading && ramda.isEmpty(rowData);
7420
+ title = title.toLocaleLowerCase();
7340
7421
  return /*#__PURE__*/React__default["default"].createElement(TableWrapper__default["default"], null, showNoDataScreen ? /*#__PURE__*/React__default["default"].createElement("div", {
7341
7422
  className: "flex h-full w-full items-center justify-center"
7342
7423
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.NoData, _extends({}, helpDocUrl && {
7343
- helpText: renderNoDataHelpText(helpDocUrl)
7424
+ helpText: renderNoDataHelpText(title, helpDocUrl)
7344
7425
  }, {
7345
- title: t("messages.noFields"),
7426
+ title: t("messages.noFields", {
7427
+ title: title
7428
+ }),
7346
7429
  primaryButtonProps: {
7347
7430
  label: t("labels.addField"),
7348
7431
  onClick: function onClick() {
@@ -11617,12 +11700,15 @@ var FieldBlock = function FieldBlock(_ref) {
11617
11700
  ref: setNodeRef,
11618
11701
  style: style
11619
11702
  }, attributes, listeners, {
11620
- className: "neeto-ui-text-gray-800 mb-3 flex items-center space-x-4 font-medium"
11703
+ className: "neeto-ui-text-gray-800 mb-3 flex items-center space-x-4 font-medium",
11704
+ "data-cy": "reorder-field-block"
11621
11705
  }), /*#__PURE__*/React__default["default"].createElement("div", {
11622
11706
  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"
11623
11707
  }, index - systemFieldsCount + 1), /*#__PURE__*/React__default["default"].createElement("div", {
11624
11708
  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"
11625
- }, /*#__PURE__*/React__default["default"].createElement(neetoIcons.Reorder, null), /*#__PURE__*/React__default["default"].createElement("div", null, field.name)));
11709
+ }, /*#__PURE__*/React__default["default"].createElement(neetoIcons.Reorder, null), /*#__PURE__*/React__default["default"].createElement("div", {
11710
+ "data-cy": "reorder-field-block-name"
11711
+ }, field.name)));
11626
11712
  };
11627
11713
  var FieldBlock$1 = /*#__PURE__*/React__default["default"].memo(FieldBlock);
11628
11714
 
@@ -11673,10 +11759,12 @@ var ReorderPane = function ReorderPane(_ref) {
11673
11759
  isOpen: isOpen,
11674
11760
  onClose: onClose
11675
11761
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Header, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
11762
+ "data-cy": "reorder-pane-header",
11676
11763
  style: "h2",
11677
11764
  weight: "semibold"
11678
11765
  }, t("titles.reorderFields"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Body, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
11679
11766
  className: "mb-3",
11767
+ "data-cy": "reorder-pane-message",
11680
11768
  style: "body2"
11681
11769
  }, t("messages.reorderFields")), /*#__PURE__*/React__default["default"].createElement("div", {
11682
11770
  className: "flex flex-col items-center"
@@ -11697,11 +11785,13 @@ var ReorderPane = function ReorderPane(_ref) {
11697
11785
  }))))), /*#__PURE__*/React__default["default"].createElement(neetoui.Pane.Footer, {
11698
11786
  className: "flex items-center space-x-2"
11699
11787
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
11788
+ "data-cy": "save-changes-button",
11700
11789
  disabled: initialStateRef.current === fields,
11701
11790
  label: t("labels.saveChanges"),
11702
11791
  loading: isSubmitting,
11703
11792
  onClick: handleReorderSave
11704
11793
  }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
11794
+ "data-cy": "cancel-button",
11705
11795
  label: t("labels.cancel"),
11706
11796
  style: "text",
11707
11797
  onClick: onClose
@@ -11714,7 +11804,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11714
11804
  var _ref$rowData = _ref.rowData,
11715
11805
  rowData = _ref$rowData === void 0 ? [] : _ref$rowData,
11716
11806
  _ref$showOwnersInMenu = _ref.showOwnersInMenu,
11717
- showOwnersInMenu = _ref$showOwnersInMenu === void 0 ? false : _ref$showOwnersInMenu,
11807
+ isOwnerBased = _ref$showOwnersInMenu === void 0 ? false : _ref$showOwnersInMenu,
11718
11808
  _ref$resourceType = _ref.resourceType,
11719
11809
  resourceType = _ref$resourceType === void 0 ? "" : _ref$resourceType,
11720
11810
  _ref$allowedKinds = _ref.allowedKinds,
@@ -11734,14 +11824,20 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11734
11824
  fieldStatesTaxonomy = _ref$fieldStatesTaxon === void 0 ? DEFAULT_FIELD_STATE_TAXONOMY : _ref$fieldStatesTaxon,
11735
11825
  helpDocUrl = _ref.helpDocUrl,
11736
11826
  _ref$nameAliases = _ref.nameAliases,
11737
- nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases;
11827
+ nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases,
11828
+ headerTitle = _ref.headerTitle,
11829
+ resources = _ref.resources;
11738
11830
  var _useTranslation = useTranslation(),
11739
11831
  t = _useTranslation.t;
11832
+ var title = pure.capitalize(headerTitle || t("titles.field", PLURAL));
11740
11833
  var _useFieldsDashboard = useFieldsDashboard({
11741
11834
  buildColumnData: buildColumnData,
11742
- showOwnersInMenu: showOwnersInMenu,
11835
+ isOwnerBased: isOwnerBased,
11743
11836
  fieldStatesTaxonomy: fieldStatesTaxonomy,
11744
- nameAliases: nameAliases
11837
+ nameAliases: nameAliases,
11838
+ title: title,
11839
+ resources: resources,
11840
+ showStateFilter: showStateFilter
11745
11841
  }),
11746
11842
  isPaneOpen = _useFieldsDashboard.isPaneOpen,
11747
11843
  setIsPaneOpen = _useFieldsDashboard.setIsPaneOpen,
@@ -11751,9 +11847,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11751
11847
  isReorderPaneOpen = _useFieldsDashboard.isReorderPaneOpen,
11752
11848
  setIsReorderPaneOpen = _useFieldsDashboard.setIsReorderPaneOpen,
11753
11849
  fields = _useFieldsDashboard.fields,
11754
- owners = _useFieldsDashboard.owners,
11755
11850
  count = _useFieldsDashboard.count,
11756
- menuItems = _useFieldsDashboard.menuItems,
11757
11851
  columnData = _useFieldsDashboard.columnData,
11758
11852
  selectedField = _useFieldsDashboard.selectedField,
11759
11853
  selectedState = _useFieldsDashboard.selectedState,
@@ -11763,6 +11857,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11763
11857
  isDeleting = _useFieldsDashboard.isDeleting,
11764
11858
  isScreenLoading = _useFieldsDashboard.isScreenLoading,
11765
11859
  isConfigsLoading = _useFieldsDashboard.isConfigsLoading,
11860
+ isMenuBarNeeded = _useFieldsDashboard.isMenuBarNeeded,
11766
11861
  showCountSubheader = _useFieldsDashboard.showCountSubheader,
11767
11862
  handleDelete = _useFieldsDashboard.handleDelete,
11768
11863
  handleAlertClose = _useFieldsDashboard.handleAlertClose,
@@ -11771,11 +11866,11 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11771
11866
  searchProps = _useFieldsDashboard.searchProps,
11772
11867
  menuBarFilters = _useFieldsDashboard.menuBarFilters,
11773
11868
  menuBarItems = _useFieldsDashboard.menuBarItems,
11774
- allFields = _useFieldsDashboard.allFields;
11775
- var isMenuBarNeeded = showStateFilter || menuItems.length > 1;
11869
+ allFields = _useFieldsDashboard.allFields,
11870
+ headerDisplayTitle = _useFieldsDashboard.headerDisplayTitle;
11776
11871
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isMenuBarNeeded && /*#__PURE__*/React__default["default"].createElement(MenuBar__default["default"], {
11777
11872
  showMenu: isMenuBarOpen,
11778
- title: t("titles.field", PLURAL)
11873
+ title: title
11779
11874
  }, isConfigsLoading ? /*#__PURE__*/React__default["default"].createElement("div", {
11780
11875
  className: "flex items-center justify-center"
11781
11876
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null)) : menuBarItems, showStateFilter && menuBarFilters), isScreenLoading && ramda.isEmpty(fields) ? /*#__PURE__*/React__default["default"].createElement("div", {
@@ -11788,6 +11883,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11788
11883
  }
11789
11884
  }, {
11790
11885
  actionBlock: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
11886
+ "data-cy": "neeto-fields-reorder-button",
11791
11887
  label: t("labels.reorder"),
11792
11888
  style: "secondary",
11793
11889
  disabled: selectedState === FIELD_STATES.inactive || !pure.existsBy({
@@ -11798,45 +11894,46 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11798
11894
  return setIsReorderPaneOpen(true);
11799
11895
  }
11800
11896
  }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
11897
+ "data-cy": "neeto-fields-add-button",
11801
11898
  label: t("labels.addField"),
11802
11899
  onClick: function onClick() {
11803
11900
  return setIsPaneOpen(true);
11804
11901
  }
11805
11902
  })),
11806
11903
  searchProps: searchProps,
11807
- title: pure.humanize(getDashBoardTitle({
11808
- isOwnerBased: showOwnersInMenu,
11809
- owners: owners,
11810
- selectedVal: selectedMenu,
11811
- nameAliases: nameAliases
11812
- }))
11904
+ title: /*#__PURE__*/React__default["default"].createElement(TitleWithHelpLink, {
11905
+ helpUrl: helpDocUrl,
11906
+ title: headerDisplayTitle
11907
+ })
11813
11908
  })), showCountSubheader && /*#__PURE__*/React__default["default"].createElement(SubHeader__default["default"], {
11814
11909
  leftActionBlock: /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
11815
11910
  className: "mr-4 font-semibold",
11911
+ "data-cy": "neeto-fields-subheader-text",
11816
11912
  style: "h4"
11817
- }, count, " ", selectedState, " ", t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
11913
+ }, "".concat(count, " "), t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
11818
11914
  }), /*#__PURE__*/React__default["default"].createElement(FieldsTable, {
11819
11915
  columnData: columnData,
11820
11916
  helpDocUrl: helpDocUrl,
11821
11917
  isLoading: isFieldsFetching || isFieldsLoading,
11822
11918
  rowData: ramda.isEmpty(rowData) ? fields : rowData,
11823
11919
  setIsPaneOpen: setIsPaneOpen,
11824
- totalCount: count
11920
+ totalCount: count,
11921
+ title: title
11825
11922
  }), /*#__PURE__*/React__default["default"].createElement(FieldsPane, {
11826
11923
  additionalValidations: paneProps === null || paneProps === void 0 ? void 0 : paneProps.validations,
11827
11924
  allowedKinds: allowedKinds,
11828
11925
  hideRequiredSwitch: paneProps === null || paneProps === void 0 ? void 0 : paneProps.hideRequiredSwitch,
11829
11926
  initialValues: paneProps === null || paneProps === void 0 ? void 0 : paneProps.initialValues,
11830
11927
  isOpen: isPaneOpen,
11831
- ownerId: showOwnersInMenu ? selectedMenu : "",
11832
- resourceType: showOwnersInMenu ? resourceType : selectedMenu //Currently we support only one resource type when fields are classified based on owners
11928
+ ownerId: isOwnerBased ? selectedMenu : "",
11929
+ resourceType: isOwnerBased ? resourceType : selectedMenu //Currently we support only one resource type when fields are classified based on owners
11833
11930
  ,
11834
11931
  selectedField: selectedField,
11835
11932
  onClose: handleClosePane,
11836
11933
  onMutationSuccess: paneProps === null || paneProps === void 0 ? void 0 : paneProps.onMutationSuccess
11837
11934
  }, paneProps === null || paneProps === void 0 ? void 0 : paneProps.children)), /*#__PURE__*/React__default["default"].createElement(ReorderPane, {
11838
11935
  isOpen: isReorderPaneOpen,
11839
- ownerId: showOwnersInMenu ? selectedMenu : "",
11936
+ ownerId: isOwnerBased ? selectedMenu : "",
11840
11937
  onClose: handleReorderPaneClose,
11841
11938
  allFields: allFields
11842
11939
  }), /*#__PURE__*/React__default["default"].createElement(neetoui.Alert, {