@mertcankocak/core-project 1.0.0 → 1.3.0
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.
- package/README.md +88 -7
- package/dist/components/FormikTextField/FormikTextField.d.ts +46 -0
- package/dist/components/FormikTextField/FormikTextField.d.ts.map +1 -0
- package/dist/components/FormikTextField/constants.d.ts +14 -0
- package/dist/components/FormikTextField/constants.d.ts.map +1 -0
- package/dist/components/FormikTextField/helpers.d.ts +9 -0
- package/dist/components/FormikTextField/helpers.d.ts.map +1 -0
- package/dist/components/FormikTextField/index.d.ts +5 -0
- package/dist/components/FormikTextField/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/core-project.es.js +1288 -0
- package/dist/core-project.umd.js +30 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/stringUtils.d.ts +5 -0
- package/dist/utils/stringUtils.d.ts.map +1 -0
- package/dist/validators/creditCard.d.ts +15 -0
- package/dist/validators/creditCard.d.ts.map +1 -0
- package/dist/validators/date.d.ts +22 -0
- package/dist/validators/date.d.ts.map +1 -0
- package/dist/validators/email.d.ts +15 -0
- package/dist/validators/email.d.ts.map +1 -0
- package/dist/validators/file.d.ts +46 -0
- package/dist/validators/file.d.ts.map +1 -0
- package/dist/validators/iban.d.ts +15 -0
- package/dist/validators/iban.d.ts.map +1 -0
- package/dist/validators/index.d.ts +13 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/name.d.ts +15 -0
- package/dist/validators/name.d.ts.map +1 -0
- package/dist/validators/password.d.ts +18 -0
- package/dist/validators/password.d.ts.map +1 -0
- package/dist/validators/phone.d.ts +16 -0
- package/dist/validators/phone.d.ts.map +1 -0
- package/dist/validators/plate.d.ts +16 -0
- package/dist/validators/plate.d.ts.map +1 -0
- package/dist/validators/tcKimlikNo.d.ts +57 -0
- package/dist/validators/tcKimlikNo.d.ts.map +1 -0
- package/dist/validators/types.d.ts +149 -0
- package/dist/validators/types.d.ts.map +1 -0
- package/dist/validators/vkn.d.ts +16 -0
- package/dist/validators/vkn.d.ts.map +1 -0
- package/package.json +26 -3
package/README.md
CHANGED
|
@@ -5,21 +5,102 @@ React TypeScript component library built with Vite.
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install core-project
|
|
8
|
+
npm install @mertcankocak/core-project
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Peer Dependencies
|
|
12
|
+
|
|
13
|
+
Bu paket aşağıdaki paketleri peer dependency olarak gerektirir:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install react react-dom yup
|
|
9
17
|
```
|
|
10
18
|
|
|
11
19
|
## Usage
|
|
12
20
|
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
### Yup Validators
|
|
22
|
+
|
|
23
|
+
#### T.C. Kimlik Numarası
|
|
24
|
+
|
|
25
|
+
Zorunluluk dışarıdan belirlenir. `required` belirtilmezse optional olur (varsayılan).
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import * as yup from 'yup'
|
|
29
|
+
import { tcKimlikNoSchema } from '@mertcankocak/core-project'
|
|
30
|
+
|
|
31
|
+
// Optional (varsayılan)
|
|
32
|
+
const optionalSchema = yup.object({
|
|
33
|
+
tcKimlikNo: tcKimlikNoSchema()
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
// Required
|
|
37
|
+
const requiredSchema = yup.object({
|
|
38
|
+
tcKimlikNo: tcKimlikNoSchema({ required: true })
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
// Özel mesajlarla
|
|
42
|
+
const customSchema = yup.object({
|
|
43
|
+
tcKimlikNo: tcKimlikNoSchema({
|
|
44
|
+
required: true,
|
|
45
|
+
message: 'Geçersiz T.C. kimlik numarası',
|
|
46
|
+
requiredMessage: 'T.C. kimlik numarası boş bırakılamaz'
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### Regex ve Manuel Validasyon
|
|
15
52
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
53
|
+
```typescript
|
|
54
|
+
import {
|
|
55
|
+
TC_KIMLIK_NO_REGEX,
|
|
56
|
+
validateTCKimlikNo
|
|
57
|
+
} from '@mertcankocak/core-project'
|
|
58
|
+
|
|
59
|
+
// Regex kontrolü
|
|
60
|
+
const isValid = TC_KIMLIK_NO_REGEX.test('12345678901')
|
|
61
|
+
|
|
62
|
+
// Algoritma kontrolü
|
|
63
|
+
const isValid = validateTCKimlikNo('12345678901')
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Kullanım Örnekleri
|
|
67
|
+
|
|
68
|
+
Detaylı kullanım örnekleri için [USAGE_EXAMPLES.md](./USAGE_EXAMPLES.md) dosyasına bakın.
|
|
69
|
+
|
|
70
|
+
### React Hook Form ile
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { useForm } from 'react-hook-form'
|
|
74
|
+
import { yupResolver } from '@hookform/resolvers/yup'
|
|
75
|
+
import * as yup from 'yup'
|
|
76
|
+
import { tcKimlikNoSchema } from '@mertcankocak/core-project'
|
|
77
|
+
|
|
78
|
+
const schema = yup.object({
|
|
79
|
+
name: yup.string().required(),
|
|
80
|
+
tcKimlikNo: tcKimlikNoSchema(), // Optional (varsayılan)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
function MyForm() {
|
|
84
|
+
const { register, handleSubmit } = useForm({
|
|
85
|
+
resolver: yupResolver(schema),
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
// ...
|
|
20
89
|
}
|
|
21
90
|
```
|
|
22
91
|
|
|
92
|
+
### Formik ile
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
import { Formik } from 'formik'
|
|
96
|
+
import * as yup from 'yup'
|
|
97
|
+
import { tcKimlikNoSchema } from '@mertcankocak/core-project'
|
|
98
|
+
|
|
99
|
+
const schema = yup.object({
|
|
100
|
+
tcKimlikNo: tcKimlikNoSchema({ required: true }), // Required
|
|
101
|
+
})
|
|
102
|
+
```
|
|
103
|
+
|
|
23
104
|
## Development
|
|
24
105
|
|
|
25
106
|
```bash
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { TextFieldProps as MuiTextFieldProps, SxProps, Theme } from '@mui/material';
|
|
3
|
+
|
|
4
|
+
export interface FormikTextFieldProps extends Omit<MuiTextFieldProps, "name" | "value" | "onChange" | "onBlur" | "sx"> {
|
|
5
|
+
name: string;
|
|
6
|
+
label?: string;
|
|
7
|
+
type?: string;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
fieldToSearch?: string;
|
|
11
|
+
onSuggestionSearch?: (fieldName: string, searchTerm: string) => Promise<string[]>;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
step?: string | number;
|
|
14
|
+
min?: string | number;
|
|
15
|
+
max?: string | number;
|
|
16
|
+
startAdornment?: React.ReactNode;
|
|
17
|
+
endAdornment?: React.ReactNode;
|
|
18
|
+
disableUppercase?: boolean;
|
|
19
|
+
required?: boolean;
|
|
20
|
+
fullWidth?: boolean;
|
|
21
|
+
debounceDelay?: number;
|
|
22
|
+
minSearchLength?: number;
|
|
23
|
+
helperText?: string;
|
|
24
|
+
autoFocus?: boolean;
|
|
25
|
+
multiline?: boolean;
|
|
26
|
+
rows?: number;
|
|
27
|
+
maxLength?: number;
|
|
28
|
+
errorMessageFormatter?: (error: string) => string;
|
|
29
|
+
"aria-label"?: string;
|
|
30
|
+
"aria-describedby"?: string;
|
|
31
|
+
/**
|
|
32
|
+
* MUI sx prop - TextField için özelleştirme
|
|
33
|
+
* @example sx={{ backgroundColor: 'red', '& .MuiInputBase-root': { borderRadius: 2 } }}
|
|
34
|
+
*/
|
|
35
|
+
sx?: SxProps<Theme>;
|
|
36
|
+
/**
|
|
37
|
+
* InputProps içindeki sx - Input root elementi için özelleştirme
|
|
38
|
+
*/
|
|
39
|
+
inputSx?: SxProps<Theme>;
|
|
40
|
+
/**
|
|
41
|
+
* InputProps içindeki input sx - Input elementi için özelleştirme
|
|
42
|
+
*/
|
|
43
|
+
inputElementSx?: SxProps<Theme>;
|
|
44
|
+
}
|
|
45
|
+
export declare const FormikTextField: React.FC<FormikTextFieldProps>;
|
|
46
|
+
//# sourceMappingURL=FormikTextField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormikTextField.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/FormikTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAEf,OAAO,EAKL,cAAc,IAAI,iBAAiB,EACnC,OAAO,EACP,KAAK,EACN,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,oBACf,SAAQ,IAAI,CACV,iBAAiB,EACjB,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,IAAI,CAChD;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,CACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4O1D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FormikTextField constants
|
|
3
|
+
*/
|
|
4
|
+
export declare const DEFAULT_DEBOUNCE_DELAY = 300;
|
|
5
|
+
export declare const DEFAULT_MIN_SEARCH_LENGTH = 1;
|
|
6
|
+
/**
|
|
7
|
+
* Input types that should not be converted to uppercase
|
|
8
|
+
*/
|
|
9
|
+
export declare const NON_UPPERCASE_TYPES: readonly ["password", "email", "number", "tel", "url"];
|
|
10
|
+
/**
|
|
11
|
+
* Allowed keyboard keys for number input
|
|
12
|
+
*/
|
|
13
|
+
export declare const ALLOWED_NUMBER_KEYS: readonly ["Backspace", "Delete", "ArrowLeft", "ArrowRight", "Tab", "Enter", "Escape"];
|
|
14
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,mBAAmB,wDAMtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,uFAQtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Değeri büyük harfe çevirir (gerekirse)
|
|
3
|
+
*/
|
|
4
|
+
export declare function transformValue(value: string, type: string, disableUppercase: boolean): string;
|
|
5
|
+
/**
|
|
6
|
+
* Number input için geçerli tuş kontrolü
|
|
7
|
+
*/
|
|
8
|
+
export declare function isValidNumberKey(key: string): boolean;
|
|
9
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/helpers.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,OAAO,GACxB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { FormikTextField } from './FormikTextField';
|
|
2
|
+
export type { FormikTextFieldProps } from './FormikTextField';
|
|
3
|
+
export { transformValue, isValidNumberKey } from './helpers';
|
|
4
|
+
export { DEFAULT_DEBOUNCE_DELAY, DEFAULT_MIN_SEARCH_LENGTH, NON_UPPERCASE_TYPES, ALLOWED_NUMBER_KEYS, } from './constants';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FormikTextField/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|