Skip to content

Commit 500b4ac

Browse files
committed
chore: wip typecheck issue
1 parent 22f388b commit 500b4ac

File tree

19 files changed

+193
-115
lines changed

19 files changed

+193
-115
lines changed

bun.lock

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
"@stacksjs/docs": "^0.70.23",
5252
"@stacksjs/eslint-config": "^4.10.2-beta.3",
5353
"@types/bun": "^1.2.10",
54+
"@types/clean-css": "^4.2.11",
55+
"@types/google.maps": "^3.58.1",
5456
"bumpp": "^10.1.0",
5557
"bun-plugin-dtsx": "^0.21.9",
5658
"changelogen": "^0.6.1",

packages/ts-inputs/src/phone.ts

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import type { FormatPhoneOptions } from './types'
22
import { DefaultPhoneDelimiter, DefaultPhonePattern, DefaultPhoneRegion } from './constants'
33

4+
type HandleFormatOptions = {
5+
value: string
6+
} & FormatPhoneOptions
7+
48
// Phone number patterns by region
59
const PHONE_PATTERNS: Record<string, number[]> = {
610
US: [3, 3, 4], // (123) 456-7890
@@ -36,37 +40,34 @@ function handleFormat({
3640
region,
3741
includeCountryCode,
3842
format,
39-
}: {
40-
value: string
41-
delimiter: string
42-
pattern: number[]
43-
region: string
44-
includeCountryCode: boolean
45-
format: 'national' | 'international'
46-
}): string {
43+
}: HandleFormatOptions): string {
4744
// Remove all non-digit characters
4845
const digits = value.replace(/\D/g, '')
4946

50-
// Apply pattern
5147
let result = ''
52-
let digitIndex = 0
5348

54-
for (let i = 0; i < pattern.length; i++) {
55-
const groupSize = pattern[i]
56-
const group = digits.slice(digitIndex, digitIndex + groupSize)
49+
if (pattern) {
50+
let digitIndex = 0
5751

58-
if (group) {
59-
if (result) {
60-
result += delimiter
52+
for (let i = 0; i < pattern.length; i++) {
53+
const groupSize = pattern[i]
54+
const group = digits.slice(digitIndex, digitIndex + groupSize)
55+
56+
if (group) {
57+
if (result) {
58+
result += delimiter
59+
}
60+
result += group
61+
digitIndex += groupSize
6162
}
62-
result += group
63-
digitIndex += groupSize
6463
}
6564
}
6665

67-
// Add country code if needed
68-
if (includeCountryCode && format === 'international' && COUNTRY_CODES[region]) {
69-
result = `${COUNTRY_CODES[region]} ${result}`
66+
if (region) {
67+
// Add country code if needed
68+
if (includeCountryCode && format === 'international' && COUNTRY_CODES[region]) {
69+
result = `${COUNTRY_CODES[region]} ${result}`
70+
}
7071
}
7172

7273
return result

packages/vue/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"types": "dist/index.d.ts",
3131
"files": ["README.md", "dist"],
3232
"scripts": {
33-
"build": "bunx --bun vite build --mode lib",
33+
"build": "bunx --bun vite build --mode lib && bun run build:types",
3434
"build:types": "bunx vue-tsc -p tsconfig.build.json && bunx api-extractor run",
3535
"lint": "bunx --bun eslint .",
3636
"lint:fix": "bunx --bun eslint . --fix"

packages/vue/src/components/BaseInput.vue

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,15 @@ function handleDatePickerEvents(event: string, value?: any) {
288288
break
289289
}
290290
}
291+
292+
interface FormatNumeralOptions {
293+
delimiter?: string
294+
thousandGroupStyle?: string
295+
integerScale?: number
296+
decimalMark?: string
297+
decimalScale?: number
298+
positiveOnly?: boolean
299+
}
291300
</script>
292301

293302
<template>
@@ -400,3 +409,27 @@ function handleDatePickerEvents(event: string, value?: any) {
400409
display: inline-block;
401410
}
402411
</style>
412+
413+
declare global {
414+
namespace google {
415+
namespace maps {
416+
namespace places {
417+
class Autocomplete {
418+
constructor(input: HTMLInputElement, options?: AutocompleteOptions)
419+
addListener(eventName: string, handler: Function): void
420+
getPlace(): any
421+
}
422+
}
423+
}
424+
}
425+
interface Window {
426+
google: typeof google
427+
}
428+
}
429+
430+
interface AutocompleteOptions {
431+
types?: string[]
432+
componentRestrictions?: {
433+
country: string | string[]
434+
}
435+
}

packages/vue/src/components/datetime-picker/DateTimePicker.vue

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<script lang="ts" setup>
2+
import type { Ref } from 'vue'
3+
24
import type {
35
DatepickerInputRef,
46
DatepickerMenuRef,
@@ -8,14 +10,14 @@ import type {
810
ModelValue,
911
MonthYearOpt,
1012
} from './interfaces'
11-
1213
import {
1314
computed,
1415
getCurrentInstance,
1516
nextTick,
1617
onMounted,
1718
onUnmounted,
1819
ref,
20+
1921
Teleport as TeleportCmp,
2022
toRef,
2123
useSlots,
@@ -50,33 +52,41 @@ const props = defineProps({
5052
...AllProps,
5153
})
5254
53-
const emit = defineEmits([
54-
'update:model-value',
55-
'update:model-timezone-value',
56-
'textSubmit',
57-
'closed',
58-
'cleared',
59-
'open',
60-
'focus',
61-
'blur',
62-
'internalModelChange',
63-
'recalculatePosition',
64-
'flowStep',
65-
'updateMonthYear',
66-
'invalidSelect',
67-
'invalidFixedRange',
68-
'tooltipOpen',
69-
'tooltipClose',
70-
'timePickerOpen',
71-
'timePickerClose',
72-
'amPmChange',
73-
'rangeStart',
74-
'rangeEnd',
75-
'dateUpdate',
76-
'invalidDate',
77-
'overlayToggle',
78-
'textInput',
79-
])
55+
const emit = defineEmits<{
56+
(e: 'update:model-value', value: ModelValue): void
57+
(e: 'update:model-timezone-value', value: ModelValue): void
58+
(e: 'internal-model-change', value: ModelValue, externalValue: ModelValue): void
59+
(e: 'auto-apply', value?: boolean): void
60+
(e: 'update-flow-step'): void
61+
(e: 'toggle-year-picker', value: { flow: boolean }): void
62+
(e: 'update-month-year', value: { month: number | null, year: number, fromNav: boolean }): void
63+
(e: 'textSubmit', value: string): void
64+
(e: 'closed'): void
65+
(e: 'cleared'): void
66+
(e: 'open'): void
67+
(e: 'focus'): void
68+
(e: 'blur'): void
69+
(e: 'recalculatePosition'): void
70+
(e: 'flowStep', value: number): void
71+
(e: 'updateMonthYear', value: { month: number | null, year: number, fromNav: boolean }): void
72+
(e: 'invalidSelect', value: ModelValue): void
73+
(e: 'invalidFixedRange', value: ModelValue): void
74+
(e: 'tooltipOpen', value: ModelValue): void
75+
(e: 'tooltipClose', value: ModelValue): void
76+
(e: 'timePickerOpen', value: ModelValue): void
77+
(e: 'timePickerClose', value: ModelValue): void
78+
(e: 'amPmChange', value: { amPm: string }): void
79+
(e: 'rangeStart', value: ModelValue): void
80+
(e: 'rangeEnd', value: ModelValue): void
81+
(e: 'dateUpdate', value: ModelValue): void
82+
(e: 'invalidDate', value: ModelValue): void
83+
(e: 'overlayToggle', value: boolean): void
84+
(e: 'textInput', value: string): void
85+
}>()
86+
87+
function handleEmit(eventName: string, value?: any) {
88+
emit(eventName as any, value)
89+
}
8090
8191
const slots = useSlots()
8292
const isOpen = ref(false)

packages/vue/src/components/datetime-picker/components/DatePicker/date-picker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,7 @@ export function useDatePicker(props: PickerBasePropsType, emit: VueEmit, trigger
658658
isHours = true,
659659
isSeconds = false,
660660
): void => {
661-
updateTimeValues(value, isHours, isSeconds, handleTimeUpdate)
661+
updateTimeValues(value, isHours ? 'hours' : isSeconds ? 'seconds' : 'minutes', handleTimeUpdate)
662662
}
663663

664664
function mapInternalModuleValues(fromMount = false): void {

packages/vue/src/components/datetime-picker/components/DatepickerInput.vue

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,22 @@ const props = defineProps({
2525
...AllProps,
2626
})
2727
28-
const emit = defineEmits([
29-
'clear',
30-
'open',
31-
'update:input-value',
32-
'setInputDate',
33-
'close',
34-
'selectDate',
35-
'setEmptyDate',
36-
'toggle',
37-
'focusPrev',
38-
'focus',
39-
'blur',
40-
'realBlur',
41-
'textInput',
42-
])
28+
const emit = defineEmits<{
29+
(e: 'update:model-value', value: any): void
30+
(e: 'clear'): void
31+
(e: 'open'): void
32+
(e: 'update:input-value', value: string): void
33+
(e: 'setInputDate', value: any): void
34+
(e: 'close'): void
35+
(e: 'selectDate'): void
36+
(e: 'setEmptyDate'): void
37+
(e: 'toggle'): void
38+
(e: 'focusPrev'): void
39+
(e: 'focus'): void
40+
(e: 'blur'): void
41+
(e: 'realBlur'): void
42+
(e: 'textInput', value: string): void
43+
}>()
4344
4445
const {
4546
defaultedTextInput,

packages/vue/src/components/datetime-picker/components/MonthPicker/month-picker.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -178,22 +178,22 @@ export function useMonthPicker(props: PickerBasePropsType, emit: VueEmit) {
178178
emit('auto-apply', true)
179179
}
180180

181-
const selectMonth = (month: number, instance: number) => {
181+
const selectMonth = (month: number, instance: number): void => {
182182
calendars.value[instance].month = month
183-
emitMonthYearUpdate(instance, calendars.value[instance].year, month)
183+
emitMonthYearUpdate(instance, calendars.value[instance].year, undefined)
184184
if (defaultedMultiDates.value.enabled)
185185
return selectMultiMonths(month, instance)
186186
if (defaultedRange.value.enabled)
187187
return selectRangedMonth(month, instance)
188188
return selectSingleMonth(month, instance)
189189
}
190190

191-
const selectYear = (year: number, instance: number) => {
191+
const selectYear = (year: number, instance: number): void => {
192192
onYearSelect(year, instance)
193-
emitMonthYearUpdate(instance, year, null)
193+
emitMonthYearUpdate(instance, year, undefined)
194194
}
195195

196-
function emitMonthYearUpdate(month: number, year: number, fromNav = false): void {
196+
function emitMonthYearUpdate(month: number | null, year: number, fromNav: boolean | undefined = false): void {
197197
emit('update-month-year', { month, year, fromNav })
198198
}
199199

@@ -202,11 +202,11 @@ export function useMonthPicker(props: PickerBasePropsType, emit: VueEmit) {
202202
emitMonthYearUpdate(instance, year)
203203
}
204204

205-
const setHoverDate = (month: number, instance: number) => {
205+
const setHoverDate = (month: number, instance: number): void => {
206206
hoverDate.value = monthToDate(month, instance)
207207
}
208208

209-
const presetDate = (value: Date[] | string[] | Date | string, noTz?: boolean) => {
209+
const presetDate = (value: Date[] | string[] | Date | string, noTz?: boolean): void => {
210210
setPresetDate({
211211
value,
212212
modelValue,

packages/vue/src/components/datetime-picker/components/TimePicker/TimePicker.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ const closeTimePickerBtn = ref(null)
5454
const timeInputRefs = ref<TimeInputRef[]>([])
5555
const overlayRef = ref<HTMLElement | null>(null)
5656
const timePickerOverlayOpen = ref(false)
57-
const navigationFlow = ref('time') as Flow
57+
const flow = ref<Flow>('time')
5858
5959
onMounted(() => {
6060
emit('mount')
@@ -176,7 +176,7 @@ defineExpose({ toggleTimePicker })
176176
<div class="dp--tp-wrap" :data-dp-mobile="isMobile">
177177
<button
178178
v-if="!timePicker && !timePickerInline"
179-
v-show="!hideNavigationButtons(hideNavigation, navigationFlow)"
179+
v-show="!hideNavigationButtons(hideNavigation, flow)"
180180
ref="openTimePickerBtn"
181181
type="button"
182182
:class="{ ...toggleButtonClass, 'dp--hidden-el': showTimePicker }"
@@ -253,7 +253,7 @@ defineExpose({ toggleTimePicker })
253253
</template>
254254
<button
255255
v-if="!timePicker && !timePickerInline"
256-
v-show="!hideNavigationButtons(hideNavigation, navigationFlow)"
256+
v-show="!hideNavigationButtons(hideNavigation, flow)"
257257
ref="closeTimePickerBtn"
258258
type="button"
259259
:class="{ ...toggleButtonClass, 'dp--hidden-el': timePickerOverlayOpen }"

0 commit comments

Comments
 (0)