@bigbinary/neeto-templates-frontend 1.1.18 → 1.2.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/README.md CHANGED
@@ -8,6 +8,7 @@ The `neeto-templates-nano` facilitates the administration of templates and templ
8
8
  * [Usage](#usage)
9
9
  - [Frontend package](#frontend-package)
10
10
  * [Installation](#installation-1)
11
+ * [Instructions for development](#instructions-for-development)
11
12
  * [Components](#components)
12
13
  * [Other Functions](#other-functions)
13
14
 
@@ -75,6 +76,9 @@ Once installed add the plugin to your `tailwind.config.js` file:
75
76
  plugins: [require("@tailwindcss/line-clamp")]
76
77
  ```
77
78
 
79
+ ### Instructions for development
80
+ Check the [Frontend package development guide](https://neeto-engineering.neetokb.com/p/a-d34cb4b0) for step-by-step instructions to develop the
81
+
78
82
  ### Components
79
83
  #### `CreateTemplateModal` ([source code](https://github.com/bigbinary/neeto-templates-nano/blob/aec3368475c252284a25820c08ff151c1cdd254c/app/javascript/src/components/CreateTemplateModal/index.jsx))
80
84
  The CreateTemplateModal component is a React component used for creating and previewing templates within a web application. It provides a user interface for users to create templates and view their details.
package/dist/index.cjs.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var neetocist = require('neetocist');
6
+ var neetoCist = require('@bigbinary/neeto-cist');
7
7
  var neetoui = require('@bigbinary/neetoui');
8
8
  var PageLoader = require('@bigbinary/neeto-molecules/PageLoader');
9
9
  var Search = require('@bigbinary/neeto-molecules/Search');
@@ -60,31 +60,31 @@ function _arrayWithHoles(arr) {
60
60
  if (Array.isArray(arr)) return arr;
61
61
  }
62
62
 
63
- function _iterableToArrayLimit(arr, i) {
64
- var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
65
- if (null != _i) {
66
- var _s,
67
- _e,
68
- _x,
69
- _r,
70
- _arr = [],
71
- _n = !0,
72
- _d = !1;
63
+ function _iterableToArrayLimit(r, l) {
64
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
65
+ if (null != t) {
66
+ var e,
67
+ n,
68
+ i,
69
+ u,
70
+ a = [],
71
+ f = !0,
72
+ o = !1;
73
73
  try {
74
- if (_x = (_i = _i.call(arr)).next, 0 === i) {
75
- if (Object(_i) !== _i) return;
76
- _n = !1;
77
- } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
78
- } catch (err) {
79
- _d = !0, _e = err;
74
+ if (i = (t = t.call(r)).next, 0 === l) {
75
+ if (Object(t) !== t) return;
76
+ f = !1;
77
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
78
+ } catch (r) {
79
+ o = !0, n = r;
80
80
  } finally {
81
81
  try {
82
- if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
82
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
83
83
  } finally {
84
- if (_d) throw _e;
84
+ if (o) throw n;
85
85
  }
86
86
  }
87
- return _arr;
87
+ return a;
88
88
  }
89
89
  }
90
90
 
@@ -125,14 +125,14 @@ var MENU_ITEMS = {
125
125
  PREVIEW: "preview"
126
126
  };
127
127
 
128
- function _typeof(obj) {
128
+ function _typeof(o) {
129
129
  "@babel/helpers - typeof";
130
130
 
131
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
132
- return typeof obj;
133
- } : function (obj) {
134
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
135
- }, _typeof(obj);
131
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
132
+ return typeof o;
133
+ } : function (o) {
134
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
135
+ }, _typeof(o);
136
136
  }
137
137
 
138
138
  function _toPrimitive(input, hint) {
@@ -2515,8 +2515,8 @@ var QUERY_KEYS = {
2515
2515
  TEMPLATE_TAGS: "template-tags"
2516
2516
  };
2517
2517
 
2518
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2519
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2518
+ function ownKeys$3(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; }
2519
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2520
2520
  var useFetchTemplates = function useFetchTemplates(_ref) {
2521
2521
  var searchTerm = _ref.searchTerm,
2522
2522
  category = _ref.category;
@@ -2554,7 +2554,7 @@ var useCreateTemplate = function useCreateTemplate(_ref3, options) {
2554
2554
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2555
2555
  args[_key] = arguments[_key];
2556
2556
  }
2557
- options === null || options === void 0 ? void 0 : options.onSuccess.apply(options, args);
2557
+ options === null || options === void 0 || options.onSuccess.apply(options, args);
2558
2558
  }
2559
2559
  }));
2560
2560
  };
@@ -2590,14 +2590,14 @@ var BlankCard = function BlankCard(_ref) {
2590
2590
  title = _ref.title,
2591
2591
  description = _ref.description,
2592
2592
  _ref$onClick = _ref.onClick,
2593
- onClick = _ref$onClick === void 0 ? neetocist.noop : _ref$onClick,
2593
+ onClick = _ref$onClick === void 0 ? neetoCist.noop : _ref$onClick,
2594
2594
  _ref$disabled = _ref.disabled,
2595
2595
  disabled = _ref$disabled === void 0 ? false : _ref$disabled;
2596
2596
  return /*#__PURE__*/React__default["default"].createElement("div", {
2597
2597
  className: "neeto-ui-rounded-lg neeto-ui-bg-white hover:neeto-ui-bg-white neeto-ui-border-primary-500 outline-none flex cursor-pointer flex-col items-center justify-center border border-dashed p-6 transition-all duration-300 ease-in-out hover:border-solid focus:border-solid",
2598
2598
  "data-cy": "start-from-scratch-button",
2599
2599
  tabIndex: 0,
2600
- onClick: !disabled ? onClick : neetocist.noop
2600
+ onClick: !disabled ? onClick : neetoCist.noop
2601
2601
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2602
2602
  className: "neeto-ui-text-primary-500 mb-4"
2603
2603
  }, /*#__PURE__*/React__default["default"].createElement(Icon, {
@@ -2724,8 +2724,8 @@ var CategoryItem = function CategoryItem(_ref) {
2724
2724
  }, /*#__PURE__*/React__default["default"].createElement("span", null, label), /*#__PURE__*/React__default["default"].createElement("span", null, count));
2725
2725
  };
2726
2726
 
2727
- function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2728
- 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; }
2727
+ function ownKeys$2(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; }
2728
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2729
2729
  var List = function List(_ref) {
2730
2730
  var setCurrentScreen = _ref.setCurrentScreen,
2731
2731
  setSelectedTemplate = _ref.setSelectedTemplate,
@@ -2782,7 +2782,7 @@ var List = function List(_ref) {
2782
2782
  return /*#__PURE__*/React__default["default"].createElement("div", {
2783
2783
  className: "neeto-ui-bg-gray-100 relative flex min-h-full items-start"
2784
2784
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2785
- className: "sticky left-0 top-0 w-80 flex-shrink-0 space-y-8 py-6 pl-16"
2785
+ className: "sticky left-0 top-0 w-52 flex-shrink-0 space-y-8 py-6 pl-4 md:w-72 md:pl-10 lg:w-80 xl:pl-16"
2786
2786
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2787
2787
  className: "space-y-4"
2788
2788
  }, /*#__PURE__*/React__default["default"].createElement("div", {
@@ -2797,6 +2797,7 @@ var List = function List(_ref) {
2797
2797
  }, t("neetoTemplate.templates.description"))), /*#__PURE__*/React__default["default"].createElement(Search__default["default"], {
2798
2798
  autoFocus: true,
2799
2799
  disableTrimOnBlur: true,
2800
+ "data-cy": "template-search-input",
2800
2801
  placeholder: t("neetoTemplate.templates.search"),
2801
2802
  onSearch: function onSearch(value) {
2802
2803
  return setSearchTerm(value);
@@ -2826,12 +2827,12 @@ var List = function List(_ref) {
2826
2827
  }
2827
2828
  });
2828
2829
  })))), /*#__PURE__*/React__default["default"].createElement("div", {
2829
- className: "overflow-y-auto px-16 py-6",
2830
+ className: "h-screen overflow-y-auto py-8 pl-5 pr-4 md:pl-8 md:pr-20 xl:px-20",
2830
2831
  ref: rootRef
2831
2832
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2832
2833
  className: "flex-grow space-y-6"
2833
2834
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2834
- className: "grid grid-cols-2 gap-6 md:grid-cols-3 2xl:grid-cols-4"
2835
+ className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 lg:gap-5 xl:gap-6 2xl:grid-cols-4"
2835
2836
  }, /*#__PURE__*/React__default["default"].createElement(BlankCard, {
2836
2837
  description: t("neetoTemplate.templates.blankCard.description"),
2837
2838
  disabled: isCreating,
@@ -2840,10 +2841,10 @@ var List = function List(_ref) {
2840
2841
  onClick: onCreate
2841
2842
  }), templates.map(function (template, index) {
2842
2843
  return /*#__PURE__*/React__default["default"].createElement(Card, {
2843
- key: index,
2844
- template: template,
2845
2844
  afterCreate: afterCreate,
2846
2845
  refetchResource: refetchResource,
2846
+ template: template,
2847
+ key: index,
2847
2848
  onClick: function onClick() {
2848
2849
  return handleCardClick(template);
2849
2850
  }
@@ -2880,10 +2881,11 @@ var Preview$1 = function Preview(_ref) {
2880
2881
  return /*#__PURE__*/React__default["default"].createElement("div", {
2881
2882
  className: "m-auto flex h-full w-full max-w-5xl flex-col space-y-6 py-6"
2882
2883
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2883
- className: "flex items-center justify-between gap-6"
2884
+ className: "flex flex-col items-center justify-between gap-6 pl-4 pr-16 md:flex-row md:pr-20 xl:px-0"
2884
2885
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2885
2886
  className: "flex min-w-0 flex-grow items-center gap-2"
2886
2887
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2888
+ className: "flex-shrink-0",
2887
2889
  "data-cy": "preview-template-back-button",
2888
2890
  icon: neetoIcons.LeftArrow,
2889
2891
  style: "text",
@@ -2896,6 +2898,7 @@ var Preview$1 = function Preview(_ref) {
2896
2898
  style: "h2",
2897
2899
  weight: "semibold"
2898
2900
  }, title)), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
2901
+ className: "flex-shrink-0",
2899
2902
  "data-cy": "preview-use-template-button",
2900
2903
  disabled: isCreating,
2901
2904
  label: t("neetoTemplate.templates.editTemplate"),
@@ -2916,9 +2919,9 @@ var CreateTemplateModal = function CreateTemplateModal(_ref) {
2916
2919
  isCreating = _ref.isCreating,
2917
2920
  refetchResource = _ref.refetchResource,
2918
2921
  _ref$onCreate = _ref.onCreate,
2919
- onCreate = _ref$onCreate === void 0 ? neetocist.noop : _ref$onCreate,
2922
+ onCreate = _ref$onCreate === void 0 ? neetoCist.noop : _ref$onCreate,
2920
2923
  _ref$afterCreate = _ref.afterCreate,
2921
- afterCreate = _ref$afterCreate === void 0 ? neetocist.noop : _ref$afterCreate;
2924
+ afterCreate = _ref$afterCreate === void 0 ? neetoCist.noop : _ref$afterCreate;
2922
2925
  var _useState = React.useState(TEMPLATE_SCREENS.LIST),
2923
2926
  _useState2 = _slicedToArray(_useState, 2),
2924
2927
  currentScreen = _useState2[0],
@@ -2969,8 +2972,8 @@ var templateTagsApi = {
2969
2972
  list: list
2970
2973
  };
2971
2974
 
2972
- function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2973
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
2975
+ function ownKeys$1(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; }
2976
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2974
2977
  var useCreateTemplateTag = function useCreateTemplateTag(options) {
2975
2978
  var queryClient = reactQuery.useQueryClient();
2976
2979
  return reactQuery.useMutation(templateTagsApi.create, _objectSpread$1(_objectSpread$1({}, options), {}, {
@@ -2978,7 +2981,7 @@ var useCreateTemplateTag = function useCreateTemplateTag(options) {
2978
2981
  var _options$onSuccess;
2979
2982
  neetoTagsFrontend.refetchTags();
2980
2983
  queryClient.invalidateQueries(QUERY_KEYS.TEMPLATE_TAGS);
2981
- options === null || options === void 0 || (_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 ? void 0 : _options$onSuccess.call(options);
2984
+ options === null || options === void 0 || (_options$onSuccess = options.onSuccess) === null || _options$onSuccess === void 0 || _options$onSuccess.call(options);
2982
2985
  }
2983
2986
  }));
2984
2987
  };
@@ -3000,7 +3003,7 @@ var FormikImageUploader = function FormikImageUploader(_ref) {
3000
3003
  return setValue(file.url);
3001
3004
  };
3002
3005
  return /*#__PURE__*/React__default["default"].createElement(neetoImageUploaderFrontend.ImageUploader, {
3003
- className: "h-80 w-full",
3006
+ className: "h-52 w-full md:h-80",
3004
3007
  src: field.value,
3005
3008
  uploadConfig: IMAGE_UPLOAD_CONFIG,
3006
3009
  onUploadComplete: handleImageUpload
@@ -3053,7 +3056,7 @@ var Tags = function Tags(_ref) {
3053
3056
  return onUpdate([].concat(_toConsumableArray(selectedTags), [newTag]));
3054
3057
  };
3055
3058
  var handleTagRemove = function handleTagRemove(removedTag) {
3056
- var updatedTags = neetocist.removeBy({
3059
+ var updatedTags = neetoCist.removeBy({
3057
3060
  value: removedTag.value
3058
3061
  }, selectedTags);
3059
3062
  onUpdate(updatedTags);
@@ -3099,17 +3102,20 @@ var Preview = function Preview(_ref) {
3099
3102
  className: "neeto-template__header"
3100
3103
  }, /*#__PURE__*/React__default["default"].createElement("img", {
3101
3104
  className: "neeto-template__image",
3105
+ "data-cy": "template-image-preview",
3102
3106
  src: imageUrl || "https://d2v7kzglnr2dnh.cloudfront.net/images/neetoForm/default-form-template.svg"
3103
3107
  })), /*#__PURE__*/React__default["default"].createElement("div", {
3104
3108
  className: "neeto-ui-bg-white flex items-center justify-between gap-2 rounded-b-lg px-2 py-1.5"
3105
3109
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3106
3110
  className: "neeto-ui-text-gray-800",
3111
+ "data-cy": "template-title-text",
3107
3112
  lineHeight: "normal",
3108
3113
  style: "body2"
3109
3114
  }, template.title)));
3110
3115
  };
3111
3116
 
3112
- var buildSelectOptionsBy = function buildSelectOptionsBy(labelField, options) {
3117
+ var buildSelectOptionsBy = function buildSelectOptionsBy(labelField) {
3118
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
3113
3119
  var valueField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "id";
3114
3120
  return options.map(function (option) {
3115
3121
  return {
@@ -3120,7 +3126,7 @@ var buildSelectOptionsBy = function buildSelectOptionsBy(labelField, options) {
3120
3126
  };
3121
3127
  var buildTagOptions = function buildTagOptions() {
3122
3128
  var tags = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3123
- return neetocist.renameKeys({
3129
+ return neetoCist.renameKeys({
3124
3130
  id: "value",
3125
3131
  name: "label"
3126
3132
  }, tags);
@@ -3132,8 +3138,8 @@ var buildTemplateUpdatePayload = function buildTemplateUpdatePayload(values) {
3132
3138
  };
3133
3139
  };
3134
3140
 
3135
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3136
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3141
+ function ownKeys(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; }
3142
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3137
3143
  var TemplateSettings = function TemplateSettings(_ref) {
3138
3144
  var _ref$onCancelTemplate = _ref.onCancelTemplatePreview,
3139
3145
  onCancelTemplatePreview = _ref$onCancelTemplate === void 0 ? "" : _ref$onCancelTemplate,
@@ -3180,7 +3186,10 @@ var TemplateSettings = function TemplateSettings(_ref) {
3180
3186
  breadcrumbs: breadcrumbs,
3181
3187
  title: t("neetoTemplate.templateSettings.title")
3182
3188
  }), /*#__PURE__*/React__default["default"].createElement(PageContent, {
3183
- className: "h-full"
3189
+ className: classnames__default["default"]({
3190
+ "min-h-0": !isLoading,
3191
+ "h-full": isLoading
3192
+ })
3184
3193
  }, isLoading ? /*#__PURE__*/React__default["default"].createElement(PageLoader__default["default"], null) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
3185
3194
  className: "mb-1",
3186
3195
  "data-cy": "thank-you-action-text",
@@ -3225,7 +3234,7 @@ var TemplateSettings = function TemplateSettings(_ref) {
3225
3234
  }), /*#__PURE__*/React__default["default"].createElement("div", {
3226
3235
  className: "mt-12 flex flex-row items-center justify-start"
3227
3236
  }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
3228
- className: "mr-3",
3237
+ className: "mr-3 flex-shrink-0",
3229
3238
  "data-cy": "save-changes-button",
3230
3239
  disabled: !dirty,
3231
3240
  loading: isUpdatingTemplate,