@bigbinary/neeto-fields-frontend 1.1.3 → 1.1.5

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,11 @@
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';
4
- import { values, map, isNotNil, isNil, pluck, clone as clone$1, pipe, mergeAll, omit, prop, pick, isEmpty, assoc, any, not, head } from 'ramda';
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
+ import { values, map, isNotNil, isEmpty, isNil, pluck, clone as clone$1, pipe, mergeAll, omit, prop, pick, assoc, any, not, head } from 'ramda';
5
5
  import { useFormikContext, useField, FieldArray } from 'formik';
6
+ import { useFuncDebounce, useDebounce, handleMetaClick } from '@bigbinary/neeto-commons-frontend/react-utils';
6
7
  import * as yup from 'yup';
7
- import { Check, Delete, MenuHorizontal, Reorder } from '@bigbinary/neeto-icons';
8
+ import { Check, Info, Delete, MenuHorizontal, Reorder } from '@bigbinary/neeto-icons';
8
9
  import { Button, ActionBlock, Input as Input$1, Select as Select$1, Switch as Switch$1, Form } from '@bigbinary/neetoui/formik';
9
10
  import Container from '@bigbinary/neeto-molecules/Container';
10
11
  import Header from '@bigbinary/neeto-molecules/Header';
@@ -14,7 +15,6 @@ import SubHeader from '@bigbinary/neeto-molecules/SubHeader';
14
15
  import { useQuery, useQueryClient, useMutation } from 'react-query';
15
16
  import axios from 'axios';
16
17
  import { buildUrl, getQueryParams } from '@bigbinary/neeto-commons-frontend/utils';
17
- import { useDebounce, handleMetaClick } from '@bigbinary/neeto-commons-frontend/react-utils';
18
18
  import { Link, useHistory } from 'react-router-dom';
19
19
  import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
20
20
  import { unstable_batchedUpdates, createPortal } from 'react-dom';
@@ -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,
@@ -5844,57 +5847,60 @@ var buildSchemaAllowingEmptyValue = function buildSchemaAllowingEmptyValue(schem
5844
5847
  name: "validate-if-not-empty",
5845
5848
  test: function test(value) {
5846
5849
  if (isNotEmpty(value) && isNotNil(value)) {
5847
- try {
5848
- schema.validateSync(value);
5849
- return true;
5850
- } catch (_unused) {
5851
- return false;
5852
- }
5850
+ schema.validateSync(value);
5853
5851
  }
5854
5852
  return true;
5855
5853
  }
5856
5854
  });
5857
5855
  };
5858
- var buildFieldValidationSchema = function buildFieldValidationSchema(_ref) {
5859
- var kind = _ref.kind,
5860
- isRequired = _ref.isRequired,
5861
- fieldData = _ref.fieldData;
5856
+ var buildSchemaForRequiredInputs = function buildSchemaForRequiredInputs(schema) {
5857
+ return yup.mixed().test({
5858
+ name: "validate-required-inputs",
5859
+ test: function test(value) {
5860
+ if (isEmpty(value) || isNil(value)) {
5861
+ throw new yup.ValidationError(t$1("validations.thisIsRequired"));
5862
+ }
5863
+ schema.validateSync(value);
5864
+ return true;
5865
+ }
5866
+ });
5867
+ };
5868
+ var buildSchema = function buildSchema(_ref) {
5869
+ var schema = _ref.schema,
5870
+ isRequired = _ref.isRequired;
5871
+ return isRequired ? buildSchemaForRequiredInputs(schema) : buildSchemaAllowingEmptyValue(schema);
5872
+ };
5873
+ var getBasicValidationSchema = function getBasicValidationSchema(_ref2) {
5874
+ var kind = _ref2.kind,
5875
+ fieldData = _ref2.fieldData;
5862
5876
  switch (kind) {
5863
5877
  case KINDS.singleOption:
5864
5878
  case KINDS.text:
5865
5879
  {
5866
- var schema = yup.string().trim().nullable();
5867
- return isRequired ? schema.required(t$1("validations.thisIsRequired")) : schema;
5880
+ return yup.string().trim().nullable();
5868
5881
  }
5869
5882
  case KINDS.number:
5870
5883
  case KINDS.monetary:
5871
5884
  case KINDS.decimal:
5872
5885
  {
5873
- var _schema = buildSchemaAllowingEmptyValue(yup.number().typeError(t$1("validations.notAValidNumber")));
5874
- return isRequired ? _schema.required(t$1("validations.thisIsRequired")) : _schema;
5886
+ return yup.number(t$1("validations.notAValidNumber")).nullable();
5875
5887
  }
5876
5888
  case KINDS.integer:
5877
5889
  {
5878
- var _schema2 = buildSchemaAllowingEmptyValue(yup.number().nullable().integer().typeError(t$1("validations.notAValidInteger")));
5879
- return isRequired ? _schema2.required(t$1("validations.thisIsRequired")) : _schema2;
5890
+ return yup.number().nullable().integer(t$1("validations.notAValidInteger"));
5880
5891
  }
5881
5892
  case KINDS.date:
5882
5893
  case KINDS.time:
5883
5894
  {
5884
- var _schema3 = buildSchemaAllowingEmptyValue(dateSchema);
5885
- return isRequired ? _schema3.required(t$1("validations.thisIsRequired")) : _schema3;
5895
+ return dateSchema;
5886
5896
  }
5887
5897
  case KINDS.multiOption:
5888
5898
  {
5889
- var _schema4 = yup.array().of(yup.string()).nullable();
5890
- return isRequired ? _schema4.min(1, t$1("validations.minOneItem")).required(t$1("validations.thisIsRequired")) : _schema4;
5899
+ return yup.array().of(yup.string()).nullable();
5891
5900
  }
5892
5901
  case KINDS.dateRange:
5893
5902
  case KINDS.timeRange:
5894
5903
  {
5895
- if (isRequired) {
5896
- return yup.array().of(dateSchema).required(t$1("validations.thisIsRequired"));
5897
- }
5898
5904
  return yup.array().of(dateSchema).nullable();
5899
5905
  }
5900
5906
  case KINDS.checkbox:
@@ -5902,13 +5908,25 @@ var buildFieldValidationSchema = function buildFieldValidationSchema(_ref) {
5902
5908
  case KINDS.regex:
5903
5909
  {
5904
5910
  var regexPattern = fieldData === null || fieldData === void 0 ? void 0 : fieldData.condition;
5905
- var _schema5 = buildSchemaAllowingEmptyValue(yup.string().nullable().matches(cleanedRegex(regexPattern), fieldData === null || fieldData === void 0 ? void 0 : fieldData.helpMessage));
5906
- return isRequired ? _schema5.required(t$1("validations.thisIsRequired")) : _schema5;
5911
+ return yup.string().nullable().matches(cleanedRegex(regexPattern), fieldData === null || fieldData === void 0 ? void 0 : fieldData.helpMessage);
5907
5912
  }
5908
5913
  default:
5909
5914
  return yup.mixed();
5910
5915
  }
5911
5916
  };
5917
+ var buildFieldValidationSchema = function buildFieldValidationSchema(_ref3) {
5918
+ var kind = _ref3.kind,
5919
+ isRequired = _ref3.isRequired,
5920
+ fieldData = _ref3.fieldData;
5921
+ var schema = getBasicValidationSchema({
5922
+ kind: kind,
5923
+ fieldData: fieldData
5924
+ });
5925
+ return buildSchema({
5926
+ schema: schema,
5927
+ isRequired: isRequired
5928
+ });
5929
+ };
5912
5930
  var cleanedRegex = function cleanedRegex(expression) {
5913
5931
  if (expression.startsWith("/") && expression.endsWith("/")) {
5914
5932
  return expression.slice(1, -1);
@@ -5917,9 +5935,9 @@ var cleanedRegex = function cleanedRegex(expression) {
5917
5935
  };
5918
5936
  var buildOptionsToLabelAndValue = function buildOptionsToLabelAndValue() {
5919
5937
  var optionObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
5920
- return optionObjects.map(function (_ref2) {
5921
- var label = _ref2.label,
5922
- value = _ref2.value;
5938
+ return optionObjects.map(function (_ref4) {
5939
+ var label = _ref4.label,
5940
+ value = _ref4.value;
5923
5941
  return {
5924
5942
  label: label,
5925
5943
  value: value || label
@@ -5930,12 +5948,12 @@ var buildArrayToLabelAndValues = function buildArrayToLabelAndValues(value) {
5930
5948
  return map(toLabelAndValue, value || []);
5931
5949
  };
5932
5950
  var validateField = /*#__PURE__*/function () {
5933
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref3) {
5951
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref5) {
5934
5952
  var fieldValue, fieldName, isRequired, kind, fieldData;
5935
5953
  return _regeneratorRuntime.wrap(function _callee$(_context) {
5936
5954
  while (1) switch (_context.prev = _context.next) {
5937
5955
  case 0:
5938
- fieldValue = _ref3.fieldValue, fieldName = _ref3.fieldName, isRequired = _ref3.isRequired, kind = _ref3.kind, fieldData = _ref3.fieldData;
5956
+ fieldValue = _ref5.fieldValue, fieldName = _ref5.fieldName, isRequired = _ref5.isRequired, kind = _ref5.kind, fieldData = _ref5.fieldData;
5939
5957
  _context.prev = 1;
5940
5958
  _context.next = 4;
5941
5959
  return yup.object().shape(_defineProperty({}, fieldName, buildFieldValidationSchema({
@@ -5956,7 +5974,7 @@ var validateField = /*#__PURE__*/function () {
5956
5974
  }, _callee, null, [[1, 7]]);
5957
5975
  }));
5958
5976
  return function validateField(_x) {
5959
- return _ref4.apply(this, arguments);
5977
+ return _ref6.apply(this, arguments);
5960
5978
  };
5961
5979
  }();
5962
5980
  var dateTimeToString = function dateTimeToString(dateTime) {
@@ -5979,8 +5997,7 @@ var useFormikFields = function useFormikFields(_ref) {
5979
5997
  isRequiredColumnName = _ref$isRequiredColumn === void 0 ? "isRequired" : _ref$isRequiredColumn,
5980
5998
  props = _objectWithoutProperties(_ref, _excluded$3);
5981
5999
  var formikContext = useFormikContext();
5982
- var setFieldValue = formikContext.setFieldValue,
5983
- submitForm = formikContext.submitForm,
6000
+ var submitForm = formikContext.submitForm,
5984
6001
  dirty = formikContext.dirty,
5985
6002
  isSubmitting = formikContext.isSubmitting;
5986
6003
  var fieldPath = escapeString("".concat(name, "-").concat(fieldId));
@@ -6007,9 +6024,10 @@ var useFormikFields = function useFormikFields(_ref) {
6007
6024
  formikFieldProps = _useField2[0],
6008
6025
  meta = _useField2[1],
6009
6026
  helpers = _useField2[2];
6027
+ var debouncedSubmitForm = useFuncDebounce(submitForm, 100);
6010
6028
  var handleSubmit = function handleSubmit(value) {
6011
- isNotNil(value) && setFieldValue(fieldValuePath, value);
6012
- individualSubmit && submitForm();
6029
+ isNotNil(value) && helpers.setValue(value);
6030
+ individualSubmit && debouncedSubmitForm();
6013
6031
  };
6014
6032
  var getValueForField = function getValueForField(value) {
6015
6033
  if (kind === KINDS.singleOption) {
@@ -6020,17 +6038,19 @@ var useFormikFields = function useFormikFields(_ref) {
6020
6038
  return value || "";
6021
6039
  };
6022
6040
  var isDropdown = ["single_option", "multi_option"].includes(kind);
6023
- if (isSubmitting && !meta.touched) {
6024
- helpers.setTouched(true);
6025
- }
6041
+ useEffect(function () {
6042
+ if (isSubmitting && !meta.touched) {
6043
+ helpers.setTouched(true);
6044
+ }
6045
+ }, [isSubmitting]);
6026
6046
  return {
6047
+ dirty: dirty,
6027
6048
  handleSubmit: handleSubmit,
6028
6049
  fieldProps: _objectSpread$a(_objectSpread$a({}, formikFieldProps), {}, {
6029
6050
  required: props[isRequiredColumnName],
6030
6051
  error: individualSubmit ? meta.error : meta.touched && meta.error,
6031
6052
  options: isDropdown ? buildOptionsToLabelAndValue(fieldData) : undefined,
6032
6053
  value: getValueForField(formikFieldProps.value),
6033
- dirty: dirty,
6034
6054
  label: !individualSubmit && capitalize$1(name),
6035
6055
  disabled: disabled
6036
6056
  })
@@ -6096,8 +6116,9 @@ var MultiOption = function MultiOption(props) {
6096
6116
  var Number$1 = function Number(props) {
6097
6117
  var _useFormikFields = useFormikFields(props),
6098
6118
  handleSubmit = _useFormikFields.handleSubmit,
6099
- fieldProps = _useFormikFields.fieldProps;
6100
- var showSubmitButton = props.individualSubmit && fieldProps.dirty;
6119
+ fieldProps = _useFormikFields.fieldProps,
6120
+ dirty = _useFormikFields.dirty;
6121
+ var showSubmitButton = props.individualSubmit && dirty;
6101
6122
  return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, {
6102
6123
  type: "number",
6103
6124
  suffix: showSubmitButton && /*#__PURE__*/React.createElement(Button, {
@@ -6118,7 +6139,11 @@ var RangePicker = function RangePicker(props) {
6118
6139
  var _ref2 = _slicedToArray(_ref, 2),
6119
6140
  begin = _ref2[0],
6120
6141
  end = _ref2[1];
6121
- return handleSubmit([dateTimeToString(begin), dateTimeToString(end)]);
6142
+ if (begin && end) {
6143
+ handleSubmit([dateTimeToString(begin), dateTimeToString(end)]);
6144
+ } else {
6145
+ handleSubmit([]);
6146
+ }
6122
6147
  };
6123
6148
  if (props.kind === KINDS.dateRange) {
6124
6149
  return /*#__PURE__*/React.createElement(DatePicker, _extends({}, fieldProps, {
@@ -6141,11 +6166,11 @@ var SingleOption = function SingleOption(props) {
6141
6166
  handleSubmit = _useFormikFields.handleSubmit,
6142
6167
  fieldProps = _useFormikFields.fieldProps;
6143
6168
  return /*#__PURE__*/React.createElement(Select, _extends({
6169
+ isClearable: true,
6144
6170
  isSearchable: true
6145
6171
  }, fieldProps, {
6146
- onChange: function onChange(_ref) {
6147
- var value = _ref.value;
6148
- return handleSubmit(value);
6172
+ onChange: function onChange(option) {
6173
+ return handleSubmit((option === null || option === void 0 ? void 0 : option.value) || "");
6149
6174
  }
6150
6175
  }));
6151
6176
  };
@@ -6153,8 +6178,9 @@ var SingleOption = function SingleOption(props) {
6153
6178
  var Text = function Text(props) {
6154
6179
  var _useFormikFields = useFormikFields(props),
6155
6180
  handleSubmit = _useFormikFields.handleSubmit,
6156
- fieldProps = _useFormikFields.fieldProps;
6157
- var showSubmitButton = props.individualSubmit && fieldProps.dirty;
6181
+ fieldProps = _useFormikFields.fieldProps,
6182
+ dirty = _useFormikFields.dirty;
6183
+ var showSubmitButton = props.individualSubmit && dirty;
6158
6184
  return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, {
6159
6185
  suffix: showSubmitButton && /*#__PURE__*/React.createElement(Button, {
6160
6186
  icon: Check,
@@ -6171,8 +6197,9 @@ var TextArea = function TextArea(props) {
6171
6197
  t = _useTranslation.t;
6172
6198
  var _useFormikFields = useFormikFields(props),
6173
6199
  handleSubmit = _useFormikFields.handleSubmit,
6174
- fieldProps = _useFormikFields.fieldProps;
6175
- var showSubmitButton = props.individualSubmit && fieldProps.dirty;
6200
+ fieldProps = _useFormikFields.fieldProps,
6201
+ dirty = _useFormikFields.dirty;
6202
+ var showSubmitButton = props.individualSubmit && dirty;
6176
6203
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Textarea, fieldProps), showSubmitButton && /*#__PURE__*/React.createElement(Button, {
6177
6204
  className: "m-auto mt-2",
6178
6205
  label: t("labels.submit"),
@@ -6239,26 +6266,46 @@ var transformValues = function transformValues(_ref2) {
6239
6266
  fieldValuesAttributes: cleanedFieldValues
6240
6267
  });
6241
6268
  };
6242
- var getInitialFieldValue = function getInitialFieldValue(field) {
6243
- var fieldValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
6269
+ var getDefaultInitialValue = function getDefaultInitialValue(kind) {
6270
+ switch (kind) {
6271
+ case KINDS.checkbox:
6272
+ return false;
6273
+ case KINDS.multiOption:
6274
+ case KINDS.dateRange:
6275
+ case KINDS.timeRange:
6276
+ return [];
6277
+ default:
6278
+ return "";
6279
+ }
6280
+ };
6281
+ var getInitialFieldValue = function getInitialFieldValue(_ref4) {
6282
+ var field = _ref4.field,
6283
+ _ref4$fieldValues = _ref4.fieldValues,
6284
+ fieldValues = _ref4$fieldValues === void 0 ? [] : _ref4$fieldValues,
6285
+ _ref4$isIndividualFie = _ref4.isIndividualFieldForm,
6286
+ isIndividualFieldForm = _ref4$isIndividualFie === void 0 ? false : _ref4$isIndividualFie;
6244
6287
  var existingFieldValueData = findBy({
6245
6288
  fieldId: field.id
6246
6289
  }, fieldValues);
6290
+ var keyInData = field.kind === KINDS.multiOption ? "values" : "value";
6247
6291
  var newFieldValueData = {
6248
6292
  fieldId: field.id,
6249
- data: null
6293
+ data: isIndividualFieldForm ? _defineProperty({}, keyInData, getDefaultInitialValue(field.kind)) : null
6250
6294
  };
6251
6295
  return _defineProperty({}, escapeString("".concat(field.name, "-").concat(field.id)), existingFieldValueData || newFieldValueData);
6252
6296
  };
6253
6297
  var getAllInitialFieldValues = function getAllInitialFieldValues(fields) {
6254
6298
  var fieldValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
6255
6299
  return getNonSystemFields(fields).map(function (field) {
6256
- return getInitialFieldValue(field, fieldValues);
6300
+ return getInitialFieldValue({
6301
+ field: field,
6302
+ fieldValues: fieldValues
6303
+ });
6257
6304
  });
6258
6305
  };
6259
- var mergeInitialValues = function mergeInitialValues(_ref5) {
6260
- var initialValues = _ref5.initialValues,
6261
- fields = _ref5.fields;
6306
+ var mergeInitialValues = function mergeInitialValues(_ref7) {
6307
+ var initialValues = _ref7.initialValues,
6308
+ fields = _ref7.fields;
6262
6309
  var initialValue = mergeAll([initialValues].concat(_toConsumableArray(getAllInitialFieldValues(fields, initialValues === null || initialValues === void 0 ? void 0 : initialValues.fieldValues))));
6263
6310
  return omit(["fieldValues"], initialValue);
6264
6311
  };
@@ -6323,6 +6370,21 @@ var SINGULAR = {
6323
6370
  var PLURAL = {
6324
6371
  count: 2
6325
6372
  };
6373
+ var INFO_ICON_SIZE = 16;
6374
+
6375
+ var TitleWithHelpLink = function TitleWithHelpLink(_ref) {
6376
+ var title = _ref.title,
6377
+ helpUrl = _ref.helpUrl;
6378
+ return /*#__PURE__*/React.createElement("div", {
6379
+ className: "flex items-center gap-x-1"
6380
+ }, title, helpUrl && /*#__PURE__*/React.createElement("a", {
6381
+ href: helpUrl,
6382
+ rel: "noreferrer",
6383
+ target: "_blank"
6384
+ }, /*#__PURE__*/React.createElement(Info, {
6385
+ size: INFO_ICON_SIZE
6386
+ })));
6387
+ };
6326
6388
 
6327
6389
  var fieldUrl = function fieldUrl(fieldId) {
6328
6390
  return buildUrl(FIELD_URL, {
@@ -6564,7 +6626,7 @@ var FIELD_KINDS = {
6564
6626
  single_option: {
6565
6627
  value: "single_option",
6566
6628
  label: t$1("fields.kinds.singleOption"),
6567
- group: 3
6629
+ group: 12
6568
6630
  },
6569
6631
  multi_option: {
6570
6632
  value: "multi_option",
@@ -6764,6 +6826,7 @@ var FieldForm = function FieldForm(_ref) {
6764
6826
  className: "w-full space-y-4"
6765
6827
  }, /*#__PURE__*/React.createElement(Input$1, {
6766
6828
  required: true,
6829
+ "data-cy": "name-text-field",
6767
6830
  disabled: isSystem,
6768
6831
  label: t("labels.fieldName"),
6769
6832
  name: "name",
@@ -6776,12 +6839,15 @@ var FieldForm = function FieldForm(_ref) {
6776
6839
  options: kindSelectOptions,
6777
6840
  onChange: handleKindChange
6778
6841
  }), isAdditionalDataNeeded(chosenKind) && /*#__PURE__*/React.createElement(AdditionalInputs, null), !hideRequiredSwitch && /*#__PURE__*/React.createElement(Label, {
6779
- className: "flex items-center gap-2"
6842
+ className: "flex items-center gap-2",
6843
+ "data-cy": "is-required-switch-container"
6780
6844
  }, /*#__PURE__*/React.createElement(Switch$1, {
6845
+ "data-cy": "is-required-switch",
6781
6846
  name: "isRequired"
6782
6847
  }), /*#__PURE__*/React.createElement(Typography, {
6783
6848
  className: "leading-4",
6784
6849
  component: "span",
6850
+ "data-cy": "is-required-switch-label",
6785
6851
  style: "body2"
6786
6852
  }, t("labels.isRequired"))), children));
6787
6853
  };
@@ -6821,6 +6887,7 @@ var Add = function Add(_ref) {
6821
6887
  });
6822
6888
  };
6823
6889
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
6890
+ "data-cy": "add-pane-header",
6824
6891
  style: "h2"
6825
6892
  }, t("titles.addField"))), /*#__PURE__*/React.createElement(Form, {
6826
6893
  formikProps: {
@@ -6893,6 +6960,7 @@ var Edit = function Edit(_ref) {
6893
6960
  });
6894
6961
  };
6895
6962
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
6963
+ "data-cy": "edit-pane-header",
6896
6964
  style: "h2"
6897
6965
  }, t("titles.editField"))), isLoading ? /*#__PURE__*/React.createElement(PageLoader, null) : /*#__PURE__*/React.createElement(Form, {
6898
6966
  formikProps: {
@@ -6952,17 +7020,20 @@ var buildDefaultColumns = function buildDefaultColumns(_ref) {
6952
7020
  }, /*#__PURE__*/React.createElement(Typography, {
6953
7021
  style: "body2"
6954
7022
  }, name), /*#__PURE__*/React.createElement(Dropdown, {
6955
- buttonProps: {
6956
- className: "flex-shrink-0"
6957
- },
6958
7023
  buttonStyle: "text",
6959
7024
  icon: MenuHorizontal,
6960
- strategy: "fixed"
7025
+ strategy: "fixed",
7026
+ buttonProps: {
7027
+ className: "flex-shrink-0",
7028
+ "data-cy": "neeto-fields-options-dropdown"
7029
+ }
6961
7030
  }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem.Button, {
7031
+ "data-cy": "edit-menu-item-button",
6962
7032
  onClick: function onClick() {
6963
7033
  return onEditClick(field);
6964
7034
  }
6965
7035
  }, t$1("labels.edit")), !field.isSystem && /*#__PURE__*/React.createElement(MenuItem.Button, {
7036
+ "data-cy": "delete-menu-item-button",
6966
7037
  onClick: function onClick() {
6967
7038
  return onDeleteClick(field);
6968
7039
  }
@@ -6989,14 +7060,18 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
6989
7060
  isOwnerBased = _ref2.isOwnerBased,
6990
7061
  selectedMenu = _ref2.selectedMenu,
6991
7062
  handleBlockClick = _ref2.handleBlockClick,
6992
- nameAliases = _ref2.nameAliases;
7063
+ nameAliases = _ref2.nameAliases,
7064
+ title = _ref2.title;
7065
+ title = title.toLocaleLowerCase();
6993
7066
  if (isOwnerBased) {
6994
7067
  return items.map(function (item) {
6995
7068
  return /*#__PURE__*/React.createElement(MenuBar.Item, {
6996
7069
  active: selectedMenu === item.id,
7070
+ "data-cy": "menubar-".concat(slugify(item.name), "-menu-item"),
6997
7071
  key: item.id,
6998
7072
  label: humanize(item.name),
6999
- description: t$1("messages.manageFieldFor", {
7073
+ description: t$1("messages.manageTitleForResource", {
7074
+ title: title,
7000
7075
  resource: humanize(item.name).toLocaleLowerCase()
7001
7076
  }),
7002
7077
  onClick: handleBlockClick({
@@ -7006,11 +7081,14 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
7006
7081
  });
7007
7082
  }
7008
7083
  return items.length > 1 && items.map(function (item) {
7084
+ var label = nameAliases[item] || humanize(item);
7009
7085
  return /*#__PURE__*/React.createElement(MenuBar.Item, {
7010
7086
  active: selectedMenu === item,
7087
+ "data-cy": "neeto-fields-".concat(slugify(label), "-menu-item"),
7011
7088
  key: item,
7012
- label: nameAliases[item] || humanize(item),
7013
- description: t$1("messages.manageFieldFor", {
7089
+ label: label,
7090
+ description: t$1("messages.manageTitleForResource", {
7091
+ title: title,
7014
7092
  resource: humanize(item).toLocaleLowerCase()
7015
7093
  }),
7016
7094
  onClick: handleBlockClick({
@@ -7026,12 +7104,14 @@ var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7026
7104
  inactiveFieldsCount = _ref3.inactiveFieldsCount,
7027
7105
  handleBlockClick = _ref3.handleBlockClick;
7028
7106
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MenuBar.SubTitle, null, /*#__PURE__*/React.createElement(Typography, {
7107
+ "data-cy": "menubar-subtitle",
7029
7108
  style: "h5",
7030
7109
  textTransform: "uppercase",
7031
7110
  weight: "bold"
7032
7111
  }, t$1("titles.filters"))), /*#__PURE__*/React.createElement(MenuBar.Block, {
7033
7112
  active: selectedState === FIELD_STATES.active,
7034
7113
  count: activeFieldsCount,
7114
+ "data-cy": "menubar-active-block",
7035
7115
  label: fieldStatesTaxonomy.active,
7036
7116
  onClick: handleBlockClick({
7037
7117
  state: FIELD_STATES.active
@@ -7039,6 +7119,7 @@ var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7039
7119
  }), /*#__PURE__*/React.createElement(MenuBar.Block, {
7040
7120
  active: selectedState === FIELD_STATES.inactive,
7041
7121
  count: inactiveFieldsCount,
7122
+ "data-cy": "menubar-inactive-block",
7042
7123
  label: fieldStatesTaxonomy.inactive,
7043
7124
  onClick: handleBlockClick({
7044
7125
  state: FIELD_STATES.inactive
@@ -7050,19 +7131,41 @@ var getDashBoardTitle = function getDashBoardTitle(_ref4) {
7050
7131
  var isOwnerBased = _ref4.isOwnerBased,
7051
7132
  owners = _ref4.owners,
7052
7133
  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
- });
7134
+ nameAliases = _ref4.nameAliases,
7135
+ isSingleResource = _ref4.isSingleResource,
7136
+ showStateFilter = _ref4.showStateFilter,
7137
+ selectedState = _ref4.selectedState,
7138
+ title = _ref4.title;
7139
+ var resource = isOwnerBased ? (_findBy = findBy({
7140
+ id: selectedVal
7141
+ }, owners)) === null || _findBy === void 0 ? void 0 : _findBy.name : nameAliases[selectedVal] || selectedVal;
7142
+ var displayTitle = title;
7143
+ if (showStateFilter && !isSingleResource) {
7144
+ displayTitle = t$1("messages.stateTitleForResource", {
7145
+ state: selectedState,
7146
+ title: title,
7147
+ resource: resource
7148
+ });
7149
+ } else if (showStateFilter && isSingleResource) {
7150
+ displayTitle = "".concat(selectedState, " ").concat(title);
7151
+ } else if (!showStateFilter && !isSingleResource) {
7152
+ displayTitle = t$1("messages.titleForResource", {
7153
+ title: title,
7154
+ resource: resource
7155
+ });
7156
+ }
7157
+ return humanize(displayTitle);
7059
7158
  };
7060
- var renderNoDataHelpText = function renderNoDataHelpText(url) {
7159
+ var renderNoDataHelpText = function renderNoDataHelpText(title, url) {
7061
7160
  return /*#__PURE__*/React.createElement(Trans, {
7062
7161
  i18nKey: "helpTexts.noData",
7162
+ values: {
7163
+ title: title
7164
+ },
7063
7165
  components: {
7064
7166
  a: /*#__PURE__*/React.createElement(Link, {
7065
7167
  className: "neeto-ui-text-primary-600 underline",
7168
+ "data-cy": "no-data-help-text-link",
7066
7169
  target: "_blank",
7067
7170
  to: {
7068
7171
  pathname: url
@@ -7091,9 +7194,12 @@ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if
7091
7194
  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
7195
  var useFieldsDashboard = function useFieldsDashboard(_ref) {
7093
7196
  var buildColumnData = _ref.buildColumnData,
7094
- showOwnersInMenu = _ref.showOwnersInMenu,
7197
+ isOwnerBased = _ref.isOwnerBased,
7095
7198
  fieldStatesTaxonomy = _ref.fieldStatesTaxonomy,
7096
- nameAliases = _ref.nameAliases;
7199
+ nameAliases = _ref.nameAliases,
7200
+ title = _ref.title,
7201
+ resources = _ref.resources,
7202
+ showStateFilter = _ref.showStateFilter;
7097
7203
  var _useState = useState(false),
7098
7204
  _useState2 = _slicedToArray(_useState, 2),
7099
7205
  isPaneOpen = _useState2[0],
@@ -7118,15 +7224,17 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7118
7224
  _useState12 = _slicedToArray(_useState11, 2),
7119
7225
  searchTerm = _useState12[0],
7120
7226
  setSearchTerm = _useState12[1];
7121
- var _getQueryParams = getQueryParams(),
7122
- resource = _getQueryParams.resource,
7123
- state = _getQueryParams.state;
7124
- var ownerId = showOwnersInMenu ? resource : undefined;
7125
7227
  var debouncedSearchTerm = useDebounce(searchTerm.trim());
7126
7228
  var history = useHistory();
7127
7229
  var _useTranslation = useTranslation(),
7128
7230
  t = _useTranslation.t;
7129
- var _useFetchConfigs = useFetchConfigs(),
7231
+ var _getQueryParams = getQueryParams(),
7232
+ resource = _getQueryParams.resource,
7233
+ state = _getQueryParams.state;
7234
+ var ownerId = isOwnerBased ? resource : undefined;
7235
+ var _useFetchConfigs = useFetchConfigs({
7236
+ enabled: !resources
7237
+ }),
7130
7238
  _useFetchConfigs$data = _useFetchConfigs.data,
7131
7239
  _useFetchConfigs$data2 = _useFetchConfigs$data === void 0 ? {} : _useFetchConfigs$data,
7132
7240
  _useFetchConfigs$data3 = _useFetchConfigs$data2.owners,
@@ -7135,7 +7243,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7135
7243
  resourceTypes = _useFetchConfigs$data4 === void 0 ? [] : _useFetchConfigs$data4,
7136
7244
  isConfigsLoading = _useFetchConfigs.isLoading;
7137
7245
  var fieldParams = {
7138
- resourceType: !showOwnersInMenu ? resource : undefined,
7246
+ resourceType: !isOwnerBased ? resource : undefined,
7139
7247
  ownerId: ownerId,
7140
7248
  state: state || FIELD_STATES.active,
7141
7249
  searchTerm: debouncedSearchTerm
@@ -7211,14 +7319,15 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7211
7319
  state: state
7212
7320
  }, params)));
7213
7321
  };
7322
+ var menuItems = resources || (isOwnerBased ? owners : resourceTypes);
7214
7323
  var handleURLWithDefaultValues = function handleURLWithDefaultValues() {
7215
7324
  var queryParams = {
7216
7325
  resource: resource,
7217
7326
  state: state
7218
7327
  };
7219
7328
  if (!isConfigsLoading && isNil(resource)) {
7220
- var _owners$;
7221
- queryParams.resource = showOwnersInMenu ? (_owners$ = owners[0]) === null || _owners$ === void 0 ? void 0 : _owners$.id : resourceTypes[0];
7329
+ var _menuItems$;
7330
+ 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
7331
  }
7223
7332
  if (!isConfigsLoading && isNil(state)) {
7224
7333
  queryParams.state = FIELD_STATES.active;
@@ -7227,7 +7336,6 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7227
7336
  history.replace(buildUrl("", queryParams));
7228
7337
  }
7229
7338
  };
7230
- var menuItems = showOwnersInMenu ? owners : resourceTypes;
7231
7339
  var isScreenLoading = isFieldsLoading || isConfigsLoading;
7232
7340
  var showCountSubheader = count > 0;
7233
7341
  var searchProps = {
@@ -7237,6 +7345,20 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7237
7345
  value: searchTerm,
7238
7346
  placeholder: t("placeholders.searchFields")
7239
7347
  };
7348
+ var isSingleResource = menuItems.length === 1;
7349
+ var isMenuBarNeeded = showStateFilter || !isSingleResource;
7350
+ var headerDisplayTitle = useMemo(function () {
7351
+ return getDashBoardTitle({
7352
+ isOwnerBased: isOwnerBased,
7353
+ owners: menuItems,
7354
+ selectedVal: resource,
7355
+ nameAliases: nameAliases,
7356
+ showStateFilter: showStateFilter,
7357
+ selectedState: state,
7358
+ isSingleResource: isSingleResource,
7359
+ title: title
7360
+ });
7361
+ }, [resource, state, isSingleResource, menuItems]);
7240
7362
  var menuBarFilters = useMemo(function () {
7241
7363
  return renderMenuBarFilters({
7242
7364
  selectedState: state,
@@ -7245,19 +7367,20 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7245
7367
  inactiveFieldsCount: inactiveFieldsCount,
7246
7368
  handleBlockClick: handleBlockClick
7247
7369
  });
7248
- }, [activeFieldsCount, inactiveFieldsCount, state]);
7370
+ }, [activeFieldsCount, inactiveFieldsCount]);
7249
7371
  var menuBarItems = useMemo(function () {
7250
7372
  return renderMenuBarItems({
7251
- isOwnerBased: showOwnersInMenu,
7373
+ isOwnerBased: isOwnerBased,
7252
7374
  items: menuItems,
7253
7375
  selectedMenu: resource,
7254
7376
  handleBlockClick: handleBlockClick,
7255
- nameAliases: nameAliases
7377
+ nameAliases: nameAliases,
7378
+ title: title
7256
7379
  });
7257
7380
  }, [menuItems, resource]);
7258
7381
  useEffect(function () {
7259
7382
  handleURLWithDefaultValues();
7260
- }, [isConfigsLoading]);
7383
+ }, [isConfigsLoading, resources]);
7261
7384
  return {
7262
7385
  isPaneOpen: isPaneOpen,
7263
7386
  setIsPaneOpen: setIsPaneOpen,
@@ -7267,9 +7390,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7267
7390
  isReorderPaneOpen: isReorderPaneOpen,
7268
7391
  setIsReorderPaneOpen: setIsReorderPaneOpen,
7269
7392
  fields: fields,
7270
- owners: owners,
7271
7393
  count: count,
7272
- menuItems: menuItems,
7273
7394
  columnData: columnData,
7274
7395
  selectedField: selectedField,
7275
7396
  selectedState: state,
@@ -7280,6 +7401,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7280
7401
  isDeleting: isDeleting,
7281
7402
  isScreenLoading: isScreenLoading,
7282
7403
  isConfigsLoading: isConfigsLoading,
7404
+ isMenuBarNeeded: isMenuBarNeeded,
7283
7405
  showCountSubheader: showCountSubheader,
7284
7406
  handleDelete: handleDelete,
7285
7407
  handleAlertClose: handleAlertClose,
@@ -7288,7 +7410,8 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7288
7410
  searchProps: searchProps,
7289
7411
  menuBarFilters: menuBarFilters,
7290
7412
  menuBarItems: menuBarItems,
7291
- allFields: allFields
7413
+ allFields: allFields,
7414
+ headerDisplayTitle: headerDisplayTitle
7292
7415
  };
7293
7416
  };
7294
7417
 
@@ -7298,16 +7421,20 @@ var FieldsTable = function FieldsTable(_ref) {
7298
7421
  rowData = _ref.rowData,
7299
7422
  columnData = _ref.columnData,
7300
7423
  setIsPaneOpen = _ref.setIsPaneOpen,
7301
- helpDocUrl = _ref.helpDocUrl;
7424
+ helpDocUrl = _ref.helpDocUrl,
7425
+ title = _ref.title;
7302
7426
  var _useTranslation = useTranslation(),
7303
7427
  t = _useTranslation.t;
7304
7428
  var showNoDataScreen = !isLoading && isEmpty(rowData);
7429
+ title = title.toLocaleLowerCase();
7305
7430
  return /*#__PURE__*/React.createElement(TableWrapper, null, showNoDataScreen ? /*#__PURE__*/React.createElement("div", {
7306
7431
  className: "flex h-full w-full items-center justify-center"
7307
7432
  }, /*#__PURE__*/React.createElement(NoData, _extends({}, helpDocUrl && {
7308
- helpText: renderNoDataHelpText(helpDocUrl)
7433
+ helpText: renderNoDataHelpText(title, helpDocUrl)
7309
7434
  }, {
7310
- title: t("messages.noFields"),
7435
+ title: t("messages.noFields", {
7436
+ title: title
7437
+ }),
7311
7438
  primaryButtonProps: {
7312
7439
  label: t("labels.addField"),
7313
7440
  onClick: function onClick() {
@@ -11582,12 +11709,15 @@ var FieldBlock = function FieldBlock(_ref) {
11582
11709
  ref: setNodeRef,
11583
11710
  style: style
11584
11711
  }, attributes, listeners, {
11585
- className: "neeto-ui-text-gray-800 mb-3 flex items-center space-x-4 font-medium"
11712
+ className: "neeto-ui-text-gray-800 mb-3 flex items-center space-x-4 font-medium",
11713
+ "data-cy": "reorder-field-block"
11586
11714
  }), /*#__PURE__*/React.createElement("div", {
11587
11715
  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
11716
  }, index - systemFieldsCount + 1), /*#__PURE__*/React.createElement("div", {
11589
11717
  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)));
11718
+ }, /*#__PURE__*/React.createElement(Reorder, null), /*#__PURE__*/React.createElement("div", {
11719
+ "data-cy": "reorder-field-block-name"
11720
+ }, field.name)));
11591
11721
  };
11592
11722
  var FieldBlock$1 = /*#__PURE__*/React.memo(FieldBlock);
11593
11723
 
@@ -11638,10 +11768,12 @@ var ReorderPane = function ReorderPane(_ref) {
11638
11768
  isOpen: isOpen,
11639
11769
  onClose: onClose
11640
11770
  }, /*#__PURE__*/React.createElement(Pane.Header, null, /*#__PURE__*/React.createElement(Typography, {
11771
+ "data-cy": "reorder-pane-header",
11641
11772
  style: "h2",
11642
11773
  weight: "semibold"
11643
11774
  }, t("titles.reorderFields"))), /*#__PURE__*/React.createElement(Pane.Body, null, /*#__PURE__*/React.createElement(Typography, {
11644
11775
  className: "mb-3",
11776
+ "data-cy": "reorder-pane-message",
11645
11777
  style: "body2"
11646
11778
  }, t("messages.reorderFields")), /*#__PURE__*/React.createElement("div", {
11647
11779
  className: "flex flex-col items-center"
@@ -11662,11 +11794,13 @@ var ReorderPane = function ReorderPane(_ref) {
11662
11794
  }))))), /*#__PURE__*/React.createElement(Pane.Footer, {
11663
11795
  className: "flex items-center space-x-2"
11664
11796
  }, /*#__PURE__*/React.createElement(Button$1, {
11797
+ "data-cy": "save-changes-button",
11665
11798
  disabled: initialStateRef.current === fields,
11666
11799
  label: t("labels.saveChanges"),
11667
11800
  loading: isSubmitting,
11668
11801
  onClick: handleReorderSave
11669
11802
  }), /*#__PURE__*/React.createElement(Button$1, {
11803
+ "data-cy": "cancel-button",
11670
11804
  label: t("labels.cancel"),
11671
11805
  style: "text",
11672
11806
  onClick: onClose
@@ -11679,7 +11813,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11679
11813
  var _ref$rowData = _ref.rowData,
11680
11814
  rowData = _ref$rowData === void 0 ? [] : _ref$rowData,
11681
11815
  _ref$showOwnersInMenu = _ref.showOwnersInMenu,
11682
- showOwnersInMenu = _ref$showOwnersInMenu === void 0 ? false : _ref$showOwnersInMenu,
11816
+ isOwnerBased = _ref$showOwnersInMenu === void 0 ? false : _ref$showOwnersInMenu,
11683
11817
  _ref$resourceType = _ref.resourceType,
11684
11818
  resourceType = _ref$resourceType === void 0 ? "" : _ref$resourceType,
11685
11819
  _ref$allowedKinds = _ref.allowedKinds,
@@ -11699,14 +11833,20 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11699
11833
  fieldStatesTaxonomy = _ref$fieldStatesTaxon === void 0 ? DEFAULT_FIELD_STATE_TAXONOMY : _ref$fieldStatesTaxon,
11700
11834
  helpDocUrl = _ref.helpDocUrl,
11701
11835
  _ref$nameAliases = _ref.nameAliases,
11702
- nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases;
11836
+ nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases,
11837
+ headerTitle = _ref.headerTitle,
11838
+ resources = _ref.resources;
11703
11839
  var _useTranslation = useTranslation(),
11704
11840
  t = _useTranslation.t;
11841
+ var title = capitalize$1(headerTitle || t("titles.field", PLURAL));
11705
11842
  var _useFieldsDashboard = useFieldsDashboard({
11706
11843
  buildColumnData: buildColumnData,
11707
- showOwnersInMenu: showOwnersInMenu,
11844
+ isOwnerBased: isOwnerBased,
11708
11845
  fieldStatesTaxonomy: fieldStatesTaxonomy,
11709
- nameAliases: nameAliases
11846
+ nameAliases: nameAliases,
11847
+ title: title,
11848
+ resources: resources,
11849
+ showStateFilter: showStateFilter
11710
11850
  }),
11711
11851
  isPaneOpen = _useFieldsDashboard.isPaneOpen,
11712
11852
  setIsPaneOpen = _useFieldsDashboard.setIsPaneOpen,
@@ -11716,9 +11856,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11716
11856
  isReorderPaneOpen = _useFieldsDashboard.isReorderPaneOpen,
11717
11857
  setIsReorderPaneOpen = _useFieldsDashboard.setIsReorderPaneOpen,
11718
11858
  fields = _useFieldsDashboard.fields,
11719
- owners = _useFieldsDashboard.owners,
11720
11859
  count = _useFieldsDashboard.count,
11721
- menuItems = _useFieldsDashboard.menuItems,
11722
11860
  columnData = _useFieldsDashboard.columnData,
11723
11861
  selectedField = _useFieldsDashboard.selectedField,
11724
11862
  selectedState = _useFieldsDashboard.selectedState,
@@ -11728,6 +11866,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11728
11866
  isDeleting = _useFieldsDashboard.isDeleting,
11729
11867
  isScreenLoading = _useFieldsDashboard.isScreenLoading,
11730
11868
  isConfigsLoading = _useFieldsDashboard.isConfigsLoading,
11869
+ isMenuBarNeeded = _useFieldsDashboard.isMenuBarNeeded,
11731
11870
  showCountSubheader = _useFieldsDashboard.showCountSubheader,
11732
11871
  handleDelete = _useFieldsDashboard.handleDelete,
11733
11872
  handleAlertClose = _useFieldsDashboard.handleAlertClose,
@@ -11736,11 +11875,11 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11736
11875
  searchProps = _useFieldsDashboard.searchProps,
11737
11876
  menuBarFilters = _useFieldsDashboard.menuBarFilters,
11738
11877
  menuBarItems = _useFieldsDashboard.menuBarItems,
11739
- allFields = _useFieldsDashboard.allFields;
11740
- var isMenuBarNeeded = showStateFilter || menuItems.length > 1;
11878
+ allFields = _useFieldsDashboard.allFields,
11879
+ headerDisplayTitle = _useFieldsDashboard.headerDisplayTitle;
11741
11880
  return /*#__PURE__*/React.createElement(React.Fragment, null, isMenuBarNeeded && /*#__PURE__*/React.createElement(MenuBar, {
11742
11881
  showMenu: isMenuBarOpen,
11743
- title: t("titles.field", PLURAL)
11882
+ title: title
11744
11883
  }, isConfigsLoading ? /*#__PURE__*/React.createElement("div", {
11745
11884
  className: "flex items-center justify-center"
11746
11885
  }, /*#__PURE__*/React.createElement(Spinner, null)) : menuBarItems, showStateFilter && menuBarFilters), isScreenLoading && isEmpty(fields) ? /*#__PURE__*/React.createElement("div", {
@@ -11753,6 +11892,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11753
11892
  }
11754
11893
  }, {
11755
11894
  actionBlock: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button$1, {
11895
+ "data-cy": "neeto-fields-reorder-button",
11756
11896
  label: t("labels.reorder"),
11757
11897
  style: "secondary",
11758
11898
  disabled: selectedState === FIELD_STATES.inactive || !existsBy({
@@ -11763,45 +11903,46 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
11763
11903
  return setIsReorderPaneOpen(true);
11764
11904
  }
11765
11905
  }), /*#__PURE__*/React.createElement(Button$1, {
11906
+ "data-cy": "neeto-fields-add-button",
11766
11907
  label: t("labels.addField"),
11767
11908
  onClick: function onClick() {
11768
11909
  return setIsPaneOpen(true);
11769
11910
  }
11770
11911
  })),
11771
11912
  searchProps: searchProps,
11772
- title: humanize(getDashBoardTitle({
11773
- isOwnerBased: showOwnersInMenu,
11774
- owners: owners,
11775
- selectedVal: selectedMenu,
11776
- nameAliases: nameAliases
11777
- }))
11913
+ title: /*#__PURE__*/React.createElement(TitleWithHelpLink, {
11914
+ helpUrl: helpDocUrl,
11915
+ title: headerDisplayTitle
11916
+ })
11778
11917
  })), showCountSubheader && /*#__PURE__*/React.createElement(SubHeader, {
11779
11918
  leftActionBlock: /*#__PURE__*/React.createElement(Typography, {
11780
11919
  className: "mr-4 font-semibold",
11920
+ "data-cy": "neeto-fields-subheader-text",
11781
11921
  style: "h4"
11782
- }, count, " ", selectedState, " ", t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
11922
+ }, "".concat(count, " "), t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
11783
11923
  }), /*#__PURE__*/React.createElement(FieldsTable, {
11784
11924
  columnData: columnData,
11785
11925
  helpDocUrl: helpDocUrl,
11786
11926
  isLoading: isFieldsFetching || isFieldsLoading,
11787
11927
  rowData: isEmpty(rowData) ? fields : rowData,
11788
11928
  setIsPaneOpen: setIsPaneOpen,
11789
- totalCount: count
11929
+ totalCount: count,
11930
+ title: title
11790
11931
  }), /*#__PURE__*/React.createElement(FieldsPane, {
11791
11932
  additionalValidations: paneProps === null || paneProps === void 0 ? void 0 : paneProps.validations,
11792
11933
  allowedKinds: allowedKinds,
11793
11934
  hideRequiredSwitch: paneProps === null || paneProps === void 0 ? void 0 : paneProps.hideRequiredSwitch,
11794
11935
  initialValues: paneProps === null || paneProps === void 0 ? void 0 : paneProps.initialValues,
11795
11936
  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
11937
+ ownerId: isOwnerBased ? selectedMenu : "",
11938
+ resourceType: isOwnerBased ? resourceType : selectedMenu //Currently we support only one resource type when fields are classified based on owners
11798
11939
  ,
11799
11940
  selectedField: selectedField,
11800
11941
  onClose: handleClosePane,
11801
11942
  onMutationSuccess: paneProps === null || paneProps === void 0 ? void 0 : paneProps.onMutationSuccess
11802
11943
  }, paneProps === null || paneProps === void 0 ? void 0 : paneProps.children)), /*#__PURE__*/React.createElement(ReorderPane, {
11803
11944
  isOpen: isReorderPaneOpen,
11804
- ownerId: showOwnersInMenu ? selectedMenu : "",
11945
+ ownerId: isOwnerBased ? selectedMenu : "",
11805
11946
  onClose: handleReorderPaneClose,
11806
11947
  allFields: allFields
11807
11948
  }), /*#__PURE__*/React.createElement(Alert, {
@@ -11894,7 +12035,11 @@ var FieldValueInputWrapper = function FieldValueInputWrapper(_ref) {
11894
12035
  scrollToErrorField: true,
11895
12036
  className: classnames("flex w-full", className),
11896
12037
  formikProps: {
11897
- initialValues: getInitialFieldValue(field, fieldValues),
12038
+ initialValues: getInitialFieldValue({
12039
+ field: field,
12040
+ fieldValues: fieldValues,
12041
+ isIndividualFieldForm: true
12042
+ }),
11898
12043
  onSubmit: onSubmit,
11899
12044
  enableReinitialize: true
11900
12045
  }