Browse Source

[stdf] 更新输入组件,支持负数输入;增加多语言支持,扩展语言文件。

dufu1991 1 year ago
parent
commit
587f1272c2

+ 5 - 1
packages/stdf/package.json

@@ -1,6 +1,6 @@
 {
 	"name": "stdf",
-	"version": "1.0.3",
+	"version": "1.0.4",
 	"description": "Mobile web component library based on Svelte and Tailwind",
 	"author": "any-tdf",
 	"funding": "https://stdf.design?fund",
@@ -125,6 +125,10 @@
 			"types": "./dist/index.d.ts",
 			"svelte": "./dist/index.js"
 		},
+		"./types": {
+			"types": "./dist/types/index.d.ts",
+			"svelte": "./dist/types/index.js"
+		},
 		"./theme": {
 			"types": "./dist/theme/index.d.ts",
 			"svelte": "./dist/theme/index.js"

+ 25 - 2
packages/stdf/src/lib/components/input/Input.svelte

@@ -40,6 +40,7 @@
 		textareaMaxlength = 200,
 		rows = 2,
 		autosize = false,
+		negative = false,
 		onfocus,
 		onblur,
 		onchange,
@@ -188,11 +189,32 @@
 				if (type === 'decimal' || type === 'number') {
 					// 数字
 					// Number
-					value = e.value.replace(/[^\d^.]+/g, '');
+					if (negative && e.value.startsWith('-')) {
+						// 允许第一个字符为负号
+						// Allow the first character to be a negative sign
+						value =
+							'-' +
+							e.value
+								.substring(1)
+								.replace(/[^\d.]+/g, '')
+								.replace(/\.{2,}/g, '.')
+								.replace(/^(\d*\.\d*)\./, '$1');
+					} else {
+						value = e.value
+							.replace(/[^\d.]+/g, '')
+							.replace(/\.{2,}/g, '.')
+							.replace(/^(\d*\.\d*)\./, '$1');
+					}
 				} else if (type === 'numeric') {
 					// 整数
 					// Integer
-					value = e.value.replace(/[^\d]/g, '');
+					if (negative && e.value.startsWith('-')) {
+						// 允许第一个字符为负号
+						// Allow the first character to be a negative sign
+						value = '-' + e.value.substring(1).replace(/[^\d]+/g, '');
+					} else {
+						value = e.value.replace(/[^\d]+/g, '');
+					}
 				} else {
 					value = e.value;
 				}
@@ -218,6 +240,7 @@
 	const clearFun = () => {
 		value = '';
 		onclear?.();
+		onchange?.('');
 	};
 
 	// 键盘事件

+ 65 - 1
packages/stdf/src/lib/lang/index.ts

@@ -1,5 +1,69 @@
-export { default as zh_CN } from './zh_CN.js';
+export { default as ar_EG } from './ar_EG.js';
+export { default as az_AZ } from './az_AZ.js';
+export { default as bg_BG } from './bg_BG.js';
+export { default as bn_BD } from './bn_BD.js';
+export { default as ca_ES } from './ca_ES.js';
+export { default as cs_CZ } from './cs_CZ.js';
+export { default as da_DK } from './da_DK.js';
+export { default as de_DE } from './de_DE.js';
+export { default as el_GR } from './el_GR.js';
+export { default as en_GB } from './en_GB.js';
 export { default as en_US } from './en_US.js';
+export { default as es_ES } from './es_ES.js';
+export { default as et_EE } from './et_EE.js';
+export { default as eu_ES } from './eu_ES.js';
+export { default as fa_IR } from './fa_IR.js';
+export { default as fi_FI } from './fi_FI.js';
+export { default as fr_BE } from './fr_BE.js';
+export { default as fr_CA } from './fr_CA.js';
+export { default as fr_FR } from './fr_FR.js';
+export { default as ga_IE } from './ga_IE.js';
+export { default as gl_ES } from './gl_ES.js';
+export { default as he_IL } from './he_IL.js';
+export { default as hi_IN } from './hi_IN.js';
+export { default as hr_HR } from './hr_HR.js';
+export { default as hu_HU } from './hu_HU.js';
+export { default as hy_AM } from './hy_AM.js';
+export { default as id_ID } from './id_ID.js';
+export { default as is_IS } from './is_IS.js';
+export { default as it_IT } from './it_IT.js';
+export { default as ja_JP } from './ja_JP.js';
+export { default as ka_GE } from './ka_GE.js';
+export { default as kk_KZ } from './kk_KZ.js';
+export { default as km_KH } from './km_KH.js';
+export { default as kmr_IQ } from './kmr_IQ.js';
+export { default as kn_IN } from './kn_IN.js';
+export { default as ko_KR } from './ko_KR.js';
+export { default as lt_LT } from './lt_LT.js';
+export { default as lv_LV } from './lv_LV.js';
+export { default as mk_MK } from './mk_MK.js';
+export { default as ml_IN } from './ml_IN.js';
+export { default as mn_MN } from './mn_MN.js';
+export { default as ms_MY } from './ms_MY.js';
+export { default as nb_NO } from './nb_NO.js';
+export { default as ne_NP } from './ne_NP.js';
+export { default as nl_BE } from './nl_BE.js';
+export { default as nl_NL } from './nl_NL.js';
+export { default as pl_PL } from './pl_PL.js';
+export { default as pt_BR } from './pt_BR.js';
+export { default as pt_PT } from './pt_PT.js';
+export { default as ro_RO } from './ro_RO.js';
+export { default as ru_RU } from './ru_RU.js';
+export { default as si_LK } from './si_LK.js';
+export { default as sk_SK } from './sk_SK.js';
+export { default as sl_SI } from './sl_SI.js';
+export { default as sr_RS } from './sr_RS.js';
+export { default as sv_SE } from './sv_SE.js';
+export { default as ta_IN } from './ta_IN.js';
+export { default as th_TH } from './th_TH.js';
+export { default as tk_TK } from './tk_TK.js';
+export { default as tr_TR } from './tr_TR.js';
+export { default as uk_UA } from './uk_UA.js';
+export { default as ur_PK } from './ur_PK.js';
+export { default as vi_VN } from './vi_VN.js';
+export { default as zh_CN } from './zh_CN.js';
+export { default as zh_HK } from './zh_HK.js';
+export { default as zh_TW } from './zh_TW.js';
 
 export type LangProps = {
 	common: {

+ 1 - 0
packages/stdf/src/lib/types/index.ts

@@ -312,6 +312,7 @@ export type InputProps = {
 	textareaMaxlength?: number;
 	rows?: number;
 	autosize?: boolean;
+	negative?: boolean;
 	label1?: null | IconProps;
 	label2?: null | string;
 	label3?: null | IconProps;

+ 1 - 0
packages/stdf/src/routes/input/en_US/+page.svelte

@@ -51,6 +51,7 @@
 <Input title="Number (Any)" type="number" />
 <Input title="Number (Integer)" type="numeric" />
 <Input title="Number (Decimal Allowed)" type="decimal" />
+<Input title="Number (Allow Negative)" type="number" negative />
 <Input title="Email" type="email" />
 <Input title="Phone Number" type="tel" />
 <Input title="URL" type="url" />

+ 1 - 0
packages/stdf/src/routes/input/zh_CN/+page.svelte

@@ -51,6 +51,7 @@
 <Input title="数字(任意)" type="number" />
 <Input title="数字(整数)" type="numeric" />
 <Input title="数字(允许小数点)" type="decimal" />
+<Input title="数字(允许负数)" type="number" negative />
 <Input title="邮箱" type="email" />
 <Input title="电话号码" type="tel" />
 <Input title="链接地址" type="url" />