@bigbinary/neeto-fields-frontend 1.1.8 → 1.1.10

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,5 +1,5 @@
1
1
  import React, { useContext, useState, useRef, useEffect, useMemo, useLayoutEffect, useCallback, createContext, memo, useReducer } from 'react';
2
- import { Checkbox as Checkbox$1, TimePicker, DatePicker, Select, Input, Textarea, Typography, Pane, Label, Button as Button$1, Dropdown, Alert, NoData, Table, Spinner } from '@bigbinary/neetoui';
2
+ import { Checkbox as Checkbox$1, TimePicker, DatePicker, Select, Input, Textarea, Typography, Pane, Label, Button as Button$1, Dropdown, Tab, Alert, NoData, Table, Spinner } from '@bigbinary/neetoui';
3
3
  import { toLabelAndValue, isNotEmpty, capitalize as capitalize$1, filterBy, findBy, slugify, humanize, countBy, existsBy, noop as noop$2 } from '@bigbinary/neeto-commons-frontend/pure';
4
4
  import { values, map, isNotNil, 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';
@@ -5324,6 +5324,7 @@ var validations = {
5324
5324
  fieldOptionIsRequired: "Field option is required",
5325
5325
  kindIsRequired: "Kind is required",
5326
5326
  invalidRegexPattern: "Invalid regex pattern",
5327
+ advancedRegexAssertionsNotSupported: "Advanced regex assertions are not supported",
5327
5328
  notAValidNumber: "Entered number is not valid",
5328
5329
  notAValidInteger: "Entered number is not a valid integer",
5329
5330
  notAValid: "Entered number is not valid",
@@ -6633,8 +6634,31 @@ var renderFormFooter = function renderFormFooter(_ref3) {
6633
6634
  }));
6634
6635
  };
6635
6636
 
6637
+ var PERMITTED_REGEX_PATTERN = /^\/.*\/[igmsyu]*$/;
6638
+ var ADVANCED_REGEX_ASSERTION_PATTERN = /\(\?=[^)]*\)|\(\?![^)]*\)|\(\?<=[^)]*\)|\(\?<![^)]*\)/;
6636
6639
  var regexValidationSchema = yup.object().shape({
6637
- condition: yup.string().required(t$1("validations.regexConditionIsRequired")).matches(/^\/.*\/[igmsyu]*$/, t$1("validations.invalidRegexPattern")),
6640
+ condition: yup.string().required(t$1("validations.regexConditionIsRequired")).matches(PERMITTED_REGEX_PATTERN, t$1("validations.invalidRegexPattern")).test({
6641
+ name: "test-regex-is-advanced",
6642
+ message: t$1("validations.advancedRegexAssertionsNotSupported") || "",
6643
+ test: function test(value) {
6644
+ return !ADVANCED_REGEX_ASSERTION_PATTERN.test(value);
6645
+ }
6646
+ }).test({
6647
+ name: "test-regex-condition-pattern",
6648
+ message: t$1("validations.invalidRegexPattern") || "",
6649
+ test: function test(value) {
6650
+ try {
6651
+ var lastIndex = value.lastIndexOf("/");
6652
+ var condition = value.substring(1, lastIndex);
6653
+ // Evaluating the regex to check if it is valid
6654
+ new RegExp(condition);
6655
+ "".search(condition);
6656
+ return true;
6657
+ } catch (_unused) {
6658
+ return false;
6659
+ }
6660
+ }
6661
+ }),
6638
6662
  helpMessage: yup.string().required(t$1("validations.regexHelpMessageIsRequired"))
6639
6663
  });
6640
6664
  var dropDownOptionsValidationSchema = yup.array().of(yup.object().shape({
@@ -7642,34 +7666,27 @@ var renderMenuBarItems = function renderMenuBarItems(_ref2) {
7642
7666
  });
7643
7667
  });
7644
7668
  };
7645
- var renderMenuBarFilters = function renderMenuBarFilters(_ref3) {
7669
+ var renderStateFilterTabs = function renderStateFilterTabs(_ref3) {
7646
7670
  var selectedState = _ref3.selectedState,
7647
7671
  fieldStatesTaxonomy = _ref3.fieldStatesTaxonomy,
7648
7672
  activeFieldsCount = _ref3.activeFieldsCount,
7649
7673
  inactiveFieldsCount = _ref3.inactiveFieldsCount,
7650
7674
  handleBlockClick = _ref3.handleBlockClick;
7651
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MenuBar.SubTitle, null, /*#__PURE__*/React.createElement(Typography, {
7652
- "data-cy": "menubar-subtitle",
7653
- style: "h5",
7654
- textTransform: "uppercase",
7655
- weight: "bold"
7656
- }, t$1("titles.filters"))), /*#__PURE__*/React.createElement(MenuBar.Block, {
7675
+ return /*#__PURE__*/React.createElement(Tab, {
7676
+ className: "mb-4"
7677
+ }, /*#__PURE__*/React.createElement(Tab.Item, {
7657
7678
  active: selectedState === FIELD_STATES.active,
7658
- count: activeFieldsCount,
7659
7679
  "data-cy": "menubar-active-block",
7660
- label: fieldStatesTaxonomy.active,
7661
7680
  onClick: handleBlockClick({
7662
7681
  state: FIELD_STATES.active
7663
7682
  })
7664
- }), /*#__PURE__*/React.createElement(MenuBar.Block, {
7683
+ }, fieldStatesTaxonomy.active, "(", activeFieldsCount, ")"), /*#__PURE__*/React.createElement(Tab.Item, {
7665
7684
  active: selectedState === FIELD_STATES.inactive,
7666
- count: inactiveFieldsCount,
7667
7685
  "data-cy": "menubar-inactive-block",
7668
- label: fieldStatesTaxonomy.inactive,
7669
7686
  onClick: handleBlockClick({
7670
7687
  state: FIELD_STATES.inactive
7671
7688
  })
7672
- }));
7689
+ }, fieldStatesTaxonomy.inactive, "(", inactiveFieldsCount, ")"));
7673
7690
  };
7674
7691
  var getResourceName = function getResourceName(_ref4) {
7675
7692
  var isOwnerBased = _ref4.isOwnerBased,
@@ -7687,24 +7704,11 @@ var getResourceName = function getResourceName(_ref4) {
7687
7704
  var getDashBoardTitle = function getDashBoardTitle(_ref5) {
7688
7705
  var resourceName = _ref5.resourceName,
7689
7706
  isSingleResource = _ref5.isSingleResource,
7690
- showStateFilter = _ref5.showStateFilter,
7691
- selectedState = _ref5.selectedState,
7692
7707
  title = _ref5.title;
7693
- var displayTitle = title;
7694
- if (showStateFilter && !isSingleResource) {
7695
- displayTitle = t$1("messages.stateTitleForResource", {
7696
- state: selectedState,
7697
- title: title,
7698
- resource: resourceName
7699
- });
7700
- } else if (showStateFilter && isSingleResource) {
7701
- displayTitle = "".concat(selectedState, " ").concat(title);
7702
- } else if (!showStateFilter && !isSingleResource) {
7703
- displayTitle = t$1("messages.titleForResource", {
7704
- title: title,
7705
- resource: resourceName
7706
- });
7707
- }
7708
+ var displayTitle = isSingleResource ? title : t$1("messages.titleForResource", {
7709
+ title: title,
7710
+ resource: resourceName
7711
+ });
7708
7712
  return humanize(displayTitle);
7709
7713
  };
7710
7714
  var renderNoDataHelpText = function renderNoDataHelpText(title, url) {
@@ -7906,7 +7910,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7906
7910
  }
7907
7911
  };
7908
7912
  var isScreenLoading = isFieldsLoading || isConfigsLoading;
7909
- var showCountSubheader = count > 0;
7913
+ var showCountSubheader = count > 0 && !showStateFilter;
7910
7914
  var searchProps = {
7911
7915
  onChange: function onChange(e) {
7912
7916
  return setSearchTerm(e.target.value);
@@ -7916,7 +7920,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7916
7920
  className: "w-44"
7917
7921
  };
7918
7922
  var isSingleResource = menuItems.length === 1;
7919
- var isMenuBarNeeded = showStateFilter || !isSingleResource;
7923
+ var isMenuBarNeeded = !isSingleResource && !isConfigsLoading;
7920
7924
  var resourceName = useMemo(function () {
7921
7925
  return getResourceName({
7922
7926
  isOwnerBased: isOwnerBased,
@@ -7928,14 +7932,12 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7928
7932
  var headerDisplayTitle = useMemo(function () {
7929
7933
  return getDashBoardTitle({
7930
7934
  resourceName: resourceName,
7931
- showStateFilter: showStateFilter,
7932
- selectedState: state,
7933
7935
  isSingleResource: isSingleResource,
7934
7936
  title: title
7935
7937
  });
7936
7938
  }, [state, isSingleResource, resourceName]);
7937
- var menuBarFilters = useMemo(function () {
7938
- return renderMenuBarFilters({
7939
+ var stateFilterTabs = useMemo(function () {
7940
+ return renderStateFilterTabs({
7939
7941
  selectedState: state,
7940
7942
  fieldStatesTaxonomy: fieldStatesTaxonomy,
7941
7943
  activeFieldsCount: activeFieldsCount,
@@ -7984,7 +7986,7 @@ var useFieldsDashboard = function useFieldsDashboard(_ref) {
7984
7986
  handleClosePane: handleClosePane,
7985
7987
  handleReorderPaneClose: handleReorderPaneClose,
7986
7988
  searchProps: searchProps,
7987
- menuBarFilters: menuBarFilters,
7989
+ stateFilterTabs: stateFilterTabs,
7988
7990
  menuBarItems: menuBarItems,
7989
7991
  allFields: allFields,
7990
7992
  headerDisplayTitle: headerDisplayTitle
@@ -12488,7 +12490,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
12488
12490
  handleClosePane = _useFieldsDashboard.handleClosePane,
12489
12491
  handleReorderPaneClose = _useFieldsDashboard.handleReorderPaneClose,
12490
12492
  searchProps = _useFieldsDashboard.searchProps,
12491
- menuBarFilters = _useFieldsDashboard.menuBarFilters,
12493
+ stateFilterTabs = _useFieldsDashboard.stateFilterTabs,
12492
12494
  menuBarItems = _useFieldsDashboard.menuBarItems,
12493
12495
  allFields = _useFieldsDashboard.allFields,
12494
12496
  headerDisplayTitle = _useFieldsDashboard.headerDisplayTitle;
@@ -12497,8 +12499,8 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
12497
12499
  title: title
12498
12500
  }, isConfigsLoading ? /*#__PURE__*/React.createElement("div", {
12499
12501
  className: "flex items-center justify-center"
12500
- }, /*#__PURE__*/React.createElement(Spinner, null)) : menuBarItems, showStateFilter && menuBarFilters), isScreenLoading && isEmpty(fields) ? /*#__PURE__*/React.createElement("div", {
12501
- className: "flex w-full flex-grow items-center justify-center"
12502
+ }, /*#__PURE__*/React.createElement(Spinner, null)) : menuBarItems), isScreenLoading && isEmpty(fields) ? /*#__PURE__*/React.createElement("div", {
12503
+ className: "flex h-screen w-full flex-grow items-center justify-center"
12502
12504
  }, /*#__PURE__*/React.createElement(PageLoader, null)) : /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Header, _extends({}, _objectSpread$2(_objectSpread$2({
12503
12505
  breadcrumbs: breadcrumbs
12504
12506
  }, isMenuBarNeeded && {
@@ -12536,7 +12538,7 @@ var FieldsDashboard = function FieldsDashboard(_ref) {
12536
12538
  "data-cy": "neeto-fields-subheader-text",
12537
12539
  style: "h4"
12538
12540
  }, "".concat(count, " "), t("titles.field", count > 1 ? PLURAL : SINGULAR).toLocaleLowerCase())
12539
- }), /*#__PURE__*/React.createElement(FieldsTable, {
12541
+ }), showStateFilter && stateFilterTabs, /*#__PURE__*/React.createElement(FieldsTable, {
12540
12542
  isLoading: isFieldsFetching || isFieldsLoading,
12541
12543
  rowData: isEmpty(rowData) ? fields : rowData,
12542
12544
  totalCount: count,