@coreui/vue-pro 5.10.0 → 5.11.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 +1 -1
- package/dist/cjs/components/button/CButton.js +1 -1
- package/dist/cjs/components/button/CButton.js.map +1 -1
- package/dist/cjs/components/calendar/CCalendar.js +4 -3
- package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
- package/dist/cjs/components/calendar/utils.d.ts +8 -0
- package/dist/cjs/components/calendar/utils.js +16 -0
- package/dist/cjs/components/calendar/utils.js.map +1 -1
- package/dist/cjs/components/form/CFormControlWrapper.d.ts +2 -0
- package/dist/cjs/components/form/CFormControlWrapper.js +9 -1
- package/dist/cjs/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.js +44 -36
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/link/CLink.js.map +1 -1
- package/dist/cjs/components/loading-button/CLoadingButton.d.ts +2 -2
- package/dist/cjs/components/multi-select/CMultiSelect.d.ts +12 -0
- package/dist/cjs/components/multi-select/CMultiSelect.js +23 -1
- package/dist/cjs/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/cjs/components/nav/CNav.d.ts +2 -2
- package/dist/cjs/components/nav/CNav.js +3 -2
- package/dist/cjs/components/nav/CNav.js.map +1 -1
- package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/cjs/components/password-input/CPasswordInput.d.ts +190 -0
- package/dist/cjs/components/password-input/CPasswordInput.js +178 -0
- package/dist/cjs/components/password-input/CPasswordInput.js.map +1 -0
- package/dist/cjs/components/password-input/index.d.ts +6 -0
- package/dist/cjs/components/password-input/index.js +13 -0
- package/dist/cjs/components/password-input/index.js.map +1 -0
- package/dist/cjs/components/popover/CPopover.d.ts +1 -1
- package/dist/cjs/components/rating/CRating.d.ts +1 -1
- package/dist/cjs/components/smart-table/CSmartTable.js +2 -2
- package/dist/cjs/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/cjs/components/smart-table/utils.js.map +1 -1
- package/dist/cjs/components/stepper/CStepper.d.ts +168 -0
- package/dist/cjs/components/stepper/CStepper.js +305 -0
- package/dist/cjs/components/stepper/CStepper.js.map +1 -0
- package/dist/cjs/components/stepper/index.d.ts +6 -0
- package/dist/cjs/components/stepper/index.js +13 -0
- package/dist/cjs/components/stepper/index.js.map +1 -0
- package/dist/cjs/components/stepper/types.d.ts +15 -0
- package/dist/cjs/components/tabs/CTab.js.map +1 -1
- package/dist/cjs/components/tabs/CTabList.d.ts +2 -2
- package/dist/cjs/components/tabs/CTabList.js +3 -2
- package/dist/cjs/components/tabs/CTabList.js.map +1 -1
- package/dist/cjs/components/time-picker/utils.d.ts +10 -0
- package/dist/cjs/components/time-picker/utils.js +25 -9
- package/dist/cjs/components/time-picker/utils.js.map +1 -1
- package/dist/cjs/components/tooltip/CTooltip.d.ts +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsB.js +2 -2
- package/dist/cjs/components/widgets/CWidgetStatsB.js.map +1 -1
- package/dist/cjs/components/widgets/CWidgetStatsC.js +2 -2
- package/dist/cjs/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/cjs/index.js +50 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/node_modules/vue-types/dist/index.js +567 -0
- package/dist/cjs/node_modules/vue-types/dist/index.js.map +1 -0
- package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js +29 -0
- package/dist/cjs/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
- package/dist/cjs/utils/getNextActiveElement.js.map +1 -1
- package/dist/esm/components/avatar/CAvatar.js +1 -1
- package/dist/esm/components/badge/CBadge.js +1 -1
- package/dist/esm/components/button/CButton.js +2 -2
- package/dist/esm/components/button/CButton.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.js +5 -4
- package/dist/esm/components/calendar/CCalendar.js.map +1 -1
- package/dist/esm/components/calendar/utils.d.ts +8 -0
- package/dist/esm/components/calendar/utils.js +16 -1
- package/dist/esm/components/calendar/utils.js.map +1 -1
- package/dist/esm/components/card/CCard.js +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.js +2 -2
- package/dist/esm/components/form/CFormControlWrapper.d.ts +2 -0
- package/dist/esm/components/form/CFormControlWrapper.js +9 -1
- package/dist/esm/components/form/CFormControlWrapper.js.map +1 -1
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.js +4 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/link/CLink.js.map +1 -1
- package/dist/esm/components/loading-button/CLoadingButton.d.ts +2 -2
- package/dist/esm/components/multi-select/CMultiSelect.d.ts +12 -0
- package/dist/esm/components/multi-select/CMultiSelect.js +24 -2
- package/dist/esm/components/multi-select/CMultiSelect.js.map +1 -1
- package/dist/esm/components/nav/CNav.d.ts +2 -2
- package/dist/esm/components/nav/CNav.js +3 -2
- package/dist/esm/components/nav/CNav.js.map +1 -1
- package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/esm/components/password-input/CPasswordInput.d.ts +190 -0
- package/dist/esm/components/password-input/CPasswordInput.js +176 -0
- package/dist/esm/components/password-input/CPasswordInput.js.map +1 -0
- package/dist/esm/components/password-input/index.d.ts +6 -0
- package/dist/esm/components/password-input/index.js +10 -0
- package/dist/esm/components/password-input/index.js.map +1 -0
- package/dist/esm/components/popover/CPopover.d.ts +1 -1
- package/dist/esm/components/rating/CRating.d.ts +1 -1
- package/dist/esm/components/smart-table/CSmartTable.js +2 -2
- package/dist/esm/components/smart-table/CSmartTable.js.map +1 -1
- package/dist/esm/components/smart-table/CSmartTableBody.js +1 -1
- package/dist/esm/components/smart-table/utils.js.map +1 -1
- package/dist/esm/components/stepper/CStepper.d.ts +168 -0
- package/dist/esm/components/stepper/CStepper.js +303 -0
- package/dist/esm/components/stepper/CStepper.js.map +1 -0
- package/dist/esm/components/stepper/index.d.ts +6 -0
- package/dist/esm/components/stepper/index.js +10 -0
- package/dist/esm/components/stepper/index.js.map +1 -0
- package/dist/esm/components/stepper/types.d.ts +15 -0
- package/dist/esm/components/tabs/CTab.js.map +1 -1
- package/dist/esm/components/tabs/CTabList.d.ts +2 -2
- package/dist/esm/components/tabs/CTabList.js +3 -2
- package/dist/esm/components/tabs/CTabList.js.map +1 -1
- package/dist/esm/components/time-picker/utils.d.ts +10 -0
- package/dist/esm/components/time-picker/utils.js +25 -10
- package/dist/esm/components/time-picker/utils.js.map +1 -1
- package/dist/esm/components/tooltip/CTooltip.d.ts +1 -1
- package/dist/esm/components/widgets/CWidgetStatsB.js +2 -2
- package/dist/esm/components/widgets/CWidgetStatsB.js.map +1 -1
- package/dist/esm/components/widgets/CWidgetStatsC.js +2 -2
- package/dist/esm/components/widgets/CWidgetStatsC.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/vue-types/dist/index.js +541 -0
- package/dist/esm/node_modules/vue-types/dist/index.js.map +1 -0
- package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js +25 -0
- package/dist/esm/node_modules/vue-types/dist/shared/vue-types.8139b772.js.map +1 -0
- package/dist/esm/utils/getNextActiveElement.js.map +1 -1
- package/package.json +9 -9
- package/src/components/button/CButton.ts +1 -1
- package/src/components/calendar/CCalendar.ts +47 -44
- package/src/components/calendar/utils.ts +33 -10
- package/src/components/form/CFormControlWrapper.ts +35 -21
- package/src/components/index.ts +2 -0
- package/src/components/multi-select/CMultiSelect.ts +48 -25
- package/src/components/nav/CNav.ts +3 -2
- package/src/components/password-input/CPasswordInput.ts +214 -0
- package/src/components/password-input/index.ts +10 -0
- package/src/components/stepper/CStepper.ts +384 -0
- package/src/components/stepper/__tests__/CStepper.spec.ts +175 -0
- package/src/components/stepper/index.ts +10 -0
- package/src/components/stepper/types.ts +18 -0
- package/src/components/tabs/CTabList.ts +3 -2
- package/src/components/time-picker/CTimePicker.ts +22 -22
- package/src/components/time-picker/CTimePickerRollCol.ts +3 -3
- package/src/components/time-picker/utils.ts +30 -13
- package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js +0 -37
- package/dist/cjs/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
- package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js +0 -33
- package/dist/cjs/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
- package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js +0 -35
- package/dist/esm/node_modules/is-plain-object/dist/is-plain-object.js.map +0 -1
- package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js +0 -6
- package/dist/esm/node_modules/vue-types/dist/vue-types.modern.js.map +0 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import type { StepperStepData } from './types';
|
|
2
|
+
export declare const CStepper: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
+
/**
|
|
4
|
+
* The default active step index when not using `v-model`.
|
|
5
|
+
*/
|
|
6
|
+
activeStepNumber: {
|
|
7
|
+
type: NumberConstructor;
|
|
8
|
+
default: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Optional unique ID used for accessibility attributes like `aria-labelledby`.
|
|
12
|
+
*/
|
|
13
|
+
id: StringConstructor;
|
|
14
|
+
/**
|
|
15
|
+
* Sets the layout direction of the Vue Stepper component.
|
|
16
|
+
*
|
|
17
|
+
* - `'horizontal'` – Steps are placed side-by-side.
|
|
18
|
+
* - `'vertical'` – Steps are stacked vertically (ideal for mobile).
|
|
19
|
+
*
|
|
20
|
+
* This makes the Vue Form Wizard adaptable to various screen sizes.
|
|
21
|
+
*/
|
|
22
|
+
layout: {
|
|
23
|
+
type: () => "horizontal" | "vertical";
|
|
24
|
+
default: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Enables linear step progression in the Vue Form Wizard.
|
|
28
|
+
*
|
|
29
|
+
* - `true`: Steps must be completed in order.
|
|
30
|
+
* - `false`: Users can navigate freely between steps.
|
|
31
|
+
*
|
|
32
|
+
* Useful for enforcing validation and structured data entry in Vue multi-step forms.
|
|
33
|
+
*/
|
|
34
|
+
linear: {
|
|
35
|
+
type: BooleanConstructor;
|
|
36
|
+
default: boolean;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* The current active step index of the Vue Stepper (used for controlled mode with `v-model`).
|
|
40
|
+
*
|
|
41
|
+
* If this prop is not provided, the Vue Form Wizard will use `activeStepNumber` as its initial value.
|
|
42
|
+
*/
|
|
43
|
+
modelValue: NumberConstructor;
|
|
44
|
+
/**
|
|
45
|
+
* Defines the list of steps in the Vue Stepper.
|
|
46
|
+
*
|
|
47
|
+
* Each step should include:
|
|
48
|
+
* - `label`: The title displayed in the step.
|
|
49
|
+
* - `indicator` (optional): Custom icon, number, or marker.
|
|
50
|
+
* - `formRef` (optional): A reference to the `<form>` used for validation in Vue Form Wizard scenarios.
|
|
51
|
+
*/
|
|
52
|
+
steps: {
|
|
53
|
+
type: () => (StepperStepData | string)[];
|
|
54
|
+
required: true;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Controls the layout of the step indicator and label.
|
|
58
|
+
*
|
|
59
|
+
* - `'horizontal'`: Icon and label are side-by-side.
|
|
60
|
+
* - `'vertical'`: Label is shown below the icon.
|
|
61
|
+
*
|
|
62
|
+
* Applies only when `layout` is set to `'horizontal'`.
|
|
63
|
+
*/
|
|
64
|
+
stepButtonLayout: {
|
|
65
|
+
type: () => "horizontal" | "vertical";
|
|
66
|
+
default: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Enables validation of forms within each step of the Vue Form Wizard.
|
|
70
|
+
*
|
|
71
|
+
* When set to `true`, the user cannot proceed unless the current step's form passes `checkValidity()`.
|
|
72
|
+
* Each step must expose a native form element via the `formRef` slot binding.
|
|
73
|
+
*/
|
|
74
|
+
validation: {
|
|
75
|
+
type: BooleanConstructor;
|
|
76
|
+
default: boolean;
|
|
77
|
+
};
|
|
78
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
79
|
+
[key: string]: any;
|
|
80
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("reset" | "update:modelValue" | "finish" | "stepChange" | "stepValidationComplete")[], "reset" | "update:modelValue" | "finish" | "stepChange" | "stepValidationComplete", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
81
|
+
/**
|
|
82
|
+
* The default active step index when not using `v-model`.
|
|
83
|
+
*/
|
|
84
|
+
activeStepNumber: {
|
|
85
|
+
type: NumberConstructor;
|
|
86
|
+
default: number;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Optional unique ID used for accessibility attributes like `aria-labelledby`.
|
|
90
|
+
*/
|
|
91
|
+
id: StringConstructor;
|
|
92
|
+
/**
|
|
93
|
+
* Sets the layout direction of the Vue Stepper component.
|
|
94
|
+
*
|
|
95
|
+
* - `'horizontal'` – Steps are placed side-by-side.
|
|
96
|
+
* - `'vertical'` – Steps are stacked vertically (ideal for mobile).
|
|
97
|
+
*
|
|
98
|
+
* This makes the Vue Form Wizard adaptable to various screen sizes.
|
|
99
|
+
*/
|
|
100
|
+
layout: {
|
|
101
|
+
type: () => "horizontal" | "vertical";
|
|
102
|
+
default: string;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Enables linear step progression in the Vue Form Wizard.
|
|
106
|
+
*
|
|
107
|
+
* - `true`: Steps must be completed in order.
|
|
108
|
+
* - `false`: Users can navigate freely between steps.
|
|
109
|
+
*
|
|
110
|
+
* Useful for enforcing validation and structured data entry in Vue multi-step forms.
|
|
111
|
+
*/
|
|
112
|
+
linear: {
|
|
113
|
+
type: BooleanConstructor;
|
|
114
|
+
default: boolean;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* The current active step index of the Vue Stepper (used for controlled mode with `v-model`).
|
|
118
|
+
*
|
|
119
|
+
* If this prop is not provided, the Vue Form Wizard will use `activeStepNumber` as its initial value.
|
|
120
|
+
*/
|
|
121
|
+
modelValue: NumberConstructor;
|
|
122
|
+
/**
|
|
123
|
+
* Defines the list of steps in the Vue Stepper.
|
|
124
|
+
*
|
|
125
|
+
* Each step should include:
|
|
126
|
+
* - `label`: The title displayed in the step.
|
|
127
|
+
* - `indicator` (optional): Custom icon, number, or marker.
|
|
128
|
+
* - `formRef` (optional): A reference to the `<form>` used for validation in Vue Form Wizard scenarios.
|
|
129
|
+
*/
|
|
130
|
+
steps: {
|
|
131
|
+
type: () => (StepperStepData | string)[];
|
|
132
|
+
required: true;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Controls the layout of the step indicator and label.
|
|
136
|
+
*
|
|
137
|
+
* - `'horizontal'`: Icon and label are side-by-side.
|
|
138
|
+
* - `'vertical'`: Label is shown below the icon.
|
|
139
|
+
*
|
|
140
|
+
* Applies only when `layout` is set to `'horizontal'`.
|
|
141
|
+
*/
|
|
142
|
+
stepButtonLayout: {
|
|
143
|
+
type: () => "horizontal" | "vertical";
|
|
144
|
+
default: string;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* Enables validation of forms within each step of the Vue Form Wizard.
|
|
148
|
+
*
|
|
149
|
+
* When set to `true`, the user cannot proceed unless the current step's form passes `checkValidity()`.
|
|
150
|
+
* Each step must expose a native form element via the `formRef` slot binding.
|
|
151
|
+
*/
|
|
152
|
+
validation: {
|
|
153
|
+
type: BooleanConstructor;
|
|
154
|
+
default: boolean;
|
|
155
|
+
};
|
|
156
|
+
}>> & Readonly<{
|
|
157
|
+
onReset?: ((...args: any[]) => any) | undefined;
|
|
158
|
+
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
|
|
159
|
+
onFinish?: ((...args: any[]) => any) | undefined;
|
|
160
|
+
onStepChange?: ((...args: any[]) => any) | undefined;
|
|
161
|
+
onStepValidationComplete?: ((...args: any[]) => any) | undefined;
|
|
162
|
+
}>, {
|
|
163
|
+
layout: "horizontal" | "vertical";
|
|
164
|
+
activeStepNumber: number;
|
|
165
|
+
linear: boolean;
|
|
166
|
+
stepButtonLayout: "horizontal" | "vertical";
|
|
167
|
+
validation: boolean;
|
|
168
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, shallowRef, watch, h, nextTick } from 'vue';
|
|
2
|
+
import { CCollapse } from '../collapse/CCollapse.js';
|
|
3
|
+
|
|
4
|
+
const CStepper = defineComponent({
|
|
5
|
+
name: 'CStepper',
|
|
6
|
+
inheritAttrs: false,
|
|
7
|
+
props: {
|
|
8
|
+
/**
|
|
9
|
+
* The default active step index when not using `v-model`.
|
|
10
|
+
*/
|
|
11
|
+
activeStepNumber: {
|
|
12
|
+
type: Number,
|
|
13
|
+
default: 1,
|
|
14
|
+
},
|
|
15
|
+
/**
|
|
16
|
+
* Optional unique ID used for accessibility attributes like `aria-labelledby`.
|
|
17
|
+
*/
|
|
18
|
+
id: String,
|
|
19
|
+
/**
|
|
20
|
+
* Sets the layout direction of the Vue Stepper component.
|
|
21
|
+
*
|
|
22
|
+
* - `'horizontal'` – Steps are placed side-by-side.
|
|
23
|
+
* - `'vertical'` – Steps are stacked vertically (ideal for mobile).
|
|
24
|
+
*
|
|
25
|
+
* This makes the Vue Form Wizard adaptable to various screen sizes.
|
|
26
|
+
*/
|
|
27
|
+
layout: {
|
|
28
|
+
type: String,
|
|
29
|
+
default: 'horizontal',
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* Enables linear step progression in the Vue Form Wizard.
|
|
33
|
+
*
|
|
34
|
+
* - `true`: Steps must be completed in order.
|
|
35
|
+
* - `false`: Users can navigate freely between steps.
|
|
36
|
+
*
|
|
37
|
+
* Useful for enforcing validation and structured data entry in Vue multi-step forms.
|
|
38
|
+
*/
|
|
39
|
+
linear: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: true,
|
|
42
|
+
},
|
|
43
|
+
/**
|
|
44
|
+
* The current active step index of the Vue Stepper (used for controlled mode with `v-model`).
|
|
45
|
+
*
|
|
46
|
+
* If this prop is not provided, the Vue Form Wizard will use `activeStepNumber` as its initial value.
|
|
47
|
+
*/
|
|
48
|
+
modelValue: Number,
|
|
49
|
+
/**
|
|
50
|
+
* Defines the list of steps in the Vue Stepper.
|
|
51
|
+
*
|
|
52
|
+
* Each step should include:
|
|
53
|
+
* - `label`: The title displayed in the step.
|
|
54
|
+
* - `indicator` (optional): Custom icon, number, or marker.
|
|
55
|
+
* - `formRef` (optional): A reference to the `<form>` used for validation in Vue Form Wizard scenarios.
|
|
56
|
+
*/
|
|
57
|
+
steps: {
|
|
58
|
+
type: Array,
|
|
59
|
+
required: true,
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* Controls the layout of the step indicator and label.
|
|
63
|
+
*
|
|
64
|
+
* - `'horizontal'`: Icon and label are side-by-side.
|
|
65
|
+
* - `'vertical'`: Label is shown below the icon.
|
|
66
|
+
*
|
|
67
|
+
* Applies only when `layout` is set to `'horizontal'`.
|
|
68
|
+
*/
|
|
69
|
+
stepButtonLayout: {
|
|
70
|
+
type: String,
|
|
71
|
+
default: 'horizontal',
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* Enables validation of forms within each step of the Vue Form Wizard.
|
|
75
|
+
*
|
|
76
|
+
* When set to `true`, the user cannot proceed unless the current step's form passes `checkValidity()`.
|
|
77
|
+
* Each step must expose a native form element via the `formRef` slot binding.
|
|
78
|
+
*/
|
|
79
|
+
validation: {
|
|
80
|
+
type: Boolean,
|
|
81
|
+
default: true,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
emits: [
|
|
85
|
+
/**
|
|
86
|
+
* Emitted when the user successfully finishes all steps in the Vue Form Wizard.
|
|
87
|
+
*/
|
|
88
|
+
'finish',
|
|
89
|
+
/**
|
|
90
|
+
* Emitted when the stepper is reset to its initial state.
|
|
91
|
+
*/
|
|
92
|
+
'reset',
|
|
93
|
+
/**
|
|
94
|
+
* Emitted on any manual or programmatic step change.
|
|
95
|
+
*/
|
|
96
|
+
'stepChange',
|
|
97
|
+
/**
|
|
98
|
+
* Emitted after each step's form is validated (when `validation: true`).
|
|
99
|
+
*/
|
|
100
|
+
'stepValidationComplete',
|
|
101
|
+
/**
|
|
102
|
+
* Emitted when the current active step changes.
|
|
103
|
+
*
|
|
104
|
+
* Useful for syncing state with `v-model`.
|
|
105
|
+
*/
|
|
106
|
+
'update:modelValue',
|
|
107
|
+
],
|
|
108
|
+
setup(props, { emit, slots, attrs, expose }) {
|
|
109
|
+
const activeStepNumber = ref(props.modelValue ?? props.activeStepNumber);
|
|
110
|
+
const isControlled = computed(() => props.modelValue !== undefined);
|
|
111
|
+
const isFinished = ref(false);
|
|
112
|
+
const stepsRef = ref(null);
|
|
113
|
+
const stepButtonRefs = shallowRef([]);
|
|
114
|
+
const formRefs = shallowRef([]);
|
|
115
|
+
const registerFormRef = (stepNumber) => (el) => {
|
|
116
|
+
formRefs.value[stepNumber - 1] = el;
|
|
117
|
+
};
|
|
118
|
+
watch(() => props.modelValue, (val) => {
|
|
119
|
+
if (val !== undefined)
|
|
120
|
+
activeStepNumber.value = val;
|
|
121
|
+
});
|
|
122
|
+
watch(activeStepNumber, (val) => {
|
|
123
|
+
if (isControlled.value)
|
|
124
|
+
emit('update:modelValue', val);
|
|
125
|
+
});
|
|
126
|
+
const isStepValid = (stepNumber) => {
|
|
127
|
+
if (!props.validation) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
const form = formRefs.value[stepNumber - 1];
|
|
131
|
+
console.log(`Validating step ${stepNumber}:`, form);
|
|
132
|
+
if (form) {
|
|
133
|
+
const isValid = form.checkValidity();
|
|
134
|
+
emit('stepValidationComplete', { stepNumber: stepNumber, isValid: isValid });
|
|
135
|
+
if (form && !isValid) {
|
|
136
|
+
if (!form.noValidate) {
|
|
137
|
+
form.reportValidity();
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
};
|
|
144
|
+
const setActiveStep = (stepNumber, bypassValidation = false) => {
|
|
145
|
+
if (stepNumber < 1 ||
|
|
146
|
+
stepNumber > props.steps.length ||
|
|
147
|
+
stepNumber === activeStepNumber.value) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
if (!bypassValidation &&
|
|
151
|
+
stepNumber > activeStepNumber.value &&
|
|
152
|
+
!isStepValid(activeStepNumber.value))
|
|
153
|
+
return;
|
|
154
|
+
activeStepNumber.value = stepNumber;
|
|
155
|
+
emit('stepChange', stepNumber);
|
|
156
|
+
};
|
|
157
|
+
const next = () => {
|
|
158
|
+
if (activeStepNumber.value <= props.steps.length) {
|
|
159
|
+
setActiveStep(activeStepNumber.value + 1);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
finish();
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const prev = () => {
|
|
166
|
+
if (activeStepNumber.value > 1) {
|
|
167
|
+
setActiveStep(activeStepNumber.value - 1, true);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
const finish = () => {
|
|
171
|
+
if (activeStepNumber.value === props.steps.length && isStepValid(activeStepNumber.value)) {
|
|
172
|
+
isFinished.value = true;
|
|
173
|
+
emit('finish');
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const reset = () => {
|
|
177
|
+
formRefs.value.forEach((form) => form?.reset?.());
|
|
178
|
+
activeStepNumber.value = props.activeStepNumber;
|
|
179
|
+
isFinished.value = false;
|
|
180
|
+
emit('reset');
|
|
181
|
+
emit('stepChange', props.activeStepNumber);
|
|
182
|
+
nextTick(() => {
|
|
183
|
+
stepButtonRefs.value[props.activeStepNumber - 1]?.focus();
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
const handleKeyDown = (event) => {
|
|
187
|
+
const buttons = stepButtonRefs.value;
|
|
188
|
+
const current = event.target;
|
|
189
|
+
const index = buttons.indexOf(current);
|
|
190
|
+
if (index === -1)
|
|
191
|
+
return;
|
|
192
|
+
let nextIndex = index;
|
|
193
|
+
switch (event.key) {
|
|
194
|
+
case 'ArrowRight':
|
|
195
|
+
case 'ArrowDown': {
|
|
196
|
+
nextIndex = (index + 1) % buttons.length;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
case 'ArrowLeft':
|
|
200
|
+
case 'ArrowUp': {
|
|
201
|
+
nextIndex = (index - 1 + buttons.length) % buttons.length;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case 'Home': {
|
|
205
|
+
nextIndex = 0;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
case 'End': {
|
|
209
|
+
nextIndex = buttons.length - 1;
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
default: {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
event.preventDefault();
|
|
217
|
+
buttons[nextIndex]?.focus();
|
|
218
|
+
};
|
|
219
|
+
expose({ next, prev, finish, reset });
|
|
220
|
+
return () => {
|
|
221
|
+
const isVertical = props.layout === 'vertical';
|
|
222
|
+
stepButtonRefs.value = [];
|
|
223
|
+
return h('div', {
|
|
224
|
+
...attrs,
|
|
225
|
+
class: ['stepper', { 'stepper-vertical': isVertical }, attrs.class],
|
|
226
|
+
}, [
|
|
227
|
+
h('ol', {
|
|
228
|
+
class: 'stepper-steps',
|
|
229
|
+
role: 'tablist',
|
|
230
|
+
'aria-orientation': isVertical ? 'vertical' : 'horizontal',
|
|
231
|
+
onKeydown: handleKeyDown,
|
|
232
|
+
ref: stepsRef,
|
|
233
|
+
}, props.steps.map((step, index) => {
|
|
234
|
+
const stepNumber = index + 1;
|
|
235
|
+
const isActive = !isFinished.value && stepNumber === activeStepNumber.value;
|
|
236
|
+
const isComplete = isFinished.value || stepNumber < activeStepNumber.value;
|
|
237
|
+
const isDisabled = isFinished.value || (props.linear && stepNumber > activeStepNumber.value + 1);
|
|
238
|
+
const stepId = `step-${props.id || 'stepper'}-${stepNumber}`;
|
|
239
|
+
const panelId = `panel-${props.id || 'stepper'}-${stepNumber}`;
|
|
240
|
+
return h('li', {
|
|
241
|
+
key: stepNumber,
|
|
242
|
+
class: ['stepper-step', props.stepButtonLayout],
|
|
243
|
+
role: 'presentation',
|
|
244
|
+
}, [
|
|
245
|
+
h('button', {
|
|
246
|
+
type: 'button',
|
|
247
|
+
class: ['stepper-step-button', { active: isActive, complete: isComplete }],
|
|
248
|
+
disabled: isDisabled,
|
|
249
|
+
id: stepId,
|
|
250
|
+
role: 'tab',
|
|
251
|
+
'aria-selected': isActive,
|
|
252
|
+
tabindex: isActive ? 0 : -1,
|
|
253
|
+
'aria-controls': panelId,
|
|
254
|
+
onClick: () => setActiveStep(stepNumber, !props.linear || stepNumber <= activeStepNumber.value),
|
|
255
|
+
ref: (el) => (stepButtonRefs.value[index] = el),
|
|
256
|
+
}, [
|
|
257
|
+
h('span', { class: 'stepper-step-indicator' }, [
|
|
258
|
+
isComplete
|
|
259
|
+
? h('span', { class: 'stepper-step-indicator-icon' })
|
|
260
|
+
: h('span', { class: 'stepper-step-indicator-text' }, typeof step === 'object' && 'indicator' in step
|
|
261
|
+
? step.indicator
|
|
262
|
+
: stepNumber),
|
|
263
|
+
]),
|
|
264
|
+
h('span', { class: 'stepper-step-label' }, typeof step === 'object' && 'label' in step ? step.label : step),
|
|
265
|
+
]),
|
|
266
|
+
stepNumber < props.steps.length && h('div', { class: 'stepper-step-connector' }),
|
|
267
|
+
isVertical &&
|
|
268
|
+
h(CCollapse, {
|
|
269
|
+
class: 'stepper-step-content',
|
|
270
|
+
id: panelId,
|
|
271
|
+
role: 'tabpanel',
|
|
272
|
+
visible: isActive,
|
|
273
|
+
'aria-hidden': !isActive,
|
|
274
|
+
'aria-labelledby': stepId,
|
|
275
|
+
'aria-live': 'polite',
|
|
276
|
+
}, () => slots[`step-${stepNumber}`]?.({ formRef: registerFormRef(stepNumber) })),
|
|
277
|
+
]);
|
|
278
|
+
})),
|
|
279
|
+
!isVertical &&
|
|
280
|
+
h('div', { class: 'stepper-content' }, props.steps.map((_, index) => {
|
|
281
|
+
const stepNumber = index + 1;
|
|
282
|
+
const isActive = !isFinished.value && stepNumber === activeStepNumber.value;
|
|
283
|
+
const stepId = `step-${props.id || 'stepper'}-${stepNumber}`;
|
|
284
|
+
const panelId = `panel-${props.id || 'stepper'}-${stepNumber}`;
|
|
285
|
+
return h('div', {
|
|
286
|
+
key: stepNumber,
|
|
287
|
+
id: panelId,
|
|
288
|
+
role: 'tabpanel',
|
|
289
|
+
'aria-hidden': !isActive,
|
|
290
|
+
'aria-labelledby': stepId,
|
|
291
|
+
'aria-live': 'polite',
|
|
292
|
+
class: ['stepper-pane', { active: isActive, show: isActive }],
|
|
293
|
+
}, {
|
|
294
|
+
default: () => slots[`step-${stepNumber}`]?.({ formRef: registerFormRef(stepNumber) }),
|
|
295
|
+
});
|
|
296
|
+
})),
|
|
297
|
+
]);
|
|
298
|
+
};
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
export { CStepper };
|
|
303
|
+
//# sourceMappingURL=CStepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CStepper.js","sources":["../../../../src/components/stepper/CStepper.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/stepper/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA,MAAM,cAAc,GAAG;AACrB,IAAA,OAAO,EAAE,CAAC,GAAQ,KAAU;QAC1B,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAc,EAAE,QAAQ,CAAC;KACjD;;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { VNode } from 'vue';
|
|
2
|
+
export interface StepperRef {
|
|
3
|
+
next: () => void;
|
|
4
|
+
prev: () => void;
|
|
5
|
+
finish: () => void;
|
|
6
|
+
reset: () => void;
|
|
7
|
+
}
|
|
8
|
+
export interface StepperStepData {
|
|
9
|
+
indicator?: VNode;
|
|
10
|
+
label: VNode;
|
|
11
|
+
}
|
|
12
|
+
export type StepperStepValidationResult = {
|
|
13
|
+
stepNumber: number;
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CTab.js","sources":["../../../../src/components/tabs/CTab.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,MAAA,IAAI,GAAG,eAAe,CAAC;AAC3B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE;AACL;;;;AAIG;AACH,QAAA,QAAQ,EAAE,OAAO;AACjB;;AAEG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACtB,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA;AACpB,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAyB;AACrE,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;AACvB,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAmC;AAErF,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK;AAE5D,QAAA,OAAO,MACL,CAAC,CACC,QAAQ,EACR;AACE,YAAA,KAAK,EAAE;gBACL,UAAU;AACV,gBAAA;oBACE,MAAM,EAAE,QAAQ,EAAE;AACnB,iBAAA;AACF,aAAA;AACD,YAAA,EAAE,EAAE,CAAG,EAAA,KAAK,CAAC,OAAO,CAAA,KAAA,EAAQ,EAAE,CAAE,CAAA;AAChC,YAAA,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"CTab.js","sources":["../../../../src/components/tabs/CTab.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,MAAA,IAAI,GAAG,eAAe,CAAC;AAC3B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE;AACL;;;;AAIG;AACH,QAAA,QAAQ,EAAE,OAAO;AACjB;;AAEG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACtB,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA;AACpB,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAyB;AACrE,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;AACvB,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAmC;AAErF,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK;AAE5D,QAAA,OAAO,MACL,CAAC,CACC,QAAQ,EACR;AACE,YAAA,KAAK,EAAE;gBACL,UAAU;AACV,gBAAA;oBACE,MAAM,EAAE,QAAQ,EAAE;AACnB,iBAAA;AACF,aAAA;AACD,YAAA,EAAE,EAAE,CAAG,EAAA,KAAK,CAAC,OAAO,CAAA,KAAA,EAAQ,EAAE,CAAE,CAAA;AAChC,YAAA,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE;AAC7B,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,eAAe,EAAE,CAAG,EAAA,KAAK,CAAC,OAAO,CAAA,WAAA,EAAc,EAAE,CAAE,CAAA;YACnD,eAAe,EAAE,QAAQ,EAAE;YAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9C,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;SAC/C,EACD,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CACjC;KACJ;AACF,CAAA;;;;"}
|
|
@@ -11,7 +11,7 @@ declare const CTabList: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
11
11
|
/**
|
|
12
12
|
* Set the nav variant to tabs or pills.
|
|
13
13
|
*
|
|
14
|
-
* @values 'pills', 'tabs', 'underline', 'underline-border'
|
|
14
|
+
* @values 'enclosed', 'enclosed-pills', 'pills', 'tabs', 'underline', 'underline-border'
|
|
15
15
|
*/
|
|
16
16
|
variant: {
|
|
17
17
|
type: StringConstructor;
|
|
@@ -32,7 +32,7 @@ declare const CTabList: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
32
32
|
/**
|
|
33
33
|
* Set the nav variant to tabs or pills.
|
|
34
34
|
*
|
|
35
|
-
* @values 'pills', 'tabs', 'underline', 'underline-border'
|
|
35
|
+
* @values 'enclosed', 'enclosed-pills', 'pills', 'tabs', 'underline', 'underline-border'
|
|
36
36
|
*/
|
|
37
37
|
variant: {
|
|
38
38
|
type: StringConstructor;
|
|
@@ -18,12 +18,12 @@ const CTabList = defineComponent({
|
|
|
18
18
|
/**
|
|
19
19
|
* Set the nav variant to tabs or pills.
|
|
20
20
|
*
|
|
21
|
-
* @values 'pills', 'tabs', 'underline', 'underline-border'
|
|
21
|
+
* @values 'enclosed', 'enclosed-pills', 'pills', 'tabs', 'underline', 'underline-border'
|
|
22
22
|
*/
|
|
23
23
|
variant: {
|
|
24
24
|
type: String,
|
|
25
25
|
validator: (value) => {
|
|
26
|
-
return ['pills', 'tabs', 'underline', 'underline-border'].includes(value);
|
|
26
|
+
return ['enclosed', 'enclosed-pills', 'pills', 'tabs', 'underline', 'underline-border'].includes(value);
|
|
27
27
|
},
|
|
28
28
|
},
|
|
29
29
|
},
|
|
@@ -56,6 +56,7 @@ const CTabList = defineComponent({
|
|
|
56
56
|
return () => h('div', {
|
|
57
57
|
class: [
|
|
58
58
|
'nav',
|
|
59
|
+
props.variant === 'enclosed-pills' && 'nav-enclosed',
|
|
59
60
|
{
|
|
60
61
|
[`nav-${props.layout}`]: props.layout,
|
|
61
62
|
[`nav-${props.variant}`]: props.variant,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CTabList.js","sources":["../../../../src/components/tabs/CTabList.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,MAAA,QAAQ,GAAG,eAAe,CAAC;AAC/B,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,KAAK,EAAE;AACL;;;;AAIG;AACH,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;gBAC3B,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC7C;AACF,SAAA;AACD;;;;AAIG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"CTabList.js","sources":["../../../../src/components/tabs/CTabList.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGM,MAAA,QAAQ,GAAG,eAAe,CAAC;AAC/B,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,KAAK,EAAE;AACL;;;;AAIG;AACH,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;gBAC3B,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC7C;AACF,SAAA;AACD;;;;AAIG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,gBAAA,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;aACxG;AACF,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,GAAG,EAAkB;AAExC,QAAA,MAAM,aAAa,GAAG,CAAC,KAAoB,KAAI;YAC7C,IACE,UAAU,CAAC,KAAK;AAChB,iBAAC,KAAK,CAAC,GAAG,KAAK,WAAW;oBACxB,KAAK,CAAC,GAAG,KAAK,SAAS;oBACvB,KAAK,CAAC,GAAG,KAAK,WAAW;oBACzB,KAAK,CAAC,GAAG,KAAK,YAAY;oBAC1B,KAAK,CAAC,GAAG,KAAK,MAAM;AACpB,oBAAA,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,EACtB;gBACA,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;;AAE1C,gBAAA,MAAM,KAAK,GAAkB,KAAK,CAAC,IAAI,CACrC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,yCAAyC,CAAC,CAC7E;AAED,gBAAA,IAAI,iBAAiB;AAErB,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;oBAC/C,iBAAiB,GAAG,KAAK,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;;qBAC5D;oBACL,iBAAiB,GAAG,oBAAoB,CACtC,KAAK,EACL,MAAM,EACN,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EACvD,IAAI,CACL;;gBAGH,IAAI,iBAAiB,EAAE;oBACrB,iBAAiB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;;;AAGtD,SAAC;AAED,QAAA,OAAO,MACL,CAAC,CACC,KAAK,EACL;AACE,YAAA,KAAK,EAAE;gBACL,KAAK;AACL,gBAAA,KAAK,CAAC,OAAO,KAAK,gBAAgB,IAAI,cAAc;AACpD,gBAAA;oBACE,CAAC,CAAA,IAAA,EAAO,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM;oBACrC,CAAC,CAAA,IAAA,EAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO;AACxC,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC;AAC1C,YAAA,GAAG,EAAE,UAAU;SAChB,EACD,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CACjC;KACJ;AACF,CAAA;;;;"}
|
|
@@ -78,3 +78,13 @@ export declare const isAmPm: (locale: string) => boolean;
|
|
|
78
78
|
* @returns {boolean} True if the string is a valid time, otherwise false.
|
|
79
79
|
*/
|
|
80
80
|
export declare const isValidTime: (time: string) => number | false;
|
|
81
|
+
/**
|
|
82
|
+
* Checks whether the given locale formats the hour "9" with a leading zero ("09")
|
|
83
|
+
* when using `hour: 'numeric'` in `toLocaleTimeString`.
|
|
84
|
+
*
|
|
85
|
+
* This helps determine if you should force `hour: '2-digit'` for consistent formatting.
|
|
86
|
+
*
|
|
87
|
+
* @param {string} locale - The locale code (e.g., "en-US", "pl-PL").
|
|
88
|
+
* @returns {boolean} `true` if the formatted hour starts with a leading zero, otherwise `false`.
|
|
89
|
+
*/
|
|
90
|
+
export declare const shouldUseTwoDigitHour: (locale: string) => boolean;
|