@bigbinary/neeto-molecules 3.15.5 → 3.15.6

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.
@@ -95,8 +95,16 @@ var getPathname = function getPathname(url) {
95
95
  var getPrefixFromUrl = function getPrefixFromUrl(url) {
96
96
  return "".concat(new URL(url).origin, "/");
97
97
  };
98
- var truncatePrefix = function truncatePrefix(url) {
99
- return url.length > MAX_PREFIX_SIZE ? "...".concat(url.slice(-MAX_PREFIX_SIZE)) : url;
98
+ var truncatePrefix = function truncatePrefix(inputElement, prefixText) {
99
+ var parentElement = inputElement.parentElement;
100
+ var prefixElement = parentElement.querySelector(".neeto-ui-input__prefix");
101
+ var _getComputedStyle = getComputedStyle(inputElement),
102
+ fontSize = _getComputedStyle.fontSize;
103
+ var averageCharWidth = parseFloat(fontSize) * 0.6;
104
+ var requiredInputWidth = inputElement.value.length * averageCharWidth;
105
+ var prefixWidth = parentElement.offsetWidth - requiredInputWidth;
106
+ var maxPrefixChars = Math.max(Math.floor(prefixWidth / averageCharWidth), 5);
107
+ prefixElement.textContent = maxPrefixChars < prefixText.length ? "...".concat(prefixText.slice(-maxPrefixChars)) : prefixText;
100
108
  };
101
109
 
102
110
  var SOCIAL_MEDIA_OPTIONS = {
@@ -119,7 +127,6 @@ var SOCIAL_MEDIA_OPTIONS = {
119
127
  var PATH_VALIDATION_SCHEMA = yup__namespace.object().shape({
120
128
  path: yup__namespace.string().required(i18next.t("neetoMolecules.shareViaLink.editUrl.validationError")).matches(/^[A-Za-z0-9]([\w/-])*$/, i18next.t("neetoMolecules.shareViaLink.editUrl.validationError"))
121
129
  });
122
- var MAX_PREFIX_SIZE = 30;
123
130
 
124
131
  var css = ".no-padding .neeto-ui-input.neeto-ui-input--medium input{padding:0}.no-padding .neeto-ui-input__prefix{color:rgb(var(--neeto-ui-gray-600))!important}";
125
132
  injectCss.n(css,{});
@@ -138,6 +145,18 @@ var EditURL = function EditURL(_ref) {
138
145
  t = _useTranslation.t;
139
146
  var focusRef = React.useRef(null);
140
147
  var prevIsLoadingRef = React.useRef(isLoading);
148
+ var prefixText = (editUrlProps === null || editUrlProps === void 0 ? void 0 : editUrlProps.prefix) || getPrefixFromUrl(url);
149
+ var observerRef = React.useRef(new ResizeObserver(function (_ref2) {
150
+ var _ref3 = _slicedToArray(_ref2, 1),
151
+ entry = _ref3[0];
152
+ return requestAnimationFrame(function () {
153
+ return truncatePrefix(entry.target, prefixText);
154
+ });
155
+ }));
156
+ var inputRef = React.useCallback(function (inputElement) {
157
+ focusRef.current = inputElement;
158
+ inputElement ? observerRef.current.observe(inputElement) : observerRef.current.disconnect();
159
+ }, []);
141
160
  React.useEffect(function () {
142
161
  if (prevIsLoadingRef.current && !isLoading) onClose();
143
162
  prevIsLoadingRef.current = isLoading;
@@ -161,13 +180,13 @@ var EditURL = function EditURL(_ref) {
161
180
  path: (editUrlProps === null || editUrlProps === void 0 ? void 0 : editUrlProps.editablePath) || getPathname(url)
162
181
  },
163
182
  validationSchema: PATH_VALIDATION_SCHEMA,
164
- onSubmit: function onSubmit(_ref2) {
165
- var path = _ref2.path;
183
+ onSubmit: function onSubmit(_ref4) {
184
+ var path = _ref4.path;
166
185
  return handleEdit(path);
167
186
  },
168
- children: function children(_ref3) {
169
- var isSubmitting = _ref3.isSubmitting,
170
- dirty = _ref3.dirty;
187
+ children: function children(_ref5) {
188
+ var isSubmitting = _ref5.isSubmitting,
189
+ dirty = _ref5.dirty;
171
190
  return /*#__PURE__*/jsxRuntime.jsxs(formik.Form, {
172
191
  children: [/*#__PURE__*/jsxRuntime.jsxs(Body, {
173
192
  className: "space-y-6",
@@ -177,8 +196,8 @@ var EditURL = function EditURL(_ref) {
177
196
  label: t("neetoMolecules.shareViaLink.editUrl.inputLabel"),
178
197
  maxLength: editUrlProps === null || editUrlProps === void 0 ? void 0 : editUrlProps.maxLength,
179
198
  name: "path",
180
- ref: focusRef,
181
- prefix: truncatePrefix((editUrlProps === null || editUrlProps === void 0 ? void 0 : editUrlProps.prefix) || getPrefixFromUrl(url))
199
+ prefix: prefixText,
200
+ ref: inputRef
182
201
  }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
183
202
  className: "neeto-ui-text-gray-700",
184
203
  lineHeight: "normal",