labellife-design-tool 2.2.8 → 2.2.9

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.
@@ -975,8 +975,10 @@ var TextElementComponent = mobxReactLite.observer(function (_ref) {
975
975
  var scaleY = absScale.y;
976
976
  var cssFontStyle = element.fontStyle === 'italic' ? 'italic' : 'normal';
977
977
  var cssFontWeight = String(element.fontWeight || 'normal');
978
+ var originalText = element.text;
978
979
  var textarea = document.createElement('textarea');
979
- textarea.value = element.text;
980
+ textarea.value = '';
981
+ textarea.placeholder = originalText;
980
982
  textarea.style.position = 'absolute';
981
983
  textarea.style.top = "".concat(textPosition.y, "px");
982
984
  textarea.style.left = "".concat(textPosition.x, "px");
@@ -1009,15 +1011,21 @@ var TextElementComponent = mobxReactLite.observer(function (_ref) {
1009
1011
  textarea.style.wordBreak = 'break-word';
1010
1012
  textarea.style.minHeight = '0';
1011
1013
  textarea.style.minWidth = '0';
1014
+
1015
+ // Placeholder inherits the element's text color at 40% opacity
1016
+ var placeholderStyle = document.createElement('style');
1017
+ placeholderStyle.textContent = "\n textarea:placeholder-shown { opacity: 1; }\n textarea::placeholder { color: ".concat(element.fill, "; opacity: 0.4; }\n ");
1018
+ stageContainer.appendChild(placeholderStyle);
1012
1019
  stageContainer.appendChild(textarea);
1013
1020
  textarea.focus();
1014
- textarea.select();
1015
1021
  var removed = false;
1016
1022
  var removeTextarea = function removeTextarea() {
1023
+ var cancel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1017
1024
  if (removed) return;
1018
1025
  removed = true;
1026
+ var newText = !cancel && textarea.value.length > 0 ? textarea.value : originalText;
1019
1027
  element.set({
1020
- text: textarea.value
1028
+ text: newText
1021
1029
  });
1022
1030
  element.toggleEditMode(false);
1023
1031
  if (grp) grp.show();
@@ -1025,12 +1033,15 @@ var TextElementComponent = mobxReactLite.observer(function (_ref) {
1025
1033
  if (textarea.parentNode) {
1026
1034
  textarea.parentNode.removeChild(textarea);
1027
1035
  }
1036
+ if (placeholderStyle.parentNode) {
1037
+ placeholderStyle.parentNode.removeChild(placeholderStyle);
1038
+ }
1028
1039
  };
1029
- textarea.addEventListener('blur', removeTextarea);
1040
+ textarea.addEventListener('blur', function () {
1041
+ return removeTextarea(false);
1042
+ });
1030
1043
  textarea.addEventListener('keydown', function (e) {
1031
- if (e.key === 'Escape') {
1032
- removeTextarea();
1033
- }
1044
+ if (e.key === 'Escape') removeTextarea(true);
1034
1045
  });
1035
1046
  };
1036
1047