@nhtio/lucid-resourceful-vue-components 0.1.0-master-e14740ea → 1.20251107.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/{VBtn-DhfYEt9V.mjs → VBtn-C_58hP1L.mjs} +7 -7
- package/{VBtn-DhfYEt9V.mjs.map → VBtn-C_58hP1L.mjs.map} +1 -1
- package/{VDatePicker-D0OTAyvJ.mjs → VDatePicker-CKxKmuCC.mjs} +165 -165
- package/{VDatePicker-D0OTAyvJ.mjs.map → VDatePicker-CKxKmuCC.mjs.map} +1 -1
- package/{VEmptyState-BFrXSTJ-.mjs → VEmptyState-CjqRy_Xt.mjs} +40 -40
- package/{VEmptyState-BFrXSTJ-.mjs.map → VEmptyState-CjqRy_Xt.mjs.map} +1 -1
- package/{VHover-DLvOmsjv.mjs → VHover-D-sydp3P.mjs} +3 -3
- package/{VHover-DLvOmsjv.mjs.map → VHover-D-sydp3P.mjs.map} +1 -1
- package/{VListItem-LNaoM8S4.mjs → VListItem-DNNkp2dc.mjs} +55 -55
- package/{VListItem-LNaoM8S4.mjs.map → VListItem-DNNkp2dc.mjs.map} +1 -1
- package/{VMenu-9rTbTKtH.mjs → VMenu-oGwvgLV1.mjs} +28 -28
- package/{VMenu-9rTbTKtH.mjs.map → VMenu-oGwvgLV1.mjs.map} +1 -1
- package/{VPicker-BGuRD0KW.mjs → VPicker-EfRj-X6U.mjs} +4 -4
- package/{VPicker-BGuRD0KW.mjs.map → VPicker-EfRj-X6U.mjs.map} +1 -1
- package/{VRadioGroup-Dx_wEqzl.mjs → VRadioGroup-CDf6CGwX.mjs} +21 -21
- package/{VRadioGroup-Dx_wEqzl.mjs.map → VRadioGroup-CDf6CGwX.mjs.map} +1 -1
- package/{VRow-DaLdbIGw.mjs → VRow-Da2fdUPu.mjs} +17 -17
- package/{VRow-DaLdbIGw.mjs.map → VRow-Da2fdUPu.mjs.map} +1 -1
- package/{VSheet-DnIfs-1c.mjs → VSheet-DdygPJlo.mjs} +13 -13
- package/{VSheet-DnIfs-1c.mjs.map → VSheet-DdygPJlo.mjs.map} +1 -1
- package/{actions-8bWGsB-p.mjs → actions-5gxlWcWt.mjs} +14 -14
- package/{actions-8bWGsB-p.mjs.map → actions-5gxlWcWt.mjs.map} +1 -1
- package/{alert-IW1AIWZw.mjs → alert-C6Dxm9jn.mjs} +13 -13
- package/{alert-IW1AIWZw.mjs.map → alert-C6Dxm9jn.mjs.map} +1 -1
- package/{bigint-Jmfa2L4S.mjs → bigint-CqXe_geE.mjs} +6 -6
- package/{bigint-Jmfa2L4S.mjs.map → bigint-CqXe_geE.mjs.map} +1 -1
- package/{boolean-BEY7eBxf.mjs → boolean-BaevWx3k.mjs} +39 -39
- package/{boolean-BEY7eBxf.mjs.map → boolean-BaevWx3k.mjs.map} +1 -1
- package/{clipboard-BoKd7mFG.mjs → clipboard-CGd9vMCV.mjs} +51 -51
- package/{clipboard-BoKd7mFG.mjs.map → clipboard-CGd9vMCV.mjs.map} +1 -1
- package/{colorUtils-DmtKYNgW.mjs → colorUtils-BdpqbLZS.mjs} +3 -3
- package/{colorUtils-DmtKYNgW.mjs.map → colorUtils-BdpqbLZS.mjs.map} +1 -1
- package/{common-BeDAn4wu.mjs → common-DrsZRUoj.mjs} +8881 -8880
- package/common-DrsZRUoj.mjs.map +1 -0
- package/common.css +1 -1
- package/{component-CjPpW_A2.mjs → component-DhEJuSE6.mjs} +2 -2
- package/{component-CjPpW_A2.mjs.map → component-DhEJuSE6.mjs.map} +1 -1
- 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 +8 -8
- package/{console-CRXioSFP.mjs → console-Dgoi3FwV.mjs} +2 -2
- package/{console-CRXioSFP.mjs.map → console-Dgoi3FwV.mjs.map} +1 -1
- package/{custom-Y1WJVKP9.mjs → custom-CXFDPB_N.mjs} +17 -17
- package/{custom-Y1WJVKP9.mjs.map → custom-CXFDPB_N.mjs.map} +1 -1
- package/{date-BxEeCNWD.mjs → date-BXNqToRH.mjs} +21 -21
- package/{date-BxEeCNWD.mjs.map → date-BXNqToRH.mjs.map} +1 -1
- package/{date_time-6kpv7eDF.mjs → date_time-DuRO8DS4.mjs} +299 -299
- package/{date_time-6kpv7eDF.mjs.map → date_time-DuRO8DS4.mjs.map} +1 -1
- package/{display-CO0pTIEs.mjs → display-BL-pquAI.mjs} +41 -41
- package/{display-CO0pTIEs.mjs.map → display-BL-pquAI.mjs.map} +1 -1
- package/{display-kAyhIPBH.mjs → display-DCHGPqrW.mjs} +7 -7
- package/{display-kAyhIPBH.mjs.map → display-DCHGPqrW.mjs.map} +1 -1
- package/{display-DvzWa1QO.mjs → display-TF26EjNQ.mjs} +40 -40
- package/{display-DvzWa1QO.mjs.map → display-TF26EjNQ.mjs.map} +1 -1
- package/{elevation-CMzO50xm.mjs → elevation-j7bb-vGU.mjs} +81 -81
- package/{elevation-CMzO50xm.mjs.map → elevation-j7bb-vGU.mjs.map} +1 -1
- package/{enum-noYU2Cqh.mjs → enum-CRgh6TfR.mjs} +22 -22
- package/{enum-noYU2Cqh.mjs.map → enum-CRgh6TfR.mjs.map} +1 -1
- package/factories.mjs +1 -1
- package/{field_composer-DpJx0Oz1.mjs → field_composer-CjKCvP50.mjs} +7 -7
- package/{field_composer-DpJx0Oz1.mjs.map → field_composer-CjKCvP50.mjs.map} +1 -1
- package/{form-CDLcDPyU.mjs → form-CFjPqvRf.mjs} +45 -45
- package/{form-CDLcDPyU.mjs.map → form-CFjPqvRf.mjs.map} +1 -1
- package/{guards-B99p3BPj.mjs → guards-Cby4QwzY.mjs} +2 -2
- package/{guards-B99p3BPj.mjs.map → guards-Cby4QwzY.mjs.map} +1 -1
- package/guards.mjs +4 -4
- package/helpers.mjs +6 -6
- package/{index-bXmNb9jX.mjs → index-B8OnsqN1.mjs} +10 -10
- package/{index-bXmNb9jX.mjs.map → index-B8OnsqN1.mjs.map} +1 -1
- package/{index-BaWthszI.mjs → index-C-PCfO1S.mjs} +2 -2
- package/{index-BaWthszI.mjs.map → index-C-PCfO1S.mjs.map} +1 -1
- package/{index-C9UuBVyI.mjs → index-CZg-HOo9.mjs} +12 -12
- package/{index-C9UuBVyI.mjs.map → index-CZg-HOo9.mjs.map} +1 -1
- package/{index-B2rKM3mR.mjs → index-ChVCZ8iE.mjs} +21 -21
- package/{index-B2rKM3mR.mjs.map → index-ChVCZ8iE.mjs.map} +1 -1
- package/{index-CzI9mHIx.mjs → index-Cou5qTHe.mjs} +13 -13
- package/{index-CzI9mHIx.mjs.map → index-Cou5qTHe.mjs.map} +1 -1
- package/{index-Bi050X9r.mjs → index-DM8E6faO.mjs} +8 -8
- package/{index-Bi050X9r.mjs.map → index-DM8E6faO.mjs.map} +1 -1
- package/{index-CIvylvfa.mjs → index-DSLt7-cJ.mjs} +43 -43
- package/{index-CIvylvfa.mjs.map → index-DSLt7-cJ.mjs.map} +1 -1
- package/{index-slHxe6b-.mjs → index-VpcXNOpn.mjs} +2 -2
- package/{index-slHxe6b-.mjs.map → index-VpcXNOpn.mjs.map} +1 -1
- package/{index-BUpccfIz.mjs → index-fiZltUBs.mjs} +3 -3
- package/{index-BUpccfIz.mjs.map → index-fiZltUBs.mjs.map} +1 -1
- package/index.mjs +31 -31
- package/{integer-BIJ4_I8y.mjs → integer-Dy0xpFif.mjs} +5 -5
- package/{integer-BIJ4_I8y.mjs.map → integer-Dy0xpFif.mjs.map} +1 -1
- package/{mdi-CqMJqgQi.mjs → mdi-BQSh-ess.mjs} +54 -54
- package/{mdi-CqMJqgQi.mjs.map → mdi-BQSh-ess.mjs.map} +1 -1
- package/{number-z_LAINPM.mjs → number-DWCew87L.mjs} +101 -101
- package/{number-z_LAINPM.mjs.map → number-DWCew87L.mjs.map} +1 -1
- package/package.json +38 -38
- package/{position-Ai5XksAO.mjs → position-B9VPkbhU.mjs} +2 -2
- package/{position-Ai5XksAO.mjs.map → position-B9VPkbhU.mjs.map} +1 -1
- package/{props-p4f5Pa5h.mjs → props-Cjpc9pre.mjs} +4 -4
- package/{props-p4f5Pa5h.mjs.map → props-Cjpc9pre.mjs.map} +1 -1
- package/{props-BYX22zcE.mjs → props-DQlQ6VDP.mjs} +6 -6
- package/{props-BYX22zcE.mjs.map → props-DQlQ6VDP.mjs.map} +1 -1
- package/{renderers-BKUvrrVm.mjs → renderers-hznWrh2D.mjs} +13 -13
- package/{renderers-BKUvrrVm.mjs.map → renderers-hznWrh2D.mjs.map} +1 -1
- package/{string-Dmr8SRMf.mjs → string-BTd_Gwx-.mjs} +136 -136
- package/{string-Dmr8SRMf.mjs.map → string-BTd_Gwx-.mjs.map} +1 -1
- package/{unsigned_integer-BliPiCXO.mjs → unsigned_integer-CfxxFKrO.mjs} +4 -4
- package/{unsigned_integer-BliPiCXO.mjs.map → unsigned_integer-CfxxFKrO.mjs.map} +1 -1
- package/useRender-CfNJA_8a.mjs +9 -0
- package/{useRender-BD1xw5zG.mjs.map → useRender-CfNJA_8a.mjs.map} +1 -1
- package/{utils-DqXWb-4f.mjs → utils-D3ZGaTyv.mjs} +48 -48
- package/{utils-DqXWb-4f.mjs.map → utils-D3ZGaTyv.mjs.map} +1 -1
- package/{validation-DS3tTSk5.mjs → validation-BobMyGeq.mjs} +4 -4
- package/{validation-DS3tTSk5.mjs.map → validation-BobMyGeq.mjs.map} +1 -1
- package/common-BeDAn4wu.mjs.map +0 -1
- package/useRender-BD1xw5zG.mjs +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum-noYU2Cqh.mjs","sources":["../src/private/fields/enum.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Enum Field\n|--------------------------------------------------------------------------\n|\n| A comprehensive field component for enum/enumeration values with dynamic choice\n| loading support and professional UX features. Automatically adapts between single\n| field editing, multiple selection management, and read-only display through the\n| unified field composer architecture.\n|\n| ## Supported Values:\n| - string: Text-based enum values (e.g., \"active\", \"pending\", \"completed\")\n| - number: Numeric enum values (e.g., 1, 2, 3 for status codes)\n| - bigint: Large integer enum values for high-precision scenarios\n|\n| ## Rendering Variants (renderAs):\n| - select: Default autocomplete dropdown with search and filtering\n| - radio: VRadioGroup for explicit choice with visual radio buttons\n|\n| ## Dynamic Choice Loading:\n| - Supports static choices via the `choices` prop\n| - Enables dynamic loading via `doRefreshChoices` callback prop\n| - Parent component controls loading logic, timing, and error handling\n| - Field triggers initial load on mount via watch with immediate: true\n| - Future support for manual refresh via exposed refresh() method\n|\n| ## Choice Management:\n| - Choices are expected as objects with `value` and `label` properties\n| - Value can be string, number, or bigint matching the field's data type\n| - Label provides human-readable display text for the enum value\n| - Stringifier automatically maps values to labels for display\n| - Fallback to String(value) when choice not found in list\n|\n| ## Operational Modes:\n|\n| ### Single Mode (multiple: false, renderMode: 'edit')\n| Direct enum control with chosen render variant (select or radio) for\n| selecting a single value from the available choices.\n|\n| ### Multiple Mode (multiple: true, renderMode: 'edit')\n| RMultipleField with sophisticated chip management showing labeled chips,\n| full dialog interface for enum array management with search and filtering.\n|\n| ### Read Mode (renderMode: 'read')\n| Clean text presentation with Oxford comma formatting for arrays, showing\n| localized labels for each enum value.\n|\n| ## Real-World Use Cases:\n| - Status fields (draft/published/archived)\n| - Priority levels (low/medium/high/critical)\n| - User roles (admin/editor/viewer)\n| - Category selection from predefined list\n| - Configuration options loaded from API\n| - Dynamic form fields based on external data\n|\n| ## Integration Pattern:\n| Parent components handle choice loading via HTTP, caching, and error handling\n| while the field focuses solely on rendering and value management. This clean\n| separation enables flexible data loading strategies without coupling the field\n| to specific HTTP implementations.\n|\n*/\n\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VRadio } from 'vuetify/components/VRadio'\nimport { useFieldComposer } from './field_composer'\nimport { VInputPublicProps } from '../filtration/common'\nimport { SvgIcon, svgPathToIconValue } from '../svg-icon'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { VRadioGroup } from 'vuetify/components/VRadioGroup'\nimport { VAutocomplete } from 'vuetify/components/VAutocomplete'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport { omit, pick, throttle } from '@nhtio/vuetifiable/util/helpers'\nimport { makeVInputProps } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport { makeVFieldProps } from '@nhtio/vuetifiable/components/VField/VField'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVRadioGroupProps } from '@nhtio/vuetifiable/components/VRadioGroup/VRadioGroup'\nimport { h, defineComponent, toRefs, computed, ref, watch, shallowRef, triggerRef } from 'vue'\nimport { makeVAutocompleteProps } from '@nhtio/vuetifiable/components/VAutocomplete/VAutocomplete'\nimport {\n mdiClose,\n mdiMenuDown,\n mdiCircleSlice8,\n mdiCheckboxBlankCircleOutline,\n mdiRefresh,\n} from '@mdi/js'\nimport type { VInput } from 'vuetify/components/VInput'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { ExtractSlotDefinitions } from '../common/types'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VInputSlots = ExtractSlotDefinitions<typeof VInput.slots>\ntype VAutocompletePublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVAutocompleteProps>>\ntype VRadioGroupPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVRadioGroupProps>>\n\n/**\n * Supported enum field values representing any enumerable type.\n * Includes string for text-based enums (most common), number for numeric\n * status codes or identifiers, and bigint for high-precision scenarios\n * requiring large integer enum values.\n *\n * @example\n * ```typescript\n * // String-based status enum\n * type Status = \"draft\" | \"published\" | \"archived\"\n * const status: REnumFieldValue = \"published\"\n *\n * // Numeric priority enum\n * enum Priority { Low = 1, Medium = 2, High = 3, Critical = 4 }\n * const priority: REnumFieldValue = Priority.High // 3\n *\n * // BigInt identifier enum\n * const largeId: REnumFieldValue = 9007199254740991n\n * ```\n */\nexport type REnumFieldValue = string | number | bigint\n\n/**\n * Rendering variants for enum fields that determine the UI control type.\n * Each variant provides different user interaction patterns while maintaining\n * consistent enum value selection logic.\n *\n * - `select`: Default autocomplete dropdown with search, filtering, and keyboard navigation\n * - `radio`: VRadioGroup for explicit choice scenarios with visual radio button controls\n *\n * @example\n * ```typescript\n * // Status dropdown with search\n * <REnumField renderAs=\"select\" v-model=\"status\" :choices=\"statusChoices\" />\n *\n * // Priority radio buttons for explicit selection\n * <REnumField renderAs=\"radio\" v-model=\"priority\" :choices=\"priorityChoices\" />\n *\n * // Multiple selection (select works best)\n * <REnumField multiple v-model=\"categories\" :choices=\"categoryChoices\" />\n * ```\n */\nexport const REnumFieldRenderable = ['select', 'radio'] as const\n\n/**\n * Union type for enum field rendering variants. Used for the renderAs prop\n * to specify which UI control should be used for enum value interaction.\n */\nexport type REnumFieldRenderable = (typeof REnumFieldRenderable)[number]\n\nexport type REnumFieldLoadedChoice = {\n value: string | number | bigint\n title: string\n}\n\nconst isValidREnumFieldValue = (\n value: REnumFieldValue | REnumFieldValue[] | null | undefined\n): boolean => {\n if (\n 'undefined' === typeof value ||\n (!Array.isArray(value) &&\n (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint'))\n )\n return true\n if (Array.isArray(value)) {\n return value.every(\n (v) => 'string' === typeof v || 'number' === typeof v || 'bigint' === typeof v\n )\n }\n return false\n}\n\nconst { makeProps: makeREnumFieldProps, emits: REnumFieldEmits } = propsAndEmitsFactory(\n {\n ...pick(makeVInputProps(), [\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 ]),\n ...pick(\n makeVFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ['variant', 'clearIcon', 'clearable']\n ),\n modelValue: {\n type: [String, Number, BigInt, Array] as PropType<\n REnumFieldValue | REnumFieldValue[] | null | undefined\n >,\n default: undefined,\n },\n renderAs: {\n type: String as PropType<REnumFieldRenderable>,\n default: 'select',\n },\n iconForSelectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCircleSlice8 }),\n },\n iconForUnselectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxBlankCircleOutline }),\n },\n selectMenuIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMenuDown }),\n },\n ripple: {\n type: Boolean,\n default: false,\n },\n ...omit(makeCommonResourcefulFieldProps(), ['variant']),\n doRefreshChoices: {\n type: Function as PropType<(() => Promise<REnumFieldLoadedChoice[]>) | undefined>,\n default: undefined,\n },\n },\n {\n 'update:modelValue': (value: REnumFieldValue | REnumFieldValue[] | null | undefined) =>\n isValidREnumFieldValue(value),\n 'update:model-value': (value: REnumFieldValue | REnumFieldValue[] | null | undefined) =>\n isValidREnumFieldValue(value),\n ...commonEmitsValidators,\n },\n 'REnumField'\n)\n\n/**\n * Factory function that creates comprehensive props for the REnumField component.\n * Combines VInput props with enum-specific options for dynamic choice loading,\n * rendering variants, icon customization, and unified field architecture integration.\n *\n * @returns Props definition object for use with defineComponent\n *\n * @example\n * ```typescript\n * // Basic enum field props\n * const props = makeREnumFieldProps()\n *\n * // Access specific prop configurations\n * console.log(props.renderAs) // Rendering variant prop\n * console.log(props.doRefreshChoices) // Dynamic loading callback prop\n * console.log(props.multiple) // Multiple selection mode prop\n * ```\n */\nexport { makeREnumFieldProps }\n\n/**\n * Public props interface for the REnumField component. Includes all VInput\n * props plus enum field-specific options for dynamic choice loading,\n * rendering variants, icon customization, and unified field architecture features.\n *\n * @example\n * ```typescript\n * // Component props typing\n * interface MyComponentProps {\n * enumFieldProps: REnumFieldProps\n * }\n *\n * // Programmatic prop construction\n * const fieldProps: REnumFieldProps = {\n * renderAs: 'select',\n * choices: [\n * { value: 'draft', label: 'Draft' },\n * { value: 'published', label: 'Published' },\n * ],\n * doRefreshChoices: async () => {\n * // Load choices from API\n * },\n * multiple: false,\n * label: 'Status',\n * // ... other VInput props\n * }\n * ```\n */\nexport type REnumFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeREnumFieldProps>>\n\n/**\n * Comprehensive enum field component with dynamic choice loading support and\n * multiple rendering variants. Automatically adapts between single field editing,\n * multiple selection management, and read-only display through the unified field\n * composer architecture.\n *\n * Supports configurable rendering as autocomplete dropdown or radio group, with\n * dynamic choice loading via callback prop for flexible data fetching strategies.\n * Parent components control loading logic while the field focuses on rendering.\n *\n * @example\n * ```vue\n * <!-- Static choices with select dropdown -->\n * <REnumField\n * v-model=\"status\"\n * renderAs=\"select\"\n * :choices=\"[\n * { value: 'draft', label: 'Draft' },\n * { value: 'published', label: 'Published' },\n * { value: 'archived', label: 'Archived' }\n * ]\"\n * label=\"Status\"\n * />\n *\n * <!-- Dynamic loading with radio buttons -->\n * <REnumField\n * v-model=\"category\"\n * renderAs=\"radio\"\n * :choices=\"categoryChoices\"\n * :doRefreshChoices=\"loadCategories\"\n * label=\"Category\"\n * />\n *\n * <!-- Multiple selection with search -->\n * <REnumField\n * v-model=\"tags\"\n * multiple\n * :choices=\"tagChoices\"\n * :doRefreshChoices=\"loadTags\"\n * label=\"Tags\"\n * />\n *\n * <!-- Clearable enum field -->\n * <REnumField\n * v-model=\"priority\"\n * :choices=\"priorityChoices\"\n * clearable\n * label=\"Priority (Optional)\"\n * />\n * ```\n */\nexport const REnumField = defineComponent({\n name: 'REnumField',\n props: makeREnumFieldProps(),\n emits: REnumFieldEmits,\n slots: Object as SlotsType<VInputSlots>,\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 renderAs,\n renderMode,\n multiple,\n choices: passedChoices,\n to,\n href,\n menuIcon,\n active,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n noValuesText,\n selectMenuIcon,\n ripple,\n iconForSelectedRadio,\n iconForUnselectedRadio,\n dirty,\n onBlur,\n onChange,\n onInput,\n clearable,\n doRefreshChoices,\n } = toRefs(props)\n const externalChoices = shallowRef<any[] | undefined>(undefined)\n const refreshingChoices = ref(false)\n const handleRefreshChoices = async () => {\n refreshingChoices.value = true\n if (doRefreshChoices.value && typeof doRefreshChoices.value === 'function') {\n try {\n const results = await doRefreshChoices.value()\n externalChoices.value = results.map((r) => ({ value: r.value, label: r.title }))\n triggerRef(externalChoices)\n } catch {\n // Ignore errors from refresh\n externalChoices.value = undefined\n triggerRef(externalChoices)\n }\n }\n refreshingChoices.value = false\n }\n const callRefreshChoices = throttle(handleRefreshChoices, 300)\n const choices = computed(() => passedChoices.value ?? externalChoices.value)\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 'allowUnspecifiedChoices': ref(false),\n 'choices': choices,\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 stringifier = computed<RFieldStringifier<REnumFieldValue>>(() => {\n return (val: REnumFieldValue) => {\n const choice = choices.value?.find((c) => c.value === val)\n if (!choice) {\n return String(val)\n }\n return choice.label\n }\n })\n const commonFieldBindings = computed<VInputPublicProps>(() => ({\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 dirty: dirty.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }))\n const vAutocompleteFieldBindings = computed<VAutocompletePublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n active: active.value,\n disabled: commonFieldBindings.value.disabled || undefined,\n items: choices.value,\n clearable: clearable.value,\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n density: density.value,\n itemTitle: 'label',\n itemValue: 'value',\n variant: variant.value,\n menuIcon: selectMenuIcon.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n }) satisfies VAutocompletePublicProps\n )\n const vRadioGroupFieldBindings = computed<VRadioGroupPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseIcon: iconForUnselectedRadio.value,\n trueIcon: iconForSelectedRadio.value,\n ripple: ripple.value,\n }) satisfies VRadioGroupPublicProps\n )\n const singleFieldRenderer: SingleFieldRenderer = ({ props: fieldBindings, isMultiAdd }) => {\n const renderableVAutocompleteFieldBindings = {\n ...vAutocompleteFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vAutocompleteFieldBindings.value.class,\n }\n const renderableVRadioGroupFieldBindings = {\n ...vRadioGroupFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vRadioGroupFieldBindings.value.class,\n }\n switch (renderAs.value) {\n case 'radio':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VRadioGroup, renderableVRadioGroupFieldBindings, {\n ...slots,\n default: () =>\n Array.from(choices.value || []).map((i) =>\n h(\n VRadio,\n {\n value: i.value,\n },\n {\n label: () => i.label,\n }\n )\n ),\n append: (...args: any[]) => [\n // @ts-ignore\n slots['append'] ? slots['append'](...args) : null,\n typeof doRefreshChoices.value === 'function'\n ? h(\n VBtn,\n {\n icon: true,\n loading: refreshingChoices.value,\n disabled: disabled.value,\n density: 'compact',\n class: 'ms-2',\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n e.stopImmediatePropagation()\n callRefreshChoices()\n },\n },\n () => h(VIcon, { icon: svgPathToIconValue(mdiRefresh) })\n )\n : null,\n ],\n })\n default:\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VAutocomplete, renderableVAutocompleteFieldBindings, {\n ...slots,\n 'append-inner': (...args: any[]) => [\n // @ts-ignore\n slots['append-inner'] ? slots['append-inner'](...args) : null,\n typeof doRefreshChoices.value === 'function'\n ? h(\n VBtn,\n {\n icon: true,\n loading: refreshingChoices.value,\n disabled: disabled.value,\n density: 'compact',\n class: 'ms-2',\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n e.stopImmediatePropagation()\n callRefreshChoices()\n },\n },\n () => h(VIcon, { icon: svgPathToIconValue(mdiRefresh) })\n )\n : null,\n ],\n })\n }\n }\n watch(\n doRefreshChoices,\n (newVal) => {\n if (newVal && typeof newVal === 'function') {\n handleRefreshChoices()\n }\n },\n { immediate: true }\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 false,\n false,\n () => {},\n callRefreshChoices\n )\n return composed\n },\n})\n\n/**\n * Component type for the REnumField. Represents the complete enum field\n * component with dynamic choice loading support, multiple rendering variants,\n * and unified field architecture integration. Use this type for component\n * references, template refs, and programmatic component manipulation.\n *\n * @example\n * ```typescript\n * // Template ref typing\n * const enumFieldRef = ref<REnumField>()\n *\n * // Component type checking\n * const isEnumField = (component: unknown): component is REnumField => {\n * return component?.name === 'REnumField'\n * }\n *\n * // Programmatic component usage\n * const createEnumField = (): REnumField => {\n * return REnumField\n * }\n * ```\n */\nexport type REnumField = typeof REnumField & ComponentPublicInstance\n"],"names":["REnumFieldRenderable","isValidREnumFieldValue","value","v","makeREnumFieldProps","REnumFieldEmits","propsAndEmitsFactory","pick","makeVInputProps","makeVFieldProps","h","SvgIcon","mdiClose","IconValue","mdiCircleSlice8","mdiCheckboxBlankCircleOutline","mdiMenuDown","omit","makeCommonResourcefulFieldProps","commonEmitsValidators","REnumField","defineComponent","props","emit","slots","focused","disabled","error","errorMessages","maxErrors","name","label","readonly","validateOn","theme","width","maxWidth","minWidth","density","className","style","id","baseColor","color","glow","iconColor","hideDetails","hint","persistentHint","messages","direction","modelValue","renderAs","renderMode","multiple","passedChoices","to","href","menuIcon","active","variant","prefix","persistentPlaceholder","suffix","role","noValuesText","selectMenuIcon","ripple","iconForSelectedRadio","iconForUnselectedRadio","dirty","onBlur","onChange","onInput","clearable","doRefreshChoices","toRefs","externalChoices","shallowRef","refreshingChoices","ref","handleRefreshChoices","results","r","triggerRef","callRefreshChoices","throttle","choices","computed","commonProps","stringifier","val","choice","c","commonFieldBindings","vAutocompleteFieldBindings","stripUndefinedValuesFromObject","vRadioGroupFieldBindings","singleFieldRenderer","fieldBindings","isMultiAdd","renderableVAutocompleteFieldBindings","renderableVRadioGroupFieldBindings","VRadioGroup","i","VRadio","args","VBtn","e","VIcon","svgPathToIconValue","mdiRefresh","VAutocomplete","watch","newVal","composed","useFieldComposer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enum-CRgh6TfR.mjs","sources":["../src/private/fields/enum.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Enum Field\n|--------------------------------------------------------------------------\n|\n| A comprehensive field component for enum/enumeration values with dynamic choice\n| loading support and professional UX features. Automatically adapts between single\n| field editing, multiple selection management, and read-only display through the\n| unified field composer architecture.\n|\n| ## Supported Values:\n| - string: Text-based enum values (e.g., \"active\", \"pending\", \"completed\")\n| - number: Numeric enum values (e.g., 1, 2, 3 for status codes)\n| - bigint: Large integer enum values for high-precision scenarios\n|\n| ## Rendering Variants (renderAs):\n| - select: Default autocomplete dropdown with search and filtering\n| - radio: VRadioGroup for explicit choice with visual radio buttons\n|\n| ## Dynamic Choice Loading:\n| - Supports static choices via the `choices` prop\n| - Enables dynamic loading via `doRefreshChoices` callback prop\n| - Parent component controls loading logic, timing, and error handling\n| - Field triggers initial load on mount via watch with immediate: true\n| - Future support for manual refresh via exposed refresh() method\n|\n| ## Choice Management:\n| - Choices are expected as objects with `value` and `label` properties\n| - Value can be string, number, or bigint matching the field's data type\n| - Label provides human-readable display text for the enum value\n| - Stringifier automatically maps values to labels for display\n| - Fallback to String(value) when choice not found in list\n|\n| ## Operational Modes:\n|\n| ### Single Mode (multiple: false, renderMode: 'edit')\n| Direct enum control with chosen render variant (select or radio) for\n| selecting a single value from the available choices.\n|\n| ### Multiple Mode (multiple: true, renderMode: 'edit')\n| RMultipleField with sophisticated chip management showing labeled chips,\n| full dialog interface for enum array management with search and filtering.\n|\n| ### Read Mode (renderMode: 'read')\n| Clean text presentation with Oxford comma formatting for arrays, showing\n| localized labels for each enum value.\n|\n| ## Real-World Use Cases:\n| - Status fields (draft/published/archived)\n| - Priority levels (low/medium/high/critical)\n| - User roles (admin/editor/viewer)\n| - Category selection from predefined list\n| - Configuration options loaded from API\n| - Dynamic form fields based on external data\n|\n| ## Integration Pattern:\n| Parent components handle choice loading via HTTP, caching, and error handling\n| while the field focuses solely on rendering and value management. This clean\n| separation enables flexible data loading strategies without coupling the field\n| to specific HTTP implementations.\n|\n*/\n\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VRadio } from 'vuetify/components/VRadio'\nimport { useFieldComposer } from './field_composer'\nimport { VInputPublicProps } from '../filtration/common'\nimport { SvgIcon, svgPathToIconValue } from '../svg-icon'\nimport { propsAndEmitsFactory } from '../common/factories'\nimport { VRadioGroup } from 'vuetify/components/VRadioGroup'\nimport { VAutocomplete } from 'vuetify/components/VAutocomplete'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport { omit, pick, throttle } from '@nhtio/vuetifiable/util/helpers'\nimport { makeVInputProps } from '@nhtio/vuetifiable/components/VInput/VInput'\nimport { makeVFieldProps } from '@nhtio/vuetifiable/components/VField/VField'\nimport { makeCommonResourcefulFieldProps, commonEmitsValidators } from './common'\nimport { makeVRadioGroupProps } from '@nhtio/vuetifiable/components/VRadioGroup/VRadioGroup'\nimport { h, defineComponent, toRefs, computed, ref, watch, shallowRef, triggerRef } from 'vue'\nimport { makeVAutocompleteProps } from '@nhtio/vuetifiable/components/VAutocomplete/VAutocomplete'\nimport {\n mdiClose,\n mdiMenuDown,\n mdiCircleSlice8,\n mdiCheckboxBlankCircleOutline,\n mdiRefresh,\n} from '@mdi/js'\nimport type { VInput } from 'vuetify/components/VInput'\nimport type { SingleFieldRenderer } from './field_composer'\nimport type { ExtractSlotDefinitions } from '../common/types'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { CommonResourcefulFieldPublicProps, RFieldStringifier } from './common'\nimport type {\n PropType,\n ExtractPublicPropTypes,\n ToRefs,\n SlotsType,\n ComponentPublicInstance,\n} from 'vue'\n\ntype VInputSlots = ExtractSlotDefinitions<typeof VInput.slots>\ntype VAutocompletePublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVAutocompleteProps>>\ntype VRadioGroupPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVRadioGroupProps>>\n\n/**\n * Supported enum field values representing any enumerable type.\n * Includes string for text-based enums (most common), number for numeric\n * status codes or identifiers, and bigint for high-precision scenarios\n * requiring large integer enum values.\n *\n * @example\n * ```typescript\n * // String-based status enum\n * type Status = \"draft\" | \"published\" | \"archived\"\n * const status: REnumFieldValue = \"published\"\n *\n * // Numeric priority enum\n * enum Priority { Low = 1, Medium = 2, High = 3, Critical = 4 }\n * const priority: REnumFieldValue = Priority.High // 3\n *\n * // BigInt identifier enum\n * const largeId: REnumFieldValue = 9007199254740991n\n * ```\n */\nexport type REnumFieldValue = string | number | bigint\n\n/**\n * Rendering variants for enum fields that determine the UI control type.\n * Each variant provides different user interaction patterns while maintaining\n * consistent enum value selection logic.\n *\n * - `select`: Default autocomplete dropdown with search, filtering, and keyboard navigation\n * - `radio`: VRadioGroup for explicit choice scenarios with visual radio button controls\n *\n * @example\n * ```typescript\n * // Status dropdown with search\n * <REnumField renderAs=\"select\" v-model=\"status\" :choices=\"statusChoices\" />\n *\n * // Priority radio buttons for explicit selection\n * <REnumField renderAs=\"radio\" v-model=\"priority\" :choices=\"priorityChoices\" />\n *\n * // Multiple selection (select works best)\n * <REnumField multiple v-model=\"categories\" :choices=\"categoryChoices\" />\n * ```\n */\nexport const REnumFieldRenderable = ['select', 'radio'] as const\n\n/**\n * Union type for enum field rendering variants. Used for the renderAs prop\n * to specify which UI control should be used for enum value interaction.\n */\nexport type REnumFieldRenderable = (typeof REnumFieldRenderable)[number]\n\nexport type REnumFieldLoadedChoice = {\n value: string | number | bigint\n title: string\n}\n\nconst isValidREnumFieldValue = (\n value: REnumFieldValue | REnumFieldValue[] | null | undefined\n): boolean => {\n if (\n 'undefined' === typeof value ||\n (!Array.isArray(value) &&\n (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint'))\n )\n return true\n if (Array.isArray(value)) {\n return value.every(\n (v) => 'string' === typeof v || 'number' === typeof v || 'bigint' === typeof v\n )\n }\n return false\n}\n\nconst { makeProps: makeREnumFieldProps, emits: REnumFieldEmits } = propsAndEmitsFactory(\n {\n ...pick(makeVInputProps(), [\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 ]),\n ...pick(\n makeVFieldProps({\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n }),\n ['variant', 'clearIcon', 'clearable']\n ),\n modelValue: {\n type: [String, Number, BigInt, Array] as PropType<\n REnumFieldValue | REnumFieldValue[] | null | undefined\n >,\n default: undefined,\n },\n renderAs: {\n type: String as PropType<REnumFieldRenderable>,\n default: 'select',\n },\n iconForSelectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCircleSlice8 }),\n },\n iconForUnselectedRadio: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiCheckboxBlankCircleOutline }),\n },\n selectMenuIcon: {\n type: IconValue as PropType<IconValue>,\n default: () => h(SvgIcon, { d: mdiMenuDown }),\n },\n ripple: {\n type: Boolean,\n default: false,\n },\n ...omit(makeCommonResourcefulFieldProps(), ['variant']),\n doRefreshChoices: {\n type: Function as PropType<(() => Promise<REnumFieldLoadedChoice[]>) | undefined>,\n default: undefined,\n },\n },\n {\n 'update:modelValue': (value: REnumFieldValue | REnumFieldValue[] | null | undefined) =>\n isValidREnumFieldValue(value),\n 'update:model-value': (value: REnumFieldValue | REnumFieldValue[] | null | undefined) =>\n isValidREnumFieldValue(value),\n ...commonEmitsValidators,\n },\n 'REnumField'\n)\n\n/**\n * Factory function that creates comprehensive props for the REnumField component.\n * Combines VInput props with enum-specific options for dynamic choice loading,\n * rendering variants, icon customization, and unified field architecture integration.\n *\n * @returns Props definition object for use with defineComponent\n *\n * @example\n * ```typescript\n * // Basic enum field props\n * const props = makeREnumFieldProps()\n *\n * // Access specific prop configurations\n * console.log(props.renderAs) // Rendering variant prop\n * console.log(props.doRefreshChoices) // Dynamic loading callback prop\n * console.log(props.multiple) // Multiple selection mode prop\n * ```\n */\nexport { makeREnumFieldProps }\n\n/**\n * Public props interface for the REnumField component. Includes all VInput\n * props plus enum field-specific options for dynamic choice loading,\n * rendering variants, icon customization, and unified field architecture features.\n *\n * @example\n * ```typescript\n * // Component props typing\n * interface MyComponentProps {\n * enumFieldProps: REnumFieldProps\n * }\n *\n * // Programmatic prop construction\n * const fieldProps: REnumFieldProps = {\n * renderAs: 'select',\n * choices: [\n * { value: 'draft', label: 'Draft' },\n * { value: 'published', label: 'Published' },\n * ],\n * doRefreshChoices: async () => {\n * // Load choices from API\n * },\n * multiple: false,\n * label: 'Status',\n * // ... other VInput props\n * }\n * ```\n */\nexport type REnumFieldProps = ExtractPublicPropTypes<ReturnType<typeof makeREnumFieldProps>>\n\n/**\n * Comprehensive enum field component with dynamic choice loading support and\n * multiple rendering variants. Automatically adapts between single field editing,\n * multiple selection management, and read-only display through the unified field\n * composer architecture.\n *\n * Supports configurable rendering as autocomplete dropdown or radio group, with\n * dynamic choice loading via callback prop for flexible data fetching strategies.\n * Parent components control loading logic while the field focuses on rendering.\n *\n * @example\n * ```vue\n * <!-- Static choices with select dropdown -->\n * <REnumField\n * v-model=\"status\"\n * renderAs=\"select\"\n * :choices=\"[\n * { value: 'draft', label: 'Draft' },\n * { value: 'published', label: 'Published' },\n * { value: 'archived', label: 'Archived' }\n * ]\"\n * label=\"Status\"\n * />\n *\n * <!-- Dynamic loading with radio buttons -->\n * <REnumField\n * v-model=\"category\"\n * renderAs=\"radio\"\n * :choices=\"categoryChoices\"\n * :doRefreshChoices=\"loadCategories\"\n * label=\"Category\"\n * />\n *\n * <!-- Multiple selection with search -->\n * <REnumField\n * v-model=\"tags\"\n * multiple\n * :choices=\"tagChoices\"\n * :doRefreshChoices=\"loadTags\"\n * label=\"Tags\"\n * />\n *\n * <!-- Clearable enum field -->\n * <REnumField\n * v-model=\"priority\"\n * :choices=\"priorityChoices\"\n * clearable\n * label=\"Priority (Optional)\"\n * />\n * ```\n */\nexport const REnumField = defineComponent({\n name: 'REnumField',\n props: makeREnumFieldProps(),\n emits: REnumFieldEmits,\n slots: Object as SlotsType<VInputSlots>,\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 renderAs,\n renderMode,\n multiple,\n choices: passedChoices,\n to,\n href,\n menuIcon,\n active,\n variant,\n prefix,\n persistentPlaceholder,\n suffix,\n role,\n noValuesText,\n selectMenuIcon,\n ripple,\n iconForSelectedRadio,\n iconForUnselectedRadio,\n dirty,\n onBlur,\n onChange,\n onInput,\n clearable,\n doRefreshChoices,\n } = toRefs(props)\n const externalChoices = shallowRef<any[] | undefined>(undefined)\n const refreshingChoices = ref(false)\n const handleRefreshChoices = async () => {\n refreshingChoices.value = true\n if (doRefreshChoices.value && typeof doRefreshChoices.value === 'function') {\n try {\n const results = await doRefreshChoices.value()\n externalChoices.value = results.map((r) => ({ value: r.value, label: r.title }))\n triggerRef(externalChoices)\n } catch {\n // Ignore errors from refresh\n externalChoices.value = undefined\n triggerRef(externalChoices)\n }\n }\n refreshingChoices.value = false\n }\n const callRefreshChoices = throttle(handleRefreshChoices, 300)\n const choices = computed(() => passedChoices.value ?? externalChoices.value)\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 'allowUnspecifiedChoices': ref(false),\n 'choices': choices,\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 stringifier = computed<RFieldStringifier<REnumFieldValue>>(() => {\n return (val: REnumFieldValue) => {\n const choice = choices.value?.find((c) => c.value === val)\n if (!choice) {\n return String(val)\n }\n return choice.label\n }\n })\n const commonFieldBindings = computed<VInputPublicProps>(() => ({\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 dirty: dirty.value,\n onBlur: onBlur.value,\n onChange: onChange.value,\n onInput: onInput.value,\n }))\n const vAutocompleteFieldBindings = computed<VAutocompletePublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n active: active.value,\n disabled: commonFieldBindings.value.disabled || undefined,\n items: choices.value,\n clearable: clearable.value,\n clearIcon: () => h(SvgIcon, { d: mdiClose }),\n density: density.value,\n itemTitle: 'label',\n itemValue: 'value',\n variant: variant.value,\n menuIcon: selectMenuIcon.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n }) satisfies VAutocompletePublicProps\n )\n const vRadioGroupFieldBindings = computed<VRadioGroupPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n ...commonFieldBindings.value,\n density: density.value,\n falseIcon: iconForUnselectedRadio.value,\n trueIcon: iconForSelectedRadio.value,\n ripple: ripple.value,\n }) satisfies VRadioGroupPublicProps\n )\n const singleFieldRenderer: SingleFieldRenderer = ({ props: fieldBindings, isMultiAdd }) => {\n const renderableVAutocompleteFieldBindings = {\n ...vAutocompleteFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vAutocompleteFieldBindings.value.class,\n }\n const renderableVRadioGroupFieldBindings = {\n ...vRadioGroupFieldBindings.value,\n ...fieldBindings,\n class: isMultiAdd ? [] : vRadioGroupFieldBindings.value.class,\n }\n switch (renderAs.value) {\n case 'radio':\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VRadioGroup, renderableVRadioGroupFieldBindings, {\n ...slots,\n default: () =>\n Array.from(choices.value || []).map((i) =>\n h(\n VRadio,\n {\n value: i.value,\n },\n {\n label: () => i.label,\n }\n )\n ),\n append: (...args: any[]) => [\n // @ts-ignore\n slots['append'] ? slots['append'](...args) : null,\n typeof doRefreshChoices.value === 'function'\n ? h(\n VBtn,\n {\n icon: true,\n loading: refreshingChoices.value,\n disabled: disabled.value,\n density: 'compact',\n class: 'ms-2',\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n e.stopImmediatePropagation()\n callRefreshChoices()\n },\n },\n () => h(VIcon, { icon: svgPathToIconValue(mdiRefresh) })\n )\n : null,\n ],\n })\n default:\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n return h(VAutocomplete, renderableVAutocompleteFieldBindings, {\n ...slots,\n 'append-inner': (...args: any[]) => [\n // @ts-ignore\n slots['append-inner'] ? slots['append-inner'](...args) : null,\n typeof doRefreshChoices.value === 'function'\n ? h(\n VBtn,\n {\n icon: true,\n loading: refreshingChoices.value,\n disabled: disabled.value,\n density: 'compact',\n class: 'ms-2',\n onClick: (e: MouseEvent) => {\n e.stopPropagation()\n e.stopImmediatePropagation()\n callRefreshChoices()\n },\n },\n () => h(VIcon, { icon: svgPathToIconValue(mdiRefresh) })\n )\n : null,\n ],\n })\n }\n }\n watch(\n doRefreshChoices,\n (newVal) => {\n if (newVal && typeof newVal === 'function') {\n handleRefreshChoices()\n }\n },\n { immediate: true }\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 false,\n false,\n () => {},\n callRefreshChoices\n )\n return composed\n },\n})\n\n/**\n * Component type for the REnumField. Represents the complete enum field\n * component with dynamic choice loading support, multiple rendering variants,\n * and unified field architecture integration. Use this type for component\n * references, template refs, and programmatic component manipulation.\n *\n * @example\n * ```typescript\n * // Template ref typing\n * const enumFieldRef = ref<REnumField>()\n *\n * // Component type checking\n * const isEnumField = (component: unknown): component is REnumField => {\n * return component?.name === 'REnumField'\n * }\n *\n * // Programmatic component usage\n * const createEnumField = (): REnumField => {\n * return REnumField\n * }\n * ```\n */\nexport type REnumField = typeof REnumField & ComponentPublicInstance\n"],"names":["REnumFieldRenderable","isValidREnumFieldValue","value","v","makeREnumFieldProps","REnumFieldEmits","propsAndEmitsFactory","pick","makeVInputProps","makeVFieldProps","h","SvgIcon","mdiClose","IconValue","mdiCircleSlice8","mdiCheckboxBlankCircleOutline","mdiMenuDown","omit","makeCommonResourcefulFieldProps","commonEmitsValidators","REnumField","defineComponent","props","emit","slots","focused","disabled","error","errorMessages","maxErrors","name","label","readonly","validateOn","theme","width","maxWidth","minWidth","density","className","style","id","baseColor","color","glow","iconColor","hideDetails","hint","persistentHint","messages","direction","modelValue","renderAs","renderMode","multiple","passedChoices","to","href","menuIcon","active","variant","prefix","persistentPlaceholder","suffix","role","noValuesText","selectMenuIcon","ripple","iconForSelectedRadio","iconForUnselectedRadio","dirty","onBlur","onChange","onInput","clearable","doRefreshChoices","toRefs","externalChoices","shallowRef","refreshingChoices","ref","handleRefreshChoices","results","r","triggerRef","callRefreshChoices","throttle","choices","computed","commonProps","stringifier","val","choice","c","commonFieldBindings","vAutocompleteFieldBindings","stripUndefinedValuesFromObject","vRadioGroupFieldBindings","singleFieldRenderer","fieldBindings","isMultiAdd","renderableVAutocompleteFieldBindings","renderableVRadioGroupFieldBindings","VRadioGroup","i","VRadio","args","VBtn","e","VIcon","svgPathToIconValue","mdiRefresh","VAutocomplete","watch","newVal","composed","useFieldComposer"],"mappings":";;;;;;;;;AAmJO,MAAMA,KAAuB,CAAC,UAAU,OAAO,GAahDC,IAAyB,CAC7BC,MAGkB,OAAOA,IAAvB,OACC,CAAC,MAAM,QAAQA,CAAK,MAClB,OAAOA,KAAU,YAAY,OAAOA,KAAU,YAAY,OAAOA,KAAU,YAEvE,KACL,MAAM,QAAQA,CAAK,IACdA,EAAM;AAAA,EACX,CAACC,MAAmB,OAAOA,KAApB,YAAsC,OAAOA,KAApB,YAAsC,OAAOA,KAApB;AAAoB,IAG1E,IAGH,EAAE,WAAWC,IAAqB,OAAOC,OAAoBC;AAAA,EACjE;AAAA,IACE,GAAGC,EAAKC,MAAmB;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,IACD,GAAGD;AAAA,MACDE,GAAgB;AAAA,QACd,WAAW,MAAMC,EAAEC,GAAS,EAAE,GAAGC,GAAU;AAAA,MAAA,CAC5C;AAAA,MACD,CAAC,WAAW,aAAa,WAAW;AAAA,IAAA;AAAA,IAEtC,YAAY;AAAA,MACV,MAAM,CAAC,QAAQ,QAAQ,QAAQ,KAAK;AAAA,MAGpC,SAAS;AAAA,IAAA;AAAA,IAEX,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,sBAAsB;AAAA,MACpB,MAAMC;AAAA,MACN,SAAS,MAAMH,EAAEC,GAAS,EAAE,GAAGG,IAAiB;AAAA,IAAA;AAAA,IAElD,wBAAwB;AAAA,MACtB,MAAMD;AAAA,MACN,SAAS,MAAMH,EAAEC,GAAS,EAAE,GAAGI,IAA+B;AAAA,IAAA;AAAA,IAEhE,gBAAgB;AAAA,MACd,MAAMF;AAAA,MACN,SAAS,MAAMH,EAAEC,GAAS,EAAE,GAAGK,IAAa;AAAA,IAAA;AAAA,IAE9C,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,GAAGC,GAAKC,MAAmC,CAAC,SAAS,CAAC;AAAA,IACtD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AAAA,IACE,qBAAqB,CAAChB,MACpBD,EAAuBC,CAAK;AAAA,IAC9B,sBAAsB,CAACA,MACrBD,EAAuBC,CAAK;AAAA,IAC9B,GAAGiB;AAAA,EAAA;AAAA,EAEL;AACF,GAuGaC,KAAaC,GAAgB;AAAA,EACxC,MAAM;AAAA,EACN,OAAOjB,GAAA;AAAA,EACP,OAAOC;AAAA,EACP,OAAO;AAAA,EACP,MAAMiB,GAAO,EAAE,MAAAC,GAAM,OAAAC,KAAS;AAC5B,UAAM;AAAA,MACJ,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,OAAAC;AAAA,MACA,eAAAC;AAAA,MACA,WAAAC;AAAA,MACA,MAAAC;AAAA,MACA,OAAAC;AAAA,MACA,UAAAC;AAAA,MACA,YAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,SAAAC;AAAA,MACA,OAAOC;AAAA,MACP,OAAAC;AAAA,MACA,IAAAC;AAAA,MACA,WAAAC;AAAA,MACA,OAAAC;AAAA,MACA,MAAAC;AAAA,MACA,WAAAC;AAAA,MACA,aAAAC;AAAA,MACA,MAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,UAAAC;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,UAAAC;AAAA,MACA,YAAAC;AAAA,MACA,UAAAC;AAAA,MACA,SAASC;AAAA,MACT,IAAAC;AAAA,MACA,MAAAC;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,MACA,SAAAC;AAAA,MACA,QAAAC;AAAA,MACA,uBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,OAAAC;AAAA,MACA,QAAAC;AAAA,MACA,UAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,MACA,kBAAAC;AAAA,IAAA,IACEC,EAAOtD,CAAK,GACVuD,IAAkBC,GAA8B,MAAS,GACzDC,IAAoBC,EAAI,EAAK,GAC7BC,IAAuB,YAAY;AAEvC,UADAF,EAAkB,QAAQ,IACtBJ,EAAiB,SAAS,OAAOA,EAAiB,SAAU;AAC9D,YAAI;AACF,gBAAMO,IAAU,MAAMP,EAAiB,MAAA;AACvC,UAAAE,EAAgB,QAAQK,EAAQ,IAAI,CAACC,OAAO,EAAE,OAAOA,EAAE,OAAO,OAAOA,EAAE,MAAA,EAAQ,GAC/EC,EAAWP,CAAe;AAAA,QAC5B,QAAQ;AAEN,UAAAA,EAAgB,QAAQ,QACxBO,EAAWP,CAAe;AAAA,QAC5B;AAEF,MAAAE,EAAkB,QAAQ;AAAA,IAC5B,GACMM,IAAqBC,GAASL,GAAsB,GAAG,GACvDM,IAAUC,EAAS,MAAMjC,GAAc,SAASsB,EAAgB,KAAK,GACrEY,KAAkF;AAAA,MACtF,OAAAjD;AAAA,MACA,OAAAT;AAAA,MACA,SAAAO;AAAA,MACA,YAAAe;AAAA,MACA,UAAAC;AAAA,MACA,IAAAE;AAAA,MACA,MAAAC;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,MACA,OAAAzB;AAAA,MACA,UAAAR;AAAA,MACA,SAAAkC;AAAA,MACA,QAAAC;AAAA,MACA,uBAAAC;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,SAAAvC;AAAA,MAEA,yBAA2BuD,EAAI,EAAK;AAAA,MACpC,SAAWO;AAAA,MACX,OAAShD;AAAA,MACT,oBAAoBqC,EAAOtD,CAAK,EAAE,kBAAkB;AAAA,MACpD,kBAAkBsD,EAAOtD,CAAK,EAAE,gBAAgB;AAAA,MAChD,uBAAuBsD,EAAOtD,CAAK,EAAE,qBAAqB;AAAA,MAC1D,iBAAiBsD,EAAOtD,CAAK,EAAE,eAAe;AAAA,MAC9C,wBAAwBsD,EAAOtD,CAAK,EAAE,sBAAsB;AAAA,MAC5D,mBAAmBsD,EAAOtD,CAAK,EAAE,iBAAiB;AAAA,MAClD,uBAAuBsD,EAAOtD,CAAK,EAAE,qBAAqB;AAAA,MAC1D,mBAAmBsD,EAAOtD,CAAK,EAAE,iBAAiB;AAAA,IAOpD,GACMoE,KAAcF,EAA6C,MACxD,CAACG,MAAyB;AAC/B,YAAMC,IAASL,EAAQ,OAAO,KAAK,CAACM,MAAMA,EAAE,UAAUF,CAAG;AACzD,aAAKC,IAGEA,EAAO,QAFL,OAAOD,CAAG;AAAA,IAGrB,CACD,GACKG,IAAsBN,EAA4B,OAAO;AAAA,MAC7D,SAAS/D,EAAQ;AAAA,MACjB,UAAUC,EAAS;AAAA,MACnB,OAAOC,EAAM;AAAA,MACb,eAAeC,EAAc;AAAA,MAC7B,WAAWC,EAAU;AAAA,MACrB,MAAMC,EAAK;AAAA,MACX,OAAOC,EAAM;AAAA,MACb,UAAUC,EAAS;AAAA,MACnB,YAAYC,EAAW;AAAA,MACvB,OAAOC,EAAM;AAAA,MACb,OAAOC,EAAM;AAAA,MACb,UAAUC,EAAS;AAAA,MACnB,UAAUC,EAAS;AAAA,MACnB,SAASC,EAAQ;AAAA,MACjB,OAAOC,EAAU;AAAA,MACjB,OAAOC,EAAM;AAAA,MACb,IAAIC,GAAG;AAAA,MACP,WAAWC,GAAU;AAAA,MACrB,OAAOC,GAAM;AAAA,MACb,MAAMC,GAAK;AAAA,MACX,WAAWC,GAAU;AAAA,MACrB,aAAaC,GAAY;AAAA,MACzB,MAAMC,GAAK;AAAA,MACX,gBAAgBC,GAAe;AAAA,MAC/B,UAAUC,GAAS;AAAA,MACnB,WAAWC,GAAU;AAAA,MACrB,OAAOoB,GAAM;AAAA,MACb,QAAQC,GAAO;AAAA,MACf,UAAUC,GAAS;AAAA,MACnB,SAASC,GAAQ;AAAA,IAAA,EACjB,GACIsB,IAA6BP;AAAA,MACjC,MACEQ,EAA+B;AAAA,QAC7B,GAAGF,EAAoB;AAAA,QACvB,QAAQnC,EAAO;AAAA,QACf,UAAUmC,EAAoB,MAAM,YAAY;AAAA,QAChD,OAAOP,EAAQ;AAAA,QACf,WAAWb,GAAU;AAAA,QACrB,WAAW,MAAMhE,EAAEC,GAAS,EAAE,GAAGC,GAAU;AAAA,QAC3C,SAAS0B,EAAQ;AAAA,QACjB,WAAW;AAAA,QACX,WAAW;AAAA,QACX,SAASsB,EAAQ;AAAA,QACjB,UAAUM,GAAe;AAAA,QACzB,QAAQL,EAAO;AAAA,QACf,uBAAuBC,EAAsB;AAAA,QAC7C,QAAQC,EAAO;AAAA,QACf,MAAMC,EAAK;AAAA,MAAA,CACZ;AAAA,IAAA,GAECiC,IAA2BT;AAAA,MAC/B,MACEQ,EAA+B;AAAA,QAC7B,GAAGF,EAAoB;AAAA,QACvB,SAASxD,EAAQ;AAAA,QACjB,WAAW+B,GAAuB;AAAA,QAClC,UAAUD,GAAqB;AAAA,QAC/B,QAAQD,GAAO;AAAA,MAAA,CAChB;AAAA,IAAA,GAEC+B,KAA2C,CAAC,EAAE,OAAOC,GAAe,YAAAC,QAAiB;AACzF,YAAMC,IAAuC;AAAA,QAC3C,GAAGN,EAA2B;AAAA,QAC9B,GAAGI;AAAA,QACH,OAAOC,IAAa,KAAKL,EAA2B,MAAM;AAAA,MAAA,GAEtDO,KAAqC;AAAA,QACzC,GAAGL,EAAyB;AAAA,QAC5B,GAAGE;AAAA,QACH,OAAOC,IAAa,KAAKH,EAAyB,MAAM;AAAA,MAAA;AAE1D,cAAQ7C,GAAS,OAAA;AAAA,QACf,KAAK;AAEH,iBAAO1C,EAAE6F,IAAaD,IAAoC;AAAA,YACxD,GAAG9E;AAAA,YACH,SAAS,MACP,MAAM,KAAK+D,EAAQ,SAAS,CAAA,CAAE,EAAE;AAAA,cAAI,CAACiB,MACnC9F;AAAA,gBACE+F;AAAA,gBACA;AAAA,kBACE,OAAOD,EAAE;AAAA,gBAAA;AAAA,gBAEX;AAAA,kBACE,OAAO,MAAMA,EAAE;AAAA,gBAAA;AAAA,cACjB;AAAA,YACF;AAAA,YAEJ,QAAQ,IAAIE,MAAgB;AAAA;AAAA,cAE1BlF,EAAM,SAAYA,EAAM,OAAU,GAAGkF,CAAI,IAAI;AAAA,cAC7C,OAAO/B,EAAiB,SAAU,aAC9BjE;AAAA,gBACEiG;AAAA,gBACA;AAAA,kBACE,MAAM;AAAA,kBACN,SAAS5B,EAAkB;AAAA,kBAC3B,UAAUrD,EAAS;AAAA,kBACnB,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,SAAS,CAACkF,MAAkB;AAC1B,oBAAAA,EAAE,gBAAA,GACFA,EAAE,yBAAA,GACFvB,EAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,gBAEF,MAAM3E,EAAEmG,GAAO,EAAE,MAAMC,EAAmBC,CAAU,GAAG;AAAA,cAAA,IAEzD;AAAA,YAAA;AAAA,UACN,CACD;AAAA,QACH;AAEE,iBAAOrG,EAAEsG,IAAeX,GAAsC;AAAA,YAC5D,GAAG7E;AAAA,YACH,gBAAgB,IAAIkF,MAAgB;AAAA;AAAA,cAElClF,EAAM,cAAc,IAAIA,EAAM,cAAc,EAAE,GAAGkF,CAAI,IAAI;AAAA,cACzD,OAAO/B,EAAiB,SAAU,aAC9BjE;AAAA,gBACEiG;AAAA,gBACA;AAAA,kBACE,MAAM;AAAA,kBACN,SAAS5B,EAAkB;AAAA,kBAC3B,UAAUrD,EAAS;AAAA,kBACnB,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,SAAS,CAACkF,MAAkB;AAC1B,oBAAAA,EAAE,gBAAA,GACFA,EAAE,yBAAA,GACFvB,EAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,gBAEF,MAAM3E,EAAEmG,GAAO,EAAE,MAAMC,EAAmBC,CAAU,GAAG;AAAA,cAAA,IAEzD;AAAA,YAAA;AAAA,UACN,CACD;AAAA,MAAA;AAAA,IAEP;AACA,IAAAE;AAAA,MACEtC;AAAA,MACA,CAACuC,MAAW;AACV,QAAIA,KAAU,OAAOA,KAAW,cAC9BjC,EAAA;AAAA,MAEJ;AAAA,MACA,EAAE,WAAW,GAAA;AAAA,IAAK;AAEpB,UAAM,EAAE,UAAAkC,OAAaC;AAAA,MACnB3B;AAAA,MACAC;AAAA,MACAQ;AAAA,MACA3E;AAAA,MACAD,EAAM,qBAAqB;AAAA,MAC3BA,EAAM,sBAAsB;AAAA,MAC5B6B;AAAA,MACA7B,EAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MAAC;AAAA,MACP+D;AAAA,IAAA;AAEF,WAAO8B;AAAA,EACT;AACF,CAAC;"}
|
package/factories.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { u as X, R as Y,
|
|
1
|
+
import { u as X, R as Y, l as Z } from "./common-DrsZRUoj.mjs";
|
|
2
2
|
import { d as _ } from "./index-DXdh_Con.mjs";
|
|
3
3
|
import { computed as u, toValue as n, h as C } from "vue";
|
|
4
|
-
import { s as V, t as
|
|
5
|
-
const ne = (e, r, i,
|
|
4
|
+
import { s as V, t as g } from "./utils-D3ZGaTyv.mjs";
|
|
5
|
+
const ne = (e, r, i, k, m, h, y, U, s = !1, o = !1, I = () => {
|
|
6
6
|
}, M) => {
|
|
7
7
|
const {
|
|
8
8
|
renderMode: R,
|
|
@@ -26,7 +26,7 @@ const ne = (e, r, i, g, m, h, y, U, s = !1, o = !1, I = () => {
|
|
|
26
26
|
role: E,
|
|
27
27
|
focused: G
|
|
28
28
|
} = e, p = u(() => A.value === !0), { localState: a, setLocalState: t, getLocalState: H, recomputeLocalState: J } = X(
|
|
29
|
-
|
|
29
|
+
k,
|
|
30
30
|
m,
|
|
31
31
|
h,
|
|
32
32
|
p,
|
|
@@ -109,16 +109,16 @@ const ne = (e, r, i, g, m, h, y, U, s = !1, o = !1, I = () => {
|
|
|
109
109
|
if (R.value === "read")
|
|
110
110
|
return C(Y, K.value);
|
|
111
111
|
if (p.value) {
|
|
112
|
-
const f =
|
|
112
|
+
const f = g(i);
|
|
113
113
|
return C(Z, Q.value, {
|
|
114
114
|
"single-variant": (...W) => f(...W)
|
|
115
115
|
});
|
|
116
116
|
} else
|
|
117
|
-
return
|
|
117
|
+
return g(i)(...l);
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
120
|
};
|
|
121
121
|
export {
|
|
122
122
|
ne as u
|
|
123
123
|
};
|
|
124
|
-
//# sourceMappingURL=field_composer-
|
|
124
|
+
//# sourceMappingURL=field_composer-CjKCvP50.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field_composer-DpJx0Oz1.mjs","sources":["../src/private/fields/field_composer.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Field Composer\n|--------------------------------------------------------------------------\n|\n| A sophisticated composable that unifies field rendering across three distinct\n| operational modes: single field editing, multiple selection management, and\n| read-only display. This composer eliminates boilerplate by automatically \n| handling state management, event binding, and mode switching.\n|\n| KEY CAPABILITIES:\n| - Unified field interface across single/multiple/read modes\n| - Automatic state management with local state synchronization\n| - Type-safe slot argument mapping for consistent interfaces\n| - Complete event handling delegation with proper prop binding\n| - Seamless integration with RMultipleField and RReadModeRenderer\n| - Generic type support for any data type via RFieldStringifier\n|\n| ARCHITECTURE:\n| - Single renderer: Focus only on individual field logic\n| - Composer: Handles all mode complexity and state orchestration\n| - Consistent slot args: Same interface whether standalone or in multiple field\n| - Smart bindings: Automatic prop/event mapping with type safety\n|\n| USAGE PATTERN:\n| Individual field components become trivial - just provide the single field\n| renderer and stringifier, and get multiple selection + read mode for free.\n*/\n\nimport { useLocalState } from './common'\nimport { deepmerge } from 'deepmerge-ts'\nimport { computed, h, toValue } from 'vue'\nimport { RMultipleField } from './multiple'\nimport { RReadModeRenderer } from './read_mode_renderer'\nimport { stripUndefinedValuesFromObject, toUnreactive } from '../common/utils'\nimport type { VNode, MaybeRef, Ref, ToRefs } from 'vue'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { RReadModeRendererPublicProps } from './read_mode_renderer'\nimport type { RMultipleFieldProps, SingleVariantSlotArgs } from './multiple'\nimport type {\n CommonResourcefulFieldPublicProps,\n EmitWithUpdateModelValue,\n LocalStateModelValue,\n RFieldStringifier,\n} from './common'\n\n/**\n * Extended RMultipleField props that include optional event handlers.\n * This type combines the base multiple field props with all possible\n * click and interaction event handlers for complete event delegation.\n *\n * Used internally to ensure type safety when binding events from the\n * composer options to the underlying RMultipleField component.\n */\ntype RMultipleFieldPropsWithEvents = RMultipleFieldProps & {\n 'onClick:append'?: ((e: MouseEvent) => void) | undefined\n 'onClick:appendInner'?: ((e: MouseEvent) => void) | undefined\n 'onClick:clear'?: ((e: MouseEvent) => void) | undefined\n 'onClick:prependInner'?: ((e: MouseEvent) => void) | undefined\n 'onClick:prepend'?: ((e: MouseEvent) => void) | undefined\n 'onMousedown:control'?: ((e: MouseEvent) => void) | undefined\n 'onClick:control'?: ((e: MouseEvent) => void) | undefined\n}\n\nexport type SingleFieldRenderer = MaybeRef<(...args: SingleVariantSlotArgs) => VNode>\n\n/**\n * A sophisticated composable that unifies field rendering across three operational modes:\n * single field editing, multiple selection management, and read-only display.\n *\n * This composer eliminates the complexity of managing different field states by providing\n * a unified interface. Individual field components only need to implement their single\n * field renderer, and the composer automatically handles multiple selection and read mode.\n *\n * ## Operational Modes\n *\n * 1. **Single Mode** (`multiple: false`, `renderMode: 'edit'`): Direct single field rendering\n * 2. **Multiple Mode** (`multiple: true`, `renderMode: 'edit'`): RMultipleField with single renderer as slot\n * 3. **Read Mode** (`renderMode: 'read'`): RReadModeRenderer with Oxford comma formatting\n *\n * ## Key Benefits\n *\n * - **Unified Configuration**: All options consolidated in commonProps - no separate option objects\n * - **Unified State Management**: Automatic local state sync with proper emit handling\n * - **Consistent Interface**: Same slot args pattern across all modes\n * - **Type Safety**: Full generic type propagation with proper TypeScript support\n * - **Event Delegation**: Complete event handling with prop binding automation\n * - **Zero Boilerplate**: Individual fields become trivial to implement\n *\n * ## Simplified Architecture\n *\n * ```typescript\n * // Individual field becomes this simple:\n * const { composed } = useFieldComposer(\n * toRefs(props), // All options unified in commonProps!\n * stringifier,\n * singleRenderer, // Just focus on single field logic!\n * emit,\n * // ... standard parameters\n * )\n * return () => composed()\n * ```\n *\n * @template T - The data type managed by the field (string, number, User, etc.)\n * @param commonProps - Reactive common field properties including all mode options (renderMode, multiple, variant, theme, to, href, events, etc.)\n * @param stringifier - Function to convert values to display format (supports VNode + string)\n * @param singleFieldRenderer - The core field renderer using SingleVariantSlotArgs interface\n * @param emit - Vue emit function for modelValue updates\n * @param onUpdateModelValueCamelProp - Optional camelCase prop event handler\n * @param onUpdateModelValueKebabProp - Optional kebab-case prop event handler\n * @param modelValueRef - Reactive reference to the current model value\n * @param modelValueProp - The initial model value prop\n * @param nullIsValue - Whether null should be treated as a valid value (default: false)\n * @param undefinedIsValue - Whether undefined should be treated as a valid value (default: false)\n * @param onChange - Optional callback for state change tracking\n * @returns Object with state management functions and the composed renderer\n *\n * @example\n * ```typescript\n * // String field implementation with unified props\n * export const RStringField = defineComponent({\n * name: 'RStringField',\n * props: {\n * ...makeCommonResourcefulFieldProps(),\n * // Add any field-specific props here\n * },\n * emits: commonEmits,\n * setup(props, { emit }) {\n * const stringStringifier: RFieldStringifier<string> = (val) => val || ''\n * const stringRenderer = ({ props }: SingleVariantSlotArgs<string>[0]) =>\n * h(VTextField, props)\n *\n * const { composed } = useFieldComposer(\n * toRefs(props), // All mode options included automatically!\n * stringStringifier,\n * stringRenderer,\n * emit,\n * props['onUpdate:modelValue'],\n * props['onUpdate:model-value'],\n * toRef(props, 'modelValue'),\n * props.modelValue,\n * false, // nullIsValue - null is not a valid string value\n * false // undefinedIsValue - undefined is not a valid string value\n * )\n *\n * return () => composed()\n * }\n * })\n * ```\n */\nexport const useFieldComposer = <T>(\n commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>>,\n stringifier: MaybeRef<RFieldStringifier<T>>,\n singleFieldRenderer: MaybeRef<(...args: SingleVariantSlotArgs) => VNode>,\n emit: EmitWithUpdateModelValue<T>,\n onUpdateModelValueCamelProp: ((val: T | T[] | null | undefined) => void) | undefined,\n onUpdateModelValueKebabProp: ((val: T | T[] | null | undefined) => void) | undefined,\n modelValueRef: Ref<T | T[] | null | undefined>,\n modelValueProp: T | T[] | null | undefined,\n nullIsValue: MaybeRef<boolean> = false,\n undefinedIsValue: MaybeRef<boolean> = false,\n onChange: (\n is: LocalStateModelValue<T>,\n was?: LocalStateModelValue<T> | undefined\n ) => void = () => {},\n callRefreshChoices?: () => void | Promise<void>\n) => {\n const {\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n label,\n density,\n class: className,\n style,\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 } = commonProps\n const isMultiple = computed(() => multiple.value === true)\n const { localState, setLocalState, getLocalState, recomputeLocalState } = useLocalState(\n emit,\n onUpdateModelValueCamelProp,\n onUpdateModelValueKebabProp,\n isMultiple,\n modelValueRef,\n modelValueProp,\n onChange\n )\n const rReadModeRendererBindings = computed<RReadModeRendererPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n stringifier: toValue(stringifier),\n modelValue: localState.value,\n label: label.value,\n density: density.value,\n class: className.value,\n style: style.value,\n to: to.value,\n href: href.value,\n nullIsValue: toValue(nullIsValue),\n undefinedIsValue: toValue(undefinedIsValue),\n callRefreshChoices,\n }) satisfies RReadModeRendererPublicProps\n )\n const multipleVariantBindings = computed<RMultipleFieldPropsWithEvents>(\n () =>\n stripUndefinedValuesFromObject(\n deepmerge(\n {\n stringifier: toValue(stringifier),\n menuIcon: menuIcon.value,\n class: className.value,\n style: style.value,\n active: active.value,\n theme: theme.value,\n disabled: disabled.value,\n variant: variant.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n focused: focused.value,\n choices: choices.value,\n allowUnspecifiedChoices: allowUnspecifiedChoices.value,\n density: density.value,\n nullIsValue: toValue(nullIsValue),\n undefinedIsValue: toValue(undefinedIsValue),\n },\n {\n 'onUpdate:modelValue': (val: LocalStateModelValue<T>) => setLocalState(val),\n 'onUpdate:focused': commonProps['onUpdate:focused'].value,\n 'onClick:append': commonProps['onClick:append'].value,\n 'onClick:appendInner': commonProps['onClick:appendInner'].value,\n 'onClick:clear': commonProps['onClick:clear'].value,\n 'onClick:prependInner': commonProps['onClick:prependInner'].value,\n 'onClick:prepend': commonProps['onClick:prepend'].value,\n 'onMousedown:control': commonProps['onMousedown:control'].value,\n 'onClick:control': commonProps['onClick:control'].value,\n },\n {\n modelValue: localState.value,\n }\n ) as RMultipleFieldPropsWithEvents\n ) satisfies RMultipleFieldPropsWithEvents\n )\n const singleVariantRendererArgs = computed<SingleVariantSlotArgs<T>>(() => [\n {\n props: {\n 'modelValue': Array.isArray(localState.value) ? localState.value[0] : localState.value,\n 'onUpdate:model-value': (val: T | null | undefined) => setLocalState(val),\n 'onUpdate:modelValue': (val: T | null | undefined) => setLocalState(val),\n },\n add: () => {},\n isMultiAdd: false,\n },\n ])\n const composed = () => {\n const currentSingleVariantRendererArgs = singleVariantRendererArgs.value\n if (!Array.isArray(currentSingleVariantRendererArgs)) return null\n if ('read' === renderMode.value) {\n return h(RReadModeRenderer, rReadModeRendererBindings.value)\n } else if (isMultiple.value) {\n const singleVariant = toUnreactive(singleFieldRenderer)\n return h(RMultipleField, multipleVariantBindings.value, {\n 'single-variant': (...args: SingleVariantSlotArgs<T>) => singleVariant(...args),\n })\n } else {\n const singleVariant = toUnreactive(singleFieldRenderer)\n return singleVariant(...currentSingleVariantRendererArgs)\n }\n }\n return {\n localState,\n setLocalState,\n getLocalState,\n recomputeLocalState,\n composed,\n }\n}\n"],"names":["useFieldComposer","commonProps","stringifier","singleFieldRenderer","emit","onUpdateModelValueCamelProp","onUpdateModelValueKebabProp","modelValueRef","modelValueProp","nullIsValue","undefinedIsValue","onChange","callRefreshChoices","renderMode","multiple","choices","allowUnspecifiedChoices","label","density","className","style","to","href","menuIcon","active","theme","disabled","variant","prefix","persistentPlaceholder","suffix","role","focused","isMultiple","computed","localState","setLocalState","getLocalState","recomputeLocalState","useLocalState","rReadModeRendererBindings","stripUndefinedValuesFromObject","toValue","multipleVariantBindings","deepmerge","val","singleVariantRendererArgs","currentSingleVariantRendererArgs","h","RReadModeRenderer","singleVariant","toUnreactive","RMultipleField","args"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field_composer-CjKCvP50.mjs","sources":["../src/private/fields/field_composer.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Resourceful Field Composer\n|--------------------------------------------------------------------------\n|\n| A sophisticated composable that unifies field rendering across three distinct\n| operational modes: single field editing, multiple selection management, and\n| read-only display. This composer eliminates boilerplate by automatically \n| handling state management, event binding, and mode switching.\n|\n| KEY CAPABILITIES:\n| - Unified field interface across single/multiple/read modes\n| - Automatic state management with local state synchronization\n| - Type-safe slot argument mapping for consistent interfaces\n| - Complete event handling delegation with proper prop binding\n| - Seamless integration with RMultipleField and RReadModeRenderer\n| - Generic type support for any data type via RFieldStringifier\n|\n| ARCHITECTURE:\n| - Single renderer: Focus only on individual field logic\n| - Composer: Handles all mode complexity and state orchestration\n| - Consistent slot args: Same interface whether standalone or in multiple field\n| - Smart bindings: Automatic prop/event mapping with type safety\n|\n| USAGE PATTERN:\n| Individual field components become trivial - just provide the single field\n| renderer and stringifier, and get multiple selection + read mode for free.\n*/\n\nimport { useLocalState } from './common'\nimport { deepmerge } from 'deepmerge-ts'\nimport { computed, h, toValue } from 'vue'\nimport { RMultipleField } from './multiple'\nimport { RReadModeRenderer } from './read_mode_renderer'\nimport { stripUndefinedValuesFromObject, toUnreactive } from '../common/utils'\nimport type { VNode, MaybeRef, Ref, ToRefs } from 'vue'\nimport type { LooseRequired } from '@vue/shared/dist/shared.d.ts'\nimport type { RReadModeRendererPublicProps } from './read_mode_renderer'\nimport type { RMultipleFieldProps, SingleVariantSlotArgs } from './multiple'\nimport type {\n CommonResourcefulFieldPublicProps,\n EmitWithUpdateModelValue,\n LocalStateModelValue,\n RFieldStringifier,\n} from './common'\n\n/**\n * Extended RMultipleField props that include optional event handlers.\n * This type combines the base multiple field props with all possible\n * click and interaction event handlers for complete event delegation.\n *\n * Used internally to ensure type safety when binding events from the\n * composer options to the underlying RMultipleField component.\n */\ntype RMultipleFieldPropsWithEvents = RMultipleFieldProps & {\n 'onClick:append'?: ((e: MouseEvent) => void) | undefined\n 'onClick:appendInner'?: ((e: MouseEvent) => void) | undefined\n 'onClick:clear'?: ((e: MouseEvent) => void) | undefined\n 'onClick:prependInner'?: ((e: MouseEvent) => void) | undefined\n 'onClick:prepend'?: ((e: MouseEvent) => void) | undefined\n 'onMousedown:control'?: ((e: MouseEvent) => void) | undefined\n 'onClick:control'?: ((e: MouseEvent) => void) | undefined\n}\n\nexport type SingleFieldRenderer = MaybeRef<(...args: SingleVariantSlotArgs) => VNode>\n\n/**\n * A sophisticated composable that unifies field rendering across three operational modes:\n * single field editing, multiple selection management, and read-only display.\n *\n * This composer eliminates the complexity of managing different field states by providing\n * a unified interface. Individual field components only need to implement their single\n * field renderer, and the composer automatically handles multiple selection and read mode.\n *\n * ## Operational Modes\n *\n * 1. **Single Mode** (`multiple: false`, `renderMode: 'edit'`): Direct single field rendering\n * 2. **Multiple Mode** (`multiple: true`, `renderMode: 'edit'`): RMultipleField with single renderer as slot\n * 3. **Read Mode** (`renderMode: 'read'`): RReadModeRenderer with Oxford comma formatting\n *\n * ## Key Benefits\n *\n * - **Unified Configuration**: All options consolidated in commonProps - no separate option objects\n * - **Unified State Management**: Automatic local state sync with proper emit handling\n * - **Consistent Interface**: Same slot args pattern across all modes\n * - **Type Safety**: Full generic type propagation with proper TypeScript support\n * - **Event Delegation**: Complete event handling with prop binding automation\n * - **Zero Boilerplate**: Individual fields become trivial to implement\n *\n * ## Simplified Architecture\n *\n * ```typescript\n * // Individual field becomes this simple:\n * const { composed } = useFieldComposer(\n * toRefs(props), // All options unified in commonProps!\n * stringifier,\n * singleRenderer, // Just focus on single field logic!\n * emit,\n * // ... standard parameters\n * )\n * return () => composed()\n * ```\n *\n * @template T - The data type managed by the field (string, number, User, etc.)\n * @param commonProps - Reactive common field properties including all mode options (renderMode, multiple, variant, theme, to, href, events, etc.)\n * @param stringifier - Function to convert values to display format (supports VNode + string)\n * @param singleFieldRenderer - The core field renderer using SingleVariantSlotArgs interface\n * @param emit - Vue emit function for modelValue updates\n * @param onUpdateModelValueCamelProp - Optional camelCase prop event handler\n * @param onUpdateModelValueKebabProp - Optional kebab-case prop event handler\n * @param modelValueRef - Reactive reference to the current model value\n * @param modelValueProp - The initial model value prop\n * @param nullIsValue - Whether null should be treated as a valid value (default: false)\n * @param undefinedIsValue - Whether undefined should be treated as a valid value (default: false)\n * @param onChange - Optional callback for state change tracking\n * @returns Object with state management functions and the composed renderer\n *\n * @example\n * ```typescript\n * // String field implementation with unified props\n * export const RStringField = defineComponent({\n * name: 'RStringField',\n * props: {\n * ...makeCommonResourcefulFieldProps(),\n * // Add any field-specific props here\n * },\n * emits: commonEmits,\n * setup(props, { emit }) {\n * const stringStringifier: RFieldStringifier<string> = (val) => val || ''\n * const stringRenderer = ({ props }: SingleVariantSlotArgs<string>[0]) =>\n * h(VTextField, props)\n *\n * const { composed } = useFieldComposer(\n * toRefs(props), // All mode options included automatically!\n * stringStringifier,\n * stringRenderer,\n * emit,\n * props['onUpdate:modelValue'],\n * props['onUpdate:model-value'],\n * toRef(props, 'modelValue'),\n * props.modelValue,\n * false, // nullIsValue - null is not a valid string value\n * false // undefinedIsValue - undefined is not a valid string value\n * )\n *\n * return () => composed()\n * }\n * })\n * ```\n */\nexport const useFieldComposer = <T>(\n commonProps: ToRefs<LooseRequired<Readonly<CommonResourcefulFieldPublicProps>>>,\n stringifier: MaybeRef<RFieldStringifier<T>>,\n singleFieldRenderer: MaybeRef<(...args: SingleVariantSlotArgs) => VNode>,\n emit: EmitWithUpdateModelValue<T>,\n onUpdateModelValueCamelProp: ((val: T | T[] | null | undefined) => void) | undefined,\n onUpdateModelValueKebabProp: ((val: T | T[] | null | undefined) => void) | undefined,\n modelValueRef: Ref<T | T[] | null | undefined>,\n modelValueProp: T | T[] | null | undefined,\n nullIsValue: MaybeRef<boolean> = false,\n undefinedIsValue: MaybeRef<boolean> = false,\n onChange: (\n is: LocalStateModelValue<T>,\n was?: LocalStateModelValue<T> | undefined\n ) => void = () => {},\n callRefreshChoices?: () => void | Promise<void>\n) => {\n const {\n renderMode,\n multiple,\n choices,\n allowUnspecifiedChoices,\n label,\n density,\n class: className,\n style,\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 } = commonProps\n const isMultiple = computed(() => multiple.value === true)\n const { localState, setLocalState, getLocalState, recomputeLocalState } = useLocalState(\n emit,\n onUpdateModelValueCamelProp,\n onUpdateModelValueKebabProp,\n isMultiple,\n modelValueRef,\n modelValueProp,\n onChange\n )\n const rReadModeRendererBindings = computed<RReadModeRendererPublicProps>(\n () =>\n stripUndefinedValuesFromObject({\n stringifier: toValue(stringifier),\n modelValue: localState.value,\n label: label.value,\n density: density.value,\n class: className.value,\n style: style.value,\n to: to.value,\n href: href.value,\n nullIsValue: toValue(nullIsValue),\n undefinedIsValue: toValue(undefinedIsValue),\n callRefreshChoices,\n }) satisfies RReadModeRendererPublicProps\n )\n const multipleVariantBindings = computed<RMultipleFieldPropsWithEvents>(\n () =>\n stripUndefinedValuesFromObject(\n deepmerge(\n {\n stringifier: toValue(stringifier),\n menuIcon: menuIcon.value,\n class: className.value,\n style: style.value,\n active: active.value,\n theme: theme.value,\n disabled: disabled.value,\n variant: variant.value,\n prefix: prefix.value,\n persistentPlaceholder: persistentPlaceholder.value,\n suffix: suffix.value,\n role: role.value,\n focused: focused.value,\n choices: choices.value,\n allowUnspecifiedChoices: allowUnspecifiedChoices.value,\n density: density.value,\n nullIsValue: toValue(nullIsValue),\n undefinedIsValue: toValue(undefinedIsValue),\n },\n {\n 'onUpdate:modelValue': (val: LocalStateModelValue<T>) => setLocalState(val),\n 'onUpdate:focused': commonProps['onUpdate:focused'].value,\n 'onClick:append': commonProps['onClick:append'].value,\n 'onClick:appendInner': commonProps['onClick:appendInner'].value,\n 'onClick:clear': commonProps['onClick:clear'].value,\n 'onClick:prependInner': commonProps['onClick:prependInner'].value,\n 'onClick:prepend': commonProps['onClick:prepend'].value,\n 'onMousedown:control': commonProps['onMousedown:control'].value,\n 'onClick:control': commonProps['onClick:control'].value,\n },\n {\n modelValue: localState.value,\n }\n ) as RMultipleFieldPropsWithEvents\n ) satisfies RMultipleFieldPropsWithEvents\n )\n const singleVariantRendererArgs = computed<SingleVariantSlotArgs<T>>(() => [\n {\n props: {\n 'modelValue': Array.isArray(localState.value) ? localState.value[0] : localState.value,\n 'onUpdate:model-value': (val: T | null | undefined) => setLocalState(val),\n 'onUpdate:modelValue': (val: T | null | undefined) => setLocalState(val),\n },\n add: () => {},\n isMultiAdd: false,\n },\n ])\n const composed = () => {\n const currentSingleVariantRendererArgs = singleVariantRendererArgs.value\n if (!Array.isArray(currentSingleVariantRendererArgs)) return null\n if ('read' === renderMode.value) {\n return h(RReadModeRenderer, rReadModeRendererBindings.value)\n } else if (isMultiple.value) {\n const singleVariant = toUnreactive(singleFieldRenderer)\n return h(RMultipleField, multipleVariantBindings.value, {\n 'single-variant': (...args: SingleVariantSlotArgs<T>) => singleVariant(...args),\n })\n } else {\n const singleVariant = toUnreactive(singleFieldRenderer)\n return singleVariant(...currentSingleVariantRendererArgs)\n }\n }\n return {\n localState,\n setLocalState,\n getLocalState,\n recomputeLocalState,\n composed,\n }\n}\n"],"names":["useFieldComposer","commonProps","stringifier","singleFieldRenderer","emit","onUpdateModelValueCamelProp","onUpdateModelValueKebabProp","modelValueRef","modelValueProp","nullIsValue","undefinedIsValue","onChange","callRefreshChoices","renderMode","multiple","choices","allowUnspecifiedChoices","label","density","className","style","to","href","menuIcon","active","theme","disabled","variant","prefix","persistentPlaceholder","suffix","role","focused","isMultiple","computed","localState","setLocalState","getLocalState","recomputeLocalState","useLocalState","rReadModeRendererBindings","stripUndefinedValuesFromObject","toValue","multipleVariantBindings","deepmerge","val","singleVariantRendererArgs","currentSingleVariantRendererArgs","h","RReadModeRenderer","singleVariant","toUnreactive","RMultipleField","args"],"mappings":"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"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { useDefaults as Ht } from "vuetify";
|
|
2
|
-
import { A as $t, B as $e,
|
|
3
|
-
import { u as Gt } from "./display-
|
|
4
|
-
import { u as Kt } from "./validation-
|
|
2
|
+
import { A as $t, B as $e, b as Wt, D as zt } from "./common-DrsZRUoj.mjs";
|
|
3
|
+
import { u as Gt } from "./display-DCHGPqrW.mjs";
|
|
4
|
+
import { u as Kt } from "./validation-BobMyGeq.mjs";
|
|
5
5
|
import { a as Jt, b as Qt, c as Xt, E as Yt } from "./exceptions-Bzt_Bw5_.mjs";
|
|
6
6
|
import { v as s, i as Ve, h as Zt } from "./encoding-C1W2Cp3X-DzgQRCVx.mjs";
|
|
7
7
|
import { l as ea } from "./index-CFtnmFDF.mjs";
|
|
8
|
-
import { u as q } from "./useRender-
|
|
9
|
-
import { E as b, p as me, F as We, T as ze, S as ta, U as aa, L as ra, f as ye,
|
|
10
|
-
import { m as K } from "./component-
|
|
11
|
-
import { g as J, p as da, a as tt, I as ce, m as fa, u as ma, b as ya } from "./elevation-
|
|
12
|
-
import { i as xe, f as Ge, g as Be, h as pa, m as va, w as ha, j as ba, x as ga, y as Aa, b as Sa, k as Ra, R as Oa, p as Ea, l as Ca, E as Fa, c as ka, A as Pa, B as Va, n as ja, D as Ba, F as
|
|
13
|
-
import { m as Ta, u as Da } from "./position-
|
|
14
|
-
import { d as Ma } from "./props-
|
|
15
|
-
import { d as V, a as _a, C as le } from "./index-
|
|
16
|
-
import { h as Ua, g as qa, e as La, d as Na, f as Ha } from "./guards-
|
|
8
|
+
import { u as q } from "./useRender-CfNJA_8a.mjs";
|
|
9
|
+
import { E as b, p as me, F as We, T as ze, S as ta, U as aa, L as ra, f as ye, w as na, d as et, i as U, h as oa, x as ia, s as C, r as je, q as ua, g as sa, v as la, A as ca } from "./utils-D3ZGaTyv.mjs";
|
|
10
|
+
import { m as K } from "./component-DhEJuSE6.mjs";
|
|
11
|
+
import { g as J, p as da, a as tt, I as ce, m as fa, u as ma, b as ya } from "./elevation-j7bb-vGU.mjs";
|
|
12
|
+
import { i as xe, f as Ge, g as Be, h as pa, m as va, w as ha, j as ba, x as ga, y as Aa, b as Sa, k as Ra, R as Oa, p as Ea, l as Ca, E as Fa, c as ka, A as Pa, B as Va, n as ja, D as Ba, F as wa, e as Ia, L as xa } from "./display-BL-pquAI.mjs";
|
|
13
|
+
import { m as Ta, u as Da } from "./position-B9VPkbhU.mjs";
|
|
14
|
+
import { d as Ma } from "./props-Cjpc9pre.mjs";
|
|
15
|
+
import { d as V, a as _a, C as le } from "./index-B8OnsqN1.mjs";
|
|
16
|
+
import { h as Ua, g as qa, e as La, d as Na, f as Ha } from "./guards-Cby4QwzY.mjs";
|
|
17
17
|
import { watch as v, computed as S, toValue as $a, shallowRef as Wa, triggerRef as Ke, warn as de, nextTick as at, h as P, defineComponent as za, ref as Ga, inject as Ka, provide as Ja, toRefs as Qa } from "vue";
|
|
18
18
|
import { ResourcefulRecordScopedDisplaySymbol as Xa, ResourcefulRecordFormScopedDisplaySymbol as Ya } from "./symbols.mjs";
|
|
19
19
|
import { l as Za, a as er } from "./ioc-Du_Tgg-1.mjs";
|
|
20
|
-
import { S as ke } from "./index-
|
|
21
|
-
import { d as tr } from "./index-
|
|
20
|
+
import { S as ke } from "./index-C-PCfO1S.mjs";
|
|
21
|
+
import { d as tr } from "./index-VpcXNOpn.mjs";
|
|
22
22
|
import { L as ar } from "./http-Crw0XAYj.mjs";
|
|
23
|
-
import { I as rr,
|
|
24
|
-
import { V as ir } from "./VSheet-
|
|
23
|
+
import { I as rr, h as nr, J as or } from "./mdi-BQSh-ess.mjs";
|
|
24
|
+
import { V as ir } from "./VSheet-DdygPJlo.mjs";
|
|
25
25
|
const cn = ["read", "create", "update"];
|
|
26
26
|
class rt {
|
|
27
27
|
#e;
|
|
@@ -294,19 +294,19 @@ J()({
|
|
|
294
294
|
} = Va(e), {
|
|
295
295
|
positionClasses: B
|
|
296
296
|
} = Da(e), {
|
|
297
|
-
roundedClasses:
|
|
297
|
+
roundedClasses: w
|
|
298
298
|
} = ja(e), k = Ba(e, t);
|
|
299
299
|
return q(() => {
|
|
300
|
-
const c = e.link !== !1 && k.isLink.value,
|
|
300
|
+
const c = e.link !== !1 && k.isLink.value, I = !e.disabled && e.link !== !1 && (e.link || k.isClickable.value), Q = c ? "a" : e.tag, X = !!(a.title || e.title != null), Y = !!(a.subtitle || e.subtitle != null), Z = X || Y, ee = !!(a.append || e.appendAvatar || e.appendIcon), te = !!(a.prepend || e.prependAvatar || e.prependIcon), ae = !!(a.image || e.image), re = Z || te || ee, ne = !!(a.text || e.text != null);
|
|
301
301
|
return ta(b(Q, ra({
|
|
302
302
|
class: ["v-card", {
|
|
303
303
|
"v-card--disabled": e.disabled,
|
|
304
304
|
"v-card--flat": e.flat,
|
|
305
305
|
"v-card--hover": e.hover && !(e.disabled || e.flat),
|
|
306
|
-
"v-card--link":
|
|
307
|
-
}, u.value, i.value, d.value, p.value, h.value, R.value, B.value,
|
|
306
|
+
"v-card--link": I
|
|
307
|
+
}, u.value, i.value, d.value, p.value, h.value, R.value, B.value, w.value, y.value, e.class],
|
|
308
308
|
style: [l.value, m.value, F.value, e.style],
|
|
309
|
-
onClick:
|
|
309
|
+
onClick: I && k.navigate,
|
|
310
310
|
tabindex: e.disabled ? -1 : void 0
|
|
311
311
|
}, k.linkProps), {
|
|
312
312
|
default: () => {
|
|
@@ -323,7 +323,7 @@ J()({
|
|
|
323
323
|
src: e.image
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
}, a.image) : b(
|
|
326
|
+
}, a.image) : b(Ia, {
|
|
327
327
|
key: "image-img",
|
|
328
328
|
cover: !0,
|
|
329
329
|
src: e.image
|
|
@@ -356,9 +356,9 @@ J()({
|
|
|
356
356
|
}
|
|
357
357
|
}), (L = a.default) == null ? void 0 : L.call(a), a.actions && b(dr, null, {
|
|
358
358
|
default: a.actions
|
|
359
|
-
}),
|
|
359
|
+
}), wa(I, "v-card")];
|
|
360
360
|
}
|
|
361
|
-
}), [[aa("ripple"),
|
|
361
|
+
}), [[aa("ripple"), I && e.ripple]]);
|
|
362
362
|
}), {};
|
|
363
363
|
}
|
|
364
364
|
});
|
|
@@ -810,7 +810,7 @@ const {
|
|
|
810
810
|
);
|
|
811
811
|
var dt = (e) => {
|
|
812
812
|
throw TypeError(e);
|
|
813
|
-
}, Te = (e, t, a) => t.has(e) || dt("Cannot " + a), O = (e, t, a) => (Te(e, t, "read from private field"), a ? a.call(e) : t.get(e)), T = (e, t, a) => t.has(e) ? dt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, a), j = (e, t, a, u) => (Te(e, t, "write to private field"), u ? u.call(e, a) : t.set(e, a), a),
|
|
813
|
+
}, Te = (e, t, a) => t.has(e) || dt("Cannot " + a), O = (e, t, a) => (Te(e, t, "read from private field"), a ? a.call(e) : t.get(e)), T = (e, t, a) => t.has(e) ? dt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, a), j = (e, t, a, u) => (Te(e, t, "write to private field"), u ? u.call(e, a) : t.set(e, a), a), we = (e, t, a) => (Te(e, t, "access private method"), a), W, _, D, fe, z, G, Xe, Ie;
|
|
814
814
|
class kr {
|
|
815
815
|
/**
|
|
816
816
|
* Create a new Runner instance
|
|
@@ -889,7 +889,7 @@ class kr {
|
|
|
889
889
|
* ```
|
|
890
890
|
*/
|
|
891
891
|
async run(...t) {
|
|
892
|
-
return
|
|
892
|
+
return we(this, G, Ie).call(this, !1, t);
|
|
893
893
|
}
|
|
894
894
|
/**
|
|
895
895
|
* Execute hook handlers in reverse order (last registered handler runs first).
|
|
@@ -907,7 +907,7 @@ class kr {
|
|
|
907
907
|
* ```
|
|
908
908
|
*/
|
|
909
909
|
async runReverse(...t) {
|
|
910
|
-
return
|
|
910
|
+
return we(this, G, Ie).call(this, !0, t);
|
|
911
911
|
}
|
|
912
912
|
/**
|
|
913
913
|
* Execute all collected cleanup handlers in reverse order.
|
|
@@ -951,12 +951,12 @@ W = /* @__PURE__ */ new WeakMap(), _ = /* @__PURE__ */ new WeakMap(), D = /* @__
|
|
|
951
951
|
*/
|
|
952
952
|
Xe = function(e) {
|
|
953
953
|
return !O(this, fe).includes(e);
|
|
954
|
-
},
|
|
954
|
+
}, Ie = async function(e, t) {
|
|
955
955
|
if (O(this, D) !== "idle" || (j(this, D, "cleanup_pending"), O(this, z)))
|
|
956
956
|
return;
|
|
957
957
|
const a = e ? Array.from(O(this, W)).reverse() : O(this, W);
|
|
958
958
|
for (let u of a)
|
|
959
|
-
if (
|
|
959
|
+
if (we(this, G, Xe).call(this, u.name)) {
|
|
960
960
|
const i = await (typeof u == "function" ? u(...t) : u.handle(this.action, ...t));
|
|
961
961
|
typeof i == "function" && O(this, _).push(i);
|
|
962
962
|
}
|
|
@@ -1242,7 +1242,7 @@ const An = (e, t, a) => S(
|
|
|
1242
1242
|
disabled: d.value || l.value
|
|
1243
1243
|
},
|
|
1244
1244
|
onClick: R
|
|
1245
|
-
})),
|
|
1245
|
+
})), w = S(() => ({
|
|
1246
1246
|
...t.value,
|
|
1247
1247
|
...C({
|
|
1248
1248
|
cta: F("general.refresh"),
|
|
@@ -1268,7 +1268,7 @@ const An = (e, t, a) => S(
|
|
|
1268
1268
|
onClick: m
|
|
1269
1269
|
}));
|
|
1270
1270
|
return S(
|
|
1271
|
-
() => e.value === "read" || p.value ? [P(le,
|
|
1271
|
+
() => e.value === "read" || p.value ? [P(le, w.value)] : [
|
|
1272
1272
|
P(le, k.value),
|
|
1273
1273
|
P(le, {
|
|
1274
1274
|
...B.value,
|
|
@@ -1335,7 +1335,7 @@ const An = (e, t, a) => S(
|
|
|
1335
1335
|
})
|
|
1336
1336
|
), !0;
|
|
1337
1337
|
}
|
|
1338
|
-
},
|
|
1338
|
+
}, wr = (e, t, a, u, i, d = async () => {
|
|
1339
1339
|
}) => {
|
|
1340
1340
|
const l = Wa(
|
|
1341
1341
|
Ye(e.value, d)
|
|
@@ -1357,7 +1357,7 @@ const An = (e, t, a) => S(
|
|
|
1357
1357
|
100
|
|
1358
1358
|
);
|
|
1359
1359
|
v(e, y, { immediate: !0 }), v(u, p, { immediate: !0, deep: !0 });
|
|
1360
|
-
},
|
|
1360
|
+
}, Ir = (e, t, a, u, i, d, l, y, p, m, h, R, F, B, w, k) => {
|
|
1361
1361
|
const c = new Pr();
|
|
1362
1362
|
return Object.entries(ct).forEach(([o]) => {
|
|
1363
1363
|
const n = o;
|
|
@@ -1486,7 +1486,7 @@ const An = (e, t, a) => S(
|
|
|
1486
1486
|
},
|
|
1487
1487
|
{ immediate: !0 }
|
|
1488
1488
|
), v(
|
|
1489
|
-
|
|
1489
|
+
w,
|
|
1490
1490
|
(o, n) => {
|
|
1491
1491
|
Array.isArray(n) && n.forEach((r) => {
|
|
1492
1492
|
c.remove("state:errorBag", r);
|
|
@@ -1762,10 +1762,10 @@ const An = (e, t, a) => S(
|
|
|
1762
1762
|
callOnSubmitted: R,
|
|
1763
1763
|
callOnSuccess: F,
|
|
1764
1764
|
callOnFailure: B,
|
|
1765
|
-
callOnException:
|
|
1765
|
+
callOnException: w,
|
|
1766
1766
|
callOnSubmittingStateChange: k,
|
|
1767
1767
|
callOnValidatingStateChange: c,
|
|
1768
|
-
callOnTouchedStateChange:
|
|
1768
|
+
callOnTouchedStateChange: I,
|
|
1769
1769
|
callOnDirtyStateChange: Q,
|
|
1770
1770
|
callOnValidStateChange: X,
|
|
1771
1771
|
callOnPendingStateChange: Y,
|
|
@@ -1812,25 +1812,25 @@ const An = (e, t, a) => S(
|
|
|
1812
1812
|
onStatePending: Vt,
|
|
1813
1813
|
onStateErrors: jt,
|
|
1814
1814
|
onStateErrorBag: Bt,
|
|
1815
|
-
onStateSubmitCount:
|
|
1816
|
-
} =
|
|
1815
|
+
onStateSubmitCount: wt
|
|
1816
|
+
} = Ir(
|
|
1817
1817
|
e,
|
|
1818
1818
|
a,
|
|
1819
1819
|
h,
|
|
1820
1820
|
R,
|
|
1821
1821
|
F,
|
|
1822
1822
|
B,
|
|
1823
|
-
|
|
1823
|
+
w,
|
|
1824
1824
|
k,
|
|
1825
1825
|
c,
|
|
1826
|
-
|
|
1826
|
+
I,
|
|
1827
1827
|
Q,
|
|
1828
1828
|
X,
|
|
1829
1829
|
Y,
|
|
1830
1830
|
Z,
|
|
1831
1831
|
ee,
|
|
1832
1832
|
te
|
|
1833
|
-
),
|
|
1833
|
+
), It = xr(
|
|
1834
1834
|
De,
|
|
1835
1835
|
Me,
|
|
1836
1836
|
St,
|
|
@@ -1883,7 +1883,7 @@ const An = (e, t, a) => S(
|
|
|
1883
1883
|
} = Kt(
|
|
1884
1884
|
n,
|
|
1885
1885
|
Ue,
|
|
1886
|
-
|
|
1886
|
+
It,
|
|
1887
1887
|
p,
|
|
1888
1888
|
m,
|
|
1889
1889
|
_e,
|
|
@@ -1928,7 +1928,7 @@ const An = (e, t, a) => S(
|
|
|
1928
1928
|
doRefreshChoices: o.value
|
|
1929
1929
|
})
|
|
1930
1930
|
);
|
|
1931
|
-
|
|
1931
|
+
wr(d, vt, ht, Ce, H), v(
|
|
1932
1932
|
L,
|
|
1933
1933
|
(A, g) => {
|
|
1934
1934
|
Je(g) && (g.off("doFormSubmit", qe), g.off("doResetForm", Fe), g.off("setFieldValue", oe), g.off("setValues", H), g.off("setFieldTouched", ie), g.off("setTouched", $), g.off("validate", ue), g.off("validateField", se), g.off("forceUpdateSchema", Le), g.off("forceUpdateInitialValues", Ne)), Je(A) && (A.on("doFormSubmit", qe), A.on("doResetForm", Fe), A.on("setFieldValue", oe), A.on("setValues", H), A.on("setFieldTouched", ie), A.on("setTouched", $), A.on("validate", ue), A.on("validateField", se), A.on("forceUpdateSchema", Le), A.on("forceUpdateInitialValues", Ne));
|
|
@@ -1970,7 +1970,7 @@ const An = (e, t, a) => S(
|
|
|
1970
1970
|
g.reset();
|
|
1971
1971
|
});
|
|
1972
1972
|
};
|
|
1973
|
-
return v(ve, jt), v(he, Bt), v(be, Et), v(ge, Ct), v(Ae, Ft), v(Se, kt), v(Re, Pt), v(Oe, Vt), v(Ee,
|
|
1973
|
+
return v(ve, jt), v(he, Bt), v(be, Et), v(ge, Ct), v(Ae, Ft), v(Se, kt), v(Re, Pt), v(Oe, Vt), v(Ee, wt), {
|
|
1974
1974
|
formErrors: ve,
|
|
1975
1975
|
formErrorBag: he,
|
|
1976
1976
|
formIsSubmitting: be,
|
|
@@ -2009,4 +2009,4 @@ export {
|
|
|
2009
2009
|
gn as r,
|
|
2010
2010
|
Fn as u
|
|
2011
2011
|
};
|
|
2012
|
-
//# sourceMappingURL=form-
|
|
2012
|
+
//# sourceMappingURL=form-CFjPqvRf.mjs.map
|