@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":
|
|
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": "ユーザーの参加を促すために、クリック可能なボタンなどのインタラクティブな要素を組み込む",
|