@nhtio/lucid-resourceful-vue-components 1.20260107.0 → 1.20260108.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/{VChip-DWwcL8cL.mjs → VChip-DakTCdq2.mjs} +2 -2
  2. package/{VChip-DWwcL8cL.mjs.map → VChip-DakTCdq2.mjs.map} +1 -1
  3. package/{VDatePicker-C7_ULYfO.mjs → VDatePicker-DlZlcF2O.mjs} +4 -4
  4. package/{VDatePicker-C7_ULYfO.mjs.map → VDatePicker-DlZlcF2O.mjs.map} +1 -1
  5. package/{VDialog-BVRDhoD7.mjs → VDialog-BljV_Pfu.mjs} +3 -3
  6. package/{VDialog-BVRDhoD7.mjs.map → VDialog-BljV_Pfu.mjs.map} +1 -1
  7. package/{VEmptyState-C2B0Znk9.mjs → VEmptyState-BubXzExt.mjs} +2 -2
  8. package/{VEmptyState-C2B0Znk9.mjs.map → VEmptyState-BubXzExt.mjs.map} +1 -1
  9. package/{VHover-DnB1GlWG.mjs → VHover-DYt7f7-R.mjs} +3 -3
  10. package/{VHover-DnB1GlWG.mjs.map → VHover-DYt7f7-R.mjs.map} +1 -1
  11. package/{VListItem-DojRgtpe.mjs → VListItem-CHkJtaF9.mjs} +4 -4
  12. package/{VListItem-DojRgtpe.mjs.map → VListItem-CHkJtaF9.mjs.map} +1 -1
  13. package/{VMenu-D2biKkpd.mjs → VMenu-Xveh72QZ.mjs} +3 -3
  14. package/{VMenu-D2biKkpd.mjs.map → VMenu-Xveh72QZ.mjs.map} +1 -1
  15. package/{VPicker-dxKS1KK4.mjs → VPicker-D9TBI61U.mjs} +4 -4
  16. package/{VPicker-dxKS1KK4.mjs.map → VPicker-D9TBI61U.mjs.map} +1 -1
  17. package/{VRadioGroup-lC_c6Ath.mjs → VRadioGroup-CFazRh5q.mjs} +4 -4
  18. package/{VRadioGroup-lC_c6Ath.mjs.map → VRadioGroup-CFazRh5q.mjs.map} +1 -1
  19. package/{VRow-BBY2gEjT.mjs → VRow-Db84ydOG.mjs} +2 -2
  20. package/{VRow-BBY2gEjT.mjs.map → VRow-Db84ydOG.mjs.map} +1 -1
  21. package/{VSheet-B4SA9_dv.mjs → VSheet-CX-0tYk0.mjs} +2 -2
  22. package/{VSheet-B4SA9_dv.mjs.map → VSheet-CX-0tYk0.mjs.map} +1 -1
  23. package/{actions-CXhEUJp6.mjs → actions-CAGyXfrI.mjs} +12 -12
  24. package/{actions-CXhEUJp6.mjs.map → actions-CAGyXfrI.mjs.map} +1 -1
  25. package/{alert-B0j6GH3V.mjs → alert-D4Zq_X5a.mjs} +11 -11
  26. package/{alert-B0j6GH3V.mjs.map → alert-D4Zq_X5a.mjs.map} +1 -1
  27. package/{bigint-DXS_rVbG.mjs → bigint-MqcXh7nS.mjs} +7 -7
  28. package/{bigint-DXS_rVbG.mjs.map → bigint-MqcXh7nS.mjs.map} +1 -1
  29. package/{boolean-BTu-4Ihs.mjs → boolean-h31TIpoH.mjs} +10 -10
  30. package/{boolean-BTu-4Ihs.mjs.map → boolean-h31TIpoH.mjs.map} +1 -1
  31. package/{clipboard-C6YTX8YB.mjs → clipboard-jPiC4eq0.mjs} +7 -7
  32. package/{clipboard-C6YTX8YB.mjs.map → clipboard-jPiC4eq0.mjs.map} +1 -1
  33. package/{common-a_cd4SQg.mjs → common-CRFL2oQX.mjs} +1362 -1362
  34. package/common-CRFL2oQX.mjs.map +1 -0
  35. package/components/autorefresh_controller.mjs +1 -1
  36. package/components/control_button.mjs +1 -1
  37. package/components/control_button_bar.mjs +2 -2
  38. package/components/control_menu.mjs +1 -1
  39. package/components/custom_field.mjs +1 -1
  40. package/components/exporter.mjs +1 -1
  41. package/components/fields/bigint.mjs +1 -1
  42. package/components/fields/boolean.mjs +1 -1
  43. package/components/fields/date.mjs +1 -1
  44. package/components/fields/date_time.mjs +1 -1
  45. package/components/fields/enum.mjs +1 -1
  46. package/components/fields/integer.mjs +1 -1
  47. package/components/fields/number.mjs +1 -1
  48. package/components/fields/string.mjs +1 -1
  49. package/components/fields/unsigned_integer.mjs +1 -1
  50. package/components/fields.mjs +9 -9
  51. package/components/form_with_validation.mjs +1 -1
  52. package/components/resourceful_alerter.mjs +1 -1
  53. package/components/resourceful_index.mjs +1 -1
  54. package/components/resourceful_record.mjs +2 -2
  55. package/components/resourceful_record_default_form.mjs +1 -1
  56. package/components/resourceful_record_form.mjs +1 -1
  57. package/components/sortable.mjs +1 -1
  58. package/components/svg_icon.mjs +1 -1
  59. package/components/timezone_picker.mjs +1 -1
  60. package/components.mjs +23 -23
  61. package/composables.mjs +11 -11
  62. package/{custom-CgyU3A_B.mjs → custom-Dj2ib6qT.mjs} +7 -7
  63. package/{custom-CgyU3A_B.mjs.map → custom-Dj2ib6qT.mjs.map} +1 -1
  64. package/{date-B8edF8kU.mjs → date-fxb-e0m9.mjs} +10 -10
  65. package/{date-B8edF8kU.mjs.map → date-fxb-e0m9.mjs.map} +1 -1
  66. package/{date_time-BNsYnH-e.mjs → date_time-n4zJtaSr.mjs} +18 -18
  67. package/{date_time-BNsYnH-e.mjs.map → date_time-n4zJtaSr.mjs.map} +1 -1
  68. package/{display-CHspVOz6.mjs → display-DNgEbAdH.mjs} +38 -38
  69. package/{display-CHspVOz6.mjs.map → display-DNgEbAdH.mjs.map} +1 -1
  70. package/{display-pfXaBUr6.mjs → display-DxJktZAm.mjs} +4 -4
  71. package/{display-pfXaBUr6.mjs.map → display-DxJktZAm.mjs.map} +1 -1
  72. package/{enum-DoxJn16e.mjs → enum-CjkTx4L6.mjs} +9 -9
  73. package/{enum-DoxJn16e.mjs.map → enum-CjkTx4L6.mjs.map} +1 -1
  74. package/{exceptions-BeFuVcrH.mjs → exceptions-lwCt3BKI.mjs} +2 -2
  75. package/{exceptions-BeFuVcrH.mjs.map → exceptions-lwCt3BKI.mjs.map} +1 -1
  76. package/exceptions.mjs +2 -2
  77. package/factories.mjs +2 -2
  78. package/{field_composer-CPqM1aSV.mjs → field_composer-B_4w9YL9.mjs} +3 -3
  79. package/{field_composer-CPqM1aSV.mjs.map → field_composer-B_4w9YL9.mjs.map} +1 -1
  80. package/{form-BkQlevYR.mjs → form-B7uOzLn2.mjs} +15 -15
  81. package/{form-BkQlevYR.mjs.map → form-B7uOzLn2.mjs.map} +1 -1
  82. package/{guards-D0G8CU2m.mjs → guards-BI3Zu4tN.mjs} +2 -2
  83. package/{guards-D0G8CU2m.mjs.map → guards-BI3Zu4tN.mjs.map} +1 -1
  84. package/guards.mjs +4 -4
  85. package/helpers.mjs +12 -12
  86. package/{http-ChBUYgv8.mjs → http-B7MNWS03.mjs} +2 -2
  87. package/{http-ChBUYgv8.mjs.map → http-B7MNWS03.mjs.map} +1 -1
  88. package/{http-C15bx-Gn.mjs → http-C2_4xIMQ.mjs} +9 -6
  89. package/{http-C15bx-Gn.mjs.map → http-C2_4xIMQ.mjs.map} +1 -1
  90. package/http.mjs +1 -1
  91. package/{index-DHoLuRuJ.mjs → index-3roRSYqk.mjs} +6 -6
  92. package/{index-DHoLuRuJ.mjs.map → index-3roRSYqk.mjs.map} +1 -1
  93. package/{index-CvhhGjZn.mjs → index-B-PEjqXn.mjs} +3 -3
  94. package/{index-CvhhGjZn.mjs.map → index-B-PEjqXn.mjs.map} +1 -1
  95. package/{index-CdaTAyzs.mjs → index-BC-vhUQX.mjs} +15 -15
  96. package/{index-CdaTAyzs.mjs.map → index-BC-vhUQX.mjs.map} +1 -1
  97. package/{index-CduefDwU.mjs → index-BJmmZly3.mjs} +3 -3
  98. package/{index-CduefDwU.mjs.map → index-BJmmZly3.mjs.map} +1 -1
  99. package/{index-DLzoBhUb.mjs → index-BawSct2l.mjs} +4 -4
  100. package/{index-DLzoBhUb.mjs.map → index-BawSct2l.mjs.map} +1 -1
  101. package/{index-Cb3Fmo7E.mjs → index-DDsxXe9z.mjs} +43 -43
  102. package/{index-Cb3Fmo7E.mjs.map → index-DDsxXe9z.mjs.map} +1 -1
  103. package/{index-BcDX9w4T.mjs → index-DLXKobUt.mjs} +8 -8
  104. package/{index-BcDX9w4T.mjs.map → index-DLXKobUt.mjs.map} +1 -1
  105. package/{index-CHELe70a.mjs → index-DWI2DYc2.mjs} +8 -8
  106. package/{index-CHELe70a.mjs.map → index-DWI2DYc2.mjs.map} +1 -1
  107. package/{index-De0W4KPF.mjs → index-Dh9Wblnw.mjs} +8 -8
  108. package/{index-De0W4KPF.mjs.map → index-Dh9Wblnw.mjs.map} +1 -1
  109. package/index.mjs +37 -37
  110. package/{integer-BWdmDp7S.mjs → integer-BYichJsH.mjs} +3 -3
  111. package/{integer-BWdmDp7S.mjs.map → integer-BYichJsH.mjs.map} +1 -1
  112. package/{ioc-Q-KAX6x1.mjs → ioc-DOAKMPdw.mjs} +2 -2
  113. package/{ioc-Q-KAX6x1.mjs.map → ioc-DOAKMPdw.mjs.map} +1 -1
  114. package/ioc.mjs +1 -1
  115. package/lucid-resourceful-vue-components.css +828 -828
  116. package/{mdi-jw9Ee7p6.mjs → mdi-VGx06N8O.mjs} +9 -9
  117. package/{mdi-jw9Ee7p6.mjs.map → mdi-VGx06N8O.mjs.map} +1 -1
  118. package/{number-Chf-qQs7.mjs → number-B5AryNzI.mjs} +8 -8
  119. package/{number-Chf-qQs7.mjs.map → number-B5AryNzI.mjs.map} +1 -1
  120. package/package.json +5 -5
  121. package/{props-eYGYq1uo.mjs → props-BZryUy0q.mjs} +4 -4
  122. package/{props-eYGYq1uo.mjs.map → props-BZryUy0q.mjs.map} +1 -1
  123. package/{props-fFnbtBgH.mjs → props-Dcuv5Iv7.mjs} +4 -4
  124. package/{props-fFnbtBgH.mjs.map → props-Dcuv5Iv7.mjs.map} +1 -1
  125. package/{renderers-DLsO8zG-.mjs → renderers-C7XOwFHb.mjs} +14 -14
  126. package/{renderers-DLsO8zG-.mjs.map → renderers-C7XOwFHb.mjs.map} +1 -1
  127. package/{string-D-UsgMTx.mjs → string-CJvxnWzd.mjs} +13 -13
  128. package/{string-D-UsgMTx.mjs.map → string-CJvxnWzd.mjs.map} +1 -1
  129. package/{unsigned_integer-7R2vw_Qn.mjs → unsigned_integer-CRQsMWxW.mjs} +4 -4
  130. package/{unsigned_integer-7R2vw_Qn.mjs.map → unsigned_integer-CRQsMWxW.mjs.map} +1 -1
  131. package/{utils-DehfJ8pT.mjs → utils-BBXjywEs.mjs} +2 -2
  132. package/{utils-DehfJ8pT.mjs.map → utils-BBXjywEs.mjs.map} +1 -1
  133. package/{validation-41gHTtyY.mjs → validation-NVIikb_s.mjs} +5 -5
  134. package/{validation-41gHTtyY.mjs.map → validation-NVIikb_s.mjs.map} +1 -1
  135. package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs} +7 -7
  136. package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs.map → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs.map} +1 -1
  137. package/common-a_cd4SQg.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-B8edF8kU.mjs","sources":["../src/private/fields/date.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Date Field\n|--------------------------------------------------------------------------\n|\n| A sophisticated field component for handling ISO 8601 date values with\n| integrated VDatePicker functionality. This component provides a dual-interface\n| approach: VTextField for manual input with VDatePicker for visual selection,\n| optimized for both desktop and mobile experiences.\n|\n| ## Core Features\n|\n| - **ISO 8601 Storage**: All dates stored as standard ISO date strings (YYYY-MM-DD)\n| - **Luxon Formatting**: Flexible display formatting using DateTime locale strings\n| - **Dual Input Methods**: Manual text entry + visual date picker selection\n| - **Mobile Optimized**: VBottomSheet on mobile, VDialog on desktop\n| - **Browser UI Suppression**: Disables native date pickers while preserving HTML5 benefits\n| - **Multiple Mode**: Chip-based interface for date arrays with unified picker\n|\n| ## Technical Implementation\n|\n| The component uses VTextField with type=\"date\" as its base, providing HTML5\n| validation and mobile keyboard optimization while completely suppressing\n| browser-native date picker UI through injected CSS. A custom VDatePicker\n| is integrated via dialog/bottom-sheet overlays for visual date selection.\n|\n| Mobile devices get special handling:\n| - Input becomes readonly to prevent keyboard conflicts\n| - onClick:control handler directly opens VBottomSheet picker\n| - VBottomSheet provides optimal touch-based date selection\n|\n| ## Display Formats (Luxon-based)\n|\n| - **short**: \"9/11/2001\" (DateTime.DATE_SHORT)\n| - **med**: \"Sep 11, 2001\" (DateTime.DATE_MED)\n| - **medWithWeekday**: \"Tue, Sep 11, 2001\" (DateTime.DATE_MED_WITH_WEEKDAY)\n| - **full**: \"September 11, 2001\" (DateTime.DATE_FULL)\n| - **huge**: \"Tuesday, September 11, 2001\" (DateTime.DATE_HUGE)\n|\n| ## Usage Examples\n|\n| ```vue\n| <!-- Basic date field -->\n| <RDateField\n| v-model=\"birthDate\"\n| label=\"Birth Date\"\n| displayFormat=\"med\"\n| />\n|\n| <!-- Multiple dates -->\n| <RDateField\n| v-model=\"eventDates\"\n| multiple\n| label=\"Event Dates\"\n| displayFormat=\"medWithWeekday\"\n| />\n|\n| <!-- With date constraints -->\n| <RDateField\n| v-model=\"appointmentDate\"\n| label=\"Appointment\"\n| :min=\"new Date().toISOString().split('T')[0]\"\n| :max=\"futureDate\"\n| />\n|\n| <!-- Read-only display -->\n| <RDateField\n| v-model=\"historicalDates\"\n| multiple\n| render-mode=\"read\"\n| displayFormat=\"full\"\n| />\n| ```\n|\n| ## Validation\n|\n| All dates are validated to ensure:\n| - Valid ISO 8601 date format (YYYY-MM-DD)\n| - Time components at midnight (pure date, no time)\n| - Valid DateTime parsing through Luxon\n|\n| ## Browser Compatibility\n|\n| Injected CSS suppresses native date picker indicators across:\n| - WebKit browsers (Safari, Chrome, Edge)\n| - Mozilla Firefox\n| - Microsoft browsers (legacy Edge, IE)\n| \n| This ensures consistent UI while preserving HTML5 input benefits.\n*/\n\nimport { DateTime } from 'luxon'\nimport { useDisplay } from 'vuetify'\nimport { SvgIcon } from '../svg-icon'\nimport { deepmerge } from 'deepmerge-ts'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { VCard } from 'vuetify/components/VCard'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { useFieldComposer } from './field_composer'\nimport { VDialog } from 'vuetify/components/VDialog'\nimport { VDivider } from 'vuetify/components/VDivider'\nimport { VTextField } from 'vuetify/components/VTextField'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VDatePicker } from 'vuetify/components/VDatePicker'\nimport { isLuxonDateTime } from '@nhtio/encoder/type_guards'\nimport { VBottomSheet } from 'vuetify/components/VBottomSheet'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { toUnreactive, useSlot, mergeClasses } from '../common/utils'\nimport { VToolbar, VToolbarItems } from 'vuetify/components/VToolbar'\nimport { h, defineComponent, toRefs, computed, ref, onMounted } from 'vue'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVTextFieldProps } from '@nhtio/vuetifiable/components/VTextField/VTextField'\nimport { makeVDatePickerProps } from '@nhtio/vuetifiable/components/VDatePicker/VDatePicker'\nimport { mdiClose, mdiCalendar, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'\nimport type { Zone } from 'luxon'\nimport type { SharedUnionFields } from 'type-fest'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { makeVBtnProps } from '@nhtio/vuetifiable/components/VBtn/VBtn'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type { makeVDialogProps } from '@nhtio/vuetifiable/components/VDialog/VDialog'\nimport type { makeVBottomSheetProps } from '@nhtio/vuetifiable/components/VBottomSheet/VBottomSheet'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n VNode,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VBtnPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnProps>>\ntype VDialogPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVDialogProps>>\ntype VBottomSheetPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBottomSheetProps>>\ntype CommonDialogPublicProps = SharedUnionFields<VDialogPublicProps | VBottomSheetPublicProps>\ntype VTextFieldSlots = ExtractSlotDefinitions<typeof VTextField.slots>\n\n/**\n * Available display format options for RDateField.\n *\n * These formats correspond to Luxon's built-in DateTime locale string constants,\n * providing consistent, internationalized date formatting across different locales.\n *\n * @example\n * ```typescript\n * const formats: RDateFieldDisplayFormat[] = ['short', 'med', 'full']\n * // Results in: [\"9/11/2001\", \"Sep 11, 2001\", \"September 11, 2001\"]\n * ```\n */\nexport const RDateFieldDisplayFormat = ['short', 'med', 'medWithWeekday', 'full', 'huge'] as const\n\n/**\n * Type representing the available display format options for date rendering.\n *\n * Maps to Luxon DateTime constants:\n * - `short`: \"9/11/2001\" (DateTime.DATE_SHORT)\n * - `med`: \"Sep 11, 2001\" (DateTime.DATE_MED)\n * - `medWithWeekday`: \"Tue, Sep 11, 2001\" (DateTime.DATE_MED_WITH_WEEKDAY)\n * - `full`: \"September 11, 2001\" (DateTime.DATE_FULL)\n * - `huge`: \"Tuesday, September 11, 2001\" (DateTime.DATE_HUGE)\n *\n * @example\n * ```typescript\n * const format: RDateFieldDisplayFormat = 'medWithWeekday'\n * // Displays as: \"Tue, Sep 11, 2001\"\n * ```\n */\nexport type RDateFieldDisplayFormat = (typeof RDateFieldDisplayFormat)[number]\n\nconst isValidRDateFieldSingleValue = (value: unknown): boolean => {\n if ('string' !== typeof value) return false\n const dt = DateTime.fromISO(value)\n if (!dt.isValid) return false\n // Check if time components are at default (midnight)\n return dt.hour === 0 && dt.minute === 0 && dt.second === 0 && dt.millisecond === 0\n}\n\nconst isValidRDateFieldValue = (value: string | string[] | null | undefined): boolean => {\n if (null === value || 'undefined' === typeof value) return true\n if (Array.isArray(value)) return value.every((v) => isValidRDateFieldSingleValue(v))\n return isValidRDateFieldSingleValue(value)\n}\n\nconst { makeProps: makeRDateFieldProps, emits: rDateFieldEmits } = propsAndEmitsFactory(\n {\n ...omit(\n makeVTextFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n [\n 'appendIcon',\n 'appendInnerIcon',\n 'centerAffix',\n 'counter',\n 'counterValue',\n 'hideSpinButtons',\n 'modelModifiers',\n 'modelValue',\n 'persistentCounter',\n 'prependIcon',\n 'prependInnerIcon',\n 'rules',\n 'type',\n 'validationValue',\n 'onClick:append',\n 'onClick:appendInner',\n 'onClick:clear',\n 'onClick:prepend',\n 'onClick:prependInner',\n ]\n ),\n modelValue: {\n type: [String, Array, Object] as PropType<string | string[] | null | undefined>,\n default: undefined,\n },\n displayFormat: {\n type: String as PropType<RDateFieldDisplayFormat>,\n default: 'short',\n },\n displayLocale: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n displayTimezone: {\n type: String as PropType<string | Zone | undefined>,\n default: undefined,\n },\n datePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCalendar }),\n },\n ...pick(\n makeVDatePickerProps({\n prevIcon: () => h(SvgIcon, { d: mdiChevronLeft }),\n nextIcon: () => h(SvgIcon, { d: mdiChevronRight }),\n modeIcon: () => h(SvgIcon, { d: mdiChevronDown }),\n }),\n ['firstDayOfWeek', 'max', 'min', 'showWeek', 'prevIcon', 'nextIcon', 'modeIcon']\n ),\n ...makeCommonResourcefulFieldProps(),\n },\n {\n 'update:modelValue': (value: string | string[] | null | undefined) =>\n isValidRDateFieldValue(value),\n 'update:model-value': (value: string | string[] | null | undefined) =>\n isValidRDateFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RDateField'\n)\n\n/**\n * Props factory function for RDateField component.\n *\n * Creates a comprehensive props configuration that combines VTextField properties\n * with VDatePicker properties and custom date-specific options. The factory\n * excludes incompatible VTextField props and adds date-specific functionality.\n *\n * @returns Props factory function for RDateField component\n *\n * @example\n * ```typescript\n * const props = makeRDateFieldProps()\n * // Includes: displayFormat, datePickerIcon, min, max, showWeek, etc.\n * ```\n */\nexport { makeRDateFieldProps }\n\n/**\n * Type definition for RDateField component props.\n *\n * Extracted from the props factory to provide type safety for component usage.\n * Includes all VTextField props (except incompatible ones), VDatePicker options,\n * and custom date formatting/display properties.\n *\n * Key prop categories:\n * - **VTextField Props**: Standard text field properties (label, variant, etc.)\n * - **VDatePicker Props**: Calendar-specific options (min, max, firstDayOfWeek, etc.)\n * - **Display Options**: displayFormat for Luxon-based formatting\n * - **Common Field Props**: Shared resourceful field properties (multiple, renderMode, etc.)\n *\n * @example\n * ```typescript\n * const props: RDateFieldProps = {\n * modelValue: \"2024-01-15\",\n * label: \"Select Date\",\n * displayFormat: \"medWithWeekday\",\n * min: \"2024-01-01\",\n * max: \"2024-12-31\",\n * showWeek: true\n * }\n * ```\n */\nexport type RDateFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRDateFieldProps>>\ntype VTextFieldPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVTextFieldProps>>\n\nconst enforceRDateFieldStyles = () => {\n const styleId = 'resourceful-field-date-style'\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style')\n style.id = styleId\n style.textContent = `.resourceful__field__date input[type=date]::-webkit-calendar-picker-indicator,.resourceful__field__date input[type=date]::-webkit-inner-spin-button,.resourceful__field__date input[type=date]::-webkit-clear-button{display:none !important;-webkit-appearance:none !important}.resourceful__field__date input[type=date]::-moz-calendar-picker-indicator{display:none !important}.resourceful__field__date input[type=date]::-ms-clear,.resourceful__field__date input[type=date]::-ms-reveal{display:none !important}`\n document.head.appendChild(style)\n }\n}\n\nconst renderDatePicker = (\n vTextFieldBindings: VTextFieldPublicProps & Record<string, any>,\n fieldBindings: any,\n disabled: boolean,\n firstDayOfWeek: string | number | undefined,\n max: unknown,\n min: unknown,\n showWeek: boolean,\n prevIcon: IconValue,\n nextIcon: IconValue,\n modeIcon: IconValue,\n onClickClose: () => void,\n onDatePickerUpdateModelValue: (v: unknown) => void\n): VNode =>\n h(VCard, { class: ['d-flex', 'flex-column'] }, () => [\n h(\n VToolbar,\n {\n color: 'transparent',\n flat: true,\n class: ['flex-grow-0'],\n },\n () => [\n h(\n 'div',\n { class: ['flex-grow-1', 'd-flex', 'align-center', 'justify-center', 'pa-1'] },\n h(VTextField, {\n ...vTextFieldBindings,\n ...fieldBindings,\n hideDetails: true,\n class: ['resourceful__field__date'],\n clearable: true,\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n })\n ),\n h(VToolbarItems, {}, () => [\n h(\n VBtn,\n {\n icon: true,\n onClick: () => onClickClose(),\n },\n () => [\n h(VIcon, {\n icon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ]\n ),\n ]),\n ]\n ),\n h(VDivider, { class: ['flex-grow-0'] }),\n h(VDatePicker, {\n bgColor: 'transparent',\n disabled: disabled,\n divided: false,\n elevation: 0,\n firstDayOfWeek: firstDayOfWeek,\n max: max,\n min: min,\n showAdjacentMonths: true,\n showWeek: showWeek,\n width: '100%',\n hideHeader: true,\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n modeIcon: modeIcon,\n modelValue: fieldBindings.modelValue,\n ...{\n 'onUpdate:model-value': (v: unknown) => {\n onDatePickerUpdateModelValue(v)\n },\n 'onUpdate:modelValue': (v: unknown) => {\n onDatePickerUpdateModelValue(v)\n },\n },\n }),\n ])\n\n/**\n * RDateField - A sophisticated Vue component for ISO 8601 date input and selection.\n *\n * This component provides a comprehensive date input solution that combines the\n * accessibility and validation benefits of HTML5 date inputs with a completely\n * custom visual interface. It features dual input methods (manual text entry\n * and visual picker) with intelligent mobile optimization.\n *\n * ## Key Features\n *\n * - **Dual Input Interface**: Manual text entry + integrated VDatePicker\n * - **Mobile Optimized**: VBottomSheet on mobile, VDialog on desktop\n * - **ISO 8601 Standard**: All dates stored as YYYY-MM-DD strings\n * - **Luxon Formatting**: Flexible display formatting with internationalization\n * - **Browser UI Suppression**: Custom picker while preserving HTML5 benefits\n * - **Multiple Values**: Chip-based interface for date arrays\n * - **Smart Readonly**: Mobile inputs become readonly to prevent keyboard conflicts\n * - **Validation Pipeline**: Ensures valid dates with midnight time components\n *\n * ## Technical Architecture\n *\n * The component uses a sophisticated multi-layer approach:\n *\n * ### Base Layer (VTextField)\n * - HTML5 `type=\"date\"` for validation and mobile keyboard optimization\n * - Injected CSS suppresses all native browser date picker UI\n * - Maintains accessibility and semantic benefits\n *\n * ### Picker Layer (VDatePicker)\n * - Integrated via VDialog (desktop) or VBottomSheet (mobile)\n * - Full calendar navigation with month/year selection\n * - Configurable date constraints (min, max, firstDayOfWeek)\n *\n * ### Mobile Layer (Touch Optimization)\n * - Input becomes readonly on mobile to prevent keyboard conflicts\n * - onClick:control handler directly opens picker interface\n * - VBottomSheet provides optimal touch-based date selection UX\n *\n * ### Validation Layer\n * - Ensures ISO 8601 compliance (YYYY-MM-DD format)\n * - Validates time components are at midnight (pure dates)\n * - Luxon-based parsing for robust date validation\n *\n * ## Usage Patterns\n *\n * @example\n * ```vue\n * <template>\n * <!-- Basic date selection -->\n * <RDateField\n * v-model=\"selectedDate\"\n * label=\"Select Date\"\n * displayFormat=\"med\"\n * />\n *\n * <!-- Multiple dates with constraints -->\n * <RDateField\n * v-model=\"eventDates\"\n * multiple\n * label=\"Event Dates\"\n * :min=\"todayISO\"\n * :max=\"maxDateISO\"\n * displayFormat=\"medWithWeekday\"\n * />\n *\n * <!-- Read-only display -->\n * <RDateField\n * v-model=\"historicalDates\"\n * render-mode=\"read\"\n * displayFormat=\"full\"\n * multiple\n * />\n *\n * <!-- Custom picker options -->\n * <RDateField\n * v-model=\"appointmentDate\"\n * label=\"Appointment\"\n * :firstDayOfWeek=\"1\"\n * :showWeek=\"true\"\n * displayFormat=\"huge\"\n * />\n * </template>\n * ```\n *\n * ## Data Flow\n *\n * 1. **Input**: User types date or selects from picker\n * 2. **Validation**: Luxon validates ISO format and date validity\n * 3. **Storage**: ISO 8601 string stored in modelValue\n * 4. **Display**: Luxon formats for presentation using displayFormat\n * 5. **Emission**: Validated ISO string emitted to parent\n *\n * ## Browser Compatibility\n *\n * Automatic CSS injection handles native picker suppression across:\n * - WebKit: Safari, Chrome, Edge (webkit-calendar-picker-indicator)\n * - Mozilla: Firefox (moz-calendar-picker-indicator)\n * - Microsoft: Legacy Edge, IE (ms-clear, ms-reveal)\n *\n * This ensures consistent custom UI while preserving HTML5 input benefits\n * like validation, accessibility, and mobile keyboard optimization.\n */\nexport const RDateField = defineComponent({\n name: 'RDateField',\n props: makeRDateFieldProps(),\n emits: rDateFieldEmits,\n slots: Object as SlotsType<VTextFieldSlots>,\n setup(props, { emit, slots }) {\n const { mobile } = useDisplay()\n const {\n modelValue,\n theme,\n rounded,\n tile,\n loading,\n class: className,\n style,\n bgColor,\n clearable,\n clearIcon,\n active,\n color,\n baseColor,\n dirty,\n disabled,\n glow,\n error,\n flat,\n iconColor,\n label,\n persistentClear,\n reverse,\n singleLine,\n variant,\n focused,\n errorMessages,\n maxErrors,\n name,\n readonly,\n validateOn,\n width,\n minWidth,\n maxWidth,\n density,\n id,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n autofocus,\n prefix,\n placeholder,\n persistentPlaceholder,\n suffix,\n role,\n displayFormat,\n displayLocale,\n displayTimezone,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n noValuesText,\n datePickerIcon,\n firstDayOfWeek,\n max,\n min,\n showWeek,\n prevIcon,\n nextIcon,\n modeIcon,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const normalizedClassName = computed(() =>\n mergeClasses(className.value, ['resourceful__field__date'])\n )\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n active,\n theme,\n disabled,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n focused,\n noValuesText,\n 'class': normalizedClassName,\n 'onUpdate:focused': toRefs(props)['onUpdate:focused'],\n 'onClick:append': toRefs(props)['onClick:append'],\n 'onClick:appendInner': toRefs(props)['onClick:appendInner'],\n 'onClick:clear': toRefs(props)['onClick:clear'],\n 'onClick:prependInner': toRefs(props)['onClick:prependInner'],\n 'onClick:prepend': toRefs(props)['onClick:prepend'],\n 'onMousedown:control': toRefs(props)['onMousedown:control'],\n 'onClick:control': toRefs(props)['onClick:control'],\n error,\n errorMessages,\n dirty,\n onBlur,\n onChange,\n onInput,\n }\n const stringifier = computed<RFieldStringifier<string>>(\n () => (value: string | null | undefined) => {\n if ('undefined' === typeof value || null === value) return ''\n let dt = DateTime.fromISO(value, { zone: 'utc', setZone: true })\n if ('string' === typeof displayLocale.value && '' !== displayLocale.value && dt.isValid) {\n const changed = dt.setLocale(displayLocale.value)\n if (changed.isValid) {\n dt = changed\n }\n }\n if (\n 'string' === typeof displayTimezone.value &&\n '' !== displayTimezone.value &&\n dt.isValid\n ) {\n let changed: DateTime = dt\n if ('UTC' === displayTimezone.value) {\n changed = changed.setZone('utc')\n } else {\n changed = changed.setZone(displayTimezone.value)\n }\n if (changed.isValid) {\n dt = changed\n }\n }\n switch (displayFormat.value) {\n case 'huge':\n return dt.toLocaleString(DateTime.DATE_HUGE)\n case 'full':\n return dt.toLocaleString(DateTime.DATE_FULL)\n case 'medWithWeekday':\n return dt.toLocaleString(DateTime.DATE_MED_WITH_WEEKDAY)\n case 'med':\n return dt.toLocaleString(DateTime.DATE_MED)\n default:\n return dt.toLocaleString(DateTime.DATE_SHORT)\n }\n }\n )\n const vTextFieldBindings = computed<VTextFieldPublicProps & Record<string, any>>(\n () =>\n ({\n theme: theme.value,\n rounded: rounded.value,\n tile: tile.value,\n loading: loading.value,\n class: normalizedClassName.value,\n style: style.value,\n bgColor: bgColor.value,\n clearable: clearable.value,\n clearIcon: clearIcon.value,\n active: active.value,\n color: color.value,\n baseColor: baseColor.value,\n dirty: dirty.value,\n disabled: disabled.value,\n glow: glow.value,\n error: error.value,\n flat: flat.value,\n iconColor: iconColor.value,\n label: label.value,\n persistentClear: persistentClear.value,\n reverse: reverse.value,\n singleLine: singleLine.value,\n variant: variant.value,\n focused: focused.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n width: width.value,\n minWidth: minWidth.value,\n maxWidth: maxWidth.value,\n density: density.value,\n id: id.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n autofocus: autofocus.value,\n prefix: prefix.value,\n placeholder: placeholder.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n type: 'date',\n max: max.value,\n min: min.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }) satisfies VTextFieldPublicProps & Record<string, any>\n )\n const vDialogMenuButtonRef = ref<VBtn>()\n const datePickerOpen = ref(false)\n const dialogMenuButtonBindings = computed<VBtnPublicProps>(() => ({\n ref: vDialogMenuButtonRef,\n modelValue: datePickerOpen.value,\n icon: true,\n variant: 'text' as const,\n size: 'small',\n density: toUnreactive(density),\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n datePickerOpen.value = !datePickerOpen.value\n },\n }))\n const appendInnerSlotRenderer = () => {\n return h(VBtn, dialogMenuButtonBindings.value, () =>\n h(VIcon, {\n icon: datePickerIcon.value,\n })\n )\n }\n const commonDialogBindings = computed<CommonDialogPublicProps>(() =>\n deepmerge(\n {\n modelValue: datePickerOpen.value,\n retainFocus: true,\n theme: toUnreactive(theme),\n },\n {\n 'onUpdate:modelValue': (is: boolean) => {\n datePickerOpen.value = is\n },\n }\n )\n )\n const dialogWindowBindings = computed<VDialogPublicProps>(() => ({\n ...commonDialogBindings.value,\n maxWidth: 500,\n maxHeight: 600,\n }))\n const dialogBottomSheetBindings = computed<VBottomSheetPublicProps>(\n () => commonDialogBindings.value\n )\n const singleFieldRenderer: SingleFieldRenderer = ({\n props: fieldBindings,\n add,\n isMultiAdd,\n }) => {\n const onDatePickerUpdateModelValue = (\n value: unknown,\n forCallback: keyof typeof fieldBindings\n ) => {\n let emitable: string | null = null\n if (isLuxonDateTime(value)) {\n emitable = value.toLocal().toISODate()\n } else if (value instanceof Date) {\n emitable = DateTime.fromJSDate(value).toLocal().toISODate()\n } else if ('string' === typeof value) {\n emitable = value\n } else if (null === value) {\n emitable = null\n }\n fieldBindings[forCallback](emitable)\n }\n const appendInnerSlot = useSlot<VTextFieldSlots>('append-inner', slots)\n return h(\n VTextField,\n {\n ...vTextFieldBindings.value,\n ...fieldBindings,\n 'hideDetails': isMultiAdd ? true : hideDetails.value,\n 'readonly': isMultiAdd ? false : mobile.value ? true : readonly.value,\n 'class': isMultiAdd ? ['resourceful__field__date'] : normalizedClassName.value,\n 'onKeydown': (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n queueMicrotask(() => add())\n }\n },\n 'onClick:control'(e: MouseEvent) {\n if (!isMultiAdd && mobile.value) {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n datePickerOpen.value = true\n }\n },\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n 'append-inner': (...args: NamedSlotParameters<VTextFieldSlots, 'append-inner'>) => [\n appendInnerSlotRenderer(),\n mobile.value\n ? h(VBottomSheet, dialogBottomSheetBindings.value, () =>\n renderDatePicker(\n vTextFieldBindings.value,\n fieldBindings,\n disabled.value,\n firstDayOfWeek.value,\n max.value,\n min.value,\n showWeek.value,\n prevIcon.value,\n nextIcon.value,\n modeIcon.value,\n () => {\n datePickerOpen.value = false\n },\n (v: unknown) => {\n onDatePickerUpdateModelValue(v, 'onUpdate:model-value')\n onDatePickerUpdateModelValue(v, 'onUpdate:modelValue')\n }\n )\n )\n : h(VDialog, dialogWindowBindings.value, () =>\n renderDatePicker(\n vTextFieldBindings.value,\n fieldBindings,\n disabled.value,\n firstDayOfWeek.value,\n max.value,\n min.value,\n showWeek.value,\n prevIcon.value,\n nextIcon.value,\n modeIcon.value,\n () => {\n datePickerOpen.value = false\n },\n (v: unknown) => {\n onDatePickerUpdateModelValue(v, 'onUpdate:model-value')\n onDatePickerUpdateModelValue(v, 'onUpdate:modelValue')\n }\n )\n ),\n // @ts-expect-error\n appendInnerSlot ? appendInnerSlot(...args) : null,\n ],\n }\n )\n }\n const { composed } = useFieldComposer(\n commonProps,\n stringifier,\n singleFieldRenderer,\n emit,\n props['onUpdate:modelValue'],\n props['onUpdate:model-value'],\n modelValue,\n props.modelValue\n )\n onMounted(() => enforceRDateFieldStyles())\n return composed\n },\n})\n\nexport type RDateField = typeof RDateField & ComponentPublicInstance\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date-fxb-e0m9.mjs","sources":["../src/private/fields/date.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Date Field\n|--------------------------------------------------------------------------\n|\n| A sophisticated field component for handling ISO 8601 date values with\n| integrated VDatePicker functionality. This component provides a dual-interface\n| approach: VTextField for manual input with VDatePicker for visual selection,\n| optimized for both desktop and mobile experiences.\n|\n| ## Core Features\n|\n| - **ISO 8601 Storage**: All dates stored as standard ISO date strings (YYYY-MM-DD)\n| - **Luxon Formatting**: Flexible display formatting using DateTime locale strings\n| - **Dual Input Methods**: Manual text entry + visual date picker selection\n| - **Mobile Optimized**: VBottomSheet on mobile, VDialog on desktop\n| - **Browser UI Suppression**: Disables native date pickers while preserving HTML5 benefits\n| - **Multiple Mode**: Chip-based interface for date arrays with unified picker\n|\n| ## Technical Implementation\n|\n| The component uses VTextField with type=\"date\" as its base, providing HTML5\n| validation and mobile keyboard optimization while completely suppressing\n| browser-native date picker UI through injected CSS. A custom VDatePicker\n| is integrated via dialog/bottom-sheet overlays for visual date selection.\n|\n| Mobile devices get special handling:\n| - Input becomes readonly to prevent keyboard conflicts\n| - onClick:control handler directly opens VBottomSheet picker\n| - VBottomSheet provides optimal touch-based date selection\n|\n| ## Display Formats (Luxon-based)\n|\n| - **short**: \"9/11/2001\" (DateTime.DATE_SHORT)\n| - **med**: \"Sep 11, 2001\" (DateTime.DATE_MED)\n| - **medWithWeekday**: \"Tue, Sep 11, 2001\" (DateTime.DATE_MED_WITH_WEEKDAY)\n| - **full**: \"September 11, 2001\" (DateTime.DATE_FULL)\n| - **huge**: \"Tuesday, September 11, 2001\" (DateTime.DATE_HUGE)\n|\n| ## Usage Examples\n|\n| ```vue\n| <!-- Basic date field -->\n| <RDateField\n| v-model=\"birthDate\"\n| label=\"Birth Date\"\n| displayFormat=\"med\"\n| />\n|\n| <!-- Multiple dates -->\n| <RDateField\n| v-model=\"eventDates\"\n| multiple\n| label=\"Event Dates\"\n| displayFormat=\"medWithWeekday\"\n| />\n|\n| <!-- With date constraints -->\n| <RDateField\n| v-model=\"appointmentDate\"\n| label=\"Appointment\"\n| :min=\"new Date().toISOString().split('T')[0]\"\n| :max=\"futureDate\"\n| />\n|\n| <!-- Read-only display -->\n| <RDateField\n| v-model=\"historicalDates\"\n| multiple\n| render-mode=\"read\"\n| displayFormat=\"full\"\n| />\n| ```\n|\n| ## Validation\n|\n| All dates are validated to ensure:\n| - Valid ISO 8601 date format (YYYY-MM-DD)\n| - Time components at midnight (pure date, no time)\n| - Valid DateTime parsing through Luxon\n|\n| ## Browser Compatibility\n|\n| Injected CSS suppresses native date picker indicators across:\n| - WebKit browsers (Safari, Chrome, Edge)\n| - Mozilla Firefox\n| - Microsoft browsers (legacy Edge, IE)\n| \n| This ensures consistent UI while preserving HTML5 input benefits.\n*/\n\nimport { DateTime } from 'luxon'\nimport { useDisplay } from 'vuetify'\nimport { SvgIcon } from '../svg-icon'\nimport { deepmerge } from 'deepmerge-ts'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { VCard } from 'vuetify/components/VCard'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { useFieldComposer } from './field_composer'\nimport { VDialog } from 'vuetify/components/VDialog'\nimport { VDivider } from 'vuetify/components/VDivider'\nimport { VTextField } from 'vuetify/components/VTextField'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VDatePicker } from 'vuetify/components/VDatePicker'\nimport { isLuxonDateTime } from '@nhtio/encoder/type_guards'\nimport { VBottomSheet } from 'vuetify/components/VBottomSheet'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { toUnreactive, useSlot, mergeClasses } from '../common/utils'\nimport { VToolbar, VToolbarItems } from 'vuetify/components/VToolbar'\nimport { h, defineComponent, toRefs, computed, ref, onMounted } from 'vue'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVTextFieldProps } from '@nhtio/vuetifiable/components/VTextField/VTextField'\nimport { makeVDatePickerProps } from '@nhtio/vuetifiable/components/VDatePicker/VDatePicker'\nimport { mdiClose, mdiCalendar, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'\nimport type { Zone } from 'luxon'\nimport type { SharedUnionFields } from 'type-fest'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { makeVBtnProps } from '@nhtio/vuetifiable/components/VBtn/VBtn'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type { makeVDialogProps } from '@nhtio/vuetifiable/components/VDialog/VDialog'\nimport type { makeVBottomSheetProps } from '@nhtio/vuetifiable/components/VBottomSheet/VBottomSheet'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n VNode,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VBtnPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnProps>>\ntype VDialogPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVDialogProps>>\ntype VBottomSheetPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBottomSheetProps>>\ntype CommonDialogPublicProps = SharedUnionFields<VDialogPublicProps | VBottomSheetPublicProps>\ntype VTextFieldSlots = ExtractSlotDefinitions<typeof VTextField.slots>\n\n/**\n * Available display format options for RDateField.\n *\n * These formats correspond to Luxon's built-in DateTime locale string constants,\n * providing consistent, internationalized date formatting across different locales.\n *\n * @example\n * ```typescript\n * const formats: RDateFieldDisplayFormat[] = ['short', 'med', 'full']\n * // Results in: [\"9/11/2001\", \"Sep 11, 2001\", \"September 11, 2001\"]\n * ```\n */\nexport const RDateFieldDisplayFormat = ['short', 'med', 'medWithWeekday', 'full', 'huge'] as const\n\n/**\n * Type representing the available display format options for date rendering.\n *\n * Maps to Luxon DateTime constants:\n * - `short`: \"9/11/2001\" (DateTime.DATE_SHORT)\n * - `med`: \"Sep 11, 2001\" (DateTime.DATE_MED)\n * - `medWithWeekday`: \"Tue, Sep 11, 2001\" (DateTime.DATE_MED_WITH_WEEKDAY)\n * - `full`: \"September 11, 2001\" (DateTime.DATE_FULL)\n * - `huge`: \"Tuesday, September 11, 2001\" (DateTime.DATE_HUGE)\n *\n * @example\n * ```typescript\n * const format: RDateFieldDisplayFormat = 'medWithWeekday'\n * // Displays as: \"Tue, Sep 11, 2001\"\n * ```\n */\nexport type RDateFieldDisplayFormat = (typeof RDateFieldDisplayFormat)[number]\n\nconst isValidRDateFieldSingleValue = (value: unknown): boolean => {\n if ('string' !== typeof value) return false\n const dt = DateTime.fromISO(value)\n if (!dt.isValid) return false\n // Check if time components are at default (midnight)\n return dt.hour === 0 && dt.minute === 0 && dt.second === 0 && dt.millisecond === 0\n}\n\nconst isValidRDateFieldValue = (value: string | string[] | null | undefined): boolean => {\n if (null === value || 'undefined' === typeof value) return true\n if (Array.isArray(value)) return value.every((v) => isValidRDateFieldSingleValue(v))\n return isValidRDateFieldSingleValue(value)\n}\n\nconst { makeProps: makeRDateFieldProps, emits: rDateFieldEmits } = propsAndEmitsFactory(\n {\n ...omit(\n makeVTextFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n [\n 'appendIcon',\n 'appendInnerIcon',\n 'centerAffix',\n 'counter',\n 'counterValue',\n 'hideSpinButtons',\n 'modelModifiers',\n 'modelValue',\n 'persistentCounter',\n 'prependIcon',\n 'prependInnerIcon',\n 'rules',\n 'type',\n 'validationValue',\n 'onClick:append',\n 'onClick:appendInner',\n 'onClick:clear',\n 'onClick:prepend',\n 'onClick:prependInner',\n ]\n ),\n modelValue: {\n type: [String, Array, Object] as PropType<string | string[] | null | undefined>,\n default: undefined,\n },\n displayFormat: {\n type: String as PropType<RDateFieldDisplayFormat>,\n default: 'short',\n },\n displayLocale: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n displayTimezone: {\n type: String as PropType<string | Zone | undefined>,\n default: undefined,\n },\n datePickerIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCalendar }),\n },\n ...pick(\n makeVDatePickerProps({\n prevIcon: () => h(SvgIcon, { d: mdiChevronLeft }),\n nextIcon: () => h(SvgIcon, { d: mdiChevronRight }),\n modeIcon: () => h(SvgIcon, { d: mdiChevronDown }),\n }),\n ['firstDayOfWeek', 'max', 'min', 'showWeek', 'prevIcon', 'nextIcon', 'modeIcon']\n ),\n ...makeCommonResourcefulFieldProps(),\n },\n {\n 'update:modelValue': (value: string | string[] | null | undefined) =>\n isValidRDateFieldValue(value),\n 'update:model-value': (value: string | string[] | null | undefined) =>\n isValidRDateFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RDateField'\n)\n\n/**\n * Props factory function for RDateField component.\n *\n * Creates a comprehensive props configuration that combines VTextField properties\n * with VDatePicker properties and custom date-specific options. The factory\n * excludes incompatible VTextField props and adds date-specific functionality.\n *\n * @returns Props factory function for RDateField component\n *\n * @example\n * ```typescript\n * const props = makeRDateFieldProps()\n * // Includes: displayFormat, datePickerIcon, min, max, showWeek, etc.\n * ```\n */\nexport { makeRDateFieldProps }\n\n/**\n * Type definition for RDateField component props.\n *\n * Extracted from the props factory to provide type safety for component usage.\n * Includes all VTextField props (except incompatible ones), VDatePicker options,\n * and custom date formatting/display properties.\n *\n * Key prop categories:\n * - **VTextField Props**: Standard text field properties (label, variant, etc.)\n * - **VDatePicker Props**: Calendar-specific options (min, max, firstDayOfWeek, etc.)\n * - **Display Options**: displayFormat for Luxon-based formatting\n * - **Common Field Props**: Shared resourceful field properties (multiple, renderMode, etc.)\n *\n * @example\n * ```typescript\n * const props: RDateFieldProps = {\n * modelValue: \"2024-01-15\",\n * label: \"Select Date\",\n * displayFormat: \"medWithWeekday\",\n * min: \"2024-01-01\",\n * max: \"2024-12-31\",\n * showWeek: true\n * }\n * ```\n */\nexport type RDateFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRDateFieldProps>>\ntype VTextFieldPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVTextFieldProps>>\n\nconst enforceRDateFieldStyles = () => {\n const styleId = 'resourceful-field-date-style'\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style')\n style.id = styleId\n style.textContent = `.resourceful__field__date input[type=date]::-webkit-calendar-picker-indicator,.resourceful__field__date input[type=date]::-webkit-inner-spin-button,.resourceful__field__date input[type=date]::-webkit-clear-button{display:none !important;-webkit-appearance:none !important}.resourceful__field__date input[type=date]::-moz-calendar-picker-indicator{display:none !important}.resourceful__field__date input[type=date]::-ms-clear,.resourceful__field__date input[type=date]::-ms-reveal{display:none !important}`\n document.head.appendChild(style)\n }\n}\n\nconst renderDatePicker = (\n vTextFieldBindings: VTextFieldPublicProps & Record<string, any>,\n fieldBindings: any,\n disabled: boolean,\n firstDayOfWeek: string | number | undefined,\n max: unknown,\n min: unknown,\n showWeek: boolean,\n prevIcon: IconValue,\n nextIcon: IconValue,\n modeIcon: IconValue,\n onClickClose: () => void,\n onDatePickerUpdateModelValue: (v: unknown) => void\n): VNode =>\n h(VCard, { class: ['d-flex', 'flex-column'] }, () => [\n h(\n VToolbar,\n {\n color: 'transparent',\n flat: true,\n class: ['flex-grow-0'],\n },\n () => [\n h(\n 'div',\n { class: ['flex-grow-1', 'd-flex', 'align-center', 'justify-center', 'pa-1'] },\n h(VTextField, {\n ...vTextFieldBindings,\n ...fieldBindings,\n hideDetails: true,\n class: ['resourceful__field__date'],\n clearable: true,\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n })\n ),\n h(VToolbarItems, {}, () => [\n h(\n VBtn,\n {\n icon: true,\n onClick: () => onClickClose(),\n },\n () => [\n h(VIcon, {\n icon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ]\n ),\n ]),\n ]\n ),\n h(VDivider, { class: ['flex-grow-0'] }),\n h(VDatePicker, {\n bgColor: 'transparent',\n disabled: disabled,\n divided: false,\n elevation: 0,\n firstDayOfWeek: firstDayOfWeek,\n max: max,\n min: min,\n showAdjacentMonths: true,\n showWeek: showWeek,\n width: '100%',\n hideHeader: true,\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n modeIcon: modeIcon,\n modelValue: fieldBindings.modelValue,\n ...{\n 'onUpdate:model-value': (v: unknown) => {\n onDatePickerUpdateModelValue(v)\n },\n 'onUpdate:modelValue': (v: unknown) => {\n onDatePickerUpdateModelValue(v)\n },\n },\n }),\n ])\n\n/**\n * RDateField - A sophisticated Vue component for ISO 8601 date input and selection.\n *\n * This component provides a comprehensive date input solution that combines the\n * accessibility and validation benefits of HTML5 date inputs with a completely\n * custom visual interface. It features dual input methods (manual text entry\n * and visual picker) with intelligent mobile optimization.\n *\n * ## Key Features\n *\n * - **Dual Input Interface**: Manual text entry + integrated VDatePicker\n * - **Mobile Optimized**: VBottomSheet on mobile, VDialog on desktop\n * - **ISO 8601 Standard**: All dates stored as YYYY-MM-DD strings\n * - **Luxon Formatting**: Flexible display formatting with internationalization\n * - **Browser UI Suppression**: Custom picker while preserving HTML5 benefits\n * - **Multiple Values**: Chip-based interface for date arrays\n * - **Smart Readonly**: Mobile inputs become readonly to prevent keyboard conflicts\n * - **Validation Pipeline**: Ensures valid dates with midnight time components\n *\n * ## Technical Architecture\n *\n * The component uses a sophisticated multi-layer approach:\n *\n * ### Base Layer (VTextField)\n * - HTML5 `type=\"date\"` for validation and mobile keyboard optimization\n * - Injected CSS suppresses all native browser date picker UI\n * - Maintains accessibility and semantic benefits\n *\n * ### Picker Layer (VDatePicker)\n * - Integrated via VDialog (desktop) or VBottomSheet (mobile)\n * - Full calendar navigation with month/year selection\n * - Configurable date constraints (min, max, firstDayOfWeek)\n *\n * ### Mobile Layer (Touch Optimization)\n * - Input becomes readonly on mobile to prevent keyboard conflicts\n * - onClick:control handler directly opens picker interface\n * - VBottomSheet provides optimal touch-based date selection UX\n *\n * ### Validation Layer\n * - Ensures ISO 8601 compliance (YYYY-MM-DD format)\n * - Validates time components are at midnight (pure dates)\n * - Luxon-based parsing for robust date validation\n *\n * ## Usage Patterns\n *\n * @example\n * ```vue\n * <template>\n * <!-- Basic date selection -->\n * <RDateField\n * v-model=\"selectedDate\"\n * label=\"Select Date\"\n * displayFormat=\"med\"\n * />\n *\n * <!-- Multiple dates with constraints -->\n * <RDateField\n * v-model=\"eventDates\"\n * multiple\n * label=\"Event Dates\"\n * :min=\"todayISO\"\n * :max=\"maxDateISO\"\n * displayFormat=\"medWithWeekday\"\n * />\n *\n * <!-- Read-only display -->\n * <RDateField\n * v-model=\"historicalDates\"\n * render-mode=\"read\"\n * displayFormat=\"full\"\n * multiple\n * />\n *\n * <!-- Custom picker options -->\n * <RDateField\n * v-model=\"appointmentDate\"\n * label=\"Appointment\"\n * :firstDayOfWeek=\"1\"\n * :showWeek=\"true\"\n * displayFormat=\"huge\"\n * />\n * </template>\n * ```\n *\n * ## Data Flow\n *\n * 1. **Input**: User types date or selects from picker\n * 2. **Validation**: Luxon validates ISO format and date validity\n * 3. **Storage**: ISO 8601 string stored in modelValue\n * 4. **Display**: Luxon formats for presentation using displayFormat\n * 5. **Emission**: Validated ISO string emitted to parent\n *\n * ## Browser Compatibility\n *\n * Automatic CSS injection handles native picker suppression across:\n * - WebKit: Safari, Chrome, Edge (webkit-calendar-picker-indicator)\n * - Mozilla: Firefox (moz-calendar-picker-indicator)\n * - Microsoft: Legacy Edge, IE (ms-clear, ms-reveal)\n *\n * This ensures consistent custom UI while preserving HTML5 input benefits\n * like validation, accessibility, and mobile keyboard optimization.\n */\nexport const RDateField = defineComponent({\n name: 'RDateField',\n props: makeRDateFieldProps(),\n emits: rDateFieldEmits,\n slots: Object as SlotsType<VTextFieldSlots>,\n setup(props, { emit, slots }) {\n const { mobile } = useDisplay()\n const {\n modelValue,\n theme,\n rounded,\n tile,\n loading,\n class: className,\n style,\n bgColor,\n clearable,\n clearIcon,\n active,\n color,\n baseColor,\n dirty,\n disabled,\n glow,\n error,\n flat,\n iconColor,\n label,\n persistentClear,\n reverse,\n singleLine,\n variant,\n focused,\n errorMessages,\n maxErrors,\n name,\n readonly,\n validateOn,\n width,\n minWidth,\n maxWidth,\n density,\n id,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n autofocus,\n prefix,\n placeholder,\n persistentPlaceholder,\n suffix,\n role,\n displayFormat,\n displayLocale,\n displayTimezone,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n noValuesText,\n datePickerIcon,\n firstDayOfWeek,\n max,\n min,\n showWeek,\n prevIcon,\n nextIcon,\n modeIcon,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const normalizedClassName = computed(() =>\n mergeClasses(className.value, ['resourceful__field__date'])\n )\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n active,\n theme,\n disabled,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n focused,\n noValuesText,\n 'class': normalizedClassName,\n 'onUpdate:focused': toRefs(props)['onUpdate:focused'],\n 'onClick:append': toRefs(props)['onClick:append'],\n 'onClick:appendInner': toRefs(props)['onClick:appendInner'],\n 'onClick:clear': toRefs(props)['onClick:clear'],\n 'onClick:prependInner': toRefs(props)['onClick:prependInner'],\n 'onClick:prepend': toRefs(props)['onClick:prepend'],\n 'onMousedown:control': toRefs(props)['onMousedown:control'],\n 'onClick:control': toRefs(props)['onClick:control'],\n error,\n errorMessages,\n dirty,\n onBlur,\n onChange,\n onInput,\n }\n const stringifier = computed<RFieldStringifier<string>>(\n () => (value: string | null | undefined) => {\n if ('undefined' === typeof value || null === value) return ''\n let dt = DateTime.fromISO(value, { zone: 'utc', setZone: true })\n if ('string' === typeof displayLocale.value && '' !== displayLocale.value && dt.isValid) {\n const changed = dt.setLocale(displayLocale.value)\n if (changed.isValid) {\n dt = changed\n }\n }\n if (\n 'string' === typeof displayTimezone.value &&\n '' !== displayTimezone.value &&\n dt.isValid\n ) {\n let changed: DateTime = dt\n if ('UTC' === displayTimezone.value) {\n changed = changed.setZone('utc')\n } else {\n changed = changed.setZone(displayTimezone.value)\n }\n if (changed.isValid) {\n dt = changed\n }\n }\n switch (displayFormat.value) {\n case 'huge':\n return dt.toLocaleString(DateTime.DATE_HUGE)\n case 'full':\n return dt.toLocaleString(DateTime.DATE_FULL)\n case 'medWithWeekday':\n return dt.toLocaleString(DateTime.DATE_MED_WITH_WEEKDAY)\n case 'med':\n return dt.toLocaleString(DateTime.DATE_MED)\n default:\n return dt.toLocaleString(DateTime.DATE_SHORT)\n }\n }\n )\n const vTextFieldBindings = computed<VTextFieldPublicProps & Record<string, any>>(\n () =>\n ({\n theme: theme.value,\n rounded: rounded.value,\n tile: tile.value,\n loading: loading.value,\n class: normalizedClassName.value,\n style: style.value,\n bgColor: bgColor.value,\n clearable: clearable.value,\n clearIcon: clearIcon.value,\n active: active.value,\n color: color.value,\n baseColor: baseColor.value,\n dirty: dirty.value,\n disabled: disabled.value,\n glow: glow.value,\n error: error.value,\n flat: flat.value,\n iconColor: iconColor.value,\n label: label.value,\n persistentClear: persistentClear.value,\n reverse: reverse.value,\n singleLine: singleLine.value,\n variant: variant.value,\n focused: focused.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n width: width.value,\n minWidth: minWidth.value,\n maxWidth: maxWidth.value,\n density: density.value,\n id: id.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n autofocus: autofocus.value,\n prefix: prefix.value,\n placeholder: placeholder.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n type: 'date',\n max: max.value,\n min: min.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }) satisfies VTextFieldPublicProps & Record<string, any>\n )\n const vDialogMenuButtonRef = ref<VBtn>()\n const datePickerOpen = ref(false)\n const dialogMenuButtonBindings = computed<VBtnPublicProps>(() => ({\n ref: vDialogMenuButtonRef,\n modelValue: datePickerOpen.value,\n icon: true,\n variant: 'text' as const,\n size: 'small',\n density: toUnreactive(density),\n onClick: (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n datePickerOpen.value = !datePickerOpen.value\n },\n }))\n const appendInnerSlotRenderer = () => {\n return h(VBtn, dialogMenuButtonBindings.value, () =>\n h(VIcon, {\n icon: datePickerIcon.value,\n })\n )\n }\n const commonDialogBindings = computed<CommonDialogPublicProps>(() =>\n deepmerge(\n {\n modelValue: datePickerOpen.value,\n retainFocus: true,\n theme: toUnreactive(theme),\n },\n {\n 'onUpdate:modelValue': (is: boolean) => {\n datePickerOpen.value = is\n },\n }\n )\n )\n const dialogWindowBindings = computed<VDialogPublicProps>(() => ({\n ...commonDialogBindings.value,\n maxWidth: 500,\n maxHeight: 600,\n }))\n const dialogBottomSheetBindings = computed<VBottomSheetPublicProps>(\n () => commonDialogBindings.value\n )\n const singleFieldRenderer: SingleFieldRenderer = ({\n props: fieldBindings,\n add,\n isMultiAdd,\n }) => {\n const onDatePickerUpdateModelValue = (\n value: unknown,\n forCallback: keyof typeof fieldBindings\n ) => {\n let emitable: string | null = null\n if (isLuxonDateTime(value)) {\n emitable = value.toLocal().toISODate()\n } else if (value instanceof Date) {\n emitable = DateTime.fromJSDate(value).toLocal().toISODate()\n } else if ('string' === typeof value) {\n emitable = value\n } else if (null === value) {\n emitable = null\n }\n fieldBindings[forCallback](emitable)\n }\n const appendInnerSlot = useSlot<VTextFieldSlots>('append-inner', slots)\n return h(\n VTextField,\n {\n ...vTextFieldBindings.value,\n ...fieldBindings,\n 'hideDetails': isMultiAdd ? true : hideDetails.value,\n 'readonly': isMultiAdd ? false : mobile.value ? true : readonly.value,\n 'class': isMultiAdd ? ['resourceful__field__date'] : normalizedClassName.value,\n 'onKeydown': (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n queueMicrotask(() => add())\n }\n },\n 'onClick:control'(e: MouseEvent) {\n if (!isMultiAdd && mobile.value) {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n datePickerOpen.value = true\n }\n },\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n 'append-inner': (...args: NamedSlotParameters<VTextFieldSlots, 'append-inner'>) => [\n appendInnerSlotRenderer(),\n mobile.value\n ? h(VBottomSheet, dialogBottomSheetBindings.value, () =>\n renderDatePicker(\n vTextFieldBindings.value,\n fieldBindings,\n disabled.value,\n firstDayOfWeek.value,\n max.value,\n min.value,\n showWeek.value,\n prevIcon.value,\n nextIcon.value,\n modeIcon.value,\n () => {\n datePickerOpen.value = false\n },\n (v: unknown) => {\n onDatePickerUpdateModelValue(v, 'onUpdate:model-value')\n onDatePickerUpdateModelValue(v, 'onUpdate:modelValue')\n }\n )\n )\n : h(VDialog, dialogWindowBindings.value, () =>\n renderDatePicker(\n vTextFieldBindings.value,\n fieldBindings,\n disabled.value,\n firstDayOfWeek.value,\n max.value,\n min.value,\n showWeek.value,\n prevIcon.value,\n nextIcon.value,\n modeIcon.value,\n () => {\n datePickerOpen.value = false\n },\n (v: unknown) => {\n onDatePickerUpdateModelValue(v, 'onUpdate:model-value')\n onDatePickerUpdateModelValue(v, 'onUpdate:modelValue')\n }\n )\n ),\n // @ts-expect-error\n appendInnerSlot ? appendInnerSlot(...args) : null,\n ],\n }\n )\n }\n const { composed } = useFieldComposer(\n commonProps,\n stringifier,\n singleFieldRenderer,\n emit,\n props['onUpdate:modelValue'],\n props['onUpdate:model-value'],\n modelValue,\n props.modelValue\n )\n onMounted(() => enforceRDateFieldStyles())\n return composed\n },\n})\n\nexport type RDateField = typeof RDateField & ComponentPublicInstance\n"],"names":[],"mappings":"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"}
@@ -1,26 +1,26 @@
1
1
  import { useDisplay } from "vuetify";
2
- import { S as SvgIcon } from "./index-CduefDwU.mjs";
3
- import { R as RCustomField } from "./custom-CgyU3A_B.mjs";
2
+ import { S as SvgIcon } from "./index-BJmmZly3.mjs";
3
+ import { R as RCustomField } from "./custom-Dj2ib6qT.mjs";
4
4
  import { d as deepmerge } from "./index-DGAy0amb.mjs";
5
- import { p as propsAndEmitsFactory, o as mergeClasses, i as isObject$1, t as toUnreactive, a as useSlot, s as stripUndefinedValuesFromObject } from "./utils-DehfJ8pT.mjs";
5
+ import { p as propsAndEmitsFactory, o as mergeClasses, i as isObject$1, t as toUnreactive, a as useSlot, s as stripUndefinedValuesFromObject } from "./utils-BBXjywEs.mjs";
6
6
  import { D as DateTime, F as FixedOffsetZone } from "./vendor-nhtio-millicron-mvANrUKZ.mjs";
7
- import { u as useFieldComposer } from "./field_composer-CPqM1aSV.mjs";
8
- import { T as TimezonePicker } from "./index-DLzoBhUb.mjs";
9
- import { a as pick$1, b as IconValue, o as omit$1, e as makeVDatePickerProps, c as makeVTextFieldProps$1 } from "./vendor-nhtio-vuetifiable-CS-KbH1h.mjs";
7
+ import { u as useFieldComposer } from "./field_composer-B_4w9YL9.mjs";
8
+ import { T as TimezonePicker } from "./index-BawSct2l.mjs";
9
+ import { a as pick$1, b as IconValue, o as omit$1, e as makeVDatePickerProps, c as makeVTextFieldProps$1 } from "./vendor-nhtio-vuetifiable-CTlDfYMJ.mjs";
10
10
  import { i as isLuxonDateTime } from "./index-BEXQjukb.mjs";
11
11
  import { w as warningSvg } from "./warning-CwVFcGgs.mjs";
12
- import { y as useSsrBoot, z as useItems, A as useInputIcon, q as useForm, B as transformItem, C as useFilter, E as useMenuActivator, F as useScrolling, V as VTextField, G as VList, H as VVirtualScroll, a as VDivider, I as VListSubheader, J as highlightResult, t as VCheckboxBtn, K as makeSelectProps, L as makeFilterProps, r as makeVTextFieldProps, c as commonEmitsValidators, m as makeCommonResourcefulFieldProps, b as VBottomSheet, d as VToolbar, e as VToolbarItems } from "./common-a_cd4SQg.mjs";
13
- import { a as useI18n, j as useTimezoneOptions, h as useTimezoneZones, i as useCurrentTimezone } from "./ioc-Q-KAX6x1.mjs";
12
+ import { y as useSsrBoot, z as useItems, A as useInputIcon, q as useForm, B as transformItem, C as useFilter, E as useMenuActivator, F as useScrolling, V as VTextField, G as VList, H as VVirtualScroll, b as VDivider, I as VListSubheader, J as highlightResult, t as VCheckboxBtn, K as makeSelectProps, L as makeFilterProps, r as makeVTextFieldProps, c as commonEmitsValidators, m as makeCommonResourcefulFieldProps, d as VBottomSheet, e as VToolbar, f as VToolbarItems } from "./common-CRFL2oQX.mjs";
13
+ import { a as useI18n, j as useTimezoneOptions, h as useTimezoneZones, i as useCurrentTimezone } from "./ioc-DOAKMPdw.mjs";
14
14
  import { ref, computed, createVNode, mergeProps, createElementVNode, Fragment, normalizeStyle, normalizeClass, shallowRef, watch, nextTick, provide, toRef, withDirectives, inject, vShow, createTextVNode, onScopeDispose, onMounted, h, defineComponent, toRefs, onUnmounted } from "vue";
15
- import { p as forwardRefs, P as animate, Q as getScrollParent, R as useLazy, S as makeLazyProps, o as useScopeId, c as mdiChevronDown, d as mdiChevronRight, e as mdiChevronLeft, T as mdiMapClock, U as mdiClock, f as mdiCalendar, a as mdiClose, V as VCard, g as mdiMenuDown } from "./mdi-jw9Ee7p6.mjs";
16
- import { V as VDialog } from "./VDialog-BVRDhoD7.mjs";
17
- import { g as genericComponent, p as propsFactory, a2 as useTextColor, i as useBackgroundColor, e as useRender, c as VBtn, o as omit, aQ as makeVBtnProps, aR as standardEasing, aS as keys, h as provideTheme, F as useRtl, P as useLocale, ab as useGroup, ad as IN_BROWSER, l as convertToUnit, a8 as PREFERS_REDUCED_MOTION, m as makeThemeProps, z as makeTagProps, r as makeComponentProps, u as useProxiedModel, am as useGroupItem, a5 as MaybeTransition, ar as makeGroupItemProps, ak as useDensity, ai as provideDefaults, as as makeDensityProps, aP as pick, aT as isObject, au as wrapInArray, ah as deepEqual, d as VIcon, aU as noop, ap as VAvatar, aV as ensureValidVNode, f as VDefaultsProvider, S as escapeForRegex, aW as isComposingIgnoreKey, aX as checkPrintable, aY as debounce, Q as clamp, ax as createRange, a as VImg } from "./display-CHspVOz6.mjs";
18
- import { a as VSlideGroup, m as makeVSlideGroupProps, V as VChip } from "./VChip-DWwcL8cL.mjs";
19
- import { V as VDatePicker } from "./VDatePicker-C7_ULYfO.mjs";
20
- import { a as VPicker, m as makeVPickerProps } from "./VPicker-dxKS1KK4.mjs";
21
- import { V as VSheet } from "./VSheet-B4SA9_dv.mjs";
22
- import { V as VMenu } from "./VMenu-D2biKkpd.mjs";
23
- import { V as VListItem } from "./VListItem-DojRgtpe.mjs";
15
+ import { p as forwardRefs, P as animate, Q as getScrollParent, R as useLazy, S as makeLazyProps, o as useScopeId, c as mdiChevronDown, d as mdiChevronRight, e as mdiChevronLeft, T as mdiMapClock, U as mdiClock, f as mdiCalendar, a as mdiClose, V as VCard, g as mdiMenuDown } from "./mdi-VGx06N8O.mjs";
16
+ import { V as VDialog } from "./VDialog-BljV_Pfu.mjs";
17
+ import { g as genericComponent, p as propsFactory, a2 as useTextColor, n as useBackgroundColor, e as useRender, c as VBtn, o as omit, aQ as makeVBtnProps, aR as standardEasing, aS as keys, m as provideTheme, h as useRtl, W as useLocale, ab as useGroup, ad as IN_BROWSER, s as convertToUnit, a8 as PREFERS_REDUCED_MOTION, t as makeThemeProps, E as makeTagProps, x as makeComponentProps, u as useProxiedModel, am as useGroupItem, a5 as MaybeTransition, ar as makeGroupItemProps, ak as useDensity, ai as provideDefaults, as as makeDensityProps, aP as pick, aT as isObject, au as wrapInArray, ah as deepEqual, d as VIcon, aU as noop, ap as VAvatar, aV as ensureValidVNode, f as VDefaultsProvider, Z as escapeForRegex, aW as isComposingIgnoreKey, aX as checkPrintable, aY as debounce, X as clamp, ax as createRange, a as VImg } from "./display-DNgEbAdH.mjs";
18
+ import { a as VSlideGroup, m as makeVSlideGroupProps, V as VChip } from "./VChip-DakTCdq2.mjs";
19
+ import { V as VDatePicker } from "./VDatePicker-DlZlcF2O.mjs";
20
+ import { a as VPicker, m as makeVPickerProps } from "./VPicker-D9TBI61U.mjs";
21
+ import { V as VSheet } from "./VSheet-CX-0tYk0.mjs";
22
+ import { V as VMenu } from "./VMenu-Xveh72QZ.mjs";
23
+ import { V as VListItem } from "./VListItem-CHkJtaF9.mjs";
24
24
  const VTabsSymbol = /* @__PURE__ */ Symbol.for("vuetify:v-tabs");
25
25
  const makeVTabProps = propsFactory({
26
26
  fixed: Boolean,
@@ -3340,4 +3340,4 @@ export {
3340
3340
  RDateTimeField as R,
3341
3341
  RDateTimeFieldDisplayFormat as a
3342
3342
  };
3343
- //# sourceMappingURL=date_time-BNsYnH-e.mjs.map
3343
+ //# sourceMappingURL=date_time-n4zJtaSr.mjs.map