@bigbinary/neeto-fields-frontend 1.3.24 → 1.3.26

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
@@ -8,7 +8,7 @@ import { t } from 'i18next';
8
8
  import * as yup from 'yup';
9
9
  import { Select, Button, ActionBlock as ActionBlock$1, Input as Input$1, Switch, Form } from '@bigbinary/neetoui/formik';
10
10
  import { joinHyphenCase, buildUrl, getQueryParams, dateFormat } from '@bigbinary/neeto-commons-frontend/utils';
11
- import { Check, Delete, Info, Reorder } from '@bigbinary/neeto-icons';
11
+ import { Check, Delete, Reorder } from '@bigbinary/neeto-icons';
12
12
  import { useTranslation, Trans } from 'react-i18next';
13
13
  import { DEFAULT_PAGE_INDEX, DEFAULT_PAGE_SIZE, PLURAL } from '@bigbinary/neeto-commons-frontend/constants';
14
14
  import Container from '@bigbinary/neeto-molecules/Container';
@@ -22,6 +22,7 @@ import MenuBar from '@bigbinary/neeto-molecules/MenuBar';
22
22
  import MoreDropdown from '@bigbinary/neeto-molecules/MoreDropdown';
23
23
  import TableWrapper from '@bigbinary/neeto-molecules/TableWrapper';
24
24
  import NeetoUIHeader from '@bigbinary/neeto-molecules/Header';
25
+ import HelpPopover from '@bigbinary/neeto-molecules/HelpPopover';
25
26
  import { unstable_batchedUpdates, createPortal } from 'react-dom';
26
27
  import NeetoUISubHeader from '@bigbinary/neeto-molecules/SubHeader';
27
28
  import classnames from 'classnames';
@@ -788,9 +789,9 @@ var getValueFromBool = function getValueFromBool(value) {
788
789
  return value === true ? t("neetoFields.common.yes") : t("neetoFields.common.no");
789
790
  };
790
791
 
791
- var _excluded$6 = ["name", "id", "kind", "data", "individualSubmit", "formRef", "formRefs", "disabled", "isRequiredColumnName", "isInline", "onBlur"];
792
- function ownKeys$g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
793
- function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
792
+ var _excluded$7 = ["name", "id", "kind", "data", "individualSubmit", "formRef", "formRefs", "disabled", "isRequiredColumnName", "isInline", "onBlur"];
793
+ function ownKeys$h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
794
+ function _objectSpread$h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$h(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
794
795
  var useFormikFields = function useFormikFields(_ref) {
795
796
  var name = _ref.name,
796
797
  fieldId = _ref.id,
@@ -806,7 +807,7 @@ var useFormikFields = function useFormikFields(_ref) {
806
807
  isInline = _ref$isInline === void 0 ? false : _ref$isInline,
807
808
  _ref$onBlur = _ref.onBlur,
808
809
  handleBlur = _ref$onBlur === void 0 ? noop$1 : _ref$onBlur,
809
- props = _objectWithoutProperties(_ref, _excluded$6);
810
+ props = _objectWithoutProperties(_ref, _excluded$7);
810
811
  var formikContext = useFormikContext();
811
812
  var submitForm = formikContext.submitForm,
812
813
  dirty = formikContext.dirty,
@@ -898,7 +899,7 @@ var useFormikFields = function useFormikFields(_ref) {
898
899
  return {
899
900
  dirty: dirty,
900
901
  handleSubmit: handleSubmit,
901
- fieldProps: _objectSpread$g(_objectSpread$g({}, formikFieldProps), {}, {
902
+ fieldProps: _objectSpread$h(_objectSpread$h({}, formikFieldProps), {}, {
902
903
  error: individualSubmit ? meta.error : meta.touched && meta.error,
903
904
  value: getValueForField(formikFieldProps.value),
904
905
  label: !isInline && capitalize(name),
@@ -928,28 +929,43 @@ var Checkbox = function Checkbox(props) {
928
929
  }));
929
930
  };
930
931
 
932
+ var _excluded$6 = ["onBlur"];
933
+ function ownKeys$g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
934
+ function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
931
935
  var DateOrTime = function DateOrTime(props) {
932
936
  var _useFormikFields = useFormikFields(props),
933
937
  handleSubmit = _useFormikFields.handleSubmit,
934
- fieldProps = _useFormikFields.fieldProps;
938
+ _useFormikFields$fiel = _useFormikFields.fieldProps,
939
+ onBlur = _useFormikFields$fiel.onBlur,
940
+ fieldProps = _objectWithoutProperties(_useFormikFields$fiel, _excluded$6);
935
941
  var handleChange = function handleChange(dateTime) {
936
942
  return handleSubmit(dateTimeToString(dateTime));
937
943
  };
944
+ var onOpenChange = function onOpenChange(open) {
945
+ if (open) return;
946
+ onBlur === null || onBlur === void 0 || onBlur();
947
+ };
938
948
  if (props.kind === KINDS.time) {
939
- return /*#__PURE__*/React.createElement(TimePicker, _extends({}, fieldProps, {
949
+ return /*#__PURE__*/React.createElement(TimePicker, _extends({}, _objectSpread$g(_objectSpread$g({}, fieldProps), {}, {
950
+ onOpenChange: onOpenChange
951
+ }), {
940
952
  use12Hours: true,
941
953
  format: "h:mm A",
942
954
  onChange: handleChange
943
955
  }));
944
956
  } else if (props.kind === KINDS.date) {
945
- return /*#__PURE__*/React.createElement(DatePicker, _extends({}, fieldProps, {
957
+ return /*#__PURE__*/React.createElement(DatePicker, _extends({}, _objectSpread$g(_objectSpread$g({}, fieldProps), {}, {
958
+ onOpenChange: onOpenChange
959
+ }), {
946
960
  onChange: handleChange
947
961
  }));
948
962
  }
949
963
  return /*#__PURE__*/React.createElement(DatePicker, _extends({
950
964
  showTime: true,
951
965
  timeFormat: "h:mm A"
952
- }, fieldProps, {
966
+ }, _objectSpread$g(_objectSpread$g({}, fieldProps), {}, {
967
+ onOpenChange: onOpenChange
968
+ }), {
953
969
  onChange: handleChange
954
970
  }));
955
971
  };
@@ -976,8 +992,13 @@ var Number$1 = function Number(props) {
976
992
  dirty = _useFormikFields.dirty;
977
993
  var individualSubmit = props.individualSubmit,
978
994
  isInline = props.isInline;
979
- var showSubmitButton = !isInline && individualSubmit && dirty;
980
- return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, {
995
+ var isNotInline = !isInline;
996
+ var showSubmitButton = isNotInline && individualSubmit && dirty;
997
+ return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, isNotInline && {
998
+ onBlur: function onBlur() {
999
+ return dirty && handleSubmit();
1000
+ }
1001
+ }, {
981
1002
  type: "number",
982
1003
  suffix: showSubmitButton && /*#__PURE__*/React.createElement(Button, {
983
1004
  "data-cy": joinHyphenCase(fieldProps.label, "check-button"),
@@ -1063,8 +1084,13 @@ var Text = function Text(props) {
1063
1084
  dirty = _useFormikFields.dirty;
1064
1085
  var individualSubmit = props.individualSubmit,
1065
1086
  isInline = props.isInline;
1066
- var showSubmitButton = !isInline && individualSubmit && dirty;
1067
- return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, {
1087
+ var isNotInline = !isInline;
1088
+ var showSubmitButton = isNotInline && individualSubmit && dirty;
1089
+ return /*#__PURE__*/React.createElement(Input, _extends({}, fieldProps, isNotInline && {
1090
+ onBlur: function onBlur() {
1091
+ return dirty && handleSubmit();
1092
+ }
1093
+ }, {
1068
1094
  suffix: showSubmitButton && /*#__PURE__*/React.createElement(Button, {
1069
1095
  "data-cy": joinHyphenCase(fieldProps.label, "check-button"),
1070
1096
  icon: Check,
@@ -1250,7 +1276,6 @@ var FIELD_URL = "".concat(NEETO_FIELDS_URL, "/fields/:fieldId");
1250
1276
  var DEPENDENCIES_URL = "".concat(NEETO_FIELDS_URL, "/fields/:fieldId/dependencies");
1251
1277
  var FIELDS_REORDER_URL = "".concat(FIELDS_URL, "/reorder");
1252
1278
  var CONFIGS_URL = "".concat(NEETO_FIELDS_URL, "/configs");
1253
- var INFO_ICON_SIZE = 16;
1254
1279
 
1255
1280
  function ownKeys$d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1256
1281
  function _objectSpread$d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$d(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -2458,7 +2483,7 @@ var buildDefaultColumns = function buildDefaultColumns(_ref2) {
2458
2483
  key: "name",
2459
2484
  dataIndex: "name",
2460
2485
  title: t("neetoFields.titles.fieldName"),
2461
- width: "300px",
2486
+ width: 300,
2462
2487
  render: function render(name, field) {
2463
2488
  return /*#__PURE__*/React.createElement("div", {
2464
2489
  className: "flex items-center justify-between gap-x-3"
@@ -2486,12 +2511,12 @@ var buildDefaultColumns = function buildDefaultColumns(_ref2) {
2486
2511
  render: function render(kind) {
2487
2512
  return DISPLAY_KINDS[kind];
2488
2513
  },
2489
- width: "300px"
2514
+ width: 180
2490
2515
  }, {
2491
2516
  key: "isRequired",
2492
2517
  dataIndex: "isRequired",
2493
2518
  title: t("neetoFields.titles.required"),
2494
- width: "300px",
2519
+ width: 140,
2495
2520
  render: function render(boolVal) {
2496
2521
  return boolVal ? t("neetoFields.common.yes") : t("neetoFields.common.no");
2497
2522
  }
@@ -2971,20 +2996,6 @@ var FieldsTable = function FieldsTable(_ref) {
2971
2996
  }));
2972
2997
  };
2973
2998
 
2974
- var TitleWithHelpLink = function TitleWithHelpLink(_ref) {
2975
- var title = _ref.title,
2976
- helpUrl = _ref.helpUrl;
2977
- return /*#__PURE__*/React.createElement("div", {
2978
- className: "flex items-center gap-x-1"
2979
- }, title, helpUrl && /*#__PURE__*/React.createElement("a", {
2980
- href: helpUrl,
2981
- rel: "noreferrer",
2982
- target: "_blank"
2983
- }, /*#__PURE__*/React.createElement(Info, {
2984
- size: INFO_ICON_SIZE
2985
- })));
2986
- };
2987
-
2988
2999
  // eslint-disable-next-line @bigbinary/neeto/no-dumb-components-with-use-translation
2989
3000
  var ActionBlock = function ActionBlock(_ref) {
2990
3001
  var reorderable = _ref.reorderable,
@@ -3011,24 +3022,32 @@ var ActionBlock = function ActionBlock(_ref) {
3011
3022
  }));
3012
3023
  };
3013
3024
 
3014
- var _excluded = ["searchInputProps", "breadcrumbs", "title", "helpDocUrl"];
3015
- var Header = function Header(_ref) {
3025
+ var _excluded = ["searchInputProps", "breadcrumbs", "title", "helpDocUrl", "helpDescription"];
3026
+ var Header = withT(function (_ref) {
3016
3027
  var searchInputProps = _ref.searchInputProps,
3017
3028
  breadcrumbs = _ref.breadcrumbs,
3018
3029
  title = _ref.title,
3019
3030
  helpDocUrl = _ref.helpDocUrl,
3031
+ helpDescription = _ref.helpDescription,
3020
3032
  actionBlockProps = _objectWithoutProperties(_ref, _excluded);
3021
3033
  return /*#__PURE__*/React.createElement(NeetoUIHeader, {
3022
3034
  breadcrumbs: breadcrumbs,
3023
3035
  actionBlock: /*#__PURE__*/React.createElement(ActionBlock, actionBlockProps),
3024
3036
  searchProps: searchInputProps,
3025
3037
  size: "small",
3026
- title: /*#__PURE__*/React.createElement(TitleWithHelpLink, {
3027
- title: title,
3028
- helpUrl: helpDocUrl
3029
- })
3038
+ title: /*#__PURE__*/React.createElement("span", null, title, (helpDocUrl || helpDescription) && /*#__PURE__*/React.createElement(HelpPopover, _extends({
3039
+ className: "ml-2 self-center"
3040
+ }, helpDocUrl && {
3041
+ title: title
3042
+ }, helpDescription && {
3043
+ description: helpDescription
3044
+ }, helpDocUrl && {
3045
+ helpLinkProps: {
3046
+ href: helpDocUrl
3047
+ }
3048
+ })))
3030
3049
  });
3031
- };
3050
+ });
3032
3051
 
3033
3052
  var Menubar = function Menubar(_ref) {
3034
3053
  var menuBarItems = _ref.menuBarItems,
@@ -7457,6 +7476,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
7457
7476
  _ref$fieldStatesTaxon = _ref.fieldStatesTaxonomy,
7458
7477
  fieldStatesTaxonomy = _ref$fieldStatesTaxon === void 0 ? DEFAULT_FIELD_STATE_TAXONOMY : _ref$fieldStatesTaxon,
7459
7478
  helpDocUrl = _ref.helpDocUrl,
7479
+ helpDescription = _ref.helpDescription,
7460
7480
  _ref$nameAliases = _ref.nameAliases,
7461
7481
  nameAliases = _ref$nameAliases === void 0 ? {} : _ref$nameAliases,
7462
7482
  headerTitle = _ref.headerTitle,
@@ -7506,6 +7526,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
7506
7526
  reorderable: reorderable,
7507
7527
  breadcrumbs: breadcrumbs,
7508
7528
  helpDocUrl: helpDocUrl,
7529
+ helpDescription: helpDescription,
7509
7530
  searchInputProps: searchInputProps,
7510
7531
  setIsPaneOpen: setIsPaneOpen,
7511
7532
  setIsReorderPaneOpen: setIsReorderPaneOpen,
@@ -7522,6 +7543,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
7522
7543
  className: "flex h-screen w-full flex-grow items-center justify-center"
7523
7544
  }, /*#__PURE__*/React.createElement(PageLoader, null)) : /*#__PURE__*/React.createElement(FieldsTable, {
7524
7545
  columnData: columnData,
7546
+ helpDescription: helpDescription,
7525
7547
  helpDocUrl: helpDocUrl,
7526
7548
  pageProps: pageProps,
7527
7549
  setIsPaneOpen: setIsPaneOpen,