@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.
- package/{VChip-DWwcL8cL.mjs → VChip-DakTCdq2.mjs} +2 -2
- package/{VChip-DWwcL8cL.mjs.map → VChip-DakTCdq2.mjs.map} +1 -1
- package/{VDatePicker-C7_ULYfO.mjs → VDatePicker-DlZlcF2O.mjs} +4 -4
- package/{VDatePicker-C7_ULYfO.mjs.map → VDatePicker-DlZlcF2O.mjs.map} +1 -1
- package/{VDialog-BVRDhoD7.mjs → VDialog-BljV_Pfu.mjs} +3 -3
- package/{VDialog-BVRDhoD7.mjs.map → VDialog-BljV_Pfu.mjs.map} +1 -1
- package/{VEmptyState-C2B0Znk9.mjs → VEmptyState-BubXzExt.mjs} +2 -2
- package/{VEmptyState-C2B0Znk9.mjs.map → VEmptyState-BubXzExt.mjs.map} +1 -1
- package/{VHover-DnB1GlWG.mjs → VHover-DYt7f7-R.mjs} +3 -3
- package/{VHover-DnB1GlWG.mjs.map → VHover-DYt7f7-R.mjs.map} +1 -1
- package/{VListItem-DojRgtpe.mjs → VListItem-CHkJtaF9.mjs} +4 -4
- package/{VListItem-DojRgtpe.mjs.map → VListItem-CHkJtaF9.mjs.map} +1 -1
- package/{VMenu-D2biKkpd.mjs → VMenu-Xveh72QZ.mjs} +3 -3
- package/{VMenu-D2biKkpd.mjs.map → VMenu-Xveh72QZ.mjs.map} +1 -1
- package/{VPicker-dxKS1KK4.mjs → VPicker-D9TBI61U.mjs} +4 -4
- package/{VPicker-dxKS1KK4.mjs.map → VPicker-D9TBI61U.mjs.map} +1 -1
- package/{VRadioGroup-lC_c6Ath.mjs → VRadioGroup-CFazRh5q.mjs} +4 -4
- package/{VRadioGroup-lC_c6Ath.mjs.map → VRadioGroup-CFazRh5q.mjs.map} +1 -1
- package/{VRow-BBY2gEjT.mjs → VRow-Db84ydOG.mjs} +2 -2
- package/{VRow-BBY2gEjT.mjs.map → VRow-Db84ydOG.mjs.map} +1 -1
- package/{VSheet-B4SA9_dv.mjs → VSheet-CX-0tYk0.mjs} +2 -2
- package/{VSheet-B4SA9_dv.mjs.map → VSheet-CX-0tYk0.mjs.map} +1 -1
- package/{actions-CXhEUJp6.mjs → actions-CAGyXfrI.mjs} +12 -12
- package/{actions-CXhEUJp6.mjs.map → actions-CAGyXfrI.mjs.map} +1 -1
- package/{alert-B0j6GH3V.mjs → alert-D4Zq_X5a.mjs} +11 -11
- package/{alert-B0j6GH3V.mjs.map → alert-D4Zq_X5a.mjs.map} +1 -1
- package/{bigint-DXS_rVbG.mjs → bigint-MqcXh7nS.mjs} +7 -7
- package/{bigint-DXS_rVbG.mjs.map → bigint-MqcXh7nS.mjs.map} +1 -1
- package/{boolean-BTu-4Ihs.mjs → boolean-h31TIpoH.mjs} +10 -10
- package/{boolean-BTu-4Ihs.mjs.map → boolean-h31TIpoH.mjs.map} +1 -1
- package/{clipboard-C6YTX8YB.mjs → clipboard-jPiC4eq0.mjs} +7 -7
- package/{clipboard-C6YTX8YB.mjs.map → clipboard-jPiC4eq0.mjs.map} +1 -1
- package/{common-a_cd4SQg.mjs → common-CRFL2oQX.mjs} +1362 -1362
- package/common-CRFL2oQX.mjs.map +1 -0
- package/components/autorefresh_controller.mjs +1 -1
- package/components/control_button.mjs +1 -1
- package/components/control_button_bar.mjs +2 -2
- package/components/control_menu.mjs +1 -1
- package/components/custom_field.mjs +1 -1
- package/components/exporter.mjs +1 -1
- package/components/fields/bigint.mjs +1 -1
- package/components/fields/boolean.mjs +1 -1
- package/components/fields/date.mjs +1 -1
- package/components/fields/date_time.mjs +1 -1
- package/components/fields/enum.mjs +1 -1
- package/components/fields/integer.mjs +1 -1
- package/components/fields/number.mjs +1 -1
- package/components/fields/string.mjs +1 -1
- package/components/fields/unsigned_integer.mjs +1 -1
- package/components/fields.mjs +9 -9
- package/components/form_with_validation.mjs +1 -1
- package/components/resourceful_alerter.mjs +1 -1
- package/components/resourceful_index.mjs +1 -1
- package/components/resourceful_record.mjs +2 -2
- package/components/resourceful_record_default_form.mjs +1 -1
- package/components/resourceful_record_form.mjs +1 -1
- package/components/sortable.mjs +1 -1
- package/components/svg_icon.mjs +1 -1
- package/components/timezone_picker.mjs +1 -1
- package/components.mjs +23 -23
- package/composables.mjs +11 -11
- package/{custom-CgyU3A_B.mjs → custom-Dj2ib6qT.mjs} +7 -7
- package/{custom-CgyU3A_B.mjs.map → custom-Dj2ib6qT.mjs.map} +1 -1
- package/{date-B8edF8kU.mjs → date-fxb-e0m9.mjs} +10 -10
- package/{date-B8edF8kU.mjs.map → date-fxb-e0m9.mjs.map} +1 -1
- package/{date_time-BNsYnH-e.mjs → date_time-n4zJtaSr.mjs} +18 -18
- package/{date_time-BNsYnH-e.mjs.map → date_time-n4zJtaSr.mjs.map} +1 -1
- package/{display-CHspVOz6.mjs → display-DNgEbAdH.mjs} +38 -38
- package/{display-CHspVOz6.mjs.map → display-DNgEbAdH.mjs.map} +1 -1
- package/{display-pfXaBUr6.mjs → display-DxJktZAm.mjs} +4 -4
- package/{display-pfXaBUr6.mjs.map → display-DxJktZAm.mjs.map} +1 -1
- package/{enum-DoxJn16e.mjs → enum-CjkTx4L6.mjs} +9 -9
- package/{enum-DoxJn16e.mjs.map → enum-CjkTx4L6.mjs.map} +1 -1
- package/{exceptions-BeFuVcrH.mjs → exceptions-lwCt3BKI.mjs} +2 -2
- package/{exceptions-BeFuVcrH.mjs.map → exceptions-lwCt3BKI.mjs.map} +1 -1
- package/exceptions.mjs +2 -2
- package/factories.mjs +2 -2
- package/{field_composer-CPqM1aSV.mjs → field_composer-B_4w9YL9.mjs} +3 -3
- package/{field_composer-CPqM1aSV.mjs.map → field_composer-B_4w9YL9.mjs.map} +1 -1
- package/{form-BkQlevYR.mjs → form-B7uOzLn2.mjs} +15 -15
- package/{form-BkQlevYR.mjs.map → form-B7uOzLn2.mjs.map} +1 -1
- package/{guards-D0G8CU2m.mjs → guards-BI3Zu4tN.mjs} +2 -2
- package/{guards-D0G8CU2m.mjs.map → guards-BI3Zu4tN.mjs.map} +1 -1
- package/guards.mjs +4 -4
- package/helpers.mjs +12 -12
- package/{http-ChBUYgv8.mjs → http-B7MNWS03.mjs} +2 -2
- package/{http-ChBUYgv8.mjs.map → http-B7MNWS03.mjs.map} +1 -1
- package/{http-C15bx-Gn.mjs → http-C2_4xIMQ.mjs} +9 -6
- package/{http-C15bx-Gn.mjs.map → http-C2_4xIMQ.mjs.map} +1 -1
- package/http.mjs +1 -1
- package/{index-DHoLuRuJ.mjs → index-3roRSYqk.mjs} +6 -6
- package/{index-DHoLuRuJ.mjs.map → index-3roRSYqk.mjs.map} +1 -1
- package/{index-CvhhGjZn.mjs → index-B-PEjqXn.mjs} +3 -3
- package/{index-CvhhGjZn.mjs.map → index-B-PEjqXn.mjs.map} +1 -1
- package/{index-CdaTAyzs.mjs → index-BC-vhUQX.mjs} +15 -15
- package/{index-CdaTAyzs.mjs.map → index-BC-vhUQX.mjs.map} +1 -1
- package/{index-CduefDwU.mjs → index-BJmmZly3.mjs} +3 -3
- package/{index-CduefDwU.mjs.map → index-BJmmZly3.mjs.map} +1 -1
- package/{index-DLzoBhUb.mjs → index-BawSct2l.mjs} +4 -4
- package/{index-DLzoBhUb.mjs.map → index-BawSct2l.mjs.map} +1 -1
- package/{index-Cb3Fmo7E.mjs → index-DDsxXe9z.mjs} +43 -43
- package/{index-Cb3Fmo7E.mjs.map → index-DDsxXe9z.mjs.map} +1 -1
- package/{index-BcDX9w4T.mjs → index-DLXKobUt.mjs} +8 -8
- package/{index-BcDX9w4T.mjs.map → index-DLXKobUt.mjs.map} +1 -1
- package/{index-CHELe70a.mjs → index-DWI2DYc2.mjs} +8 -8
- package/{index-CHELe70a.mjs.map → index-DWI2DYc2.mjs.map} +1 -1
- package/{index-De0W4KPF.mjs → index-Dh9Wblnw.mjs} +8 -8
- package/{index-De0W4KPF.mjs.map → index-Dh9Wblnw.mjs.map} +1 -1
- package/index.mjs +37 -37
- package/{integer-BWdmDp7S.mjs → integer-BYichJsH.mjs} +3 -3
- package/{integer-BWdmDp7S.mjs.map → integer-BYichJsH.mjs.map} +1 -1
- package/{ioc-Q-KAX6x1.mjs → ioc-DOAKMPdw.mjs} +2 -2
- package/{ioc-Q-KAX6x1.mjs.map → ioc-DOAKMPdw.mjs.map} +1 -1
- package/ioc.mjs +1 -1
- package/lucid-resourceful-vue-components.css +828 -828
- package/{mdi-jw9Ee7p6.mjs → mdi-VGx06N8O.mjs} +9 -9
- package/{mdi-jw9Ee7p6.mjs.map → mdi-VGx06N8O.mjs.map} +1 -1
- package/{number-Chf-qQs7.mjs → number-B5AryNzI.mjs} +8 -8
- package/{number-Chf-qQs7.mjs.map → number-B5AryNzI.mjs.map} +1 -1
- package/package.json +5 -5
- package/{props-eYGYq1uo.mjs → props-BZryUy0q.mjs} +4 -4
- package/{props-eYGYq1uo.mjs.map → props-BZryUy0q.mjs.map} +1 -1
- package/{props-fFnbtBgH.mjs → props-Dcuv5Iv7.mjs} +4 -4
- package/{props-fFnbtBgH.mjs.map → props-Dcuv5Iv7.mjs.map} +1 -1
- package/{renderers-DLsO8zG-.mjs → renderers-C7XOwFHb.mjs} +14 -14
- package/{renderers-DLsO8zG-.mjs.map → renderers-C7XOwFHb.mjs.map} +1 -1
- package/{string-D-UsgMTx.mjs → string-CJvxnWzd.mjs} +13 -13
- package/{string-D-UsgMTx.mjs.map → string-CJvxnWzd.mjs.map} +1 -1
- package/{unsigned_integer-7R2vw_Qn.mjs → unsigned_integer-CRQsMWxW.mjs} +4 -4
- package/{unsigned_integer-7R2vw_Qn.mjs.map → unsigned_integer-CRQsMWxW.mjs.map} +1 -1
- package/{utils-DehfJ8pT.mjs → utils-BBXjywEs.mjs} +2 -2
- package/{utils-DehfJ8pT.mjs.map → utils-BBXjywEs.mjs.map} +1 -1
- package/{validation-41gHTtyY.mjs → validation-NVIikb_s.mjs} +5 -5
- package/{validation-41gHTtyY.mjs.map → validation-NVIikb_s.mjs.map} +1 -1
- package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs} +7 -7
- package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs.map → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs.map} +1 -1
- package/common-a_cd4SQg.mjs.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { S as SvgIcon } from "./index-
|
|
1
|
+
import { S as SvgIcon } from "./index-BJmmZly3.mjs";
|
|
2
2
|
import { n as numeral } from "./numeral-DmC5bR5g.mjs";
|
|
3
|
-
import { u as useFieldComposer } from "./field_composer-
|
|
4
|
-
import { p as propsAndEmitsFactory, s as stripUndefinedValuesFromObject, a as useSlot } from "./utils-
|
|
3
|
+
import { u as useFieldComposer } from "./field_composer-B_4w9YL9.mjs";
|
|
4
|
+
import { p as propsAndEmitsFactory, s as stripUndefinedValuesFromObject, a as useSlot } from "./utils-BBXjywEs.mjs";
|
|
5
5
|
import { onScopeDispose, ref, computed, shallowRef, watch, toRef, onMounted, createElementVNode, createVNode, Fragment, mergeProps, nextTick, h, defineComponent, toRefs } from "vue";
|
|
6
|
-
import { p as propsFactory$1, o as omit$1, c as makeVTextFieldProps$1, b as IconValue, a as pick } from "./vendor-nhtio-vuetifiable-
|
|
7
|
-
import { q as useForm, V as VTextField,
|
|
8
|
-
import { p as forwardRefs, c as mdiChevronDown,
|
|
9
|
-
import { g as genericComponent, p as propsFactory,
|
|
6
|
+
import { p as propsFactory$1, o as omit$1, c as makeVTextFieldProps$1, b as IconValue, a as pick } from "./vendor-nhtio-vuetifiable-CTlDfYMJ.mjs";
|
|
7
|
+
import { q as useForm, V as VTextField, b as VDivider, r as makeVTextFieldProps, c as commonEmitsValidators, m as makeCommonResourcefulFieldProps } from "./common-CRFL2oQX.mjs";
|
|
8
|
+
import { p as forwardRefs, c as mdiChevronDown, D as mdiChevronUp, E as mdiMinus, F as mdiPlus, a as mdiClose } from "./mdi-VGx06N8O.mjs";
|
|
9
|
+
import { g as genericComponent, p as propsFactory, W as useLocale, u as useProxiedModel, X as clamp, e as useRender, c as VBtn, f as VDefaultsProvider, o as omit, Y as extractNumber, Z as escapeForRegex } from "./display-DNgEbAdH.mjs";
|
|
10
10
|
const HOLD_REPEAT = 50;
|
|
11
11
|
const HOLD_DELAY = 500;
|
|
12
12
|
function useHold(_ref) {
|
|
@@ -812,4 +812,4 @@ export {
|
|
|
812
812
|
makeVNumberInputProps as m,
|
|
813
813
|
rNumberFieldEmits as r
|
|
814
814
|
};
|
|
815
|
-
//# sourceMappingURL=number-
|
|
815
|
+
//# sourceMappingURL=number-B5AryNzI.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-Chf-qQs7.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VNumberInput/hold.js","../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VNumberInput/VNumberInput.js","../src/private/fields/number.ts"],"sourcesContent":["// Utilities\nimport { onScopeDispose } from 'vue';\nconst HOLD_REPEAT = 50;\nconst HOLD_DELAY = 500;\nexport function useHold(_ref) {\n let {\n toggleUpDown\n } = _ref;\n let timeout = -1;\n let interval = -1;\n onScopeDispose(holdStop);\n function holdStart(value) {\n holdStop();\n tick(value);\n window.addEventListener('pointerup', holdStop);\n document.addEventListener('blur', holdStop);\n timeout = window.setTimeout(() => {\n interval = window.setInterval(() => tick(value), HOLD_REPEAT);\n }, HOLD_DELAY);\n }\n function holdStop() {\n window.clearTimeout(timeout);\n window.clearInterval(interval);\n window.removeEventListener('pointerup', holdStop);\n document.removeEventListener('blur', holdStop);\n }\n onScopeDispose(holdStop);\n function tick(value) {\n toggleUpDown(value === 'up');\n }\n return {\n holdStart,\n holdStop\n };\n}\n//# sourceMappingURL=hold.js.map","import { createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VNumberInput.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VDivider } from \"../VDivider/index.js\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.js\"; // Composables\nimport { useHold } from \"./hold.js\";\nimport { useForm } from \"../../composables/form.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch } from 'vue';\nimport { clamp, escapeForRegex, extractNumber, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String,\n default: 'default'\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number,\n default: null\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER\n },\n step: {\n type: Number,\n default: 1\n },\n precision: {\n type: Number,\n default: 0\n },\n minFractionDigits: {\n type: Number,\n default: null\n },\n decimalSeparator: {\n type: String,\n validator: v => !v || v.length === 1\n },\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])\n}, 'VNumberInput');\nexport const VNumberInput = genericComponent()({\n name: 'VNumberInput',\n props: {\n ...makeVNumberInputProps()\n },\n emits: {\n 'update:focused': val => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vTextFieldRef = ref();\n const {\n holdStart,\n holdStop\n } = useHold({\n toggleUpDown\n });\n const form = useForm(props);\n const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);\n const isFocused = shallowRef(props.focused);\n const {\n decimalSeparator: decimalSeparatorFromLocale\n } = useLocale();\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);\n function correctPrecision(val) {\n let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;\n let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const fixed = precision == null ? String(val) : val.toFixed(precision);\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value);\n }\n if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {\n return fixed.replace('.', decimalSeparator.value);\n }\n let [baseDigits, fractionDigits] = fixed.split('.');\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '');\n return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);\n }\n const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));\n const _inputText = shallowRef(null);\n const _lastParsedValue = shallowRef(null);\n watch(model, val => {\n if (isFocused.value && !controlsDisabled.value && Number(_inputText.value?.replace(decimalSeparator.value, '.')) === val) {\n // ignore external changes while typing\n // e.g. 5.01{backspace}2 » should result in 5.02\n // but we emit '5' in and want to preserve '5.0'\n } else if (val == null) {\n _inputText.value = null;\n _lastParsedValue.value = null;\n } else if (!isNaN(val)) {\n _inputText.value = correctPrecision(val);\n _lastParsedValue.value = Number(_inputText.value.replace(decimalSeparator.value, '.'));\n }\n }, {\n immediate: true\n });\n const inputText = computed({\n get: () => _inputText.value,\n set(val) {\n if (val === null || val === '') {\n model.value = null;\n _inputText.value = null;\n _lastParsedValue.value = null;\n return;\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'));\n if (!isNaN(parsedValue)) {\n _inputText.value = val;\n _lastParsedValue.value = parsedValue;\n if (parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue;\n }\n }\n }\n });\n const isOutOfRange = computed(() => {\n if (_lastParsedValue.value === null) return false;\n const numberFromText = Number(_inputText.value?.replace(decimalSeparator.value, '.'));\n return numberFromText !== clamp(numberFromText, props.min, props.max);\n });\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false;\n return (model.value ?? 0) + props.step <= props.max;\n });\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false;\n return (model.value ?? 0) - props.step >= props.min;\n });\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant;\n });\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small');\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup\n }\n };\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup\n }\n };\n watch(() => props.precision, () => formatInputValue());\n watch(() => props.minFractionDigits, () => formatInputValue());\n onMounted(() => {\n clampModel();\n });\n function inferPrecision(value) {\n if (value == null) return 0;\n const str = value.toString();\n const idx = str.indexOf('.');\n return ~idx ? str.length - idx : 0;\n }\n function toggleUpDown() {\n let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (controlsDisabled.value) return;\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max));\n return;\n }\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step));\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision);\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision);\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);\n }\n }\n function onBeforeinput(e) {\n if (!e.data) return;\n const inputElement = e.target;\n const {\n value: existingTxt,\n selectionStart,\n selectionEnd\n } = inputElement ?? {};\n const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision, decimalSeparator.value);\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\d*$`).test(potentialNewInputVal)) {\n e.preventDefault();\n inputElement.value = potentialNewNumber;\n nextTick(() => inputText.value = potentialNewNumber);\n }\n if (props.precision == null) return;\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault();\n inputElement.value = potentialNewNumber;\n nextTick(() => inputText.value = potentialNewNumber);\n const cursorPosition = (selectionStart ?? 0) + e.data.length;\n inputElement.setSelectionRange(cursorPosition, cursorPosition);\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {\n e.preventDefault();\n inputElement.value = potentialNewNumber;\n nextTick(() => inputText.value = potentialNewNumber);\n }\n }\n async function onKeydown(e) {\n if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n clampModel();\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick();\n if (e.key === 'ArrowDown') {\n toggleUpDown(false);\n } else {\n toggleUpDown();\n }\n }\n }\n function onControlClick(e) {\n e.stopPropagation();\n }\n function onControlMouseup(e) {\n const el = e.currentTarget;\n el?.releasePointerCapture(e.pointerId);\n e.preventDefault();\n holdStop();\n }\n function onUpControlMousedown(e) {\n const el = e.currentTarget;\n el?.setPointerCapture(e.pointerId);\n e.preventDefault();\n e.stopPropagation();\n holdStart('up');\n }\n function onDownControlMousedown(e) {\n const el = e.currentTarget;\n el?.setPointerCapture(e.pointerId);\n e.preventDefault();\n e.stopPropagation();\n holdStart('down');\n }\n function clampModel() {\n if (controlsDisabled.value) return;\n if (!vTextFieldRef.value) return;\n const actualText = vTextFieldRef.value.value;\n const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'));\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));\n } else {\n inputText.value = null;\n }\n }\n function formatInputValue() {\n if (controlsDisabled.value) return;\n inputText.value = model.value !== null && !isNaN(model.value) ? correctPrecision(model.value, props.precision, false) : null;\n }\n function trimDecimalZeros() {\n if (controlsDisabled.value) return;\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null;\n return;\n }\n inputText.value = model.value.toString().replace('.', decimalSeparator.value);\n }\n function onFocus() {\n trimDecimalZeros();\n }\n function onBlur() {\n clampModel();\n }\n useRender(() => {\n const {\n modelValue: _,\n type,\n ...textFieldProps\n } = VTextField.filterProps(props);\n function incrementControlNode() {\n return !slots.increment ? _createVNode(VBtn, {\n \"aria-hidden\": \"true\",\n \"data-testid\": \"increment\",\n \"disabled\": !canIncrease.value,\n \"height\": controlNodeDefaultHeight.value,\n \"icon\": incrementIcon.value,\n \"key\": \"increment-btn\",\n \"onClick\": onControlClick,\n \"onPointerdown\": onUpControlMousedown,\n \"onPointerup\": onControlMouseup,\n \"onPointercancel\": onControlMouseup,\n \"size\": controlNodeSize.value,\n \"variant\": \"text\",\n \"tabindex\": \"-1\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"increment-defaults\",\n \"defaults\": {\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.increment(incrementSlotProps)]\n });\n }\n function decrementControlNode() {\n return !slots.decrement ? _createVNode(VBtn, {\n \"aria-hidden\": \"true\",\n \"data-testid\": \"decrement\",\n \"disabled\": !canDecrease.value,\n \"height\": controlNodeDefaultHeight.value,\n \"icon\": decrementIcon.value,\n \"key\": \"decrement-btn\",\n \"onClick\": onControlClick,\n \"onPointerdown\": onDownControlMousedown,\n \"onPointerup\": onControlMouseup,\n \"onPointercancel\": onControlMouseup,\n \"size\": controlNodeSize.value,\n \"variant\": \"text\",\n \"tabindex\": \"-1\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"decrement-defaults\",\n \"defaults\": {\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.decrement(decrementSlotProps)]\n });\n }\n function controlNode() {\n return _createElementVNode(\"div\", {\n \"class\": \"v-number-input__control\"\n }, [decrementControlNode(), _createVNode(VDivider, {\n \"vertical\": controlVariant.value !== 'stacked'\n }, null), incrementControlNode()]);\n }\n function dividerNode() {\n return !props.hideInput && !props.inset ? _createVNode(VDivider, {\n \"vertical\": true\n }, null) : undefined;\n }\n const appendInnerControl = controlVariant.value === 'split' ? _createElementVNode(\"div\", {\n \"class\": \"v-number-input__control\"\n }, [_createVNode(VDivider, {\n \"vertical\": true\n }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : _createElementVNode(_Fragment, null, [dividerNode(), controlNode()]);\n const hasAppendInner = slots['append-inner'] || appendInnerControl;\n const prependInnerControl = controlVariant.value === 'split' ? _createElementVNode(\"div\", {\n \"class\": \"v-number-input__control\"\n }, [decrementControlNode(), _createVNode(VDivider, {\n \"vertical\": true\n }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? _createElementVNode(_Fragment, null, [controlNode(), dividerNode()]) : undefined;\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl;\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": inputText.value,\n \"onUpdate:modelValue\": $event => inputText.value = $event,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.value,\n \"error\": props.error || isOutOfRange.value || undefined,\n \"onBeforeinput\": onBeforeinput,\n \"onFocus\": onFocus,\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"class\": ['v-number-input', {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked'\n }, props.class],\n \"style\": props.style,\n \"inputmode\": \"decimal\"\n }), {\n ...slots,\n 'append-inner': hasAppendInner ? function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createElementVNode(_Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);\n } : undefined,\n 'prepend-inner': hasPrependInner ? function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _createElementVNode(_Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);\n } : undefined\n });\n });\n return forwardRefs({}, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VNumberInput.js.map","/*\n|--------------------------------------------------------------------------\n| Resourceful Number Field\n|--------------------------------------------------------------------------\n|\n| A professional numeric input field component built on VNumberInput that supports\n| both single and multiple number/bigint values with advanced formatting capabilities.\n|\n| **Key Features:**\n| - **Professional Number Input**: Built on VNumberInput with custom control overrides\n| - **Numeral.js Integration**: Advanced formatting with locale support (e.g., \"0,0.00\", \"$0,0\")\n| - **BigInt Support**: Handles both standard numbers and JavaScript BigInt values\n| - **Multiple Mode**: Combobox-style interface with formatted chips and dialog input\n| - **Custom Controls**: Fully customizable increment/decrement/collapse/expand icons\n| - **Smart Icon Adaptation**: Icons adapt based on control variant (split vs stacked)\n| - **Read Mode**: Formatted display with Oxford comma lists for multiple values\n| - **Validation**: Comprehensive min/max/step validation with boundary checking\n| - **Accessibility**: Full keyboard navigation and screen reader support\n|\n| **Control Variants:**\n| - `default`: Standard stacked controls with up/down arrows\n| - `stacked`: Vertical arrangement with collapse/expand icons\n| - `split`: Side-by-side controls with plus/minus icons\n| - `hidden`: No visible controls (input only)\n|\n| **Usage Examples:**\n| ```vue\n| <!-- Single currency field -->\n| <RNumberField\n| v-model=\"amount\"\n| label=\"Amount\"\n| format=\"$0,0.00\"\n| :min=\"0\"\n| :max=\"1000000\"\n| />\n|\n| <!-- Multiple values with percentage formatting -->\n| <RNumberField\n| v-model=\"percentages\"\n| multiple\n| label=\"Success Rates\"\n| format=\"0.00%\"\n| control-variant=\"split\"\n| />\n|\n| <!-- Read-only display -->\n| <RNumberField\n| v-model=\"totals\"\n| multiple\n| label=\"Quarterly Totals\"\n| format=\"$0,0.00\"\n| render-mode=\"read\"\n| />\n| ```\n|\n| The component automatically handles number validation, formatting, and provides\n| a consistent user experience across single/multiple/read modes using the unified\n| field composer architecture.\n*/\n\nimport { SvgIcon } from '../svg-icon'\nimport { default as numeral } from 'numeral'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { useFieldComposer } from './field_composer'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { h, defineComponent, toRefs, computed } from 'vue'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VNumberInput } from 'vuetify/components/VNumberInput'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { stripUndefinedValuesFromObject, useSlot } from '../common/utils'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { mdiClose, mdiPlus, mdiMinus, mdiChevronUp, mdiChevronDown } from '@mdi/js'\nimport { makeVTextFieldProps } from '@nhtio/vuetifiable/components/VTextField/VTextField'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\n/**\n * Available control variants for VNumberInput increment/decrement controls.\n *\n * **Control Variants:**\n * - `default`: Standard stacked controls with up/down arrows\n * - `stacked`: Vertical arrangement with collapse/expand icons\n * - `split`: Side-by-side controls with plus/minus icons\n * - `hidden`: No visible controls (input only)\n *\n * @public\n */\nexport const ControlVariant = ['default', 'stacked', 'split', 'hidden'] as const\n\n/**\n * Union type of available control variants for VNumberInput.\n *\n * Controls the visual arrangement and behavior of increment/decrement buttons:\n * - Icons automatically adapt based on variant selection\n * - Button sizing and layout adjusts for optimal UX\n * - `split` variant uses +/- icons, others use ↑/↓ icons\n *\n * @public\n */\nexport type ControlVariant = (typeof ControlVariant)[number]\n\nexport const makeVNumberInputProps = propsFactory(\n {\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n },\n 'VNumberInput'\n)\n\nexport type VNumberInputSlots = ExtractSlotDefinitions<typeof VNumberInput.slots>\ntype VNumberInputPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVNumberInputProps>>\n\ntype VNumberInputIncrementSlotArgs = NamedSlotParameters<VNumberInputSlots, 'increment'>\ntype VNumberInputDecrementSlotArgs = NamedSlotParameters<VNumberInputSlots, 'decrement'>\n\n/**\n * Valid value types for RNumberField components.\n *\n * Supports both standard JavaScript numbers and BigInt values for handling\n * large integers beyond the safe integer range (±2^53-1).\n *\n * **Usage:**\n * - `number`: Standard floating-point numbers for most use cases\n * - `bigint`: Large integers for financial calculations, IDs, timestamps\n *\n * @example\n * ```typescript\n * const amount: RNumberFieldValue = 123.45\n * const largeId: RNumberFieldValue = 9007199254740992n\n * ```\n *\n * @public\n */\nexport type RNumberFieldValue = number | bigint\n\nconst isValidSingleRNumberFieldValue = (value: RNumberFieldValue) => {\n if (typeof value === 'bigint') return true\n if (typeof value === 'number' && !Number.isNaN(value) && Number.isFinite(value)) return true\n return false\n}\n\nconst isValidRNumberFieldValue = (\n value: RNumberFieldValue | RNumberFieldValue[] | null | undefined\n) => {\n if ('undefined' === typeof value || null === value) return true\n if (Array.isArray(value)) return value.every(isValidSingleRNumberFieldValue)\n return isValidSingleRNumberFieldValue(value)\n}\n\nconst { makeProps: makeRNumberFieldProps, emits: rNumberFieldEmits } = propsAndEmitsFactory(\n {\n ...pick(\n makeVNumberInputProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n [\n 'focused',\n 'disabled',\n 'error',\n 'errorMessages',\n 'maxErrors',\n 'name',\n 'label',\n 'readonly',\n 'validateOn',\n 'theme',\n 'width',\n 'maxWidth',\n 'minWidth',\n 'density',\n 'class',\n 'style',\n 'id',\n 'baseColor',\n 'color',\n 'glow',\n 'iconColor',\n 'hideDetails',\n 'hint',\n 'persistentHint',\n 'messages',\n 'direction',\n 'variant',\n 'clearIcon',\n 'controlVariant',\n 'min',\n 'max',\n 'step',\n 'precision',\n ]\n ),\n modelValue: {\n type: [String, Number, Array, Object] as PropType<\n RNumberFieldValue | RNumberFieldValue[] | null | undefined\n >,\n default: undefined,\n },\n format: {\n type: String,\n default: '0,0',\n },\n incrementIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiPlus }),\n },\n decrementIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMinus }),\n },\n collapseIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiChevronUp }),\n },\n expandIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiChevronDown }),\n },\n ...makeCommonResourcefulFieldProps(),\n },\n {\n 'update:modelValue': (value: RNumberFieldValue | RNumberFieldValue[] | null | undefined) =>\n isValidRNumberFieldValue(value),\n 'update:model-value': (value: RNumberFieldValue | RNumberFieldValue[] | null | undefined) =>\n isValidRNumberFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RNumberField'\n)\n\n/**\n * Factory function to create props for RNumberField components.\n *\n * Generates a comprehensive set of props that combine VNumberInput properties\n * with resourceful field capabilities, including formatting, icons, and validation.\n *\n * **Included Props:**\n * - **Core VNumberInput props**: min, max, step, precision, controlVariant\n * - **Formatting props**: format (numeral.js patterns)\n * - **Icon props**: incrementIcon, decrementIcon, collapseIcon, expandIcon\n * - **Common field props**: multiple, renderMode, choices, validation\n * - **Vuetify props**: variant, density, color, theme, etc.\n *\n * @example\n * ```typescript\n * const MyNumberField = defineComponent({\n * props: makeRNumberFieldProps(),\n * // ... component implementation\n * })\n * ```\n *\n * @returns Props factory for RNumberField components\n * @public\n */\nexport { makeRNumberFieldProps, rNumberFieldEmits }\n\n/**\n * Public props interface for RNumberField components.\n *\n * Provides type-safe access to all available props, including VNumberInput\n * properties, custom formatting options, and resourceful field capabilities.\n *\n * **Key Props:**\n * - `modelValue`: The current number value(s)\n * - `multiple`: Enable array input mode with chips\n * - `format`: Numeral.js format string (e.g., \"0,0.00\", \"$0,0\")\n * - `min`/`max`: Numeric range validation\n * - `step`: Increment/decrement step size\n * - `controlVariant`: Control button layout style\n * - `renderMode`: Display mode (\"edit\" | \"read\")\n *\n * @example\n * ```typescript\n * const props: RNumberFieldProps = {\n * modelValue: 123.45,\n * format: \"$0,0.00\",\n * min: 0,\n * max: 1000000,\n * controlVariant: \"split\"\n * }\n * ```\n *\n * @public\n */\nexport type RNumberFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRNumberFieldProps>>\n\n/**\n * Professional numeric input field component with advanced formatting and validation.\n *\n * A sophisticated number field built on VNumberInput that provides enterprise-grade\n * numeric input capabilities with numeral.js formatting, custom controls, and full\n * support for single/multiple/read modes through the unified field composer architecture.\n *\n * **Core Features:**\n * - **Advanced Formatting**: Numeral.js integration for currency, percentages, thousands\n * - **Custom Controls**: Fully customizable increment/decrement buttons with smart icons\n * - **BigInt Support**: Handles large integers beyond JavaScript's safe integer range\n * - **Multiple Mode**: Chip-based interface for array input with formatted display\n * - **Read Mode**: Formatted display with Oxford comma lists for multiple values\n * - **Smart Validation**: Min/max/step boundary checking with visual feedback\n * - **Accessibility**: Full keyboard navigation and screen reader support\n *\n * **Control Variants:**\n * - `default`: Standard stacked controls with up/down arrows\n * - `stacked`: Vertical arrangement optimized for compact spaces\n * - `split`: Side-by-side controls with intuitive +/- icons\n * - `hidden`: Input-only mode without visible controls\n *\n * **Formatting Examples:**\n * - Currency: `format=\"$0,0.00\"` → `$1,234.56`\n * - Percentage: `format=\"0.00%\"` → `45.67%`\n * - Thousands: `format=\"0,0\"` → `1,234,567`\n * - Decimal: `format=\"0.000\"` → `123.456`\n *\n * @example\n * ```vue\n * <!-- Single currency input -->\n * <RNumberField\n * v-model=\"amount\"\n * label=\"Amount\"\n * format=\"$0,0.00\"\n * :min=\"0\"\n * :max=\"1000000\"\n * control-variant=\"split\"\n * />\n *\n * <!-- Multiple percentages -->\n * <RNumberField\n * v-model=\"rates\"\n * multiple\n * label=\"Success Rates\"\n * format=\"0.00%\"\n * :min=\"0\"\n * :max=\"100\"\n * />\n *\n * <!-- Read-only display -->\n * <RNumberField\n * v-model=\"totals\"\n * multiple\n * label=\"Quarterly Results\"\n * format=\"$0,0.00\"\n * render-mode=\"read\"\n * />\n * ```\n *\n * **Validation:**\n * - Automatically validates min/max boundaries\n * - Rejects NaN and Infinity values\n * - Step validation for increment/decrement operations\n * - Custom validation through standard Vuetify patterns\n *\n * **Accessibility:**\n * - Full keyboard navigation support\n * - Screen reader announcements for value changes\n * - Proper ARIA labels and descriptions\n * - Focus management for complex interactions\n *\n * @public\n */\nexport const RNumberField = defineComponent({\n name: 'RNumberField',\n props: makeRNumberFieldProps(),\n emits: rNumberFieldEmits,\n slots: Object as SlotsType<VNumberInputSlots>,\n setup(props, { emit, slots }) {\n const {\n focused,\n disabled,\n error,\n errorMessages,\n maxErrors,\n name,\n label,\n readonly,\n validateOn,\n theme,\n width,\n maxWidth,\n minWidth,\n density,\n class: className,\n style,\n id,\n baseColor,\n color,\n glow,\n iconColor,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n modelValue,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n active,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n noValuesText,\n clearIcon,\n controlVariant,\n min,\n max,\n step,\n precision,\n format,\n incrementIcon,\n decrementIcon,\n collapseIcon,\n expandIcon,\n dirty,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const stringifier = computed<RFieldStringifier<RNumberFieldValue>>(() => {\n return (val: RNumberFieldValue) => {\n if (!isValidSingleRNumberFieldValue(val)) return ''\n return numeral(val.toString()).format(format.value)\n }\n })\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\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 choices,\n allowUnspecifiedChoices,\n 'class': className,\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 VNumberInputFieldBindings = computed<VNumberInputPublicProps>(() =>\n stripUndefinedValuesFromObject({\n focused: focused.value,\n disabled: disabled.value,\n error: error.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n label: label.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n theme: theme.value,\n width: width.value,\n maxWidth: maxWidth.value,\n minWidth: minWidth.value,\n density: density.value,\n class: className.value,\n style: style.value,\n id: id.value,\n baseColor: baseColor.value,\n color: color.value,\n glow: glow.value,\n iconColor: iconColor.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n variant: variant.value,\n clearIcon: clearIcon.value,\n controlVariant: controlVariant.value,\n min: min.value,\n max: max.value,\n step: step.value,\n precision: precision.value,\n active: active.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n dirty: dirty.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n })\n )\n const normalizedIncrementIcon = computed(() =>\n controlVariant.value === 'split' ? incrementIcon.value : collapseIcon.value\n )\n const normalizedDecrementIcon = computed(() =>\n controlVariant.value === 'split' ? decrementIcon.value : expandIcon.value\n )\n const normalizedControlNodeSize = computed(() =>\n controlVariant.value === 'split' ? 'default' : 'small'\n )\n const normalizedControlNodeDefaultHeight = computed(() =>\n controlVariant.value === 'stacked' ? 'auto' : '100%'\n )\n const normalizedControlsDisabled = computed(() => disabled.value || readonly.value)\n const singleFieldRenderer: SingleFieldRenderer = ({\n props: fieldBindings,\n isMultiAdd,\n add,\n }) => {\n const canIncrease = computed(() => {\n if (normalizedControlsDisabled.value) return false\n return ((fieldBindings.modelValue ?? 0) as number) + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (normalizedControlsDisabled.value) return false\n return ((fieldBindings.modelValue ?? 0) as number) - props.step >= props.min\n })\n const renderDefaultIncrementSlot = (...args: VNumberInputIncrementSlotArgs) => {\n if (!args) return null\n const { onClick, onPointerup, onPointerdown, onPointercancel } = args[0].props\n return h(VBtn, {\n disabled: !canIncrease.value,\n flat: true,\n height: normalizedControlNodeDefaultHeight.value,\n icon: normalizedIncrementIcon.value,\n onClick,\n onPointerup,\n onPointerdown,\n onPointercancel,\n size: normalizedControlNodeSize.value,\n tabindex: '-1',\n })\n }\n const renderDefaultDecrementSlot = (...args: VNumberInputDecrementSlotArgs) => {\n if (!args) return null\n const { onClick, onPointerup, onPointerdown, onPointercancel } = args[0].props\n return h(VBtn, {\n disabled: !canDecrease.value,\n flat: true,\n height: normalizedControlNodeDefaultHeight.value,\n icon: normalizedDecrementIcon.value,\n onClick,\n onPointerup,\n onPointerdown,\n onPointercancel,\n size: normalizedControlNodeSize.value,\n tabindex: '-1',\n })\n }\n const incrementSlot = useSlot<VNumberInputSlots>('increment', slots)\n const decrementSlot = useSlot<VNumberInputSlots>('decrement', slots)\n const modelValueToDisplay =\n typeof fieldBindings.modelValue === 'number' ? fieldBindings.modelValue : null\n return h(\n VNumberInput,\n {\n ...VNumberInputFieldBindings.value,\n ...fieldBindings,\n modelValue: modelValueToDisplay,\n class: isMultiAdd ? [] : VNumberInputFieldBindings.value.class,\n hideDetails: isMultiAdd ? true : VNumberInputFieldBindings.value.hideDetails,\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n queueMicrotask(() => add())\n }\n },\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n increment: (...args: VNumberInputIncrementSlotArgs) =>\n // @ts-expect-error\n incrementSlot ? incrementSlot(...args) : renderDefaultIncrementSlot(...args),\n decrement: (...args: VNumberInputDecrementSlotArgs) =>\n // @ts-expect-error\n decrementSlot ? decrementSlot(...args) : renderDefaultDecrementSlot(...args),\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 return composed\n },\n})\n\n/**\n * Type definition for the RNumberField component instance.\n *\n * Provides type-safe access to the component's public interface, including\n * all props, slots, emits, and exposed methods. Useful for programmatic\n * component creation and advanced TypeScript integration.\n *\n * @example\n * ```typescript\n * import type { RNumberField } from './number'\n *\n * // Component reference typing\n * const numberFieldRef = ref<InstanceType<RNumberField>>()\n *\n * // Programmatic component creation\n * const NumberFieldComponent: RNumberField = defineComponent({\n * // ... implementation\n * })\n * ```\n *\n * @public\n */\nexport type RNumberField = typeof RNumberField & ComponentPublicInstance\n"],"names":["makeVNumberInputProps","_createVNode","_createElementVNode","_Fragment","_mergeProps","propsFactory","omit","makeVTextFieldProps"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
1
|
+
{"version":3,"file":"number-B5AryNzI.mjs","sources":["../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VNumberInput/hold.js","../node_modules/.pnpm/vuetify@3.11.6_typescript@5.9.3_vue@3.5.26_typescript@5.9.3_/node_modules/vuetify/lib/components/VNumberInput/VNumberInput.js","../src/private/fields/number.ts"],"sourcesContent":["// Utilities\nimport { onScopeDispose } from 'vue';\nconst HOLD_REPEAT = 50;\nconst HOLD_DELAY = 500;\nexport function useHold(_ref) {\n let {\n toggleUpDown\n } = _ref;\n let timeout = -1;\n let interval = -1;\n onScopeDispose(holdStop);\n function holdStart(value) {\n holdStop();\n tick(value);\n window.addEventListener('pointerup', holdStop);\n document.addEventListener('blur', holdStop);\n timeout = window.setTimeout(() => {\n interval = window.setInterval(() => tick(value), HOLD_REPEAT);\n }, HOLD_DELAY);\n }\n function holdStop() {\n window.clearTimeout(timeout);\n window.clearInterval(interval);\n window.removeEventListener('pointerup', holdStop);\n document.removeEventListener('blur', holdStop);\n }\n onScopeDispose(holdStop);\n function tick(value) {\n toggleUpDown(value === 'up');\n }\n return {\n holdStart,\n holdStop\n };\n}\n//# sourceMappingURL=hold.js.map","import { createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VNumberInput.css\";\n\n// Components\nimport { VBtn } from \"../VBtn/index.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VDivider } from \"../VDivider/index.js\";\nimport { makeVTextFieldProps, VTextField } from \"../VTextField/VTextField.js\"; // Composables\nimport { useHold } from \"./hold.js\";\nimport { useForm } from \"../../composables/form.js\";\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch } from 'vue';\nimport { clamp, escapeForRegex, extractNumber, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String,\n default: 'default'\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number,\n default: null\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER\n },\n step: {\n type: Number,\n default: 1\n },\n precision: {\n type: Number,\n default: 0\n },\n minFractionDigits: {\n type: Number,\n default: null\n },\n decimalSeparator: {\n type: String,\n validator: v => !v || v.length === 1\n },\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue'])\n}, 'VNumberInput');\nexport const VNumberInput = genericComponent()({\n name: 'VNumberInput',\n props: {\n ...makeVNumberInputProps()\n },\n emits: {\n 'update:focused': val => true,\n 'update:modelValue': val => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const vTextFieldRef = ref();\n const {\n holdStart,\n holdStop\n } = useHold({\n toggleUpDown\n });\n const form = useForm(props);\n const controlsDisabled = computed(() => form.isDisabled.value || form.isReadonly.value);\n const isFocused = shallowRef(props.focused);\n const {\n decimalSeparator: decimalSeparatorFromLocale\n } = useLocale();\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value);\n function correctPrecision(val) {\n let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;\n let trim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const fixed = precision == null ? String(val) : val.toFixed(precision);\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value);\n }\n if (props.minFractionDigits === null || precision !== null && precision < props.minFractionDigits) {\n return fixed.replace('.', decimalSeparator.value);\n }\n let [baseDigits, fractionDigits] = fixed.split('.');\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0').replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '');\n return [baseDigits, fractionDigits].filter(Boolean).join(decimalSeparator.value);\n }\n const model = useProxiedModel(props, 'modelValue', null, val => val ?? null, val => val == null ? val ?? null : clamp(Number(val), props.min, props.max));\n const _inputText = shallowRef(null);\n const _lastParsedValue = shallowRef(null);\n watch(model, val => {\n if (isFocused.value && !controlsDisabled.value && Number(_inputText.value?.replace(decimalSeparator.value, '.')) === val) {\n // ignore external changes while typing\n // e.g. 5.01{backspace}2 » should result in 5.02\n // but we emit '5' in and want to preserve '5.0'\n } else if (val == null) {\n _inputText.value = null;\n _lastParsedValue.value = null;\n } else if (!isNaN(val)) {\n _inputText.value = correctPrecision(val);\n _lastParsedValue.value = Number(_inputText.value.replace(decimalSeparator.value, '.'));\n }\n }, {\n immediate: true\n });\n const inputText = computed({\n get: () => _inputText.value,\n set(val) {\n if (val === null || val === '') {\n model.value = null;\n _inputText.value = null;\n _lastParsedValue.value = null;\n return;\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'));\n if (!isNaN(parsedValue)) {\n _inputText.value = val;\n _lastParsedValue.value = parsedValue;\n if (parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue;\n }\n }\n }\n });\n const isOutOfRange = computed(() => {\n if (_lastParsedValue.value === null) return false;\n const numberFromText = Number(_inputText.value?.replace(decimalSeparator.value, '.'));\n return numberFromText !== clamp(numberFromText, props.min, props.max);\n });\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false;\n return (model.value ?? 0) + props.step <= props.max;\n });\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false;\n return (model.value ?? 0) - props.step >= props.min;\n });\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant;\n });\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse');\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand');\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small');\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup\n }\n };\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup\n }\n };\n watch(() => props.precision, () => formatInputValue());\n watch(() => props.minFractionDigits, () => formatInputValue());\n onMounted(() => {\n clampModel();\n });\n function inferPrecision(value) {\n if (value == null) return 0;\n const str = value.toString();\n const idx = str.indexOf('.');\n return ~idx ? str.length - idx : 0;\n }\n function toggleUpDown() {\n let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (controlsDisabled.value) return;\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max));\n return;\n }\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step));\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision);\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision);\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision);\n }\n }\n function onBeforeinput(e) {\n if (!e.data) return;\n const inputElement = e.target;\n const {\n value: existingTxt,\n selectionStart,\n selectionEnd\n } = inputElement ?? {};\n const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision, decimalSeparator.value);\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\d*$`).test(potentialNewInputVal)) {\n e.preventDefault();\n inputElement.value = potentialNewNumber;\n nextTick(() => inputText.value = potentialNewNumber);\n }\n if (props.precision == null) return;\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault();\n inputElement.value = potentialNewNumber;\n nextTick(() => inputText.value = potentialNewNumber);\n const cursorPosition = (selectionStart ?? 0) + e.data.length;\n inputElement.setSelectionRange(cursorPosition, cursorPosition);\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.endsWith(decimalSeparator.value)) {\n e.preventDefault();\n inputElement.value = potentialNewNumber;\n nextTick(() => inputText.value = potentialNewNumber);\n }\n }\n async function onKeydown(e) {\n if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n clampModel();\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick();\n if (e.key === 'ArrowDown') {\n toggleUpDown(false);\n } else {\n toggleUpDown();\n }\n }\n }\n function onControlClick(e) {\n e.stopPropagation();\n }\n function onControlMouseup(e) {\n const el = e.currentTarget;\n el?.releasePointerCapture(e.pointerId);\n e.preventDefault();\n holdStop();\n }\n function onUpControlMousedown(e) {\n const el = e.currentTarget;\n el?.setPointerCapture(e.pointerId);\n e.preventDefault();\n e.stopPropagation();\n holdStart('up');\n }\n function onDownControlMousedown(e) {\n const el = e.currentTarget;\n el?.setPointerCapture(e.pointerId);\n e.preventDefault();\n e.stopPropagation();\n holdStart('down');\n }\n function clampModel() {\n if (controlsDisabled.value) return;\n if (!vTextFieldRef.value) return;\n const actualText = vTextFieldRef.value.value;\n const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'));\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max));\n } else {\n inputText.value = null;\n }\n }\n function formatInputValue() {\n if (controlsDisabled.value) return;\n inputText.value = model.value !== null && !isNaN(model.value) ? correctPrecision(model.value, props.precision, false) : null;\n }\n function trimDecimalZeros() {\n if (controlsDisabled.value) return;\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null;\n return;\n }\n inputText.value = model.value.toString().replace('.', decimalSeparator.value);\n }\n function onFocus() {\n trimDecimalZeros();\n }\n function onBlur() {\n clampModel();\n }\n useRender(() => {\n const {\n modelValue: _,\n type,\n ...textFieldProps\n } = VTextField.filterProps(props);\n function incrementControlNode() {\n return !slots.increment ? _createVNode(VBtn, {\n \"aria-hidden\": \"true\",\n \"data-testid\": \"increment\",\n \"disabled\": !canIncrease.value,\n \"height\": controlNodeDefaultHeight.value,\n \"icon\": incrementIcon.value,\n \"key\": \"increment-btn\",\n \"onClick\": onControlClick,\n \"onPointerdown\": onUpControlMousedown,\n \"onPointerup\": onControlMouseup,\n \"onPointercancel\": onControlMouseup,\n \"size\": controlNodeSize.value,\n \"variant\": \"text\",\n \"tabindex\": \"-1\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"increment-defaults\",\n \"defaults\": {\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.increment(incrementSlotProps)]\n });\n }\n function decrementControlNode() {\n return !slots.decrement ? _createVNode(VBtn, {\n \"aria-hidden\": \"true\",\n \"data-testid\": \"decrement\",\n \"disabled\": !canDecrease.value,\n \"height\": controlNodeDefaultHeight.value,\n \"icon\": decrementIcon.value,\n \"key\": \"decrement-btn\",\n \"onClick\": onControlClick,\n \"onPointerdown\": onDownControlMousedown,\n \"onPointerup\": onControlMouseup,\n \"onPointercancel\": onControlMouseup,\n \"size\": controlNodeSize.value,\n \"variant\": \"text\",\n \"tabindex\": \"-1\"\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"decrement-defaults\",\n \"defaults\": {\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text'\n }\n }\n }, {\n default: () => [slots.decrement(decrementSlotProps)]\n });\n }\n function controlNode() {\n return _createElementVNode(\"div\", {\n \"class\": \"v-number-input__control\"\n }, [decrementControlNode(), _createVNode(VDivider, {\n \"vertical\": controlVariant.value !== 'stacked'\n }, null), incrementControlNode()]);\n }\n function dividerNode() {\n return !props.hideInput && !props.inset ? _createVNode(VDivider, {\n \"vertical\": true\n }, null) : undefined;\n }\n const appendInnerControl = controlVariant.value === 'split' ? _createElementVNode(\"div\", {\n \"class\": \"v-number-input__control\"\n }, [_createVNode(VDivider, {\n \"vertical\": true\n }, null), incrementControlNode()]) : props.reverse || controlVariant.value === 'hidden' ? undefined : _createElementVNode(_Fragment, null, [dividerNode(), controlNode()]);\n const hasAppendInner = slots['append-inner'] || appendInnerControl;\n const prependInnerControl = controlVariant.value === 'split' ? _createElementVNode(\"div\", {\n \"class\": \"v-number-input__control\"\n }, [decrementControlNode(), _createVNode(VDivider, {\n \"vertical\": true\n }, null)]) : props.reverse && controlVariant.value !== 'hidden' ? _createElementVNode(_Fragment, null, [controlNode(), dividerNode()]) : undefined;\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl;\n return _createVNode(VTextField, _mergeProps({\n \"ref\": vTextFieldRef\n }, textFieldProps, {\n \"modelValue\": inputText.value,\n \"onUpdate:modelValue\": $event => inputText.value = $event,\n \"focused\": isFocused.value,\n \"onUpdate:focused\": $event => isFocused.value = $event,\n \"validationValue\": model.value,\n \"error\": props.error || isOutOfRange.value || undefined,\n \"onBeforeinput\": onBeforeinput,\n \"onFocus\": onFocus,\n \"onBlur\": onBlur,\n \"onKeydown\": onKeydown,\n \"class\": ['v-number-input', {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked'\n }, props.class],\n \"style\": props.style,\n \"inputmode\": \"decimal\"\n }), {\n ...slots,\n 'append-inner': hasAppendInner ? function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _createElementVNode(_Fragment, null, [slots['append-inner']?.(...args), appendInnerControl]);\n } : undefined,\n 'prepend-inner': hasPrependInner ? function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return _createElementVNode(_Fragment, null, [prependInnerControl, slots['prepend-inner']?.(...args)]);\n } : undefined\n });\n });\n return forwardRefs({}, vTextFieldRef);\n }\n});\n//# sourceMappingURL=VNumberInput.js.map","/*\n|--------------------------------------------------------------------------\n| Resourceful Number Field\n|--------------------------------------------------------------------------\n|\n| A professional numeric input field component built on VNumberInput that supports\n| both single and multiple number/bigint values with advanced formatting capabilities.\n|\n| **Key Features:**\n| - **Professional Number Input**: Built on VNumberInput with custom control overrides\n| - **Numeral.js Integration**: Advanced formatting with locale support (e.g., \"0,0.00\", \"$0,0\")\n| - **BigInt Support**: Handles both standard numbers and JavaScript BigInt values\n| - **Multiple Mode**: Combobox-style interface with formatted chips and dialog input\n| - **Custom Controls**: Fully customizable increment/decrement/collapse/expand icons\n| - **Smart Icon Adaptation**: Icons adapt based on control variant (split vs stacked)\n| - **Read Mode**: Formatted display with Oxford comma lists for multiple values\n| - **Validation**: Comprehensive min/max/step validation with boundary checking\n| - **Accessibility**: Full keyboard navigation and screen reader support\n|\n| **Control Variants:**\n| - `default`: Standard stacked controls with up/down arrows\n| - `stacked`: Vertical arrangement with collapse/expand icons\n| - `split`: Side-by-side controls with plus/minus icons\n| - `hidden`: No visible controls (input only)\n|\n| **Usage Examples:**\n| ```vue\n| <!-- Single currency field -->\n| <RNumberField\n| v-model=\"amount\"\n| label=\"Amount\"\n| format=\"$0,0.00\"\n| :min=\"0\"\n| :max=\"1000000\"\n| />\n|\n| <!-- Multiple values with percentage formatting -->\n| <RNumberField\n| v-model=\"percentages\"\n| multiple\n| label=\"Success Rates\"\n| format=\"0.00%\"\n| control-variant=\"split\"\n| />\n|\n| <!-- Read-only display -->\n| <RNumberField\n| v-model=\"totals\"\n| multiple\n| label=\"Quarterly Totals\"\n| format=\"$0,0.00\"\n| render-mode=\"read\"\n| />\n| ```\n|\n| The component automatically handles number validation, formatting, and provides\n| a consistent user experience across single/multiple/read modes using the unified\n| field composer architecture.\n*/\n\nimport { SvgIcon } from '../svg-icon'\nimport { default as numeral } from 'numeral'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { useFieldComposer } from './field_composer'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { h, defineComponent, toRefs, computed } from 'vue'\nimport { omit, pick } from '@nhtio/vuetifiable/util/helpers'\nimport { VNumberInput } from 'vuetify/components/VNumberInput'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { stripUndefinedValuesFromObject, useSlot } from '../common/utils'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { mdiClose, mdiPlus, mdiMinus, mdiChevronUp, mdiChevronDown } from '@mdi/js'\nimport { makeVTextFieldProps } from '@nhtio/vuetifiable/components/VTextField/VTextField'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\n/**\n * Available control variants for VNumberInput increment/decrement controls.\n *\n * **Control Variants:**\n * - `default`: Standard stacked controls with up/down arrows\n * - `stacked`: Vertical arrangement with collapse/expand icons\n * - `split`: Side-by-side controls with plus/minus icons\n * - `hidden`: No visible controls (input only)\n *\n * @public\n */\nexport const ControlVariant = ['default', 'stacked', 'split', 'hidden'] as const\n\n/**\n * Union type of available control variants for VNumberInput.\n *\n * Controls the visual arrangement and behavior of increment/decrement buttons:\n * - Icons automatically adapt based on variant selection\n * - Button sizing and layout adjusts for optimal UX\n * - `split` variant uses +/- icons, others use ↑/↓ icons\n *\n * @public\n */\nexport type ControlVariant = (typeof ControlVariant)[number]\n\nexport const makeVNumberInputProps = propsFactory(\n {\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n },\n 'VNumberInput'\n)\n\nexport type VNumberInputSlots = ExtractSlotDefinitions<typeof VNumberInput.slots>\ntype VNumberInputPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVNumberInputProps>>\n\ntype VNumberInputIncrementSlotArgs = NamedSlotParameters<VNumberInputSlots, 'increment'>\ntype VNumberInputDecrementSlotArgs = NamedSlotParameters<VNumberInputSlots, 'decrement'>\n\n/**\n * Valid value types for RNumberField components.\n *\n * Supports both standard JavaScript numbers and BigInt values for handling\n * large integers beyond the safe integer range (±2^53-1).\n *\n * **Usage:**\n * - `number`: Standard floating-point numbers for most use cases\n * - `bigint`: Large integers for financial calculations, IDs, timestamps\n *\n * @example\n * ```typescript\n * const amount: RNumberFieldValue = 123.45\n * const largeId: RNumberFieldValue = 9007199254740992n\n * ```\n *\n * @public\n */\nexport type RNumberFieldValue = number | bigint\n\nconst isValidSingleRNumberFieldValue = (value: RNumberFieldValue) => {\n if (typeof value === 'bigint') return true\n if (typeof value === 'number' && !Number.isNaN(value) && Number.isFinite(value)) return true\n return false\n}\n\nconst isValidRNumberFieldValue = (\n value: RNumberFieldValue | RNumberFieldValue[] | null | undefined\n) => {\n if ('undefined' === typeof value || null === value) return true\n if (Array.isArray(value)) return value.every(isValidSingleRNumberFieldValue)\n return isValidSingleRNumberFieldValue(value)\n}\n\nconst { makeProps: makeRNumberFieldProps, emits: rNumberFieldEmits } = propsAndEmitsFactory(\n {\n ...pick(\n makeVNumberInputProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n [\n 'focused',\n 'disabled',\n 'error',\n 'errorMessages',\n 'maxErrors',\n 'name',\n 'label',\n 'readonly',\n 'validateOn',\n 'theme',\n 'width',\n 'maxWidth',\n 'minWidth',\n 'density',\n 'class',\n 'style',\n 'id',\n 'baseColor',\n 'color',\n 'glow',\n 'iconColor',\n 'hideDetails',\n 'hint',\n 'persistentHint',\n 'messages',\n 'direction',\n 'variant',\n 'clearIcon',\n 'controlVariant',\n 'min',\n 'max',\n 'step',\n 'precision',\n ]\n ),\n modelValue: {\n type: [String, Number, Array, Object] as PropType<\n RNumberFieldValue | RNumberFieldValue[] | null | undefined\n >,\n default: undefined,\n },\n format: {\n type: String,\n default: '0,0',\n },\n incrementIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiPlus }),\n },\n decrementIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMinus }),\n },\n collapseIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiChevronUp }),\n },\n expandIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiChevronDown }),\n },\n ...makeCommonResourcefulFieldProps(),\n },\n {\n 'update:modelValue': (value: RNumberFieldValue | RNumberFieldValue[] | null | undefined) =>\n isValidRNumberFieldValue(value),\n 'update:model-value': (value: RNumberFieldValue | RNumberFieldValue[] | null | undefined) =>\n isValidRNumberFieldValue(value),\n ...commonEmitsValidators,\n },\n 'RNumberField'\n)\n\n/**\n * Factory function to create props for RNumberField components.\n *\n * Generates a comprehensive set of props that combine VNumberInput properties\n * with resourceful field capabilities, including formatting, icons, and validation.\n *\n * **Included Props:**\n * - **Core VNumberInput props**: min, max, step, precision, controlVariant\n * - **Formatting props**: format (numeral.js patterns)\n * - **Icon props**: incrementIcon, decrementIcon, collapseIcon, expandIcon\n * - **Common field props**: multiple, renderMode, choices, validation\n * - **Vuetify props**: variant, density, color, theme, etc.\n *\n * @example\n * ```typescript\n * const MyNumberField = defineComponent({\n * props: makeRNumberFieldProps(),\n * // ... component implementation\n * })\n * ```\n *\n * @returns Props factory for RNumberField components\n * @public\n */\nexport { makeRNumberFieldProps, rNumberFieldEmits }\n\n/**\n * Public props interface for RNumberField components.\n *\n * Provides type-safe access to all available props, including VNumberInput\n * properties, custom formatting options, and resourceful field capabilities.\n *\n * **Key Props:**\n * - `modelValue`: The current number value(s)\n * - `multiple`: Enable array input mode with chips\n * - `format`: Numeral.js format string (e.g., \"0,0.00\", \"$0,0\")\n * - `min`/`max`: Numeric range validation\n * - `step`: Increment/decrement step size\n * - `controlVariant`: Control button layout style\n * - `renderMode`: Display mode (\"edit\" | \"read\")\n *\n * @example\n * ```typescript\n * const props: RNumberFieldProps = {\n * modelValue: 123.45,\n * format: \"$0,0.00\",\n * min: 0,\n * max: 1000000,\n * controlVariant: \"split\"\n * }\n * ```\n *\n * @public\n */\nexport type RNumberFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeRNumberFieldProps>>\n\n/**\n * Professional numeric input field component with advanced formatting and validation.\n *\n * A sophisticated number field built on VNumberInput that provides enterprise-grade\n * numeric input capabilities with numeral.js formatting, custom controls, and full\n * support for single/multiple/read modes through the unified field composer architecture.\n *\n * **Core Features:**\n * - **Advanced Formatting**: Numeral.js integration for currency, percentages, thousands\n * - **Custom Controls**: Fully customizable increment/decrement buttons with smart icons\n * - **BigInt Support**: Handles large integers beyond JavaScript's safe integer range\n * - **Multiple Mode**: Chip-based interface for array input with formatted display\n * - **Read Mode**: Formatted display with Oxford comma lists for multiple values\n * - **Smart Validation**: Min/max/step boundary checking with visual feedback\n * - **Accessibility**: Full keyboard navigation and screen reader support\n *\n * **Control Variants:**\n * - `default`: Standard stacked controls with up/down arrows\n * - `stacked`: Vertical arrangement optimized for compact spaces\n * - `split`: Side-by-side controls with intuitive +/- icons\n * - `hidden`: Input-only mode without visible controls\n *\n * **Formatting Examples:**\n * - Currency: `format=\"$0,0.00\"` → `$1,234.56`\n * - Percentage: `format=\"0.00%\"` → `45.67%`\n * - Thousands: `format=\"0,0\"` → `1,234,567`\n * - Decimal: `format=\"0.000\"` → `123.456`\n *\n * @example\n * ```vue\n * <!-- Single currency input -->\n * <RNumberField\n * v-model=\"amount\"\n * label=\"Amount\"\n * format=\"$0,0.00\"\n * :min=\"0\"\n * :max=\"1000000\"\n * control-variant=\"split\"\n * />\n *\n * <!-- Multiple percentages -->\n * <RNumberField\n * v-model=\"rates\"\n * multiple\n * label=\"Success Rates\"\n * format=\"0.00%\"\n * :min=\"0\"\n * :max=\"100\"\n * />\n *\n * <!-- Read-only display -->\n * <RNumberField\n * v-model=\"totals\"\n * multiple\n * label=\"Quarterly Results\"\n * format=\"$0,0.00\"\n * render-mode=\"read\"\n * />\n * ```\n *\n * **Validation:**\n * - Automatically validates min/max boundaries\n * - Rejects NaN and Infinity values\n * - Step validation for increment/decrement operations\n * - Custom validation through standard Vuetify patterns\n *\n * **Accessibility:**\n * - Full keyboard navigation support\n * - Screen reader announcements for value changes\n * - Proper ARIA labels and descriptions\n * - Focus management for complex interactions\n *\n * @public\n */\nexport const RNumberField = defineComponent({\n name: 'RNumberField',\n props: makeRNumberFieldProps(),\n emits: rNumberFieldEmits,\n slots: Object as SlotsType<VNumberInputSlots>,\n setup(props, { emit, slots }) {\n const {\n focused,\n disabled,\n error,\n errorMessages,\n maxErrors,\n name,\n label,\n readonly,\n validateOn,\n theme,\n width,\n maxWidth,\n minWidth,\n density,\n class: className,\n style,\n id,\n baseColor,\n color,\n glow,\n iconColor,\n hideDetails,\n hint,\n persistentHint,\n messages,\n direction,\n modelValue,\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n to,\n href,\n menuIcon,\n active,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n noValuesText,\n clearIcon,\n controlVariant,\n min,\n max,\n step,\n precision,\n format,\n incrementIcon,\n decrementIcon,\n collapseIcon,\n expandIcon,\n dirty,\n onBlur,\n onChange,\n onInput,\n } = toRefs(props)\n const stringifier = computed<RFieldStringifier<RNumberFieldValue>>(() => {\n return (val: RNumberFieldValue) => {\n if (!isValidSingleRNumberFieldValue(val)) return ''\n return numeral(val.toString()).format(format.value)\n }\n })\n const commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>> = {\n style,\n label,\n density,\n renderMode,\n multiple,\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 choices,\n allowUnspecifiedChoices,\n 'class': className,\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 VNumberInputFieldBindings = computed<VNumberInputPublicProps>(() =>\n stripUndefinedValuesFromObject({\n focused: focused.value,\n disabled: disabled.value,\n error: error.value,\n errorMessages: errorMessages.value,\n maxErrors: maxErrors.value,\n name: name.value,\n label: label.value,\n readonly: readonly.value,\n validateOn: validateOn.value,\n theme: theme.value,\n width: width.value,\n maxWidth: maxWidth.value,\n minWidth: minWidth.value,\n density: density.value,\n class: className.value,\n style: style.value,\n id: id.value,\n baseColor: baseColor.value,\n color: color.value,\n glow: glow.value,\n iconColor: iconColor.value,\n hideDetails: hideDetails.value,\n hint: hint.value,\n persistentHint: persistentHint.value,\n messages: messages.value,\n direction: direction.value,\n variant: variant.value,\n clearIcon: clearIcon.value,\n controlVariant: controlVariant.value,\n min: min.value,\n max: max.value,\n step: step.value,\n precision: precision.value,\n active: active.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n dirty: dirty.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n })\n )\n const normalizedIncrementIcon = computed(() =>\n controlVariant.value === 'split' ? incrementIcon.value : collapseIcon.value\n )\n const normalizedDecrementIcon = computed(() =>\n controlVariant.value === 'split' ? decrementIcon.value : expandIcon.value\n )\n const normalizedControlNodeSize = computed(() =>\n controlVariant.value === 'split' ? 'default' : 'small'\n )\n const normalizedControlNodeDefaultHeight = computed(() =>\n controlVariant.value === 'stacked' ? 'auto' : '100%'\n )\n const normalizedControlsDisabled = computed(() => disabled.value || readonly.value)\n const singleFieldRenderer: SingleFieldRenderer = ({\n props: fieldBindings,\n isMultiAdd,\n add,\n }) => {\n const canIncrease = computed(() => {\n if (normalizedControlsDisabled.value) return false\n return ((fieldBindings.modelValue ?? 0) as number) + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (normalizedControlsDisabled.value) return false\n return ((fieldBindings.modelValue ?? 0) as number) - props.step >= props.min\n })\n const renderDefaultIncrementSlot = (...args: VNumberInputIncrementSlotArgs) => {\n if (!args) return null\n const { onClick, onPointerup, onPointerdown, onPointercancel } = args[0].props\n return h(VBtn, {\n disabled: !canIncrease.value,\n flat: true,\n height: normalizedControlNodeDefaultHeight.value,\n icon: normalizedIncrementIcon.value,\n onClick,\n onPointerup,\n onPointerdown,\n onPointercancel,\n size: normalizedControlNodeSize.value,\n tabindex: '-1',\n })\n }\n const renderDefaultDecrementSlot = (...args: VNumberInputDecrementSlotArgs) => {\n if (!args) return null\n const { onClick, onPointerup, onPointerdown, onPointercancel } = args[0].props\n return h(VBtn, {\n disabled: !canDecrease.value,\n flat: true,\n height: normalizedControlNodeDefaultHeight.value,\n icon: normalizedDecrementIcon.value,\n onClick,\n onPointerup,\n onPointerdown,\n onPointercancel,\n size: normalizedControlNodeSize.value,\n tabindex: '-1',\n })\n }\n const incrementSlot = useSlot<VNumberInputSlots>('increment', slots)\n const decrementSlot = useSlot<VNumberInputSlots>('decrement', slots)\n const modelValueToDisplay =\n typeof fieldBindings.modelValue === 'number' ? fieldBindings.modelValue : null\n return h(\n VNumberInput,\n {\n ...VNumberInputFieldBindings.value,\n ...fieldBindings,\n modelValue: modelValueToDisplay,\n class: isMultiAdd ? [] : VNumberInputFieldBindings.value.class,\n hideDetails: isMultiAdd ? true : VNumberInputFieldBindings.value.hideDetails,\n onKeydown: (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n queueMicrotask(() => add())\n }\n },\n },\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n {\n ...slots,\n increment: (...args: VNumberInputIncrementSlotArgs) =>\n // @ts-expect-error\n incrementSlot ? incrementSlot(...args) : renderDefaultIncrementSlot(...args),\n decrement: (...args: VNumberInputDecrementSlotArgs) =>\n // @ts-expect-error\n decrementSlot ? decrementSlot(...args) : renderDefaultDecrementSlot(...args),\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 return composed\n },\n})\n\n/**\n * Type definition for the RNumberField component instance.\n *\n * Provides type-safe access to the component's public interface, including\n * all props, slots, emits, and exposed methods. Useful for programmatic\n * component creation and advanced TypeScript integration.\n *\n * @example\n * ```typescript\n * import type { RNumberField } from './number'\n *\n * // Component reference typing\n * const numberFieldRef = ref<InstanceType<RNumberField>>()\n *\n * // Programmatic component creation\n * const NumberFieldComponent: RNumberField = defineComponent({\n * // ... implementation\n * })\n * ```\n *\n * @public\n */\nexport type RNumberField = typeof RNumberField & ComponentPublicInstance\n"],"names":["makeVNumberInputProps","_createVNode","_createElementVNode","_Fragment","_mergeProps","propsFactory","omit","makeVTextFieldProps"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nhtio/lucid-resourceful-vue-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20260108.0",
|
|
4
4
|
"description": "Vue Components for interacting with Lucid Resourceful Models via Lucid Resourceful Routes",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "Jak Giveon <jak@nht.io>",
|
|
@@ -155,10 +155,6 @@
|
|
|
155
155
|
"import": "./components/fields/unsigned_integer.mjs",
|
|
156
156
|
"types": "./components/fields/unsigned_integer.d.ts"
|
|
157
157
|
},
|
|
158
|
-
"./components/resourceful_record_default_form": {
|
|
159
|
-
"import": "./components/resourceful_record_default_form.mjs",
|
|
160
|
-
"types": "./components/resourceful_record_default_form.d.ts"
|
|
161
|
-
},
|
|
162
158
|
"./components/resourceful_record": {
|
|
163
159
|
"import": "./components/resourceful_record.mjs",
|
|
164
160
|
"types": "./components/resourceful_record.d.ts"
|
|
@@ -166,6 +162,10 @@
|
|
|
166
162
|
"./components/resourceful_index": {
|
|
167
163
|
"import": "./components/resourceful_index.mjs",
|
|
168
164
|
"types": "./components/resourceful_index.d.ts"
|
|
165
|
+
},
|
|
166
|
+
"./components/resourceful_record_default_form": {
|
|
167
|
+
"import": "./components/resourceful_record_default_form.mjs",
|
|
168
|
+
"types": "./components/resourceful_record_default_form.d.ts"
|
|
169
169
|
}
|
|
170
170
|
},
|
|
171
171
|
"packageManager": "pnpm@10.8.0+sha512.0e82714d1b5b43c74610193cb20734897c1d00de89d0e18420aebc5977fa13d780a9cb05734624e81ebd81cc876cd464794850641c48b9544326b5622ca29971",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { h as getDefaultsForPropFactory, p as propsAndEmitsFactory } from "./utils-
|
|
2
|
-
import { p as propsFactory, a as pick,
|
|
3
|
-
import { a as makeControlMenuControlButtonProps, m as makeControlMenuProps } from "./props-
|
|
1
|
+
import { h as getDefaultsForPropFactory, p as propsAndEmitsFactory } from "./utils-BBXjywEs.mjs";
|
|
2
|
+
import { p as propsFactory, a as pick, l as makeComponentProps, o as omit } from "./vendor-nhtio-vuetifiable-CTlDfYMJ.mjs";
|
|
3
|
+
import { a as makeControlMenuControlButtonProps, m as makeControlMenuProps } from "./props-Dcuv5Iv7.mjs";
|
|
4
4
|
const ControllerButtonBarJustification = ["start", "end"];
|
|
5
5
|
const makeControlButtonBarOverflowMenuButtonProps = propsFactory(
|
|
6
6
|
{
|
|
@@ -53,4 +53,4 @@ export {
|
|
|
53
53
|
defaultControlButtonBarOptionsProps as d,
|
|
54
54
|
makeControlButtonBarProps as m
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=props-
|
|
56
|
+
//# sourceMappingURL=props-BZryUy0q.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props-
|
|
1
|
+
{"version":3,"file":"props-BZryUy0q.mjs","sources":["../src/private/control-button-bar/props.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Control Button Bar Props\n|--------------------------------------------------------------------------\n|\n| Type definitions and prop factories for the ControlButtonBar component.\n| Includes justification options, overflow menu configuration, and button\n| management with comprehensive TypeScript support.\n|\n*/\n\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { pick, omit } from '@nhtio/vuetifiable/util/helpers'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { makeComponentProps } from '@nhtio/vuetifiable/composables/component'\nimport { makeControlMenuProps, makeControlMenuControlButtonProps } from '../control-menu/props'\nimport type { PropType, ExtractPublicPropTypes, VNode } from 'vue'\n\n/**\n * Available justification options for button alignment within the toolbar.\n *\n * @public\n */\nexport const ControllerButtonBarJustification = ['start', 'end'] as const\n\n/**\n * Type for button justification alignment.\n *\n * @public\n */\nexport type ControlButtonBarJustification = (typeof ControllerButtonBarJustification)[number]\n\nconst makeControlButtonBarOverflowMenuButtonProps = propsFactory(\n {\n ...pick(makeControlMenuProps(), ['cta']),\n ...pick(makeControlMenuControlButtonProps(), ['color', 'density', 'size']),\n },\n 'ControlButtonBarOverflowMenuButtonProps'\n)\n\nexport const defaultControlButtonBarOverflowMenuButtonProps = getDefaultsForPropFactory(\n makeControlButtonBarOverflowMenuButtonProps\n)\n\n/**\n * Props interface for customizing the overflow menu button appearance and behavior.\n *\n * @public\n */\nexport type ControlButtonBarOverflowMenuButtonProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonBarOverflowMenuButtonProps>\n>\n\nexport const { makeProps: makeControlButtonBarProps, emits: controlButtonBarEmits } =\n propsAndEmitsFactory(\n {\n /** Array of Vue VNode buttons to display in the toolbar */\n buttons: {\n type: Array as PropType<VNode[]>,\n default: () => [],\n },\n /** Alignment of buttons within the toolbar container */\n justification: {\n type: String as PropType<ControlButtonBarJustification>,\n default: 'start',\n },\n /** Spacing between buttons (Vuetify gap units) */\n gap: {\n type: [Number, String] as PropType<number | string>,\n default: 0,\n },\n ...makeComponentProps(),\n /** Configuration options for the overflow menu button */\n overflowMenuButtonOptions: {\n type: Object as PropType<ControlButtonBarOverflowMenuButtonProps>,\n default: () => defaultControlButtonBarOverflowMenuButtonProps,\n },\n },\n {},\n 'ControlButtonBar'\n )\n\n/**\n * Props interface for the ControlButtonBar component.\n *\n * Provides configuration for button management, layout justification,\n * spacing, and overflow menu customization.\n *\n * @public\n */\nexport type ControlButtonBarProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonBarProps>\n>\n\nexport const makeControlButtonBarOptionsProps = propsFactory(\n omit(makeControlButtonBarProps(), ['buttons']),\n 'ControlButtonBarOptions'\n)\n\nexport const defaultControlButtonBarOptionsProps = getDefaultsForPropFactory(\n makeControlButtonBarOptionsProps\n)\n\nexport type ControlButtonBarOptionsProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonBarOptionsProps>\n>\n"],"names":[],"mappings":";;;AAwBO,MAAM,mCAAmC,CAAC,SAAS,KAAK;AAS/D,MAAM,8CAA8C;AAAA,EAClD;AAAA,IACE,GAAG,KAAK,wBAAwB,CAAC,KAAK,CAAC;AAAA,IACvC,GAAG,KAAK,kCAAA,GAAqC,CAAC,SAAS,WAAW,MAAM,CAAC;AAAA,EAAA;AAAA,EAE3E;AACF;AAEO,MAAM,iDAAiD;AAAA,EAC5D;AACF;AAWO,MAAM,EAAE,WAAW,2BAA2B,OAAO,0BAC1D;AAAA,EACE;AAAA;AAAA,IAEE,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM,CAAA;AAAA,IAAC;AAAA;AAAA,IAGlB,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA;AAAA,IAGX,KAAK;AAAA,MACH,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,IAEX,GAAG,mBAAA;AAAA;AAAA,IAEH,2BAA2B;AAAA,MACzB,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,IAAA;AAAA,EACjB;AAAA,EAEF,CAAA;AAAA,EACA;AACF;AAcK,MAAM,mCAAmC;AAAA,EAC9C,KAAK,0BAAA,GAA6B,CAAC,SAAS,CAAC;AAAA,EAC7C;AACF;AAEO,MAAM,sCAAsC;AAAA,EACjD;AACF;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { p as propsFactory, a as pick, b as IconValue } from "./vendor-nhtio-vuetifiable-
|
|
2
|
-
import { h as getDefaultsForPropFactory } from "./utils-
|
|
3
|
-
import { m as makeControlButtonProps } from "./index-
|
|
1
|
+
import { p as propsFactory, a as pick, b as IconValue } from "./vendor-nhtio-vuetifiable-CTlDfYMJ.mjs";
|
|
2
|
+
import { h as getDefaultsForPropFactory } from "./utils-BBXjywEs.mjs";
|
|
3
|
+
import { m as makeControlButtonProps } from "./index-3roRSYqk.mjs";
|
|
4
4
|
const makeControlMenuControlButtonProps = propsFactory(
|
|
5
5
|
{
|
|
6
6
|
...pick(makeControlButtonProps(), [
|
|
@@ -62,4 +62,4 @@ export {
|
|
|
62
62
|
defaultActivatorValues as d,
|
|
63
63
|
makeControlMenuProps as m
|
|
64
64
|
};
|
|
65
|
-
//# sourceMappingURL=props-
|
|
65
|
+
//# sourceMappingURL=props-Dcuv5Iv7.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props-
|
|
1
|
+
{"version":3,"file":"props-Dcuv5Iv7.mjs","sources":["../src/private/control-menu/props.ts"],"sourcesContent":["import { pick } from '@nhtio/vuetifiable/util/helpers'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { makeControlButtonProps } from '../control-button/props'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport type { PropType, ExtractPublicPropTypes } from 'vue'\n\nexport const makeControlMenuControlButtonProps = propsFactory(\n {\n ...pick(makeControlButtonProps(), [\n 'color',\n 'density',\n 'size',\n 'height',\n 'dividePrependIcon',\n 'elevation',\n ]),\n },\n 'ControlMenuControlButton'\n)\n\nexport type ControlMenuControlButtonProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlMenuControlButtonProps>\n>\n\nexport const defaultActivatorValues = getDefaultsForPropFactory(makeControlMenuControlButtonProps)\n\nexport const makeControlMenuProps = propsFactory(\n {\n icon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n ...pick(makeControlButtonProps(), ['cta']),\n count: {\n type: [Number, String] as PropType<number | string>,\n default: 0,\n },\n countFormat: {\n type: String as PropType<string>,\n default: '0,0',\n },\n color: {\n type: String as PropType<string>,\n default: 'surface',\n },\n badgeColor: {\n type: String as PropType<string>,\n default: 'warning',\n },\n activator: {\n type: Object as PropType<ControlMenuControlButtonProps>,\n default: () => defaultActivatorValues,\n },\n inOverflowMenu: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n noPadding: {\n type: Boolean,\n default: false,\n },\n },\n 'ControlMenu'\n)\n\nexport type ControlMenuProps = ExtractPublicPropTypes<ReturnType<typeof makeControlMenuProps>>\n"],"names":[],"mappings":";;;AAOO,MAAM,oCAAoC;AAAA,EAC/C;AAAA,IACE,GAAG,KAAK,0BAA0B;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAAA,EAEH;AACF;AAMO,MAAM,yBAAyB,0BAA0B,iCAAiC;AAE1F,MAAM,uBAAuB;AAAA,EAClC;AAAA,IACE,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,GAAG,KAAK,0BAA0B,CAAC,KAAK,CAAC;AAAA,IACzC,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,IAEX,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,IAAA;AAAA,IAEjB,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AACF;"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { a as useI18n } from "./ioc-
|
|
1
|
+
import { a as useI18n } from "./ioc-DOAKMPdw.mjs";
|
|
2
2
|
import { defineComponent, toRefs, h } from "vue";
|
|
3
|
-
import { D as DevErrorAlert } from "./common-
|
|
3
|
+
import { D as DevErrorAlert } from "./common-CRFL2oQX.mjs";
|
|
4
4
|
import { v as validator } from "./vendor-nhtio-validation-IJWW0vrt.mjs";
|
|
5
|
-
import { p as propsAndEmitsFactory, q as typeAndFormatToResourcefulFieldType, s as stripUndefinedValuesFromObject } from "./utils-
|
|
6
|
-
import { R as RBigIntField } from "./bigint-
|
|
7
|
-
import { R as RBooleanField } from "./boolean-
|
|
8
|
-
import { R as RDateTimeField } from "./date_time-
|
|
9
|
-
import { R as RDateField } from "./date-
|
|
10
|
-
import { R as RIntegerField } from "./integer-
|
|
11
|
-
import { R as RNumberField } from "./number-
|
|
12
|
-
import { R as RStringField } from "./string-
|
|
13
|
-
import { R as RUnsignedIntegerField } from "./unsigned_integer-
|
|
14
|
-
import { R as REnumField } from "./enum-
|
|
15
|
-
import { V as VContainer, a as VRow, b as VCol } from "./VRow-
|
|
5
|
+
import { p as propsAndEmitsFactory, q as typeAndFormatToResourcefulFieldType, s as stripUndefinedValuesFromObject } from "./utils-BBXjywEs.mjs";
|
|
6
|
+
import { R as RBigIntField } from "./bigint-MqcXh7nS.mjs";
|
|
7
|
+
import { R as RBooleanField } from "./boolean-h31TIpoH.mjs";
|
|
8
|
+
import { R as RDateTimeField } from "./date_time-n4zJtaSr.mjs";
|
|
9
|
+
import { R as RDateField } from "./date-fxb-e0m9.mjs";
|
|
10
|
+
import { R as RIntegerField } from "./integer-BYichJsH.mjs";
|
|
11
|
+
import { R as RNumberField } from "./number-B5AryNzI.mjs";
|
|
12
|
+
import { R as RStringField } from "./string-CJvxnWzd.mjs";
|
|
13
|
+
import { R as RUnsignedIntegerField } from "./unsigned_integer-CRQsMWxW.mjs";
|
|
14
|
+
import { R as REnumField } from "./enum-CjkTx4L6.mjs";
|
|
15
|
+
import { V as VContainer, a as VRow, b as VCol } from "./VRow-Db84ydOG.mjs";
|
|
16
16
|
const extractKnownKeyFromJoiSchema = (schema, key) => {
|
|
17
17
|
try {
|
|
18
18
|
return schema.extract(key);
|
|
@@ -226,4 +226,4 @@ export {
|
|
|
226
226
|
renderResourcefulRecordModelPropertyField as a,
|
|
227
227
|
renderDefaultResourcefulRecordForm as r
|
|
228
228
|
};
|
|
229
|
-
//# sourceMappingURL=renderers-
|
|
229
|
+
//# sourceMappingURL=renderers-C7XOwFHb.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers-DLsO8zG-.mjs","sources":["../src/private/resourceful-record/renderers.ts"],"sourcesContent":["import { useI18n } from '../ioc'\nimport { h, defineComponent, toRefs } from 'vue'\nimport { DevErrorAlert } from '../fields/common'\nimport { validator as joi } from '@nhtio/validation'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { VContainer, VRow, VCol } from 'vuetify/components/VGrid'\nimport {\n stripUndefinedValuesFromObject,\n typeAndFormatToResourcefulFieldType,\n} from '../common/utils'\nimport {\n RBigIntField,\n RBooleanField,\n RDateTimeField,\n RDateField,\n RIntegerField,\n RNumberField,\n RStringField,\n RUnsignedIntegerField,\n REnumField,\n} from '../fields'\nimport type { FireAlertFn } from '../ux/alert'\nimport type { Schema } from '@nhtio/validation'\nimport type { ScopedDisplayProps } from '../ux/validation'\nimport type { REnumFieldLoadedChoice } from '../fields/enum'\nimport type { ValidationFieldBindings } from '../ux/validation'\nimport type { CommonResourcefulFieldPublicProps } from '../fields/common'\nimport type { VNode, ComputedRef, PropType, ComponentPublicInstance, ExtractPropTypes } from 'vue'\nimport type {\n ResourcefulRecordViewMode,\n ResourcefulRecordModelSchema,\n ResourcefulRecordModelPropertySchema,\n ResourcefulRecordFormWithValidationDefaultSlotProps,\n} from './types'\nimport type {\n RBigIntFieldProps,\n RBooleanFieldProps,\n RDateTimeFieldProps,\n RDateFieldProps,\n RIntegerFieldProps,\n RNumberFieldProps,\n RStringFieldProps,\n RUnsignedIntegerFieldProps,\n REnumFieldProps,\n} from '../fields'\n\nconst extractKnownKeyFromJoiSchema = (schema: Schema, key: string): Schema => {\n try {\n return schema.extract(key)\n } catch {\n return joi.any()\n }\n}\n\nconst {\n makeProps: makeDefaultResourcefulRecordFormProps,\n emits: defaultResourcefulRecordFormEmits,\n} = propsAndEmitsFactory(\n {\n props: {\n type: Object as PropType<ResourcefulRecordFormWithValidationDefaultSlotProps>,\n required: true,\n },\n display: {\n type: Object as PropType<ScopedDisplayProps>,\n required: true,\n },\n model: {\n type: Object as PropType<ResourcefulRecordModelSchema>,\n required: true,\n },\n schema: {\n type: Object as PropType<Schema>,\n required: true,\n },\n mode: {\n type: String as PropType<ResourcefulRecordViewMode>,\n default: 'update',\n },\n fieldLabels: {\n type: Object as PropType<Record<string, string>>,\n default: () => ({}),\n },\n doRefreshChoices: {\n type: Object as PropType<Record<string, () => Promise<REnumFieldLoadedChoice[]>>>,\n default: () => ({}),\n },\n },\n {},\n 'ResourcefulRecordDefaultForm'\n)\n\ntype ResourcefulRecordDefaultFormInstanceProps = ExtractPropTypes<\n ReturnType<typeof makeDefaultResourcefulRecordFormProps>\n>\n\nexport const ResourcefulRecordDefaultForm = defineComponent({\n name: 'ResourcefulRecordDefaultForm',\n props: makeDefaultResourcefulRecordFormProps(),\n emits: defaultResourcefulRecordFormEmits,\n setup(instanceProps: ResourcefulRecordDefaultFormInstanceProps) {\n const { props, display, model, schema, mode, doRefreshChoices } = toRefs(instanceProps)\n return () =>\n h(VContainer, { fluid: true }, () =>\n Object.entries(model.value)\n .filter(([, propSchema]) => {\n switch (mode.value) {\n case 'create':\n return (\n !propSchema['x-resourceful-autocreated'] &&\n !propSchema['x-resourceful-primary-key']\n )\n\n case 'update':\n return (\n !propSchema['x-resourceful-autoupdated'] && !propSchema['x-resourceful-immutable']\n )\n default:\n return true\n }\n })\n .map(([key, propSchema]) =>\n h(VRow, {}, () =>\n h(VCol, {}, () =>\n renderResourcefulRecordModelPropertyField(\n propSchema,\n extractKnownKeyFromJoiSchema(schema.value, key),\n props.value.useField(key),\n mode.value,\n display.value,\n doRefreshChoices.value[key]\n )\n )\n )\n )\n )\n },\n})\n\nexport type ResourcefulRecordDefaultForm = typeof ResourcefulRecordDefaultForm &\n ComponentPublicInstance\n\nexport const renderDefaultResourcefulRecordForm = <TSchema extends Schema>(\n props: ResourcefulRecordFormWithValidationDefaultSlotProps,\n display: ScopedDisplayProps,\n model: ResourcefulRecordModelSchema,\n schema: TSchema,\n mode: ResourcefulRecordViewMode = 'update',\n _fire: FireAlertFn = () =>\n Promise.resolve({ isConfirmed: false, isDenied: false, isCanceled: true, value: null }),\n doRefreshChoices: Record<string, () => Promise<REnumFieldLoadedChoice[]>> = {}\n): VNode => {\n return h(ResourcefulRecordDefaultForm, {\n props,\n display,\n model,\n schema,\n mode,\n doRefreshChoices,\n })\n}\n\nexport const renderResourcefulRecordModelPropertyField = (\n schema: ResourcefulRecordModelPropertySchema,\n validator: Schema,\n bindings: ComputedRef<ValidationFieldBindings>,\n mode: ResourcefulRecordViewMode,\n display: ScopedDisplayProps,\n doRefreshChoices?: (() => Promise<REnumFieldLoadedChoice[]>) | undefined\n): VNode => {\n const t = useI18n()\n const renderableFieldType = typeAndFormatToResourcefulFieldType(schema.type, schema.format)\n let renderMode: CommonResourcefulFieldPublicProps['renderMode'] =\n mode === 'read' ? 'read' : 'edit'\n if (renderMode === 'edit') {\n /**\n * Force rendering of autocreated/autoupdated/immutable/primary-key fields as read-only\n */\n if (\n mode === 'create' &&\n (schema['x-resourceful-autocreated'] || schema['x-resourceful-primary-key'])\n ) {\n renderMode = 'read'\n }\n if (\n mode === 'update' &&\n (schema['x-resourceful-autoupdated'] || schema['x-resourceful-immutable'])\n ) {\n renderMode = 'read'\n }\n }\n const commonProps: CommonResourcefulFieldPublicProps = {\n renderMode,\n multiple: validator.type === 'array',\n choices: undefined,\n allowUnspecifiedChoices: false,\n density: display.xs ? 'compact' : display.lgAndUp ? 'default' : 'comfortable',\n ...bindings.value,\n }\n if (schema['x-resourceful-relationship']) {\n commonProps.label = schema['x-resourceful-relationship'].title\n commonProps.multiple = schema['x-resourceful-relationship'].multiple\n if (Array.isArray(schema['x-resourceful-relationship'].choices)) {\n commonProps.choices = schema['x-resourceful-relationship'].choices\n }\n } else if ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices'])) {\n commonProps.choices = schema['x-resourceful-choices'].map((c) => ({\n value: c.value,\n label: c.i18n ? t(c.title || c.value) : c.title || c.value,\n }))\n }\n if (\n validator.type !== 'array' &&\n (schema['x-resourceful-relationship'] ||\n ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices'])))\n ) {\n return h(REnumField, {\n // Field specifics\n clearable: schema.nullable || false,\n ...stripUndefinedValuesFromObject({\n doRefreshChoices,\n }),\n // Common props\n ...commonProps,\n } satisfies Partial<REnumFieldProps>)\n }\n switch (renderableFieldType) {\n case 'string':\n return h(RStringField, {\n // Field specifics\n format: schema.format as any,\n clearable: schema.nullable || false,\n // Common props\n ...commonProps,\n } satisfies Partial<RStringFieldProps>)\n case 'date':\n return h(RDateField, {\n // Field specifics\n clearable: schema.nullable || false,\n // Common props\n ...commonProps,\n } satisfies Partial<RDateFieldProps>)\n case 'dateTime':\n return h(RDateTimeField, {\n // Field specifics\n clearable: schema.nullable || false,\n // Common props\n ...commonProps,\n } satisfies Partial<RDateTimeFieldProps>)\n case 'binary':\n return h(DevErrorAlert, {})\n case 'number':\n return h(RNumberField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RNumberFieldProps>)\n case 'integer':\n return h(RIntegerField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RIntegerFieldProps>)\n case 'bigint':\n return h(RBigIntField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RBigIntFieldProps>)\n case 'unsignedInteger':\n return h(RUnsignedIntegerField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RUnsignedIntegerFieldProps>)\n case 'boolean':\n return h(RBooleanField, {\n // Field specifics\n choices: schema.nullable ? [true, false, null] : [true, false],\n // Common props\n ...commonProps,\n } satisfies Partial<RBooleanFieldProps>)\n default:\n return h(DevErrorAlert, {})\n }\n}\n"],"names":["joi","validator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderers-C7XOwFHb.mjs","sources":["../src/private/resourceful-record/renderers.ts"],"sourcesContent":["import { useI18n } from '../ioc'\nimport { h, defineComponent, toRefs } from 'vue'\nimport { DevErrorAlert } from '../fields/common'\nimport { validator as joi } from '@nhtio/validation'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { VContainer, VRow, VCol } from 'vuetify/components/VGrid'\nimport {\n stripUndefinedValuesFromObject,\n typeAndFormatToResourcefulFieldType,\n} from '../common/utils'\nimport {\n RBigIntField,\n RBooleanField,\n RDateTimeField,\n RDateField,\n RIntegerField,\n RNumberField,\n RStringField,\n RUnsignedIntegerField,\n REnumField,\n} from '../fields'\nimport type { FireAlertFn } from '../ux/alert'\nimport type { Schema } from '@nhtio/validation'\nimport type { ScopedDisplayProps } from '../ux/validation'\nimport type { REnumFieldLoadedChoice } from '../fields/enum'\nimport type { ValidationFieldBindings } from '../ux/validation'\nimport type { CommonResourcefulFieldPublicProps } from '../fields/common'\nimport type { VNode, ComputedRef, PropType, ComponentPublicInstance, ExtractPropTypes } from 'vue'\nimport type {\n ResourcefulRecordViewMode,\n ResourcefulRecordModelSchema,\n ResourcefulRecordModelPropertySchema,\n ResourcefulRecordFormWithValidationDefaultSlotProps,\n} from './types'\nimport type {\n RBigIntFieldProps,\n RBooleanFieldProps,\n RDateTimeFieldProps,\n RDateFieldProps,\n RIntegerFieldProps,\n RNumberFieldProps,\n RStringFieldProps,\n RUnsignedIntegerFieldProps,\n REnumFieldProps,\n} from '../fields'\n\nconst extractKnownKeyFromJoiSchema = (schema: Schema, key: string): Schema => {\n try {\n return schema.extract(key)\n } catch {\n return joi.any()\n }\n}\n\nconst {\n makeProps: makeDefaultResourcefulRecordFormProps,\n emits: defaultResourcefulRecordFormEmits,\n} = propsAndEmitsFactory(\n {\n props: {\n type: Object as PropType<ResourcefulRecordFormWithValidationDefaultSlotProps>,\n required: true,\n },\n display: {\n type: Object as PropType<ScopedDisplayProps>,\n required: true,\n },\n model: {\n type: Object as PropType<ResourcefulRecordModelSchema>,\n required: true,\n },\n schema: {\n type: Object as PropType<Schema>,\n required: true,\n },\n mode: {\n type: String as PropType<ResourcefulRecordViewMode>,\n default: 'update',\n },\n fieldLabels: {\n type: Object as PropType<Record<string, string>>,\n default: () => ({}),\n },\n doRefreshChoices: {\n type: Object as PropType<Record<string, () => Promise<REnumFieldLoadedChoice[]>>>,\n default: () => ({}),\n },\n },\n {},\n 'ResourcefulRecordDefaultForm'\n)\n\ntype ResourcefulRecordDefaultFormInstanceProps = ExtractPropTypes<\n ReturnType<typeof makeDefaultResourcefulRecordFormProps>\n>\n\nexport const ResourcefulRecordDefaultForm = defineComponent({\n name: 'ResourcefulRecordDefaultForm',\n props: makeDefaultResourcefulRecordFormProps(),\n emits: defaultResourcefulRecordFormEmits,\n setup(instanceProps: ResourcefulRecordDefaultFormInstanceProps) {\n const { props, display, model, schema, mode, doRefreshChoices } = toRefs(instanceProps)\n return () =>\n h(VContainer, { fluid: true }, () =>\n Object.entries(model.value)\n .filter(([, propSchema]) => {\n switch (mode.value) {\n case 'create':\n return (\n !propSchema['x-resourceful-autocreated'] &&\n !propSchema['x-resourceful-primary-key']\n )\n\n case 'update':\n return (\n !propSchema['x-resourceful-autoupdated'] && !propSchema['x-resourceful-immutable']\n )\n default:\n return true\n }\n })\n .map(([key, propSchema]) =>\n h(VRow, {}, () =>\n h(VCol, {}, () =>\n renderResourcefulRecordModelPropertyField(\n propSchema,\n extractKnownKeyFromJoiSchema(schema.value, key),\n props.value.useField(key),\n mode.value,\n display.value,\n doRefreshChoices.value[key]\n )\n )\n )\n )\n )\n },\n})\n\nexport type ResourcefulRecordDefaultForm = typeof ResourcefulRecordDefaultForm &\n ComponentPublicInstance\n\nexport const renderDefaultResourcefulRecordForm = <TSchema extends Schema>(\n props: ResourcefulRecordFormWithValidationDefaultSlotProps,\n display: ScopedDisplayProps,\n model: ResourcefulRecordModelSchema,\n schema: TSchema,\n mode: ResourcefulRecordViewMode = 'update',\n _fire: FireAlertFn = () =>\n Promise.resolve({ isConfirmed: false, isDenied: false, isCanceled: true, value: null }),\n doRefreshChoices: Record<string, () => Promise<REnumFieldLoadedChoice[]>> = {}\n): VNode => {\n return h(ResourcefulRecordDefaultForm, {\n props,\n display,\n model,\n schema,\n mode,\n doRefreshChoices,\n })\n}\n\nexport const renderResourcefulRecordModelPropertyField = (\n schema: ResourcefulRecordModelPropertySchema,\n validator: Schema,\n bindings: ComputedRef<ValidationFieldBindings>,\n mode: ResourcefulRecordViewMode,\n display: ScopedDisplayProps,\n doRefreshChoices?: (() => Promise<REnumFieldLoadedChoice[]>) | undefined\n): VNode => {\n const t = useI18n()\n const renderableFieldType = typeAndFormatToResourcefulFieldType(schema.type, schema.format)\n let renderMode: CommonResourcefulFieldPublicProps['renderMode'] =\n mode === 'read' ? 'read' : 'edit'\n if (renderMode === 'edit') {\n /**\n * Force rendering of autocreated/autoupdated/immutable/primary-key fields as read-only\n */\n if (\n mode === 'create' &&\n (schema['x-resourceful-autocreated'] || schema['x-resourceful-primary-key'])\n ) {\n renderMode = 'read'\n }\n if (\n mode === 'update' &&\n (schema['x-resourceful-autoupdated'] || schema['x-resourceful-immutable'])\n ) {\n renderMode = 'read'\n }\n }\n const commonProps: CommonResourcefulFieldPublicProps = {\n renderMode,\n multiple: validator.type === 'array',\n choices: undefined,\n allowUnspecifiedChoices: false,\n density: display.xs ? 'compact' : display.lgAndUp ? 'default' : 'comfortable',\n ...bindings.value,\n }\n if (schema['x-resourceful-relationship']) {\n commonProps.label = schema['x-resourceful-relationship'].title\n commonProps.multiple = schema['x-resourceful-relationship'].multiple\n if (Array.isArray(schema['x-resourceful-relationship'].choices)) {\n commonProps.choices = schema['x-resourceful-relationship'].choices\n }\n } else if ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices'])) {\n commonProps.choices = schema['x-resourceful-choices'].map((c) => ({\n value: c.value,\n label: c.i18n ? t(c.title || c.value) : c.title || c.value,\n }))\n }\n if (\n validator.type !== 'array' &&\n (schema['x-resourceful-relationship'] ||\n ('x-resourceful-choices' in schema && Array.isArray(schema['x-resourceful-choices'])))\n ) {\n return h(REnumField, {\n // Field specifics\n clearable: schema.nullable || false,\n ...stripUndefinedValuesFromObject({\n doRefreshChoices,\n }),\n // Common props\n ...commonProps,\n } satisfies Partial<REnumFieldProps>)\n }\n switch (renderableFieldType) {\n case 'string':\n return h(RStringField, {\n // Field specifics\n format: schema.format as any,\n clearable: schema.nullable || false,\n // Common props\n ...commonProps,\n } satisfies Partial<RStringFieldProps>)\n case 'date':\n return h(RDateField, {\n // Field specifics\n clearable: schema.nullable || false,\n // Common props\n ...commonProps,\n } satisfies Partial<RDateFieldProps>)\n case 'dateTime':\n return h(RDateTimeField, {\n // Field specifics\n clearable: schema.nullable || false,\n // Common props\n ...commonProps,\n } satisfies Partial<RDateTimeFieldProps>)\n case 'binary':\n return h(DevErrorAlert, {})\n case 'number':\n return h(RNumberField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RNumberFieldProps>)\n case 'integer':\n return h(RIntegerField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RIntegerFieldProps>)\n case 'bigint':\n return h(RBigIntField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RBigIntFieldProps>)\n case 'unsignedInteger':\n return h(RUnsignedIntegerField, {\n // Field specifics\n min: schema.minimum,\n max: schema.maximum,\n step: schema.multipleOf,\n // Common props\n ...commonProps,\n } satisfies Partial<RUnsignedIntegerFieldProps>)\n case 'boolean':\n return h(RBooleanField, {\n // Field specifics\n choices: schema.nullable ? [true, false, null] : [true, false],\n // Common props\n ...commonProps,\n } satisfies Partial<RBooleanFieldProps>)\n default:\n return h(DevErrorAlert, {})\n }\n}\n"],"names":["joi","validator"],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { useDisplay } from "vuetify";
|
|
2
|
-
import { S as SvgIcon } from "./index-
|
|
2
|
+
import { S as SvgIcon } from "./index-BJmmZly3.mjs";
|
|
3
3
|
import { d as deepmerge } from "./index-DGAy0amb.mjs";
|
|
4
|
-
import { u as useFieldComposer } from "./field_composer-
|
|
5
|
-
import { b as IconValue$1, o as omit, c as makeVTextFieldProps } from "./vendor-nhtio-vuetifiable-
|
|
6
|
-
import { p as propsAndEmitsFactory, t as toUnreactive, a as useSlot } from "./utils-
|
|
4
|
+
import { u as useFieldComposer } from "./field_composer-B_4w9YL9.mjs";
|
|
5
|
+
import { b as IconValue$1, o as omit, c as makeVTextFieldProps } from "./vendor-nhtio-vuetifiable-CTlDfYMJ.mjs";
|
|
6
|
+
import { p as propsAndEmitsFactory, t as toUnreactive, a as useSlot } from "./utils-BBXjywEs.mjs";
|
|
7
7
|
import { shallowRef, ref, computed, watch, onMounted, createElementVNode, normalizeStyle, normalizeClass, createVNode, normalizeProps, guardReactiveProps, toRef, onScopeDispose, provide, nextTick, inject, withDirectives, vShow, mergeProps, Fragment, onUnmounted, onBeforeMount, h, defineComponent as defineComponent$1, toRefs } from "vue";
|
|
8
|
-
import { q as useForm, s as useFocus,
|
|
9
|
-
import { p as forwardRefs, K as mdiPalette, L as mdiEyedropper, M as mdiCircleSmall, N as mdiEyeOff, O as mdiEye, a as mdiClose, V as VCard } from "./mdi-
|
|
10
|
-
import { V as VHover } from "./VHover-
|
|
11
|
-
import { az as defineComponent, p as propsFactory,
|
|
12
|
-
import { a as VPicker, m as makeVPickerProps, V as VBadge } from "./VPicker-
|
|
13
|
-
import { V as VMenu } from "./VMenu-
|
|
14
|
-
import { V as VListItem, a as VListItemTitle } from "./VListItem-
|
|
15
|
-
import { V as VDialog } from "./VDialog-
|
|
8
|
+
import { q as useForm, s as useFocus, h as VInput, l as VLabel, o as makeVInputProps, x as makeFocusProps, c as commonEmitsValidators, m as makeCommonResourcefulFieldProps, e as VToolbar, V as VTextField, f as VToolbarItems, b as VDivider, d as VBottomSheet } from "./common-CRFL2oQX.mjs";
|
|
9
|
+
import { p as forwardRefs, K as mdiPalette, L as mdiEyedropper, M as mdiCircleSmall, N as mdiEyeOff, O as mdiEye, a as mdiClose, V as VCard } from "./mdi-VGx06N8O.mjs";
|
|
10
|
+
import { V as VHover } from "./VHover-DYt7f7-R.mjs";
|
|
11
|
+
import { az as defineComponent, p as propsFactory, X as clamp, s as convertToUnit, ac as useResizeObserver, e as useRender, aA as getEventCoordinates, x as makeComponentProps, aB as HexToHSV, aC as HSVtoHex, aD as HSLtoHSV, aE as HSVtoHSL, aF as RGBtoHSV, aG as HSVtoRGB, aH as has, W as useLocale, c as VBtn, aI as getDecimals, h as useRtl, ax as createRange, J as makeElevationProps, F as makeRoundedProps, g as genericComponent, aj as Ripple, A as useElevation, a2 as useTextColor, n as useBackgroundColor, aJ as keyValues, a0 as VScaleTransition, D as useRounded, u as useProxiedModel, O as filterInputAttrs, aK as SUPPORTS_EYE_DROPPER, aL as HSVtoCSS, aM as parseColor, y as IconValue, aN as RGBtoCSS, ah as deepEqual, d as VIcon, aO as getContrast, a9 as consoleWarn, ai as provideDefaults, aP as pick } from "./display-DNgEbAdH.mjs";
|
|
12
|
+
import { a as VPicker, m as makeVPickerProps, V as VBadge } from "./VPicker-D9TBI61U.mjs";
|
|
13
|
+
import { V as VMenu } from "./VMenu-Xveh72QZ.mjs";
|
|
14
|
+
import { V as VListItem, a as VListItemTitle } from "./VListItem-CHkJtaF9.mjs";
|
|
15
|
+
import { V as VDialog } from "./VDialog-BljV_Pfu.mjs";
|
|
16
16
|
const makeVColorPickerCanvasProps = propsFactory({
|
|
17
17
|
color: {
|
|
18
18
|
type: Object
|
|
@@ -2433,4 +2433,4 @@ export {
|
|
|
2433
2433
|
RStringFieldFormat as a,
|
|
2434
2434
|
RStringColorFieldMode as b
|
|
2435
2435
|
};
|
|
2436
|
-
//# sourceMappingURL=string-
|
|
2436
|
+
//# sourceMappingURL=string-CJvxnWzd.mjs.map
|