@antscorp/antsomi-ui 1.3.5-beta.822 → 1.3.5-beta.823

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.
@@ -26,6 +26,7 @@ const TagifyInput = forwardRef((props, ref) => {
26
26
  const { initialValue, escapeHTML, status, readonly, readonlyTag, disabled, maxLength, maxHeight, minWidth, placeholder, acceptableTagPattern, mapAttributes, maxPersonalizeTags, name, children, cssTagifyVariables, onTagClick, onChange, } = props;
27
27
  // States
28
28
  const [inputTypeDebounce, , setInputTyping] = useDebounce(initialValue, 550);
29
+ const [isLineBreakDebounce, , setIsLineBreak] = useDebounce(hasLineBreak(initialValue), 250);
29
30
  // Refs
30
31
  const inputRef = useRef(null);
31
32
  const tagifyRef = useRef(null);
@@ -46,7 +47,6 @@ const TagifyInput = forwardRef((props, ref) => {
46
47
  return content;
47
48
  // eslint-disable-next-line react-hooks/exhaustive-deps
48
49
  }, []);
49
- const isLineBreak = useMemo(() => hasLineBreak(initialValue), [initialValue]);
50
50
  // Expose some methods
51
51
  useImperativeHandle(ref, () => ({
52
52
  onAddNewTag: (newTag) => {
@@ -156,6 +156,18 @@ const TagifyInput = forwardRef((props, ref) => {
156
156
  onChange(convertedValue);
157
157
  }
158
158
  }, [onChange]);
159
+ /**
160
+ * Used to cover more case
161
+ * e.g: User select all data -> backspace -> remove all data in UI but [The Tagify lib do not trigger out anything]
162
+ */
163
+ const onTagifyBlur = useCallback((event) => {
164
+ if (event.detail) {
165
+ const { tagify } = event.detail;
166
+ const inputValue = tagify.getInputValue();
167
+ const convertedValue = convertInputStringToOriginal(inputValue);
168
+ onChange(convertedValue);
169
+ }
170
+ }, [onChange]);
159
171
  const customizeTag = useCallback((tagData, tagify) => {
160
172
  const { value, collection, label, type } = tagData;
161
173
  const { settings } = tagify;
@@ -510,6 +522,7 @@ const TagifyInput = forwardRef((props, ref) => {
510
522
  tagifyInstance.on('click', onTagItemClick);
511
523
  tagifyInstance.on('input', onTagifyTyping);
512
524
  tagifyInstance.on('remove', onTagifyRemoved);
525
+ tagifyInstance.on('blur', onTagifyBlur);
513
526
  }
514
527
  // Off listen to Tagify events
515
528
  return () => {
@@ -517,11 +530,14 @@ const TagifyInput = forwardRef((props, ref) => {
517
530
  tagifyInstance.off('click', onTagItemClick);
518
531
  tagifyInstance.off('input', onTagifyTyping);
519
532
  tagifyInstance.off('remove', onTagifyRemoved);
533
+ tagifyInstance.off('blur', onTagifyBlur);
520
534
  }
521
535
  };
522
- }, [onTagItemClick, onTagifyTyping, onTagifyRemoved]);
536
+ }, [onTagItemClick, onTagifyTyping, onTagifyRemoved, onTagifyBlur]);
523
537
  useUpdateEffect(() => {
524
538
  const convertedValue = convertInputStringToOriginal(inputTypeDebounce);
539
+ // Tracking if the tagify input is line break
540
+ setIsLineBreak(hasLineBreak(convertedValue));
525
541
  if (escapeHTML) {
526
542
  const unescapedValue = unescapeString(convertedValue);
527
543
  onChange(unescapedValue);
@@ -566,7 +582,7 @@ const TagifyInput = forwardRef((props, ref) => {
566
582
  }
567
583
  }
568
584
  }, [initialValue, mapAttributes, escapeHTML, acceptableTagPattern, makeValidLabelTags]);
569
- return (_jsxs(TagifyWrapper, { ref: tagifyWrapperRef, "$cssTagifyVariables": cssVariablesMemoized, className: "tagify-container", id: "tagify-container", "data-test": "tagify-wrapper", "$status": status, "$maxHeight": maxHeight, "$minWidth": minWidth, "$tagifyFullWidth": isLineBreak, "$placeholder": placeholder, "$tagInvalidIcon": iconWarning, onClick: onTagifyWrapperClick, children: [_jsx(TagTextArea, { id: "tagify-textarea", ref: inputRef, name: name, defaultValue: parsedDefaultValue, "data-test": "tagify-input" }), _jsx(WrapperPlaceHolder, { "data-test": "wrapper-placeholder", ref: placeholderRef, "$isShow": !!children, children: children })] }));
585
+ return (_jsxs(TagifyWrapper, { ref: tagifyWrapperRef, "$cssTagifyVariables": cssVariablesMemoized, className: "tagify-container", id: "tagify-container", "data-test": "tagify-wrapper", "$status": status, "$maxHeight": maxHeight, "$minWidth": minWidth, "$tagifyFullWidth": isLineBreakDebounce, "$placeholder": placeholder, "$tagInvalidIcon": iconWarning, onClick: onTagifyWrapperClick, children: [_jsx(TagTextArea, { id: "tagify-textarea", ref: inputRef, name: name, defaultValue: parsedDefaultValue, "data-test": "tagify-input" }), _jsx(WrapperPlaceHolder, { "data-test": "wrapper-placeholder", ref: placeholderRef, "$isShow": !!children, children: children })] }));
570
586
  });
571
587
  TagifyInput.defaultProps = tagifyDefaultProps;
572
588
  export default memo(TagifyInput);
@@ -2400,7 +2400,7 @@
2400
2400
  "_WEBPER_TEMP_OBJ_INLINE_5": "ソーシャルプルーフディスプレイ",
2401
2401
  "_WEBPER_TEMP_OBJ_INLINE_6": "教育コンテンツ",
2402
2402
  "_WEBPER_TEMP_OBJ_SLIDEIN_1": "リードマグネット",
2403
- "_WEBPER_TEMP_OBJ_SLIDEIN_2": "終了意図",
2403
+ "_WEBPER_TEMP_OBJ_SLIDEIN_2": "終了の意図",
2404
2404
  "_WEBPER_TEMP_OBJ_SLIDEIN_3": "コンテンツティーザー",
2405
2405
  "_WEBPER_TEMP_OBJ_SLIDEIN_4": "アンケートと投票",
2406
2406
  "_WEBPER_TEMP_OBJ_SLIDEIN_5": "ソーシャルプルーフディスプレイ",
@@ -2507,7 +2507,7 @@
2507
2507
  "_WEBPER_TEMP_OBJ_DES_POP_8": "ターゲットを絞ったオファー、インセンティブ、またはリマインダーを使用して、躊躇している買い物客に購入を完了させるよう促します。",
2508
2508
  "_WEBPER_TEMP_OBJ_DES_POP_9": "ソーシャル メディア プラットフォームでコミュニティを拡大し、ブランドの存在感を高めます",
2509
2509
  "_WEBPER_TEMP_OBJ_DES_POP_10": "参加者と興奮を促進する注目を集めるイベント プロモーションで成功への舞台を整えます。",
2510
- "_WEBPER_TEMP_OBJ_DES_POP_11": "魅力的な運ゲーやインタラクティブなコンテンツで興奮を呼び起こし、エンゲージメントを高め、ユーザーを何度もリピートさせます。",
2510
+ "_WEBPER_TEMP_OBJ_DES_POP_11": "魅力的な運ゲーやインタラクティブなコンテンツで興奮を呼び起こし、エンゲージメントを高め、ユーザーを何度もリピートさせ続ける",
2511
2511
  "_WEBPER_TEMP_OBJ_DES_POP_12": "新規ユーザーを支援し、提供された回答に基づいてパーソナライズされた推奨事項を提供します",
2512
2512
  "_WEBPER_TEMP_OBJ_DES_POP_13": "直接リンクまたは QR コードを介してモバイル アプリをダウンロードしてスキャンするようユーザーに奨励します。",
2513
2513
  "_WEBPER_TEMP_OBJ_DES_FLOAT_1": "リード獲得フォームを含めて、訪問者にニュースレター、プロモーション、その他のマーケティング資料への登録を促します。",
@@ -2537,7 +2537,7 @@
2537
2537
  "_WEBPER_TEMP_OBJ_DES_SLIDEIN_6": "期間限定のオファー、カウントダウンタイマー、またはフラッシュセール通知を提示することで、緊迫感を醸成し、即時行動を促します。",
2538
2538
  "_WEBPER_TEMP_OBJ_DES_SLIDEIN_7": "ターゲットを絞ったオファー、インセンティブ、またはリマインダーを使用して、躊躇している買い物客に購入を完了させるよう促します。",
2539
2539
  "_WEBPER_TEMP_OBJ_DES_SLIDEIN_8": "顧客からの問い合わせの必要性を減らし、ショッピング体験の全体的な満足度を向上させるために、顧客が遭遇する可能性のある一般的な懸念事項や問題のトラブルシューティングに対処する",
2540
- "_WEBPER_TEMP_OBJ_DES_SLIDEIN_9": "登録や出欠確認のオプションを提供して、ウェビナー、ワークショップ、イベントに参加するようユーザーを招待し、参加とエンゲージメントを促進します。",
2540
+ "_WEBPER_TEMP_OBJ_DES_SLIDEIN_9": "登録や出欠確認のオプションを提供して、ウェビナー、ワークショップ、イベントにユーザーを招待し、参加とエンゲージメントを促進します。",
2541
2541
  "_LINE_MESS_OBJ_DES_1": "各ユーザーの好み、行動、過去のやり取りに基づいてメッセージをカスタマイズする",
2542
2542
  "_LINE_MESS_OBJ_DES_2": "画像、ビデオ、ステッカーなどのマルチメディア コンテンツでメッセージを充実させます",
2543
2543
  "_LINE_MESS_OBJ_DES_3": "ユーザーの参加を促すために、クリック可能なボタンなどのインタラクティブな要素を組み込む",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antscorp/antsomi-ui",
3
- "version": "1.3.5-beta.822",
3
+ "version": "1.3.5-beta.823",
4
4
  "description": "An enterprise-class UI design language and React UI library.",
5
5
  "sideEffects": [
6
6
  "dist/*",