tsv2-library 0.2.44 → 0.2.45
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/dist/src/build-entry.d.ts +2 -2
- package/dist/src/components/v2/DataTable/DataTable.vue.d.ts +4 -0
- package/dist/src/components/v2/DatePicker/DatePicker.vue.d.ts +61 -0
- package/dist/src/components/v2/DayPicker/DayPicker.vue.d.ts +58 -0
- package/dist/src/components/v2/DisposalReport/DisposalReportTable.vue.d.ts +8 -0
- package/dist/src/components/v2/InputCurrency/InputCurrency.vue.d.ts +1 -1
- package/dist/src/components/v2/InputNumber/InputNumber.vue.d.ts +19 -0
- package/dist/src/components/v2/index.d.ts +3 -1
- package/dist/src/types/fieldValidation.type.d.ts +2 -2
- package/dist/style.css +1 -1
- package/dist/tsv2-library.es.js +13297 -12950
- package/package.json +1 -1
- package/src/components/v2/DataTable/DataTable.vue.d.ts +4 -0
- package/src/components/v2/DatePicker/DatePicker.vue.d.ts +61 -0
- package/src/components/v2/DayPicker/DayPicker.vue.d.ts +58 -0
- package/src/components/v2/InputCurrency/InputCurrency.vue.d.ts +1 -1
- package/src/components/v2/InputNumber/InputNumber.vue.d.ts +19 -0
- package/src/presets/calendar/index.js +3 -3
- package/src/presets/datepicker/index.js +39 -0
- package/src/presets/daypicker/index.js +38 -0
- package/src/presets/dialog/index.js +1 -1
- package/src/presets/global.js +9 -0
- package/src/presets/image/index.js +5 -12
- package/src/presets/inputcurrency/index.js +12 -0
- package/src/presets/inputphonenumber/index.js +19 -0
- package/src/presets/textarea/index.js +3 -2
|
@@ -18,7 +18,7 @@ import useLoadingStore from './components/v2/Loading/store/loading.store';
|
|
|
18
18
|
import Tooltip from '../node_modules/primevue/tooltip';
|
|
19
19
|
import Focus from './directives/v-focus';
|
|
20
20
|
import VueHtmlToPaper from './plugins/VueHtmlToPaper';
|
|
21
|
-
import { TSAssetInfo, TSApproverInfo, TSBadge, TSBadgeGroup, TSBreadcrumb, TSButton, TSButtonAddByScan, TSButtonBulkAction, TSButtonCopy, TSButtonDownload, TSButtonFilter, TSButtonLogHistory, TSButtonRadio, TSButtonViewLog, TSButtonScan, TSButtonSearchByScan, TSButtonSearch, TSButtonSync, TSButtonSelectTree, TSButtonSelectUser, TSButtonToggle, TSCalendar, TSCard, TSCarousel, TSCheckbox, TSCustomColumn, TSDataTable, TSDialog, TSDialogApprovalList, TSDialogAssetNameDetail, TSDialogConfirm, TSDialogForm, TSDialogLinkedAsset, TSDialogPrintQR, TSDialogReportDamage, TSDialogReportMissing, TSDialogReportTag, TSDialogSelectTree, TSDialogSelectAsset, TSDialogSelectUser, TSDisposalReport, TSDropdown, TSFilterContainer, TSFileUpload, TSForm, TSIcon, TSImage, TSImageCompressor, TSInlineMessage, TSInputBadge, TSInputCurrency, TSInputEmail, TSInputNumber, TSInputOTP, TSInputPassword, TSInputPhoneNumber, TSInputRangeNumber, TSInputSearch, TSInputText, TSInputURL, TSLoading, TSMenu, TSMultiSelect, TSOverlayPanel, TSPaginator, TSProgressBar, TSSteps, TSTabMenu, TSTagType, TSTextarea, TSTimeline, TSToast, TSTransactionRoles, TSTree, TSTreeSearchInput, TSUserWithIcon, TSValidatorMessage } from './components/v2';
|
|
21
|
+
import { TSAssetInfo, TSApproverInfo, TSBadge, TSBadgeGroup, TSBreadcrumb, TSButton, TSButtonAddByScan, TSButtonBulkAction, TSButtonCopy, TSButtonDownload, TSButtonFilter, TSButtonLogHistory, TSButtonRadio, TSButtonViewLog, TSButtonScan, TSButtonSearchByScan, TSButtonSearch, TSButtonSync, TSButtonSelectTree, TSButtonSelectUser, TSButtonToggle, TSCalendar, TSCard, TSCarousel, TSCheckbox, TSCustomColumn, TSDataTable, TSDatePicker, TSDayPicker, TSDialog, TSDialogApprovalList, TSDialogAssetNameDetail, TSDialogConfirm, TSDialogForm, TSDialogLinkedAsset, TSDialogPrintQR, TSDialogReportDamage, TSDialogReportMissing, TSDialogReportTag, TSDialogSelectTree, TSDialogSelectAsset, TSDialogSelectUser, TSDisposalReport, TSDropdown, TSFilterContainer, TSFileUpload, TSForm, TSIcon, TSImage, TSImageCompressor, TSInlineMessage, TSInputBadge, TSInputCurrency, TSInputEmail, TSInputNumber, TSInputOTP, TSInputPassword, TSInputPhoneNumber, TSInputRangeNumber, TSInputSearch, TSInputText, TSInputURL, TSLoading, TSMenu, TSMultiSelect, TSOverlayPanel, TSPaginator, TSProgressBar, TSSteps, TSTabMenu, TSTagType, TSTextarea, TSTimeline, TSToast, TSTransactionRoles, TSTree, TSTreeSearchInput, TSUserWithIcon, TSValidatorMessage } from './components/v2';
|
|
22
22
|
declare const TSi18n: import("vue-i18n").I18n<{
|
|
23
23
|
en: {
|
|
24
24
|
".pdf_.xls_.docx._max_file_1_MB": string;
|
|
@@ -2849,4 +2849,4 @@ declare const _default: {
|
|
|
2849
2849
|
install: (app: App) => void;
|
|
2850
2850
|
};
|
|
2851
2851
|
export default _default;
|
|
2852
|
-
export { LibConfig, TSToastService, TSi18n, VueHtmlToPaper, Tooltip, Focus, TSAssetInfo, TSApproverInfo, TSBadge, TSBadgeGroup, TSBreadcrumb, TSButton, TSButtonAddByScan, TSButtonBulkAction, TSButtonCopy, TSButtonDownload, TSButtonFilter, TSButtonLogHistory, TSButtonRadio, TSButtonViewLog, TSButtonScan, TSButtonSearch, TSButtonSearchByScan, TSButtonSelectTree, TSButtonSelectUser, TSButtonSync, TSButtonToggle, TSCalendar, TSCard, TSCarousel, TSCheckbox, TSCustomColumn, TSDataTable, TSDialog, TSDialogApprovalList, TSDialogAssetNameDetail, TSDialogConfirm, TSDialogForm, TSDialogLinkedAsset, TSDialogPrintQR, TSDialogReportDamage, TSDialogReportMissing, TSDialogReportTag, TSDialogSelectTree, TSDialogSelectAsset, TSDialogSelectUser, TSDisposalReport, TSDropdown, TSFilterContainer, TSFileUpload, TSForm, TSIcon, TSImage, TSImageCompressor, TSInlineMessage, TSInputBadge, TSInputCurrency, TSInputEmail, TSInputNumber, TSInputOTP, TSInputPassword, TSInputPhoneNumber, TSInputRangeNumber, TSInputText, TSInputSearch, TSInputURL, TSLoading, TSMenu, TSMultiSelect, TSOverlayPanel, TSPaginator, TSProgressBar, TSSteps, TSTabMenu, TSTagType, TSTextarea, TSTimeline, TSToast, TSTransactionRoles, TSTree, TSTreeSearchInput, TSUserWithIcon, TSValidatorMessage, handleTokenExpiration, exportToExcel, formatDate, formatDateReadable, formatUserName, formatVowelSoundLabel, getImageURL, isObjectEmpty, useToast, listenSidebarChanges, unListenSidebarChanges, getCurrency, getTransactionRole, getSystemRole, formatCurrency, getHostName, getBaseURL, useI18n, useForm, flattenTreeNodeChildren, parseNodeKeys, filterNodeKeys, TreeAPI, RoutineAPI, DisposalAPI, RoutineServices, AssetsServices, DisposalServices, FilterMatchMode, useLoadingStore, };
|
|
2852
|
+
export { LibConfig, TSToastService, TSi18n, VueHtmlToPaper, Tooltip, Focus, TSAssetInfo, TSApproverInfo, TSBadge, TSBadgeGroup, TSBreadcrumb, TSButton, TSButtonAddByScan, TSButtonBulkAction, TSButtonCopy, TSButtonDownload, TSButtonFilter, TSButtonLogHistory, TSButtonRadio, TSButtonViewLog, TSButtonScan, TSButtonSearch, TSButtonSearchByScan, TSButtonSelectTree, TSButtonSelectUser, TSButtonSync, TSButtonToggle, TSCalendar, TSCard, TSCarousel, TSCheckbox, TSCustomColumn, TSDatePicker, TSDataTable, TSDayPicker, TSDialog, TSDialogApprovalList, TSDialogAssetNameDetail, TSDialogConfirm, TSDialogForm, TSDialogLinkedAsset, TSDialogPrintQR, TSDialogReportDamage, TSDialogReportMissing, TSDialogReportTag, TSDialogSelectTree, TSDialogSelectAsset, TSDialogSelectUser, TSDisposalReport, TSDropdown, TSFilterContainer, TSFileUpload, TSForm, TSIcon, TSImage, TSImageCompressor, TSInlineMessage, TSInputBadge, TSInputCurrency, TSInputEmail, TSInputNumber, TSInputOTP, TSInputPassword, TSInputPhoneNumber, TSInputRangeNumber, TSInputText, TSInputSearch, TSInputURL, TSLoading, TSMenu, TSMultiSelect, TSOverlayPanel, TSPaginator, TSProgressBar, TSSteps, TSTabMenu, TSTagType, TSTextarea, TSTimeline, TSToast, TSTransactionRoles, TSTree, TSTreeSearchInput, TSUserWithIcon, TSValidatorMessage, handleTokenExpiration, exportToExcel, formatDate, formatDateReadable, formatUserName, formatVowelSoundLabel, getImageURL, isObjectEmpty, useToast, listenSidebarChanges, unListenSidebarChanges, getCurrency, getTransactionRole, getSystemRole, formatCurrency, getHostName, getBaseURL, useI18n, useForm, flattenTreeNodeChildren, parseNodeKeys, filterNodeKeys, TreeAPI, RoutineAPI, DisposalAPI, RoutineServices, AssetsServices, DisposalServices, FilterMatchMode, useLoadingStore, };
|
|
@@ -307,6 +307,10 @@ export interface TSDataTableProps {
|
|
|
307
307
|
* Set the scrollHeight in px
|
|
308
308
|
*/
|
|
309
309
|
scrollHeight?: string;
|
|
310
|
+
/**
|
|
311
|
+
* An array of fields as string to use in global filtering.
|
|
312
|
+
*/
|
|
313
|
+
globalFilterFields?: string[];
|
|
310
314
|
}
|
|
311
315
|
|
|
312
316
|
export type TSDataTableEmits = {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TSDatePicker component props
|
|
5
|
+
*/
|
|
6
|
+
export interface TSDatePickerProps {
|
|
7
|
+
/**
|
|
8
|
+
* TSDatePicker modelValue is day index from 0
|
|
9
|
+
*/
|
|
10
|
+
modelValue?: number[];
|
|
11
|
+
/**
|
|
12
|
+
* Display label on top of Date Input.
|
|
13
|
+
*/
|
|
14
|
+
label?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Enable Validator using vee-validate. Combine with TSForm that handle form validation.
|
|
17
|
+
*/
|
|
18
|
+
useValidator?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* When used as field in From Validation using TSForm,
|
|
21
|
+
* specify the unique field name, match with your needs for API request.
|
|
22
|
+
*/
|
|
23
|
+
fieldName?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Whether this field should be filled or not.
|
|
26
|
+
*/
|
|
27
|
+
mandatory?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Sets the invalid state.
|
|
30
|
+
*/
|
|
31
|
+
invalid?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Set the custom validator message.
|
|
34
|
+
* By default each field has preserved with its validator message, you don't need to worrying about the message.
|
|
35
|
+
*/
|
|
36
|
+
errorMessage?: { empty: string };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* TSDatePicker component emits
|
|
41
|
+
*/
|
|
42
|
+
export type TSDatePickerEmits = {
|
|
43
|
+
'update:modelValue': [days?: number[]];
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* **TSVue - TSDatePicker**
|
|
48
|
+
*
|
|
49
|
+
* _Handle input day with form validation._
|
|
50
|
+
*
|
|
51
|
+
* --- ---
|
|
52
|
+
* 
|
|
53
|
+
*
|
|
54
|
+
* @group form
|
|
55
|
+
*/
|
|
56
|
+
declare const TSDatePicker: DefineComponent<
|
|
57
|
+
TSDatePickerProps,
|
|
58
|
+
TSDatePickerEmits
|
|
59
|
+
>;
|
|
60
|
+
|
|
61
|
+
export default TSDatePicker;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TSDayPicker component props
|
|
5
|
+
*/
|
|
6
|
+
export interface TSDayPickerProps {
|
|
7
|
+
/**
|
|
8
|
+
* TSDayPicker modelValue is day index from 0
|
|
9
|
+
*/
|
|
10
|
+
modelValue?: number[];
|
|
11
|
+
/**
|
|
12
|
+
* Display label on top of Date Input.
|
|
13
|
+
*/
|
|
14
|
+
label?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Enable Validator using vee-validate. Combine with TSForm that handle form validation.
|
|
17
|
+
*/
|
|
18
|
+
useValidator?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* When used as field in From Validation using TSForm,
|
|
21
|
+
* specify the unique field name, match with your needs for API request.
|
|
22
|
+
*/
|
|
23
|
+
fieldName?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Whether this field should be filled or not.
|
|
26
|
+
*/
|
|
27
|
+
mandatory?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Sets the invalid state.
|
|
30
|
+
*/
|
|
31
|
+
invalid?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Set the custom validator message.
|
|
34
|
+
* By default each field has preserved with its validator message, you don't need to worrying about the message.
|
|
35
|
+
*/
|
|
36
|
+
errorMessage?: { empty: string };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* TSDayPicker component emits
|
|
41
|
+
*/
|
|
42
|
+
export type TSDayPickerEmits = {
|
|
43
|
+
'update:modelValue': [days?: number[]];
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* **TSVue - TSDayPicker**
|
|
48
|
+
*
|
|
49
|
+
* _Handle input day with form validation._
|
|
50
|
+
*
|
|
51
|
+
* --- ---
|
|
52
|
+
* 
|
|
53
|
+
*
|
|
54
|
+
* @group form
|
|
55
|
+
*/
|
|
56
|
+
declare const TSDayPicker: DefineComponent<TSDayPickerProps, TSDayPickerEmits>;
|
|
57
|
+
|
|
58
|
+
export default TSDayPicker;
|
|
@@ -111,6 +111,10 @@ declare const _sfc_main: import("vue").DefineComponent<{
|
|
|
111
111
|
type: StringConstructor;
|
|
112
112
|
required: false;
|
|
113
113
|
};
|
|
114
|
+
globalFilterFields: {
|
|
115
|
+
type: ArrayConstructor;
|
|
116
|
+
required: false;
|
|
117
|
+
};
|
|
114
118
|
router: {
|
|
115
119
|
type: ObjectConstructor;
|
|
116
120
|
required: true;
|
|
@@ -232,6 +236,10 @@ declare const _sfc_main: import("vue").DefineComponent<{
|
|
|
232
236
|
type: StringConstructor;
|
|
233
237
|
required: false;
|
|
234
238
|
};
|
|
239
|
+
globalFilterFields: {
|
|
240
|
+
type: ArrayConstructor;
|
|
241
|
+
required: false;
|
|
242
|
+
};
|
|
235
243
|
router: {
|
|
236
244
|
type: ObjectConstructor;
|
|
237
245
|
required: true;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { CurrencyFormat } from '../../../utils/currency.util';
|
|
2
1
|
import { DefineComponent } from 'vue';
|
|
3
2
|
|
|
4
3
|
export interface CurrencyValue {
|
|
@@ -90,6 +89,7 @@ export interface InputCurrencyProps {
|
|
|
90
89
|
* Show information about the field.
|
|
91
90
|
*/
|
|
92
91
|
fieldInfo?: string;
|
|
92
|
+
inputnNumberId?: string;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
/**
|
|
@@ -114,6 +114,25 @@ export interface InputNumberProps {
|
|
|
114
114
|
* Class to be bind on addon left component
|
|
115
115
|
*/
|
|
116
116
|
addonLeftClass?: any;
|
|
117
|
+
/**
|
|
118
|
+
* Class to be bind on input group component
|
|
119
|
+
*/
|
|
120
|
+
inputGroupClass?: any;
|
|
121
|
+
/**
|
|
122
|
+
* Class to be bind on input number component
|
|
123
|
+
*/
|
|
124
|
+
inputNumberClass?: any;
|
|
125
|
+
/**
|
|
126
|
+
* Unique id for input number element
|
|
127
|
+
*/
|
|
128
|
+
inputId?: string;
|
|
129
|
+
/**
|
|
130
|
+
* Set auto Resize Input
|
|
131
|
+
* The input width is counted by the value length
|
|
132
|
+
*
|
|
133
|
+
* @default false
|
|
134
|
+
*/
|
|
135
|
+
autoResize?: boolean;
|
|
117
136
|
}
|
|
118
137
|
|
|
119
138
|
/**
|
|
@@ -27,6 +27,8 @@ import TSCheckbox from './Checkbox/Checkbox.vue';
|
|
|
27
27
|
import TSCustomColumn from './CustomColumn/CustomColumn.vue';
|
|
28
28
|
import TSDataTable from './DataTable/DataTable.vue';
|
|
29
29
|
import TSDropdown from './Dropdown/Dropdown.vue';
|
|
30
|
+
import TSDatePicker from './DatePicker/DatePicker.vue';
|
|
31
|
+
import TSDayPicker from './DayPicker/DayPicker.vue';
|
|
30
32
|
import TSDialog from './Dialog/Dialog.vue';
|
|
31
33
|
import TSDialogApprovalList from './DialogApprovalList/DialogApprovalList.vue';
|
|
32
34
|
import TSDialogAssetNameDetail from './DialogAssetNameDetail/DialogAssetNameDetail.vue';
|
|
@@ -76,4 +78,4 @@ import TSTree from './Tree/Tree.vue';
|
|
|
76
78
|
import TSTreeSearchInput from './TreeSearchInput/TreeSearchInput.vue';
|
|
77
79
|
import TSUserWithIcon from './UserWithIcon/UserWithIcon.vue';
|
|
78
80
|
import TSValidatorMessage from './ValidatorMessage/ValidatorMessage.vue';
|
|
79
|
-
export { TSAssetInfo, TSApproverInfo, TSBadge, TSBadgeGroup, TSBreadcrumb, TSButton, TSButtonAddByScan, TSButtonBulkAction, TSButtonCopy, TSButtonDownload, TSButtonFilter, TSButtonLogHistory, TSButtonRadio, TSButtonViewLog, TSButtonScan, TSButtonSearch, TSButtonSearchByScan, TSButtonSelectTree, TSButtonSelectUser, TSButtonSync, TSButtonToggle, TSCalendar, TSCard, TSCarousel, TSCheckbox, TSCustomColumn, TSDataTable, TSDialog, TSDialogApprovalList, TSDialogAssetNameDetail, TSDialogConfirm, TSDialogForm, TSDialogLinkedAsset, TSDialogPrintQR, TSDialogReportDamage, TSDialogReportMissing, TSDialogReportTag, TSDialogSelectTree, TSDialogSelectAsset, TSDialogSelectUser, TSDisposalReport, TSDropdown, TSFilterContainer, TSFileUpload, TSForm, TSIcon, TSImage, TSImageCompressor, TSInlineMessage, TSInputBadge, TSInputCurrency, TSInputEmail, TSInputNumber, TSInputOTP, TSInputPassword, TSInputPhoneNumber, TSInputRangeNumber, TSInputSearch, TSInputText, TSInputTextArea, TSInputURL, TSLoading, TSMenu, TSMultiSelect, TSOverlayPanel, TSPaginator, TSProgressBar, TSSteps, TSTabMenu, TSTagType, TSTextarea, TSTimeline, TSToast, TSTransactionRoles, TSTree, TSTreeSearchInput, TSUserWithIcon, TSValidatorMessage, };
|
|
81
|
+
export { TSAssetInfo, TSApproverInfo, TSBadge, TSBadgeGroup, TSBreadcrumb, TSButton, TSButtonAddByScan, TSButtonBulkAction, TSButtonCopy, TSButtonDownload, TSButtonFilter, TSButtonLogHistory, TSButtonRadio, TSButtonViewLog, TSButtonScan, TSButtonSearch, TSButtonSearchByScan, TSButtonSelectTree, TSButtonSelectUser, TSButtonSync, TSButtonToggle, TSCalendar, TSCard, TSCarousel, TSCheckbox, TSCustomColumn, TSDataTable, TSDatePicker, TSDayPicker, TSDialog, TSDialogApprovalList, TSDialogAssetNameDetail, TSDialogConfirm, TSDialogForm, TSDialogLinkedAsset, TSDialogPrintQR, TSDialogReportDamage, TSDialogReportMissing, TSDialogReportTag, TSDialogSelectTree, TSDialogSelectAsset, TSDialogSelectUser, TSDisposalReport, TSDropdown, TSFilterContainer, TSFileUpload, TSForm, TSIcon, TSImage, TSImageCompressor, TSInlineMessage, TSInputBadge, TSInputCurrency, TSInputEmail, TSInputNumber, TSInputOTP, TSInputPassword, TSInputPhoneNumber, TSInputRangeNumber, TSInputSearch, TSInputText, TSInputTextArea, TSInputURL, TSLoading, TSMenu, TSMultiSelect, TSOverlayPanel, TSPaginator, TSProgressBar, TSSteps, TSTabMenu, TSTagType, TSTextarea, TSTimeline, TSToast, TSTransactionRoles, TSTree, TSTreeSearchInput, TSUserWithIcon, TSValidatorMessage, };
|
|
@@ -4,8 +4,8 @@ import { Ref } from 'vue';
|
|
|
4
4
|
export type Condition = 'empty' | 'exceed';
|
|
5
5
|
export type CustomValidation = Partial<Record<Condition, string>>;
|
|
6
6
|
type FieldValue = Nullable<string> | Nullable<number> | string | string[] | number | number[] | boolean | undefined | null | object;
|
|
7
|
-
export type FieldValidation<T = FieldValue> = {
|
|
8
|
-
value
|
|
7
|
+
export type FieldValidation<T = FieldValue | undefined> = {
|
|
8
|
+
value: T;
|
|
9
9
|
errorMessage?: Ref<string | undefined>;
|
|
10
10
|
setErrors?: (errors?: string | string[]) => void;
|
|
11
11
|
handleReset?: () => void;
|