@bigbinary/neeto-integrations-frontend 1.2.2 → 1.3.0

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.cjs.js CHANGED
@@ -5,10 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var classnames = require('classnames');
7
7
  var pure = require('@bigbinary/neeto-commons-frontend/pure');
8
- var neetoIcons = require('@bigbinary/neeto-icons');
8
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
9
9
  var neetoui = require('@bigbinary/neetoui');
10
10
  var ramda = require('ramda');
11
- var utils = require('@bigbinary/neeto-commons-frontend/utils');
11
+ var neetoIcons = require('@bigbinary/neeto-icons');
12
12
  var formik = require('@bigbinary/neetoui/formik');
13
13
  var Yup = require('yup');
14
14
 
@@ -2810,7 +2810,7 @@ instance.hasLoadedNamespace;
2810
2810
  instance.loadNamespaces;
2811
2811
  instance.loadLanguages;
2812
2812
 
2813
- function _objectWithoutPropertiesLoose(source, excluded) {
2813
+ function _objectWithoutPropertiesLoose$1(source, excluded) {
2814
2814
  if (source == null) return {};
2815
2815
  var target = {};
2816
2816
  var sourceKeys = Object.keys(source);
@@ -2823,9 +2823,9 @@ function _objectWithoutPropertiesLoose(source, excluded) {
2823
2823
  return target;
2824
2824
  }
2825
2825
 
2826
- function _objectWithoutProperties(source, excluded) {
2826
+ function _objectWithoutProperties$1(source, excluded) {
2827
2827
  if (source == null) return {};
2828
- var target = _objectWithoutPropertiesLoose(source, excluded);
2828
+ var target = _objectWithoutPropertiesLoose$1(source, excluded);
2829
2829
  var key, i;
2830
2830
  if (Object.getOwnPropertySymbols) {
2831
2831
  var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
@@ -3209,7 +3209,7 @@ function hasLoadedNamespace(ns, i18n) {
3209
3209
  });
3210
3210
  }
3211
3211
 
3212
- var _excluded = ["format"],
3212
+ var _excluded$1 = ["format"],
3213
3213
  _excluded2 = ["children", "count", "parent", "i18nKey", "context", "tOptions", "values", "defaults", "components", "ns", "i18n", "t", "shouldUnescape"];
3214
3214
  function ownKeys$3(object, enumerableOnly) {
3215
3215
  var keys = Object.keys(object);
@@ -3293,7 +3293,7 @@ function nodesToString(children, i18nOptions) {
3293
3293
  warn("Trans: the passed in value is invalid - seems you passed in a null child.");
3294
3294
  } else if (_typeof$1(child) === 'object') {
3295
3295
  var format = child.format,
3296
- clone = _objectWithoutProperties(child, _excluded);
3296
+ clone = _objectWithoutProperties$1(child, _excluded$1);
3297
3297
  var keys = Object.keys(clone);
3298
3298
  if (keys.length === 1) {
3299
3299
  var value = format ? "".concat(keys[0], ", ").concat(format) : keys[0];
@@ -3429,7 +3429,7 @@ function Trans(_ref) {
3429
3429
  i18nFromProps = _ref.i18n,
3430
3430
  tFromProps = _ref.t,
3431
3431
  shouldUnescape = _ref.shouldUnescape,
3432
- additionalProps = _objectWithoutProperties(_ref, _excluded2);
3432
+ additionalProps = _objectWithoutProperties$1(_ref, _excluded2);
3433
3433
  var _ref2 = React.useContext(I18nContext) || {},
3434
3434
  i18nFromContext = _ref2.i18n,
3435
3435
  defaultNSFromContext = _ref2.defaultNS;
@@ -3640,7 +3640,15 @@ var common = {
3640
3640
  disconnect: "Disconnect",
3641
3641
  finish: "Finish",
3642
3642
  required: "Required",
3643
- "delete": "Delete"
3643
+ "delete": "Delete",
3644
+ tryAgain: "Try Again"
3645
+ };
3646
+ var tags = {
3647
+ connected: "Connected",
3648
+ expired: "Expired"
3649
+ };
3650
+ var tooltip = {
3651
+ integrationNotAvailable: "This integration is not available right now."
3644
3652
  };
3645
3653
  var demo = {
3646
3654
  title: "Check how it behaves",
@@ -3671,6 +3679,8 @@ var zapier = {
3671
3679
  };
3672
3680
  var en = {
3673
3681
  common: common,
3682
+ tags: tags,
3683
+ tooltip: tooltip,
3674
3684
  demo: demo,
3675
3685
  walkthroughModal: walkthroughModal,
3676
3686
  zapier: zapier
@@ -3690,66 +3700,234 @@ instance.use(initReactI18next).init({
3690
3700
  }
3691
3701
  });
3692
3702
 
3703
+ function _extends$1() {
3704
+ _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
3705
+ for (var i = 1; i < arguments.length; i++) {
3706
+ var source = arguments[i];
3707
+ for (var key in source) {
3708
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
3709
+ target[key] = source[key];
3710
+ }
3711
+ }
3712
+ }
3713
+ return target;
3714
+ };
3715
+ return _extends$1.apply(this, arguments);
3716
+ }
3717
+
3718
+ var renderDataCy = function renderDataCy(label, suffix) {
3719
+ return "".concat(label.replace(/\./g, "").toLowerCase(), "-").concat(suffix);
3720
+ };
3721
+
3693
3722
  var Menu$1 = neetoui.Dropdown.Menu,
3694
3723
  MenuItem$1 = neetoui.Dropdown.MenuItem;
3724
+ var Dropdown = function Dropdown(_ref) {
3725
+ var _ref$customDropDown = _ref.customDropDown,
3726
+ CustomDropdown = _ref$customDropDown === void 0 ? {} : _ref$customDropDown,
3727
+ _ref$handleManage = _ref.handleManage,
3728
+ handleManage = _ref$handleManage === void 0 ? pure.noop : _ref$handleManage,
3729
+ _ref$hideDisconnect = _ref.hideDisconnect,
3730
+ hideDisconnect = _ref$hideDisconnect === void 0 ? false : _ref$hideDisconnect,
3731
+ _ref$onDisconnect = _ref.onDisconnect,
3732
+ onDisconnect = _ref$onDisconnect === void 0 ? pure.noop : _ref$onDisconnect;
3733
+ var _useTranslation = useTranslation(),
3734
+ t = _useTranslation.t;
3735
+ var isManageable = ramda.isNotNil(handleManage);
3736
+ if (ramda.isNotNil(CustomDropdown)) {
3737
+ return CustomDropdown;
3738
+ }
3739
+ if (!isManageable && hideDisconnect) {
3740
+ return null;
3741
+ }
3742
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
3743
+ buttonProps: {
3744
+ onClick: function onClick(e) {
3745
+ return e.stopPropagation();
3746
+ }
3747
+ },
3748
+ buttonStyle: "text",
3749
+ dropdownProps: {
3750
+ onClick: function onClick(e) {
3751
+ return e.stopPropagation();
3752
+ }
3753
+ },
3754
+ icon: neetoIcons.MenuVertical
3755
+ }, /*#__PURE__*/React__default["default"].createElement(Menu$1, null, isManageable && /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, {
3756
+ onClick: function onClick() {
3757
+ return handleManage();
3758
+ }
3759
+ }, t("common.manage")), !hideDisconnect && /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, {
3760
+ onClick: function onClick() {
3761
+ return onDisconnect();
3762
+ }
3763
+ }, t("common.disconnect"))));
3764
+ };
3765
+
3766
+ var Status = function Status(_ref) {
3767
+ var isExpired = _ref.isExpired;
3768
+ var _useTranslation = useTranslation(),
3769
+ t = _useTranslation.t;
3770
+ var tagProps = isExpired ? {
3771
+ icon: neetoIcons.Warning,
3772
+ label: t("tags.expired"),
3773
+ style: "warning"
3774
+ } : {
3775
+ icon: neetoIcons.Check,
3776
+ label: t("tags.connected"),
3777
+ style: "success"
3778
+ };
3779
+ return /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, _extends$1({
3780
+ className: "flex-row-reverse"
3781
+ }, tagProps));
3782
+ };
3783
+
3784
+ function _objectWithoutPropertiesLoose(source, excluded) {
3785
+ if (source == null) return {};
3786
+ var target = {};
3787
+ var sourceKeys = Object.keys(source);
3788
+ var key, i;
3789
+ for (i = 0; i < sourceKeys.length; i++) {
3790
+ key = sourceKeys[i];
3791
+ if (excluded.indexOf(key) >= 0) continue;
3792
+ target[key] = source[key];
3793
+ }
3794
+ return target;
3795
+ }
3796
+
3797
+ function _objectWithoutProperties(source, excluded) {
3798
+ if (source == null) return {};
3799
+ var target = _objectWithoutPropertiesLoose(source, excluded);
3800
+ var key, i;
3801
+ if (Object.getOwnPropertySymbols) {
3802
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
3803
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
3804
+ key = sourceSymbolKeys[i];
3805
+ if (excluded.indexOf(key) >= 0) continue;
3806
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
3807
+ target[key] = source[key];
3808
+ }
3809
+ }
3810
+ return target;
3811
+ }
3812
+
3813
+ var _excluded = ["disabled", "children"];
3814
+ var TooltipWrapper = function TooltipWrapper(_ref) {
3815
+ var disabled = _ref.disabled,
3816
+ children = _ref.children,
3817
+ tooltipProps = _objectWithoutProperties(_ref, _excluded);
3818
+ return disabled ? /*#__PURE__*/React__default["default"].createElement(neetoui.Tooltip, tooltipProps, children) : children;
3819
+ };
3820
+
3695
3821
  var Card = function Card(_ref) {
3696
- var label = _ref.label,
3697
- description = _ref.description,
3698
- Icon = _ref.Icon,
3822
+ var Icon = _ref.icon,
3823
+ _ref$subIcons = _ref.subIcons,
3824
+ subIcons = _ref$subIcons === void 0 ? [] : _ref$subIcons,
3825
+ _ref$label = _ref.label,
3826
+ label = _ref$label === void 0 ? "" : _ref$label,
3827
+ _ref$description = _ref.description,
3828
+ description = _ref$description === void 0 ? "" : _ref$description,
3699
3829
  _ref$className = _ref.className,
3700
3830
  className = _ref$className === void 0 ? "" : _ref$className,
3701
- isConnected = _ref.isConnected,
3702
- _ref$isStatusLoading = _ref.isStatusLoading,
3703
- isStatusLoading = _ref$isStatusLoading === void 0 ? false : _ref$isStatusLoading,
3704
- _ref$customDropdown = _ref.customDropdown,
3705
- customDropdown = _ref$customDropdown === void 0 ? null : _ref$customDropdown,
3706
- _ref$onDisconnect = _ref.onDisconnect,
3707
- onDisconnect = _ref$onDisconnect === void 0 ? pure.noop : _ref$onDisconnect,
3708
3831
  _ref$onConnect = _ref.onConnect,
3709
3832
  onConnect = _ref$onConnect === void 0 ? pure.noop : _ref$onConnect,
3833
+ _ref$onDisconnect = _ref.onDisconnect,
3834
+ onDisconnect = _ref$onDisconnect === void 0 ? pure.noop : _ref$onDisconnect,
3710
3835
  _ref$onManage = _ref.onManage,
3711
- onManage = _ref$onManage === void 0 ? pure.noop : _ref$onManage;
3836
+ onManage = _ref$onManage === void 0 ? undefined : _ref$onManage,
3837
+ _ref$isLoading = _ref.isLoading,
3838
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
3839
+ _ref$isConnected = _ref.isConnected,
3840
+ isConnected = _ref$isConnected === void 0 ? false : _ref$isConnected,
3841
+ _ref$isFailed = _ref.isFailed,
3842
+ isFailed = _ref$isFailed === void 0 ? false : _ref$isFailed,
3843
+ _ref$isExpired = _ref.isExpired,
3844
+ isExpired = _ref$isExpired === void 0 ? false : _ref$isExpired,
3845
+ _ref$disabled = _ref.disabled,
3846
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
3847
+ _ref$hidden = _ref.hidden,
3848
+ hidden = _ref$hidden === void 0 ? false : _ref$hidden,
3849
+ _ref$hideDisconnect = _ref.hideDisconnect,
3850
+ hideDisconnect = _ref$hideDisconnect === void 0 ? false : _ref$hideDisconnect,
3851
+ _ref$onClick = _ref.onClick,
3852
+ onCardClick = _ref$onClick === void 0 ? undefined : _ref$onClick,
3853
+ _ref$tooltipProps = _ref.tooltipProps,
3854
+ tooltipProps = _ref$tooltipProps === void 0 ? {} : _ref$tooltipProps,
3855
+ _ref$customDropDown = _ref.customDropDown,
3856
+ customDropDown = _ref$customDropDown === void 0 ? null : _ref$customDropDown,
3857
+ children = _ref.children;
3712
3858
  var _useTranslation = useTranslation(),
3713
3859
  t = _useTranslation.t;
3714
- return /*#__PURE__*/React__default["default"].createElement("div", {
3715
- className: classnames__default["default"]("outline-none neeto-ui-border-gray-300 neeto-ui-shadow-xs hover:neeto-ui-border-gray-500 focus:neeto-ui-border-gray-500 neeto-ui-rounded-lg flex flex-col border p-6 no-underline transition-colors", className)
3860
+ var cardProps = function cardProps() {
3861
+ return isConnected && ramda.isNotNil(onCardClick) ? {
3862
+ onClick: onCardClick
3863
+ } : {};
3864
+ };
3865
+ return /*#__PURE__*/React__default["default"].createElement(TooltipWrapper, _extends$1({
3866
+ content: disabled && t("tooltip.integrationNotAvailable"),
3867
+ disabled: disabled,
3868
+ position: "top"
3869
+ }, tooltipProps), /*#__PURE__*/React__default["default"].createElement("div", _extends$1({
3870
+ className: classnames__default["default"]("outline-none neeto-ui-border-gray-300 neeto-ui-shadow-xs hover:neeto-ui-border-gray-500 focus:neeto-ui-border-gray-500 neeto-ui-rounded-lg flex flex-col border p-6 no-underline transition-colors", {
3871
+ "hover:neeto-ui-bg-100 cursor-not-allowed opacity-50": disabled,
3872
+ "cursor-pointer": isConnected && ramda.isNotNil(onCardClick),
3873
+ hidden: hidden
3874
+ }, className)
3875
+ }, cardProps()), /*#__PURE__*/React__default["default"].createElement("div", {
3876
+ className: "flex flex-grow justify-between",
3877
+ "data-cy": "integration-tabs"
3716
3878
  }, /*#__PURE__*/React__default["default"].createElement("div", {
3717
- className: "h-full"
3879
+ className: "flex min-w-0 flex-col justify-end"
3718
3880
  }, /*#__PURE__*/React__default["default"].createElement("div", {
3719
- className: "mb-4"
3720
- }, /*#__PURE__*/React__default["default"].createElement(Icon, {
3721
- className: "neeto-ui-text-gray-700",
3881
+ className: "relative mb-4 flex h-8"
3882
+ }, Icon && /*#__PURE__*/React__default["default"].createElement(Icon, {
3883
+ className: "neeto-ui-text-gray-600",
3722
3884
  size: 32
3723
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3724
- className: "neeto-ui-text-gray-800 mb-2",
3885
+ })), /*#__PURE__*/React__default["default"].createElement("div", {
3886
+ className: "my-auto"
3887
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3888
+ className: "mb-2",
3889
+ "data-cy": renderDataCy(label, "integration-card-label"),
3725
3890
  style: "h4",
3726
3891
  weight: "semibold"
3727
3892
  }, label), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3728
- className: "neeto-ui-text-gray-700",
3893
+ className: "break-words",
3894
+ "data-cy": "".concat(utils.joinHyphenCase(label), "-integration-description"),
3729
3895
  style: "body2"
3730
- }, description)), /*#__PURE__*/React__default["default"].createElement("div", {
3896
+ }, description), children)), pure.isNotEmpty(subIcons) && /*#__PURE__*/React__default["default"].createElement("div", {
3897
+ className: "flex h-24 flex-col gap-2"
3898
+ }, subIcons.map(function (Icon) {
3899
+ return /*#__PURE__*/React__default["default"].createElement(Icon, {
3900
+ className: "neeto-ui-text-gray-600",
3901
+ key: Icon,
3902
+ size: 24
3903
+ });
3904
+ }))), /*#__PURE__*/React__default["default"].createElement("div", {
3731
3905
  className: "neeto-ui-border-gray-300 mt-4 w-full border-t pt-2"
3732
- }, /*#__PURE__*/React__default["default"].createElement("div", {
3906
+ }, isLoading ? /*#__PURE__*/React__default["default"].createElement("div", {
3907
+ className: "mt-3 flex items-center justify-start"
3908
+ }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null)) : /*#__PURE__*/React__default["default"].createElement("div", {
3733
3909
  className: "flex h-8 items-center justify-between"
3734
- }, isConnected ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
3735
- className: "flex-row-reverse",
3736
- icon: neetoIcons.Check,
3737
- label: t("common.connected"),
3738
- size: "small",
3739
- style: "success"
3740
- }), customDropdown || /*#__PURE__*/React__default["default"].createElement(neetoui.Dropdown, {
3741
- buttonStyle: "text",
3742
- icon: neetoIcons.MenuVertical
3743
- }, /*#__PURE__*/React__default["default"].createElement(Menu$1, null, /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, {
3744
- onClick: onManage
3745
- }, t("common.manage")), /*#__PURE__*/React__default["default"].createElement(MenuItem$1.Button, {
3746
- onClick: onDisconnect
3747
- }, t("common.disconnect"))))) : /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3748
- label: !isStatusLoading && t("common.connect"),
3749
- loading: isStatusLoading,
3910
+ }, isConnected && /*#__PURE__*/React__default["default"].createElement(Status, {
3911
+ isExpired: isExpired
3912
+ }), isFailed && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3913
+ className: "neeto-ui-text-warning-500",
3914
+ "data-cy": renderDataCy(label, "connect-button"),
3915
+ disabled: disabled || isLoading,
3916
+ label: t("common.tryAgain"),
3750
3917
  style: "link",
3751
3918
  onClick: onConnect
3752
- }))));
3919
+ }), !isConnected && !isFailed && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3920
+ "data-cy": renderDataCy(label, "connect-button"),
3921
+ disabled: disabled || isLoading,
3922
+ label: t("common.connect"),
3923
+ style: "link",
3924
+ onClick: onConnect
3925
+ }), (isConnected || isFailed) && /*#__PURE__*/React__default["default"].createElement(Dropdown, {
3926
+ customDropDown: customDropDown,
3927
+ handleManage: onManage,
3928
+ hideDisconnect: hideDisconnect,
3929
+ onDisconnect: onDisconnect
3930
+ })))));
3753
3931
  };
3754
3932
 
3755
3933
  var Stepper = function Stepper(_ref) {
@@ -3818,21 +3996,6 @@ var Modal = function Modal(_ref) {
3818
3996
  }, children)));
3819
3997
  };
3820
3998
 
3821
- function _extends$1() {
3822
- _extends$1 = Object.assign ? Object.assign.bind() : function (target) {
3823
- for (var i = 1; i < arguments.length; i++) {
3824
- var source = arguments[i];
3825
- for (var key in source) {
3826
- if (Object.prototype.hasOwnProperty.call(source, key)) {
3827
- target[key] = source[key];
3828
- }
3829
- }
3830
- }
3831
- return target;
3832
- };
3833
- return _extends$1.apply(this, arguments);
3834
- }
3835
-
3836
3999
  var propTypes = {exports: {}};
3837
4000
 
3838
4001
  /**