vuetify 3.4.1 → 3.4.3
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/json/attributes.json +1928 -1928
- package/dist/json/importMap.json +136 -136
- package/dist/json/web-types.json +3673 -3658
- package/dist/vuetify-labs.css +2924 -2918
- package/dist/vuetify-labs.d.ts +298 -151
- package/dist/vuetify-labs.esm.js +710 -696
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +709 -695
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1824 -1818
- package/dist/vuetify.d.ts +343 -196
- package/dist/vuetify.esm.js +710 -696
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +709 -695
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +222 -221
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +48 -48
- package/lib/blueprints/md1.d.mts +48 -48
- package/lib/blueprints/md2.d.mts +48 -48
- package/lib/blueprints/md3.d.mts +48 -48
- package/lib/components/VBtn/VBtn.css +3 -0
- package/lib/components/VBtn/VBtn.sass +4 -0
- package/lib/components/VBtn/_variables.scss +1 -0
- package/lib/components/VCarousel/VCarousel.css +2 -1
- package/lib/components/VCarousel/VCarousel.mjs +1 -1
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/VCarousel.sass +3 -1
- package/lib/components/VCarousel/_variables.scss +6 -0
- package/lib/components/VCheckbox/index.d.mts +32 -20
- package/lib/components/VDataTable/VDataTable.css +0 -3
- package/lib/components/VDataTable/VDataTable.mjs +2 -1
- package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTable.sass +0 -2
- package/lib/components/VDataTable/VDataTableFooter.css +1 -1
- package/lib/components/VDataTable/VDataTableFooter.mjs +18 -31
- package/lib/components/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/components/VDataTable/_variables.scss +1 -1
- package/lib/components/VDataTable/index.d.mts +3 -3
- package/lib/components/VDatePicker/VDatePicker.mjs +3 -3
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +18 -15
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.mjs +1 -0
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +2 -2
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VRadio/index.d.mts +16 -10
- package/lib/components/VRadioGroup/index.d.mts +16 -10
- package/lib/components/VSelect/VSelect.mjs +3 -1
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.mts +16 -10
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/index.d.mts +16 -10
- package/lib/components/VSlideGroup/VSlideGroup.mjs +2 -2
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.mts +16 -10
- package/lib/components/VTable/VTable.css +6 -1
- package/lib/components/VTable/VTable.sass +6 -1
- package/lib/components/VTable/_variables.scss +2 -0
- package/lib/components/VTabs/VTab.mjs +4 -3
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/index.d.mts +72 -0
- package/lib/components/index.d.mts +187 -73
- package/lib/composables/date/date.mjs +21 -13
- package/lib/composables/date/date.mjs.map +1 -1
- package/lib/composables/router.mjs +7 -2
- package/lib/composables/router.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +4 -3
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.mts +156 -123
- package/lib/locale/fr.mjs +1 -1
- package/lib/locale/fr.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","VTextField","makeVPickerProps","VPicker","useDate","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","inputMode","inputText","inputPlaceholder","header","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","model","undefined","v","multiple","viewMode","internal","value","isValid","month","Number","getMonth","startOfMonth","year","getYear","startOfYear","setMonth","isReversing","length","format","text","setYear","headerTransition","minDate","min","maxDate","max","disabled","targets","push","_date","addDays","isAfter","endOfMonth","onClickAppend","onClickNext","onClickPrev","onClickMonth","onClickYear","val","oldVal","before","after","isBefore","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_Fragment","$event","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VTextField } from '@/components/VTextField'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots = Omit<VPickerSlots, 'header'> & {\n header: {\n header: string\n transition: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n inputMode: {\n type: String as PropType<'calendar' | 'keyboard'>,\n default: 'calendar',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <T, Multiple extends boolean = false> (\n props: {\n modelValue?: Multiple extends true ? T[] : T\n 'onUpdate:modelValue'?: (value: Multiple extends true ? T[] : T) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0])\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))))\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))))\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n return props.multiple && model.value.length > 1\n ? t('$vuetify.datePicker.itemsSelected', model.value.length)\n : model.value[0] && adapter.isValid(model.value[0])\n ? adapter.format(model.value[0], 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n return adapter.format(\n adapter.setYear(adapter.setMonth(adapter.date(), month.value), year.value),\n 'monthAndYear',\n )\n })\n // TODO: implement in v3.5\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.setYear(_date, year.value)\n _date = adapter.setMonth(_date, month.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n\n emit('update:month', month.value)\n } else {\n year.value++\n month.value = 0\n\n emit('update:year', year.value)\n }\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n\n emit('update:month', month.value)\n } else {\n year.value--\n month.value = 11\n\n emit('update:year', month.value)\n }\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n watch(month, () => {\n if (viewMode.value === 'months') onClickMonth()\n })\n\n watch(year, () => {\n if (viewMode.value === 'year') onClickYear()\n })\n\n watch(model, (val, oldVal) => {\n const before = adapter.date(wrapInArray(val)[0])\n const after = adapter.date(wrapInArray(oldVal)[0])\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n header: header.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n v-slots={ slots }\n />\n ),\n default: () => props.inputMode === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,4BAA4B,EAAEC,mBAAmB;AAAA,SACjDC,iBAAiB;AAAA,SACjBC,yBAAyB,EAAEC,gBAAgB;AAAA,SAC3CC,0BAA0B,EAAEC,iBAAiB;AAAA,SAC7CC,yBAAyB,EAAEC,gBAAgB;AAAA,SAC3CC,eAAe;AAAA,SACfC,iBAAiB;AAAA,SACjBC,UAAU;AAAA,SACVC,gBAAgB,EAAEC,OAAO,0CAElC;AAAA,SACSC,OAAO;AAAA,SACPC,SAAS;AAAA,SACTC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC7CC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,gCAErE;AAcA,OAAO,MAAMC,oBAAoB,GAAGH,YAAY,CAAC;EAC/CI,YAAY,EAAE;IACZC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAE;IACTJ,IAAI,EAAEC,MAA2C;IACjDC,OAAO,EAAE;EACX,CAAC;EACDG,SAAS,EAAE;IACTL,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDI,gBAAgB,EAAE;IAChBN,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDK,MAAM,EAAE;IACNP,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EAED,GAAG9B,4BAA4B,EAAE;EACjC,GAAGG,yBAAyB,EAAE;EAC9B,GAAGmB,IAAI,CAACjB,0BAA0B,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;EACrD,GAAGiB,IAAI,CAACf,yBAAyB,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;EACpD,GAAGK,gBAAgB,CAAC;IAAEwB,KAAK,EAAE;EAA4B,CAAC,CAAC;EAE3DC,UAAU,EAAE;AACd,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAMC,WAAW,GAAGjB,gBAAgB,EAOK,CAAC;EAC/CkB,IAAI,EAAE,aAAa;EAEnBC,KAAK,EAAEd,oBAAoB,EAAE;EAE7Be,KAAK,EAAE;IACL,mBAAmB,EAAGC,IAAS,IAAK,IAAI;IACxC,cAAc,EAAGA,IAAS,IAAK,IAAI;IACnC,aAAa,EAAGA,IAAS,IAAK,IAAI;IAClC,kBAAkB,EAAGA,IAAS,IAAK,IAAI;IACvC,iBAAiB,EAAGA,IAAS,IAAK;EACpC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,OAAO,GAAGjC,OAAO,EAAE;IACzB,MAAM;MAAEkC;IAAE,CAAC,GAAGjC,SAAS,EAAE;IAEzB,MAAMkC,KAAK,GAAGjC,eAAe,CAC3BwB,KAAK,EACL,YAAY,EACZU,SAAS,EACTC,CAAC,IAAI1B,WAAW,CAAC0B,CAAC,CAAC,EACnBA,CAAC,IAAIX,KAAK,CAACY,QAAQ,GAAGD,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,CAC/B;IAED,MAAME,QAAQ,GAAGrC,eAAe,CAACwB,KAAK,EAAE,UAAU,CAAC;IACnD,MAAMR,SAAS,GAAGhB,eAAe,CAACwB,KAAK,EAAE,WAAW,CAAC;IACrD,MAAMc,QAAQ,GAAGrC,QAAQ,CAAC,MAAM;MAC9B,MAAMsC,KAAK,GAAGR,OAAO,CAACL,IAAI,CAACO,KAAK,CAACM,KAAK,GAAG,CAAC,CAAC,CAAC;MAE5C,OAAOA,KAAK,IAAIR,OAAO,CAACS,OAAO,CAACD,KAAK,CAAC,GAAGA,KAAK,GAAGR,OAAO,CAACL,IAAI,EAAE;IACjE,CAAC,CAAC;IAEF,MAAMe,KAAK,GAAGvC,GAAG,CAACwC,MAAM,CAAClB,KAAK,CAACiB,KAAK,IAAIV,OAAO,CAACY,QAAQ,CAACZ,OAAO,CAACa,YAAY,CAACN,QAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChG,MAAMM,IAAI,GAAG3C,GAAG,CAACwC,MAAM,CAAClB,KAAK,CAACqB,IAAI,IAAId,OAAO,CAACe,OAAO,CAACf,OAAO,CAACgB,WAAW,CAAChB,OAAO,CAACiB,QAAQ,CAACV,QAAQ,CAACC,KAAK,EAAEE,KAAK,CAACF,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3H,MAAMU,WAAW,GAAG9C,UAAU,CAAC,KAAK,CAAC;IACrC,MAAMgB,MAAM,GAAGlB,QAAQ,CAAC,MAAM;MAC5B,OAAOuB,KAAK,CAACY,QAAQ,IAAIH,KAAK,CAACM,KAAK,CAACW,MAAM,GAAG,CAAC,GAC3ClB,CAAC,CAAC,mCAAmC,EAAEC,KAAK,CAACM,KAAK,CAACW,MAAM,CAAC,GAC1DjB,KAAK,CAACM,KAAK,CAAC,CAAC,CAAC,IAAIR,OAAO,CAACS,OAAO,CAACP,KAAK,CAACM,KAAK,CAAC,CAAC,CAAC,CAAC,GAC/CR,OAAO,CAACoB,MAAM,CAAClB,KAAK,CAACM,KAAK,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,GACvDP,CAAC,CAACR,KAAK,CAACL,MAAM,CAAC;IACvB,CAAC,CAAC;IACF,MAAMiC,IAAI,GAAGnD,QAAQ,CAAC,MAAM;MAC1B,OAAO8B,OAAO,CAACoB,MAAM,CACnBpB,OAAO,CAACsB,OAAO,CAACtB,OAAO,CAACiB,QAAQ,CAACjB,OAAO,CAACL,IAAI,EAAE,EAAEe,KAAK,CAACF,KAAK,CAAC,EAAEM,IAAI,CAACN,KAAK,CAAC,EAC1E,cAAc,CACf;IACH,CAAC,CAAC;IACF;IACA;IACA,MAAMe,gBAAgB,GAAGrD,QAAQ,CAAC,MAAO,qBAAoBgD,WAAW,CAACV,KAAK,GAAG,UAAU,GAAG,EAAG,aAAY,CAAC;IAC9G,MAAMgB,OAAO,GAAGtD,QAAQ,CAAC,MAAM;MAC7B,MAAMyB,IAAI,GAAGK,OAAO,CAACL,IAAI,CAACF,KAAK,CAACgC,GAAG,CAAC;MAEpC,OAAOhC,KAAK,CAACgC,GAAG,IAAIzB,OAAO,CAACS,OAAO,CAACd,IAAI,CAAC,GAAGA,IAAI,GAAG,IAAI;IACzD,CAAC,CAAC;IACF,MAAM+B,OAAO,GAAGxD,QAAQ,CAAC,MAAM;MAC7B,MAAMyB,IAAI,GAAGK,OAAO,CAACL,IAAI,CAACF,KAAK,CAACkC,GAAG,CAAC;MAEpC,OAAOlC,KAAK,CAACkC,GAAG,IAAI3B,OAAO,CAACS,OAAO,CAACd,IAAI,CAAC,GAAGA,IAAI,GAAG,IAAI;IACzD,CAAC,CAAC;IACF,MAAMiC,QAAQ,GAAG1D,QAAQ,CAAC,MAAM;MAC9B,IAAIuB,KAAK,CAACmC,QAAQ,EAAE,OAAO,IAAI;MAE/B,MAAMC,OAAO,GAAG,EAAE;MAElB,IAAIvB,QAAQ,CAACE,KAAK,KAAK,OAAO,EAAE;QAC9BqB,OAAO,CAACC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;MACnC,CAAC,MAAM;QACL,IAAIC,KAAK,GAAG/B,OAAO,CAACL,IAAI,EAAE;QAE1BoC,KAAK,GAAG/B,OAAO,CAACsB,OAAO,CAACS,KAAK,EAAEjB,IAAI,CAACN,KAAK,CAAC;QAC1CuB,KAAK,GAAG/B,OAAO,CAACiB,QAAQ,CAACc,KAAK,EAAErB,KAAK,CAACF,KAAK,CAAC;QAE5C,IAAIgB,OAAO,CAAChB,KAAK,EAAE;UACjB,MAAMb,IAAI,GAAGK,OAAO,CAACgC,OAAO,CAAChC,OAAO,CAACa,YAAY,CAACkB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;UAE7D/B,OAAO,CAACiC,OAAO,CAACT,OAAO,CAAChB,KAAK,EAAEb,IAAI,CAAC,IAAIkC,OAAO,CAACC,IAAI,CAAC,MAAM,CAAC;QAC9D;QAEA,IAAIJ,OAAO,CAAClB,KAAK,EAAE;UACjB,MAAMb,IAAI,GAAGK,OAAO,CAACgC,OAAO,CAAChC,OAAO,CAACkC,UAAU,CAACH,KAAK,CAAC,EAAE,CAAC,CAAC;UAE1D/B,OAAO,CAACiC,OAAO,CAACtC,IAAI,EAAE+B,OAAO,CAAClB,KAAK,CAAC,IAAIqB,OAAO,CAACC,IAAI,CAAC,MAAM,CAAC;QAC9D;MACF;MAEA,OAAOD,OAAO;IAChB,CAAC,CAAC;IAEF,SAASM,aAAaA,CAAA,EAAI;MACxBlD,SAAS,CAACuB,KAAK,GAAGvB,SAAS,CAACuB,KAAK,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU;IAC5E;IAEA,SAAS4B,WAAWA,CAAA,EAAI;MACtB,IAAI1B,KAAK,CAACF,KAAK,GAAG,EAAE,EAAE;QACpBE,KAAK,CAACF,KAAK,EAAE;QAEbV,IAAI,CAAC,cAAc,EAAEY,KAAK,CAACF,KAAK,CAAC;MACnC,CAAC,MAAM;QACLM,IAAI,CAACN,KAAK,EAAE;QACZE,KAAK,CAACF,KAAK,GAAG,CAAC;QAEfV,IAAI,CAAC,aAAa,EAAEgB,IAAI,CAACN,KAAK,CAAC;MACjC;IACF;IAEA,SAAS6B,WAAWA,CAAA,EAAI;MACtB,IAAI3B,KAAK,CAACF,KAAK,GAAG,CAAC,EAAE;QACnBE,KAAK,CAACF,KAAK,EAAE;QAEbV,IAAI,CAAC,cAAc,EAAEY,KAAK,CAACF,KAAK,CAAC;MACnC,CAAC,MAAM;QACLM,IAAI,CAACN,KAAK,EAAE;QACZE,KAAK,CAACF,KAAK,GAAG,EAAE;QAEhBV,IAAI,CAAC,aAAa,EAAEY,KAAK,CAACF,KAAK,CAAC;MAClC;IACF;IAEA,SAAS8B,YAAYA,CAAA,EAAI;MACvBhC,QAAQ,CAACE,KAAK,GAAGF,QAAQ,CAACE,KAAK,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ;IACnE;IAEA,SAAS+B,WAAWA,CAAA,EAAI;MACtBjC,QAAQ,CAACE,KAAK,GAAGF,QAAQ,CAACE,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM;IAC/D;IAEAnC,KAAK,CAACqC,KAAK,EAAE,MAAM;MACjB,IAAIJ,QAAQ,CAACE,KAAK,KAAK,QAAQ,EAAE8B,YAAY,EAAE;IACjD,CAAC,CAAC;IAEFjE,KAAK,CAACyC,IAAI,EAAE,MAAM;MAChB,IAAIR,QAAQ,CAACE,KAAK,KAAK,MAAM,EAAE+B,WAAW,EAAE;IAC9C,CAAC,CAAC;IAEFlE,KAAK,CAAC6B,KAAK,EAAE,CAACsC,GAAG,EAAEC,MAAM,KAAK;MAC5B,MAAMC,MAAM,GAAG1C,OAAO,CAACL,IAAI,CAACjB,WAAW,CAAC8D,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD,MAAMG,KAAK,GAAG3C,OAAO,CAACL,IAAI,CAACjB,WAAW,CAAC+D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MAElDvB,WAAW,CAACV,KAAK,GAAGR,OAAO,CAAC4C,QAAQ,CAACF,MAAM,EAAEC,KAAK,CAAC;IACrD,CAAC,CAAC;IAEFlE,SAAS,CAAC,MAAM;MACd,MAAMoE,WAAW,GAAG/E,OAAO,CAACgF,WAAW,CAACrD,KAAK,CAAC;MAC9C,MAAMsD,uBAAuB,GAAG7F,mBAAmB,CAAC4F,WAAW,CAACrD,KAAK,CAAC;MACtE,MAAMuD,qBAAqB,GAAG7F,iBAAiB,CAAC2F,WAAW,CAACrD,KAAK,CAAC;MAClE,MAAMwD,oBAAoB,GAAG5F,gBAAgB,CAACyF,WAAW,CAACrD,KAAK,CAAC;MAChE,MAAMyD,qBAAqB,GAAG3E,IAAI,CAAChB,iBAAiB,CAACuF,WAAW,CAACrD,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;MACxF,MAAM0D,oBAAoB,GAAG5E,IAAI,CAACd,gBAAgB,CAACqF,WAAW,CAACrD,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;MAEtF,MAAM2D,WAAW,GAAG;QAClBhE,MAAM,EAAEA,MAAM,CAACoB,KAAK;QACpB6C,UAAU,EAAE9B,gBAAgB,CAACf,KAAK;QAClC,gBAAgB,EAAE2B;MACpB,CAAC;MAED,OAAAmB,YAAA,CAAAxF,OAAA,EAAAyF,WAAA,CAESV,WAAW;QAAA,SACT,CACL,eAAe,EACd,kBAAiBvC,QAAQ,CAACE,KAAM,EAAC,EAClC;UACE,0BAA0B,EAAEf,KAAK,CAAC+D;QACpC,CAAC,EACD/D,KAAK,CAACgE,KAAK,CACZ;QAAA,SACOhE,KAAK,CAACiE;MAAK,IACV;QACPrE,KAAK,EAAEA,CAAA,KAAMU,KAAK,CAACV,KAAK,IAAI,IAAAiE,YAAA;UAAA,SACf;QAAsB,IAC7BrD,CAAC,CAACR,KAAK,CAACJ,KAAK,CAAC,EAEnB;QACDD,MAAM,EAAEA,CAAA,KAAMW,KAAK,CAACX,MAAM,GAAAkE,YAAA,CAAA3F,iBAAA;UAAA,YAEZ;YACRR,iBAAiB,EAAE;cAAE,GAAGiG;YAAY;UACtC;QAAC;UAAArE,OAAA,EAAAA,CAAA,MAECgB,KAAK,CAACX,MAAM,GAAGgE,WAAW,CAAC;QAAA,KAAAE,YAAA,CAAAnG,iBAAA,EAAAoG,WAAA;UAAA,OAIzB;QAAQ,GACPP,qBAAqB,EACrBI,WAAW,GACNrD,KAAK,CAElB;QACDhB,OAAO,EAAEA,CAAA,KAAMU,KAAK,CAACR,SAAS,KAAK,UAAU,GAAAqE,YAAA,CAAAK,SAAA,SAAAL,YAAA,CAAApG,mBAAA,EAAAqG,WAAA,CAGlCR,uBAAuB;UAAA,YACjBnB,QAAQ,CAACpB,KAAK;UAAA,QAClBa,IAAI,CAACb,KAAK;UAAA,gBACF4B,WAAW;UAAA,gBACXC,WAAW;UAAA,iBACVC,YAAY;UAAA,gBACbC;QAAW,WAAAe,YAAA,CAAA5F,eAAA;UAAA;QAAA;UAAAqB,OAAA,EAAAA,CAAA,MAIxBuB,QAAQ,CAACE,KAAK,KAAK,QAAQ,GAAA8C,YAAA,CAAA/F,iBAAA,EAAAgG,WAAA;YAAA,OAErB;UAAoB,GACnBL,qBAAqB;YAAA,cAChBxC,KAAK,CAACF,KAAK;YAAA,uBAAAoD,MAAA,IAAXlD,KAAK,CAACF,KAAK,GAAAoD,MAAA;YAAA,OACfpC,OAAO,CAAChB,KAAK;YAAA,OACbkB,OAAO,CAAClB;UAAK,YAEnBF,QAAQ,CAACE,KAAK,KAAK,MAAM,GAAA8C,YAAA,CAAA7F,gBAAA,EAAA8F,WAAA;YAAA,OAErB;UAAmB,GAClBJ,oBAAoB;YAAA,cACfrC,IAAI,CAACN,KAAK;YAAA,uBAAAoD,MAAA,IAAV9C,IAAI,CAACN,KAAK,GAAAoD,MAAA;YAAA,OACdpC,OAAO,CAAChB,KAAK;YAAA,OACbkB,OAAO,CAAClB;UAAK,YAAA8C,YAAA,CAAAjG,gBAAA,EAAAkG,WAAA;YAAA,OAIf;UAAmB,GAClBN,oBAAoB;YAAA,cACf/C,KAAK,CAACM,KAAK;YAAA,uBAAAoD,MAAA,IAAX1D,KAAK,CAACM,KAAK,GAAAoD,MAAA;YAAA,SACLlD,KAAK,CAACF,KAAK;YAAA,kBAAAoD,MAAA,IAAXlD,KAAK,CAACF,KAAK,GAAAoD,MAAA;YAAA,QACZ9C,IAAI,CAACN,KAAK;YAAA,iBAAAoD,MAAA,IAAV9C,IAAI,CAACN,KAAK,GAAAoD,MAAA;YAAA,OACnBpC,OAAO,CAAChB,KAAK;YAAA,OACbkB,OAAO,CAAClB;UAAK,SAEtB;QAAA,OAAA8C,YAAA;UAAA,SAIM;QAAsB,IAAAA,YAAA,CAAA1F,UAAA;UAAA,SAErBqC,CAAC,CAACR,KAAK,CAACP,SAAS,CAAC;UAAA,eACZO,KAAK,CAACN;QAAgB,UAGzC;QACD0E,OAAO,EAAE9D,KAAK,CAAC8D;MACjB,CAAC;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","VTextField","makeVPickerProps","VPicker","useDate","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","inputMode","inputText","inputPlaceholder","header","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","model","undefined","v","multiple","viewMode","internal","value","isValid","month","Number","getMonth","startOfMonth","year","getYear","startOfYear","setMonth","isReversing","length","format","text","setYear","headerTransition","minDate","min","maxDate","max","disabled","targets","push","_date","addDays","isAfter","endOfMonth","onClickAppend","onClickNext","onClickPrev","onClickMonth","onClickYear","val","oldVal","before","after","isBefore","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_Fragment","$event","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VTextField } from '@/components/VTextField'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots = Omit<VPickerSlots, 'header'> & {\n header: {\n header: string\n transition: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n inputMode: {\n type: String as PropType<'calendar' | 'keyboard'>,\n default: 'calendar',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <T, Multiple extends boolean = false> (\n props: {\n modelValue?: Multiple extends true ? T[] : T\n 'onUpdate:modelValue'?: (value: Multiple extends true ? T[] : T) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0])\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))))\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))))\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n return props.multiple && model.value.length > 1\n ? t('$vuetify.datePicker.itemsSelected', model.value.length)\n : model.value[0] && adapter.isValid(model.value[0])\n ? adapter.format(model.value[0], 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n return adapter.format(\n adapter.setYear(adapter.setMonth(adapter.date(), month.value), year.value),\n 'monthAndYear',\n )\n })\n // TODO: implement in v3.5\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.setYear(_date, year.value)\n _date = adapter.setMonth(_date, month.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n\n emit('update:year', year.value)\n }\n\n emit('update:month', month.value)\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n\n emit('update:year', year.value)\n }\n\n emit('update:month', month.value)\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n watch(month, () => {\n if (viewMode.value === 'months') onClickMonth()\n })\n\n watch(year, () => {\n if (viewMode.value === 'year') onClickYear()\n })\n\n watch(model, (val, oldVal) => {\n const before = adapter.date(wrapInArray(val)[0])\n const after = adapter.date(wrapInArray(oldVal)[0])\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n header: header.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n v-slots={ slots }\n />\n ),\n default: () => props.inputMode === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { VBtn } from "../VBtn/index.mjs";
|
|
|
7
7
|
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs"; // Composables
|
|
8
8
|
import { getWeek, useDate } from "../../composables/date/date.mjs";
|
|
9
9
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
|
10
|
-
import { computed, ref } from 'vue';
|
|
10
|
+
import { computed, ref, watch } from 'vue';
|
|
11
11
|
import { genericComponent, propsFactory, wrapInArray } from "../../util/index.mjs"; // Types
|
|
12
12
|
export const makeVDatePickerMonthProps = propsFactory({
|
|
13
13
|
allowedDates: [Array, Function],
|
|
@@ -41,21 +41,20 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
41
41
|
// model comes in always as array
|
|
42
42
|
// leaves as array if multiple
|
|
43
43
|
const model = useProxiedModel(props, 'modelValue', [], v => wrapInArray(v));
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
const displayValue = computed(() => {
|
|
45
|
+
if (model.value.length > 0) return adapter.date(model.value[0]);
|
|
46
|
+
if (props.min) return adapter.date(props.min);
|
|
47
|
+
if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0]);
|
|
48
|
+
return adapter.date();
|
|
48
49
|
});
|
|
49
50
|
const year = useProxiedModel(props, 'year', undefined, v => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return adapter.startOfYear(date);
|
|
51
|
+
const value = v != null ? Number(v) : adapter.getYear(displayValue.value);
|
|
52
|
+
return adapter.startOfYear(adapter.setYear(adapter.date(), value));
|
|
53
53
|
}, v => adapter.getYear(v));
|
|
54
54
|
const month = useProxiedModel(props, 'month', undefined, v => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
return date;
|
|
55
|
+
const value = v != null ? Number(v) : adapter.getMonth(displayValue.value);
|
|
56
|
+
const date = adapter.setYear(adapter.date(), adapter.getYear(year.value));
|
|
57
|
+
return adapter.setMonth(date, value);
|
|
59
58
|
}, v => adapter.getMonth(v));
|
|
60
59
|
const weeksInMonth = computed(() => {
|
|
61
60
|
const weeks = adapter.getWeekArray(month.value);
|
|
@@ -109,9 +108,9 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
109
108
|
function isDisabled(value) {
|
|
110
109
|
if (props.disabled) return true;
|
|
111
110
|
const date = adapter.date(value);
|
|
112
|
-
if (props.min && adapter.isAfter(props.min, date)) return true;
|
|
113
|
-
if (props.max && adapter.isAfter(date, props.max)) return true;
|
|
114
|
-
if (Array.isArray(props.allowedDates)) {
|
|
111
|
+
if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true;
|
|
112
|
+
if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true;
|
|
113
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {
|
|
115
114
|
return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
|
|
116
115
|
}
|
|
117
116
|
if (typeof props.allowedDates === 'function') {
|
|
@@ -133,6 +132,10 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
133
132
|
model.value = [value];
|
|
134
133
|
}
|
|
135
134
|
}
|
|
135
|
+
watch(displayValue, val => {
|
|
136
|
+
month.value = val;
|
|
137
|
+
year.value = val;
|
|
138
|
+
});
|
|
136
139
|
return () => _createVNode("div", {
|
|
137
140
|
"class": "v-date-picker-month"
|
|
138
141
|
}, [props.showWeek && _createVNode("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","getWeek","useDate","useProxiedModel","computed","ref","genericComponent","propsFactory","wrapInArray","makeVDatePickerMonthProps","allowedDates","Array","Function","disabled","Boolean","color","String","month","Number","hideWeekdays","max","min","modelValue","multiple","showAdjacentMonths","showWeek","year","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","adapter","model","v","_model","value","isValid","undefined","setYear","startOfYear","getYear","setMonth","getMonth","weeksInMonth","weeks","getWeekArray","days","flat","daysInMonth","length","lastDay","week","day","push","addDays","today","map","index","isoDate","toISO","isAdjacent","isSameMonth","formatted","format","isDisabled","isWeekStart","isWeekEnd","isSelected","some","isSameDay","isToday","isHidden","isHovered","localized","isAfter","isArray","d","onClick","findIndex","selection","splice","_createVNode","_createTextVNode","getWeekdays","weekDay","item","i","slotProps","icon","ripple","text","variant","default"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { genericComponent, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n allowedDates: [Array, Function],\n disabled: Boolean,\n color: String,\n month: [Number, String],\n hideWeekdays: Boolean,\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n multiple: Boolean,\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n year: [Number, String],\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const adapter = useDate()\n // model comes in always as array\n // leaves as array if multiple\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n // shorthand to access the first value in the model or a fresh date\n const _model = computed(() => {\n const value = model.value?.[0]\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n let date = adapter.date(_model.value)\n\n if (v != null) date = adapter.setYear(date, Number(v))\n\n return adapter.startOfYear(date)\n },\n v => adapter.getYear(v)\n )\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n let date = adapter.date(_model.value)\n\n if (v != null) date = adapter.setMonth(date, Number(v))\n\n date = adapter.setYear(date, adapter.getYear(year.value))\n\n return date\n },\n v => adapter.getMonth(v)\n )\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // But only do it if we're not hiding adjacent months?\n const daysInMonth = 6 * 7\n if (days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date()\n\n return days.map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isHovered: false,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n })\n\n const weeks = computed(() => {\n return weeksInMonth.value.map(week => {\n return getWeek(adapter, week[0])\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(props.min, date)) return true\n if (props.max && adapter.isAfter(date, props.max)) return true\n\n if (Array.isArray(props.allowedDates)) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n function onClick (value: unknown) {\n if (props.multiple) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weeks.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--hovered': item.isHovered,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","getWeek","useDate","useProxiedModel","computed","ref","watch","genericComponent","propsFactory","wrapInArray","makeVDatePickerMonthProps","allowedDates","Array","Function","disabled","Boolean","color","String","month","Number","hideWeekdays","max","min","modelValue","multiple","showAdjacentMonths","showWeek","year","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","adapter","model","v","displayValue","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","setMonth","weeksInMonth","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","day","push","addDays","today","map","index","isoDate","toISO","isAdjacent","isSameMonth","formatted","format","isDisabled","isWeekStart","isWeekEnd","isSelected","some","isSameDay","isToday","isHidden","isHovered","localized","isAfter","d","onClick","findIndex","selection","splice","val","_createVNode","_createTextVNode","getWeekdays","weekDay","item","i","slotProps","icon","ripple","text","variant","default"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, watch } from 'vue'\nimport { genericComponent, propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n allowedDates: [Array, Function],\n disabled: Boolean,\n color: String,\n month: [Number, String],\n hideWeekdays: Boolean,\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n multiple: Boolean,\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n year: [Number, String],\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const adapter = useDate()\n // model comes in always as array\n // leaves as array if multiple\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n const displayValue = computed(() => {\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.date(), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // But only do it if we're not hiding adjacent months?\n const daysInMonth = 6 * 7\n if (days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date()\n\n return days.map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isHovered: false,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n })\n\n const weeks = computed(() => {\n return weeksInMonth.value.map(week => {\n return getWeek(adapter, week[0])\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n function onClick (value: unknown) {\n if (props.multiple) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [value]\n }\n }\n\n watch(displayValue, val => {\n month.value = val\n year.value = val\n })\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weeks.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--hovered': item.isHovered,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
|
|
@@ -183,6 +183,7 @@ export const VOtpInput = genericComponent()({
|
|
|
183
183
|
"autofocus": i === 0 && props.autofocus,
|
|
184
184
|
"autocomplete": "one-time-code",
|
|
185
185
|
"class": ['v-otp-input__field'],
|
|
186
|
+
"disabled": props.disabled,
|
|
186
187
|
"inputmode": props.type === 'number' ? 'numeric' : 'text',
|
|
187
188
|
"min": props.type === 'number' ? 0 : undefined,
|
|
188
189
|
"maxlength": "1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VOtpInput.mjs","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","watch","filterInputAttrs","focusChild","genericComponent","only","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","onInput","test","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardData","getData","reset","onFocus","onBlur","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createVNode","_mergeProps","class","style","map","_","i","_Fragment","event","loading","loader","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (props.type === 'number' && /[^0-9]/g.test(current.value.value)) {\n current.value.value = ''\n return\n }\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n model.value = (e?.clipboardData?.getData('Text') ?? '').split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength=\"1\"\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VOtpInput.mjs","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useLocale","useProxiedModel","computed","nextTick","ref","watch","filterInputAttrs","focusChild","genericComponent","only","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","onInput","test","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardData","getData","reset","onFocus","onBlur","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createVNode","_mergeProps","class","style","map","_","i","_Fragment","event","loading","loader","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, only, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...only(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (props.type === 'number' && /[^0-9]/g.test(current.value.value)) {\n current.value.value = ''\n return\n }\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n model.value = (e?.clipboardData?.getData('Text') ?? '').split('')\n\n inputRef.value?.[index].blur()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n provideDefaults({\n VField: {\n color: computed(() => props.color),\n bgColor: computed(() => props.color),\n baseColor: computed(() => props.baseColor),\n disabled: computed(() => props.disabled),\n error: computed(() => props.error),\n variant: computed(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) emit('finish', val.join(''))\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength=\"1\"\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n content-class=\"v-otp-input__loader\"\n model-value={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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"}
|
|
@@ -152,7 +152,7 @@ export const VPagination = genericComponent()({
|
|
|
152
152
|
const length = computed(() => parseInt(props.length, 10));
|
|
153
153
|
const start = computed(() => parseInt(props.start, 10));
|
|
154
154
|
const totalVisible = computed(() => {
|
|
155
|
-
if (props.totalVisible) return parseInt(props.totalVisible, 10);else if (maxButtons.value >= 0) return maxButtons.value;
|
|
155
|
+
if (props.totalVisible != null) return parseInt(props.totalVisible, 10);else if (maxButtons.value >= 0) return maxButtons.value;
|
|
156
156
|
return getMax(width.value, 58);
|
|
157
157
|
});
|
|
158
158
|
function getMax(totalWidth, itemWidth) {
|
|
@@ -163,7 +163,7 @@ export const VPagination = genericComponent()({
|
|
|
163
163
|
}
|
|
164
164
|
const range = computed(() => {
|
|
165
165
|
if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return [];
|
|
166
|
-
if (totalVisible.value <= 1) return [page.value];
|
|
166
|
+
if (totalVisible.value <= 0) return [];else if (totalVisible.value === 1) return [page.value];
|
|
167
167
|
if (length.value <= totalVisible.value) {
|
|
168
168
|
return createRange(length.value, start.value);
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPagination.mjs","names":["VBtn","useDisplay","makeBorderProps","makeComponentProps","provideDefaults","makeDensityProps","makeElevationProps","IconValue","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","nextTick","shallowRef","toRef","createRange","genericComponent","keyValues","propsFactory","useRender","makeVPaginationProps","activeColor","String","start","type","Number","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","VPagination","name","emits","value","first","prev","next","last","setup","_ref","slots","emit","page","t","n","isRtl","themeClasses","width","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","getMax","parseInt","minButtons","Math","max","floor","toFixed","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","ref","isActive","key","icon","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","_createVNode","class","style","_mergeProps"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n isActive: boolean\n key: string | number\n page: string\n props: Record<string, any>\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n ariaLabel: string\n ariaDisabled: boolean\n}\n\nexport type VPaginationSlots = {\n item: ItemSlot\n first: ControlSlot\n prev: ControlSlot\n next: ControlSlot\n last: ControlSlot\n}\n\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VPagination')\n\nexport const VPagination = genericComponent<VPaginationSlots>()({\n name: 'VPagination',\n\n props: makeVPaginationProps(),\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { width } = useDisplay()\n const maxButtons = shallowRef(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, itemWidth)\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n }\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first!) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.first } />\n )}\n </li>\n )}\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.prev } />\n )}\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.key }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" { ...item.props }>{ item.page }</VBtn>\n )}\n </li>\n ))}\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.next } />\n )}\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last!) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.last } />\n )}\n </li>\n )}\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VPagination.mjs","names":["VBtn","useDisplay","makeBorderProps","makeComponentProps","provideDefaults","makeDensityProps","makeElevationProps","IconValue","useLocale","useRtl","useProxiedModel","useRefs","useResizeObserver","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","nextTick","shallowRef","toRef","createRange","genericComponent","keyValues","propsFactory","useRender","makeVPaginationProps","activeColor","String","start","type","Number","default","modelValue","props","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","VPagination","name","emits","value","first","prev","next","last","setup","_ref","slots","emit","page","t","n","isRtl","themeClasses","width","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","getMax","parseInt","minButtons","Math","max","floor","toFixed","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","rounded","elevation","items","map","item","index","ref","isActive","key","icon","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","_createVNode","class","style","_mergeProps"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { useDisplay } from '@/composables'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\n\n// Utilities\nimport { computed, nextTick, shallowRef, toRef } from 'vue'\nimport { createRange, genericComponent, keyValues, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\ntype ItemSlot = {\n isActive: boolean\n key: string | number\n page: string\n props: Record<string, any>\n}\n\ntype ControlSlot = {\n icon: IconValue\n onClick: (e: Event) => void\n disabled: boolean\n ariaLabel: string\n ariaDisabled: boolean\n}\n\nexport type VPaginationSlots = {\n item: ItemSlot\n first: ControlSlot\n prev: ControlSlot\n next: ControlSlot\n last: ControlSlot\n}\n\nexport const makeVPaginationProps = propsFactory({\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start as number,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VPagination')\n\nexport const VPagination = genericComponent<VPaginationSlots>()({\n name: 'VPagination',\n\n props: makeVPaginationProps(),\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const { width } = useDisplay()\n const maxButtons = shallowRef(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n\n maxButtons.value = getMax(totalWidth, itemWidth)\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible != null) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return getMax(width.value, 58)\n })\n\n function getMax (totalWidth: number, itemWidth: number) {\n const minButtons = props.showFirstLastPage ? 5 : 3\n return Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n }\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 0) return []\n else if (totalVisible.value === 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n rounded: toRef(props, 'rounded'),\n elevation: toRef(props, 'elevation'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || +props.length < 2,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, item),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > +props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first!) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.first } />\n )}\n </li>\n )}\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.prev } />\n )}\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.key }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" { ...item.props }>{ item.page }</VBtn>\n )}\n </li>\n ))}\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.next } />\n )}\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last!) : (\n <VBtn _as=\"VPaginationBtn\" { ...controls.value.last } />\n )}\n </li>\n )}\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
|