@nhtio/lucid-resourceful-vue-components 0.1.0-master-e14740ea → 0.1.0-master-54839a90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/{VBtn-DhfYEt9V.mjs → VBtn-C4WCntKg.mjs} +8 -8
  2. package/{VBtn-DhfYEt9V.mjs.map → VBtn-C4WCntKg.mjs.map} +1 -1
  3. package/{VDatePicker-D0OTAyvJ.mjs → VDatePicker-DOCNk-HL.mjs} +166 -166
  4. package/{VDatePicker-D0OTAyvJ.mjs.map → VDatePicker-DOCNk-HL.mjs.map} +1 -1
  5. package/{VEmptyState-BFrXSTJ-.mjs → VEmptyState-CfouFZTg.mjs} +41 -41
  6. package/{VEmptyState-BFrXSTJ-.mjs.map → VEmptyState-CfouFZTg.mjs.map} +1 -1
  7. package/{VHover-DLvOmsjv.mjs → VHover-DvUhdfsL.mjs} +3 -3
  8. package/{VHover-DLvOmsjv.mjs.map → VHover-DvUhdfsL.mjs.map} +1 -1
  9. package/{VListItem-LNaoM8S4.mjs → VListItem-BT-NXJyi.mjs} +56 -56
  10. package/{VListItem-LNaoM8S4.mjs.map → VListItem-BT-NXJyi.mjs.map} +1 -1
  11. package/{VMenu-9rTbTKtH.mjs → VMenu-Bk2NN8qb.mjs} +28 -28
  12. package/{VMenu-9rTbTKtH.mjs.map → VMenu-Bk2NN8qb.mjs.map} +1 -1
  13. package/{VPicker-BGuRD0KW.mjs → VPicker-DmY6CdER.mjs} +5 -5
  14. package/{VPicker-BGuRD0KW.mjs.map → VPicker-DmY6CdER.mjs.map} +1 -1
  15. package/{VRadioGroup-Dx_wEqzl.mjs → VRadioGroup-BO7XdtLS.mjs} +21 -21
  16. package/{VRadioGroup-Dx_wEqzl.mjs.map → VRadioGroup-BO7XdtLS.mjs.map} +1 -1
  17. package/{VRow-DaLdbIGw.mjs → VRow-BhNJcY5-.mjs} +17 -17
  18. package/{VRow-DaLdbIGw.mjs.map → VRow-BhNJcY5-.mjs.map} +1 -1
  19. package/{VSheet-DnIfs-1c.mjs → VSheet-Bkr-m6FE.mjs} +14 -14
  20. package/{VSheet-DnIfs-1c.mjs.map → VSheet-Bkr-m6FE.mjs.map} +1 -1
  21. package/{actions-8bWGsB-p.mjs → actions-ORUmfJR5.mjs} +15 -15
  22. package/{actions-8bWGsB-p.mjs.map → actions-ORUmfJR5.mjs.map} +1 -1
  23. package/{alert-IW1AIWZw.mjs → alert-pFT7pWTZ.mjs} +97 -94
  24. package/alert-pFT7pWTZ.mjs.map +1 -0
  25. package/{bigint-Jmfa2L4S.mjs → bigint-CCM0aPaS.mjs} +6 -6
  26. package/{bigint-Jmfa2L4S.mjs.map → bigint-CCM0aPaS.mjs.map} +1 -1
  27. package/{boolean-BEY7eBxf.mjs → boolean-1-MOJPSu.mjs} +40 -40
  28. package/{boolean-BEY7eBxf.mjs.map → boolean-1-MOJPSu.mjs.map} +1 -1
  29. package/{clipboard-BoKd7mFG.mjs → clipboard-CdGABqm1.mjs} +51 -51
  30. package/{clipboard-BoKd7mFG.mjs.map → clipboard-CdGABqm1.mjs.map} +1 -1
  31. package/{colorUtils-DmtKYNgW.mjs → colorUtils-BdpqbLZS.mjs} +3 -3
  32. package/{colorUtils-DmtKYNgW.mjs.map → colorUtils-BdpqbLZS.mjs.map} +1 -1
  33. package/{common-BeDAn4wu.mjs → common-Bi5RUD-n.mjs} +8881 -8880
  34. package/common-Bi5RUD-n.mjs.map +1 -0
  35. package/{component-CjPpW_A2.mjs → component-DhEJuSE6.mjs} +2 -2
  36. package/{component-CjPpW_A2.mjs.map → component-DhEJuSE6.mjs.map} +1 -1
  37. package/components/autorefresh_controller.mjs +1 -1
  38. package/components/control_button.mjs +1 -1
  39. package/components/control_button_bar.mjs +2 -2
  40. package/components/control_menu.mjs +1 -1
  41. package/components/custom_field.mjs +1 -1
  42. package/components/exporter.mjs +1 -1
  43. package/components/fields/bigint.mjs +1 -1
  44. package/components/fields/boolean.mjs +1 -1
  45. package/components/fields/date.mjs +1 -1
  46. package/components/fields/date_time.mjs +1 -1
  47. package/components/fields/enum.mjs +1 -1
  48. package/components/fields/integer.mjs +1 -1
  49. package/components/fields/number.mjs +1 -1
  50. package/components/fields/string.mjs +1 -1
  51. package/components/fields/unsigned_integer.mjs +1 -1
  52. package/components/fields.mjs +9 -9
  53. package/components/form_with_validation.mjs +1 -1
  54. package/components/resourceful_alerter.mjs +1 -1
  55. package/components/resourceful_index.mjs +1 -1
  56. package/components/resourceful_record.mjs +2 -2
  57. package/components/resourceful_record_default_form.mjs +1 -1
  58. package/components/resourceful_record_form.mjs +1 -1
  59. package/components/sortable.mjs +1 -1
  60. package/components/svg_icon.mjs +1 -1
  61. package/components/timezone_picker.mjs +1 -1
  62. package/components.mjs +23 -23
  63. package/composables.mjs +8 -8
  64. package/{console-CRXioSFP.mjs → console-Dgoi3FwV.mjs} +2 -2
  65. package/{console-CRXioSFP.mjs.map → console-Dgoi3FwV.mjs.map} +1 -1
  66. package/{custom-Y1WJVKP9.mjs → custom-DQmbYYPh.mjs} +17 -17
  67. package/{custom-Y1WJVKP9.mjs.map → custom-DQmbYYPh.mjs.map} +1 -1
  68. package/{date-BxEeCNWD.mjs → date-E_8RP3gK.mjs} +21 -21
  69. package/{date-BxEeCNWD.mjs.map → date-E_8RP3gK.mjs.map} +1 -1
  70. package/{date_time-6kpv7eDF.mjs → date_time-BmYl2TFi.mjs} +300 -300
  71. package/{date_time-6kpv7eDF.mjs.map → date_time-BmYl2TFi.mjs.map} +1 -1
  72. package/{display-kAyhIPBH.mjs → display-B089h_sz.mjs} +30 -28
  73. package/display-B089h_sz.mjs.map +1 -0
  74. package/{display-CO0pTIEs.mjs → display-dv4cOwRN.mjs} +42 -42
  75. package/{display-CO0pTIEs.mjs.map → display-dv4cOwRN.mjs.map} +1 -1
  76. package/{display-DvzWa1QO.mjs → display-fXo4JeIS.mjs} +41 -41
  77. package/{display-DvzWa1QO.mjs.map → display-fXo4JeIS.mjs.map} +1 -1
  78. package/{elevation-CMzO50xm.mjs → elevation-YNOj0hSa.mjs} +82 -82
  79. package/{elevation-CMzO50xm.mjs.map → elevation-YNOj0hSa.mjs.map} +1 -1
  80. package/{enum-noYU2Cqh.mjs → enum-8itqseZa.mjs} +22 -22
  81. package/{enum-noYU2Cqh.mjs.map → enum-8itqseZa.mjs.map} +1 -1
  82. package/factories.mjs +1 -1
  83. package/{field_composer-DpJx0Oz1.mjs → field_composer-ugYyDQNY.mjs} +7 -7
  84. package/{field_composer-DpJx0Oz1.mjs.map → field_composer-ugYyDQNY.mjs.map} +1 -1
  85. package/{form-CDLcDPyU.mjs → form-BtDnRXYm.mjs} +45 -45
  86. package/{form-CDLcDPyU.mjs.map → form-BtDnRXYm.mjs.map} +1 -1
  87. package/{guards-B99p3BPj.mjs → guards-Cby4QwzY.mjs} +2 -2
  88. package/{guards-B99p3BPj.mjs.map → guards-Cby4QwzY.mjs.map} +1 -1
  89. package/guards.mjs +4 -4
  90. package/helpers.mjs +6 -6
  91. package/{index-C9UuBVyI.mjs → index-3XRUa28C.mjs} +12 -12
  92. package/{index-C9UuBVyI.mjs.map → index-3XRUa28C.mjs.map} +1 -1
  93. package/{index-CzI9mHIx.mjs → index-BCQmj6cf.mjs} +13 -13
  94. package/{index-CzI9mHIx.mjs.map → index-BCQmj6cf.mjs.map} +1 -1
  95. package/{index-bXmNb9jX.mjs → index-BgevbZTt.mjs} +10 -10
  96. package/{index-bXmNb9jX.mjs.map → index-BgevbZTt.mjs.map} +1 -1
  97. package/{index-BaWthszI.mjs → index-C-PCfO1S.mjs} +2 -2
  98. package/{index-BaWthszI.mjs.map → index-C-PCfO1S.mjs.map} +1 -1
  99. package/{index-Bi050X9r.mjs → index-CSyOYGEi.mjs} +8 -8
  100. package/{index-Bi050X9r.mjs.map → index-CSyOYGEi.mjs.map} +1 -1
  101. package/{index-CIvylvfa.mjs → index-D9i1PRci.mjs} +5701 -5698
  102. package/{index-CIvylvfa.mjs.map → index-D9i1PRci.mjs.map} +1 -1
  103. package/{index-B2rKM3mR.mjs → index-DWv9iKZs.mjs} +21 -21
  104. package/{index-B2rKM3mR.mjs.map → index-DWv9iKZs.mjs.map} +1 -1
  105. package/{index-slHxe6b-.mjs → index-VpcXNOpn.mjs} +2 -2
  106. package/{index-slHxe6b-.mjs.map → index-VpcXNOpn.mjs.map} +1 -1
  107. package/{index-BUpccfIz.mjs → index-fiZltUBs.mjs} +3 -3
  108. package/{index-BUpccfIz.mjs.map → index-fiZltUBs.mjs.map} +1 -1
  109. package/index.mjs +31 -31
  110. package/{integer-BIJ4_I8y.mjs → integer-W2_SlKV1.mjs} +5 -5
  111. package/{integer-BIJ4_I8y.mjs.map → integer-W2_SlKV1.mjs.map} +1 -1
  112. package/{mdi-CqMJqgQi.mjs → mdi-DC1jeTJJ.mjs} +55 -55
  113. package/{mdi-CqMJqgQi.mjs.map → mdi-DC1jeTJJ.mjs.map} +1 -1
  114. package/{number-z_LAINPM.mjs → number-DgwZBxOw.mjs} +101 -101
  115. package/{number-z_LAINPM.mjs.map → number-DgwZBxOw.mjs.map} +1 -1
  116. package/package.json +31 -31
  117. package/{position-Ai5XksAO.mjs → position-B9VPkbhU.mjs} +2 -2
  118. package/{position-Ai5XksAO.mjs.map → position-B9VPkbhU.mjs.map} +1 -1
  119. package/private/control-button-bar/props.d.ts +10 -10
  120. package/private/fields/bigint.d.ts +128 -128
  121. package/private/fields/boolean.d.ts +68 -68
  122. package/private/fields/common.d.ts +16 -16
  123. package/private/fields/custom.d.ts +2 -2
  124. package/private/fields/date.d.ts +24 -24
  125. package/private/fields/date_time.d.ts +24 -24
  126. package/private/fields/enum.d.ts +68 -68
  127. package/private/fields/integer.d.ts +107 -107
  128. package/private/fields/multiple.d.ts +17 -17
  129. package/private/fields/number.d.ts +46 -46
  130. package/private/fields/read_mode_renderer.d.ts +17 -17
  131. package/private/fields/string.d.ts +24 -24
  132. package/private/fields/unsigned_integer.d.ts +107 -107
  133. package/private/filtration/filter_group_condition_element.d.ts +36 -36
  134. package/private/resourceful-index/index.d.ts +17 -17
  135. package/private/resourceful-index/partials/_controls.d.ts +1 -1
  136. package/private/resourceful-index/partials/_per_page_selector.d.ts +1 -1
  137. package/private/resourceful-index/props.d.ts +34 -34
  138. package/private/resourceful-record/form.d.ts +12 -12
  139. package/private/resourceful-record/index.d.ts +13 -13
  140. package/private/resourceful-record/props.d.ts +20 -20
  141. package/private/sortable/index.d.ts +1 -1
  142. package/{props-p4f5Pa5h.mjs → props-COvhL78L.mjs} +4 -4
  143. package/{props-p4f5Pa5h.mjs.map → props-COvhL78L.mjs.map} +1 -1
  144. package/{props-BYX22zcE.mjs → props-GYFmAF5-.mjs} +6 -6
  145. package/{props-BYX22zcE.mjs.map → props-GYFmAF5-.mjs.map} +1 -1
  146. package/{renderers-BKUvrrVm.mjs → renderers-BP4li2WT.mjs} +13 -13
  147. package/{renderers-BKUvrrVm.mjs.map → renderers-BP4li2WT.mjs.map} +1 -1
  148. package/{string-Dmr8SRMf.mjs → string-RfpfCwEn.mjs} +137 -137
  149. package/{string-Dmr8SRMf.mjs.map → string-RfpfCwEn.mjs.map} +1 -1
  150. package/{unsigned_integer-BliPiCXO.mjs → unsigned_integer-Cg6tbRJj.mjs} +4 -4
  151. package/{unsigned_integer-BliPiCXO.mjs.map → unsigned_integer-Cg6tbRJj.mjs.map} +1 -1
  152. package/useRender-CfNJA_8a.mjs +9 -0
  153. package/{useRender-BD1xw5zG.mjs.map → useRender-CfNJA_8a.mjs.map} +1 -1
  154. package/{utils-DqXWb-4f.mjs → utils-D3ZGaTyv.mjs} +48 -48
  155. package/{utils-DqXWb-4f.mjs.map → utils-D3ZGaTyv.mjs.map} +1 -1
  156. package/{validation-DS3tTSk5.mjs → validation-BF_JkNWB.mjs} +4 -4
  157. package/{validation-DS3tTSk5.mjs.map → validation-BF_JkNWB.mjs.map} +1 -1
  158. package/VBtn.css +0 -1
  159. package/VDatePicker.css +0 -1
  160. package/VEmptyState.css +0 -1
  161. package/VListItem.css +0 -1
  162. package/VMenu.css +0 -1
  163. package/VPicker.css +0 -1
  164. package/VRadioGroup.css +0 -1
  165. package/VSheet.css +0 -1
  166. package/actions.css +0 -1
  167. package/alert-IW1AIWZw.mjs.map +0 -1
  168. package/boolean.css +0 -1
  169. package/clipboard.css +0 -1
  170. package/common-BeDAn4wu.mjs.map +0 -1
  171. package/common.css +0 -1
  172. package/date_time.css +0 -1
  173. package/display-kAyhIPBH.mjs.map +0 -1
  174. package/display.css +0 -1
  175. package/display2.css +0 -1
  176. package/elevation.css +0 -1
  177. package/index.css +0 -1
  178. package/mdi.css +0 -1
  179. package/number.css +0 -1
  180. package/string.css +0 -1
  181. package/useRender-BD1xw5zG.mjs +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"actions-8bWGsB-p.mjs","sources":["../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTooltip/VTooltip.js","../src/private/resourceful-index/actions.ts"],"sourcesContent":["import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTooltip.css\";\n\n// Components\nimport { VOverlay } from \"../VOverlay/index.js\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.js\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\"; // Utilities\nimport { computed, mergeProps, ref, toRef, useId } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTooltipProps = propsFactory({\n id: String,\n interactive: Boolean,\n text: String,\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end',\n locationStrategy: 'connected',\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto',\n scrim: false,\n scrollStrategy: 'reposition',\n transition: null\n }), ['absolute', 'persistent'])\n}, 'VTooltip');\nexport const VTooltip = genericComponent()({\n name: 'VTooltip',\n props: makeVTooltipProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const uid = useId();\n const id = toRef(() => props.id || `v-tooltip-${uid}`);\n const overlay = ref();\n const location = computed(() => {\n return props.location.split(' ').length > 1 ? props.location : props.location + ' center';\n });\n const origin = computed(() => {\n return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';\n });\n const transition = toRef(() => {\n if (props.transition != null) return props.transition;\n return isActive.value ? 'scale-transition' : 'fade-transition';\n });\n const activatorProps = computed(() => mergeProps({\n 'aria-describedby': id.value\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-tooltip', {\n 'v-tooltip--interactive': props.interactive\n }, props.class],\n \"style\": props.style,\n \"id\": id.value\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"transition\": transition.value,\n \"absolute\": true,\n \"location\": location.value,\n \"origin\": origin.value,\n \"persistent\": true,\n \"role\": \"tooltip\",\n \"activatorProps\": activatorProps.value,\n \"_disableGlobalStack\": true\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return slots.default?.(...args) ?? props.text;\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VTooltip.js.map","import { useI18n } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { useClipboard } from '../ux/clipboard'\nimport { VMenu } from 'vuetify/components/VMenu'\nimport { VCard } from 'vuetify/components/VCard'\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport { VHover } from 'vuetify/components/VHover'\nimport { VListItem } from 'vuetify/components/VList'\nimport { VTooltip } from 'vuetify/components/VTooltip'\nimport { SUPPORTS_VISUAL_VIEWPORT } from '../ux/display'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { VSlideYTransition } from 'vuetify/components/transitions'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { stripUndefinedValuesFromObject, toUnreactive } from '../common/utils'\nimport { mdiDotsVertical, mdiOpenInApp, mdiOpenInNew, mdiContentCopy } from '@mdi/js'\nimport { warn, computed, h, toValue, ref, onMounted, onBeforeUnmount, nextTick } from 'vue'\nimport type { makeVBtnProps } from '@nhtio/vuetifiable/components/VBtn/VBtn'\nimport type { makeVMenuProps } from '@nhtio/vuetifiable/components/VMenu/VMenu'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { makeVListItemProps } from '@nhtio/vuetifiable/components/VList/VListItem'\nimport type { makeVTooltipProps } from '@nhtio/vuetifiable/components/VTooltip/VTooltip'\nimport type { PropType, Ref, MaybeRef, ExtractPublicPropTypes, VNode, ComputedRef } from 'vue'\nimport type { makeTransitionProps } from '@nhtio/vuetifiable/components/transitions/createTransition'\n\nconst openInAppIcon = h(SvgIcon, { d: mdiOpenInApp })\nconst openInNewIcon = h(SvgIcon, { d: mdiOpenInNew })\nconst copyLinkIcon = h(SvgIcon, { d: mdiContentCopy })\n\ntype VListItemPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVListItemProps>>\ntype VBtnPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnProps>>\ntype VMenuPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVMenuProps>>\ntype VTooltipPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVTooltipProps>>\ntype VSlideYTransitionPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeTransitionProps>>\ntype ExtractedVHoverSlots = ExtractSlotDefinitions<typeof VHover.slots>\ntype VHoverDefaultSlotProps = NamedSlotParameters<ExtractedVHoverSlots, 'default'>\ntype ExtractedVMenuSlots = ExtractSlotDefinitions<typeof VMenu.slots>\ntype VMenuActivatorSlotProps = NamedSlotParameters<ExtractedVMenuSlots, 'activator'>\ntype ExtractedVTooltipSlots = ExtractSlotDefinitions<typeof VTooltip.slots>\ntype VTooltipActivatorSlotProps = NamedSlotParameters<ExtractedVTooltipSlots, 'activator'>\n\nexport type ActionableRecord = {\n id: string | number\n [key: string]: any\n}\n\nexport type ActionIsActionableValidator = (record: ActionableRecord) => boolean\n\nexport type TernaryOperator = boolean | null\n\nexport type ActionCallback = (\n record: ActionableRecord\n) => TernaryOperator | Promise<TernaryOperator> | PromiseLike<TernaryOperator>\n\nexport type BulkActionResults = Map<ActionableRecord, TernaryOperator>\n\nexport type BulkActionCallback = (\n records: ActionableRecord[],\n updateProgress: (completed: number, total: number) => void\n) => BulkActionResults | Promise<BulkActionResults> | PromiseLike<BulkActionResults>\n\nexport type SuccessCallback = (results: BulkActionResults) => void\n\nexport type UndeterminedCallback = (results: BulkActionResults) => void\n\nexport type FailureCallback = (results: BulkActionResults) => void\n\nexport type CompleteCallback = (results: BulkActionResults) => void\n\ntype DispositionCallback = SuccessCallback | UndeterminedCallback | FailureCallback\n\nexport type ProgressCallback = (completed: number, total: number) => void\n\ninterface ResourcefulIndexAction {\n icon: IconValue\n title: string\n subtitle?: string | undefined\n pinned?: boolean | undefined\n actionable?: boolean | ActionIsActionableValidator | undefined\n maxSafeBulkActionRecords?: number | undefined\n maxBulkActionRecords?: number | undefined\n singleAsBulkActionMaxConcurrency?: number | undefined\n singleAsBulkActionStopOnError?: boolean | undefined\n}\n\nexport interface ResourcefulIndexUrlAction extends ResourcefulIndexAction {\n url: string | ((record: ActionableRecord) => string | null | undefined)\n target?: '_self' | '_blank' | '_parent' | '_top' | string | undefined\n}\n\nexport interface ResourcefulIndexFunctionAction extends ResourcefulIndexAction {\n action: ActionCallback\n bulkAction?: BulkActionCallback | undefined\n onSuccess?: SuccessCallback | undefined\n onUndetermined?: UndeterminedCallback | undefined\n onFailure?: FailureCallback | undefined\n onComplete?: CompleteCallback | undefined\n onProgress?: ProgressCallback | undefined\n}\n\nconst resourcefulIndexActionCommonSchema = {\n icon: joi\n .alternatives()\n .try(joi.string(), joi.object().unknown(true), joi.array(), joi.function())\n .required(),\n title: joi.string().required(),\n subtitle: joi.string().optional(),\n pinned: joi.boolean().optional(),\n actionable: joi.alternatives().try(joi.boolean(), joi.function()).optional(),\n maxSafeBulkActionRecords: joi.number().integer().min(1).optional(),\n maxBulkActionRecords: joi.number().integer().min(1).optional(),\n singleAsBulkActionMaxConcurrency: joi.number().integer().min(1).optional(),\n singleAsBulkActionStopOnError: joi.boolean().optional(),\n}\n\nconst resourcefulIndexUrlActionSchema = joi\n .object({\n ...resourcefulIndexActionCommonSchema,\n url: joi.alternatives().try(joi.string(), joi.function()).required(),\n target: joi.string().optional(),\n })\n .unknown(false)\n\nconst resourcefulIndexFunctionActionSchema = joi\n .object({\n ...resourcefulIndexActionCommonSchema,\n action: joi.function().required(),\n bulkAction: joi.function().optional(),\n onSuccess: joi.function().optional(),\n onUndetermined: joi.function().optional(),\n onFailure: joi.function().optional(),\n onComplete: joi.function().optional(),\n onProgress: joi.function().optional(),\n })\n .unknown(false)\n\nconst resourcefulIndexActionSchema = joi\n .alternatives()\n .try(resourcefulIndexUrlActionSchema, resourcefulIndexFunctionActionSchema)\n\nconst resourcefulIndexActionsSchema = joi.array().items(resourcefulIndexActionSchema)\n\nexport const isResourcefulIndexUrlAction = (val: unknown): val is ResourcefulIndexUrlAction => {\n const { error } = resourcefulIndexUrlActionSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nexport const isResourcefulIndexFunctionAction = (\n val: unknown\n): val is ResourcefulIndexFunctionAction => {\n const { error } = resourcefulIndexFunctionActionSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nconst isResourcefulIndexAction = (\n val: unknown\n): val is ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction => {\n const { error } = resourcefulIndexActionSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nconst areResourcefulIndexActions = (\n val: unknown\n): val is Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction> => {\n const { error } = resourcefulIndexActionsSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nexport const makeResourcefulIndexActionsProps = propsFactory(\n {\n actions: {\n type: Array as PropType<Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction>>,\n validator: areResourcefulIndexActions,\n default: () => [],\n },\n },\n 'ResourcefulIndexActions'\n)\n\nconst canPerformActionForRecord = (record: ActionableRecord, action: unknown) => {\n if (!isResourcefulIndexAction(action)) {\n return false\n }\n if (typeof action.actionable === 'boolean') {\n return action.actionable\n } else if (typeof action.actionable === 'function') {\n try {\n return action.actionable(record)\n } catch (e) {\n warn('Error evaluating actionable function for action:', action, e)\n return false\n }\n }\n}\n\nexport const canPerformBulkActionForRecords = (records: ActionableRecord[], action: unknown) => {\n if (!isResourcefulIndexAction(action)) return false\n if (\n records.length < 2 ||\n (typeof action.maxBulkActionRecords === 'number' &&\n records.length > action.maxBulkActionRecords)\n )\n return false\n if (isResourcefulIndexUrlAction(action)) {\n if (typeof action.url === 'function') {\n const fn = action.url as (record: ActionableRecord) => string | null | undefined\n const urls = records.map((record) => fn(record))\n return urls.some((url) => 'string' === typeof url && url.trim().length > 0)\n } else if (typeof action.url === 'string') {\n return true\n }\n return false\n } else if (isResourcefulIndexFunctionAction(action)) {\n return true\n }\n return false\n}\n\nconst canPerformBulkActionForActionableCount = (action: unknown, count: number) => {\n if (!isResourcefulIndexAction(action)) return false\n if (\n count < 2 ||\n (typeof action.maxBulkActionRecords === 'number' && count > action.maxBulkActionRecords)\n )\n return false\n return isResourcefulIndexUrlAction(action) || isResourcefulIndexFunctionAction(action)\n}\n\nconst canDisplayInBulkActionsDropdown = (action: unknown) => {\n if (!isResourcefulIndexAction(action)) return false\n if (typeof action.maxBulkActionRecords === 'number' && action.maxBulkActionRecords <= 1)\n return false\n return isResourcefulIndexUrlAction(action) || isResourcefulIndexFunctionAction(action)\n}\n\ntype BulkActionListItemOptions = Omit<\n VListItemPublicProps,\n | 'title'\n | 'subtitle'\n | 'icon'\n | 'prependIcon'\n | 'appendIcon'\n | 'value'\n | 'active'\n | 'onClick'\n | 'href'\n | 'replace'\n | 'to'\n | 'exact'\n | 'onClickOnce'\n | 'activeClass'\n | 'activeColor'\n | 'appendAvatar'\n | 'prependAvatar'\n | 'link'\n | 'nav'\n | 'disabled'\n>\n\nexport const useBulkActions = (\n actions: Ref<Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction>>,\n allCount: Ref<number>,\n actionableCount: Ref<number>,\n onBulkActionInvoked: (\n action: ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction\n ) => void | Promise<void> | PromiseLike<void>,\n listItemOptions: MaybeRef<BulkActionListItemOptions> = {}\n) => {\n const bulkActionListItems: ComputedRef<Array<VNode>> = computed<Array<VNode>>(\n () =>\n Array.from(actions.value)\n .filter((v) => canDisplayInBulkActionsDropdown(v))\n .map((action, index) => {\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n disabled: !canPerformBulkActionForActionableCount(action, actionableCount.value),\n }\n return h(VListItem, {\n ...opts,\n key: `resourceful-index-bulk-action-${index}`,\n onClick: () => {\n if (onBulkActionInvoked) {\n onBulkActionInvoked(action)\n }\n },\n })\n }) as VNode[]\n )\n const canShowBulkActionList = computed(() => bulkActionListItems.value.length > 0)\n const bulkActionListDisabled = computed(\n () =>\n allCount.value === 0 ||\n Array.from(actions.value).every((a) => !canDisplayInBulkActionsDropdown(a))\n )\n\n return { bulkActionListItems, canShowBulkActionList, bulkActionListDisabled }\n}\n\nexport const useTableActions = (\n actions: Ref<Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction>>,\n disabled: MaybeRef<string | boolean | undefined>,\n listItemOptions: MaybeRef<BulkActionListItemOptions> = {}\n) => {\n const { copy: copyToClipboard, renderClipboardFeedback } = useClipboard()\n const t = useI18n()\n const contextMenuX = ref<number | null>(null)\n const contextMenuY = ref<number | null>(null)\n const contextRecord = ref<ActionableRecord | null>(null)\n const contextAction = ref<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction | null>(null)\n const closeContextMenu = () => {\n contextMenuX.value = null\n contextMenuY.value = null\n contextRecord.value = null\n contextAction.value = null\n }\n const contextMenuIsOpen = computed(() => {\n return (\n contextMenuX.value !== null &&\n contextMenuY.value !== null &&\n (contextRecord.value !== null || contextAction.value !== null)\n )\n })\n const contextMenuVariant = computed<'none' | 'record' | 'action'>(() => {\n if (contextMenuX.value === null || contextMenuY.value === null) return 'none'\n if (contextAction.value !== null) return 'action'\n if (contextRecord.value !== null) return 'record'\n return 'none'\n })\n const contextElement = ref<HTMLElement | null>(null)\n\n const recordsProcessingAction = ref<string[]>([])\n\n const processResourcefulIndexFunctionAction = async (\n action: ResourcefulIndexFunctionAction,\n record: ActionableRecord\n ) => {\n const recordId = String(record.id)\n if (recordsProcessingAction.value.includes(recordId)) return\n recordsProcessingAction.value.push(recordId)\n let result: TernaryOperator = null\n const callCallback = async (\n callback: DispositionCallback,\n rec: ActionableRecord,\n res: TernaryOperator\n ) => {\n const payload = new Map<ActionableRecord, TernaryOperator>([[rec, res]])\n try {\n await callback(payload)\n } catch (e) {\n warn('Error executing callback for action:', action, e)\n }\n }\n if (action.onProgress) {\n try {\n action.onProgress(0, 1)\n } catch (e) {\n warn('Error executing onProgress callback for action:', action, e)\n }\n }\n try {\n result = await action.action(record)\n } catch (e) {\n result = false\n warn('Error executing action function for record:', record, e)\n }\n const idx = recordsProcessingAction.value.indexOf(recordId)\n if (idx > -1) {\n recordsProcessingAction.value.splice(idx, 1)\n }\n if (action.onProgress) {\n try {\n action.onProgress(1, 1)\n } catch (e) {\n warn('Error executing onProgress callback for action:', action, e)\n }\n }\n const promises: Array<Promise<void>> = []\n if (action.onSuccess && result === true) {\n promises.push(callCallback(action.onSuccess, record, result))\n }\n if (action.onUndetermined && result === null) {\n promises.push(callCallback(action.onUndetermined, record, result))\n }\n if (action.onFailure && result === false) {\n promises.push(callCallback(action.onFailure, record, result))\n }\n if (action.onComplete) {\n promises.push(callCallback(action.onComplete, record, result))\n }\n if (promises.length > 0) {\n await Promise.all(promises)\n }\n return result\n }\n\n const actionForRecordIsProcessing = (record: ActionableRecord) => {\n if (record && 'id' in record) {\n const recordId = String(record.id)\n return recordsProcessingAction.value.includes(recordId)\n }\n return false\n }\n\n const actionsForRecordAreDisabled = (record: ActionableRecord) => {\n if (true === toValue(disabled)) return true\n return actionForRecordIsProcessing(record)\n }\n\n const isProcessing = computed(() => recordsProcessingAction.value.length > 0)\n\n const onPinnedActionContextMenuRequest = async (\n action: ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction,\n record: ActionableRecord,\n e: MouseEvent\n ) => {\n if (actionsForRecordAreDisabled(record)) return\n if (contextMenuIsOpen.value) {\n closeContextMenu()\n await nextTick()\n }\n contextMenuX.value = 'clientX' in e ? e.clientX : null\n contextMenuY.value = 'clientY' in e ? e.clientY : null\n contextRecord.value = record\n contextAction.value = action\n }\n const pinnedActions = computed(() =>\n actions.value.filter((a) => a.pinned && isResourcefulIndexAction(a))\n )\n const unpinnedActions = computed(() =>\n actions.value.filter((a) => !a.pinned && isResourcefulIndexAction(a))\n )\n const renderActionsForRecord = (record: ActionableRecord) => {\n const pinnedActionsForRecord = pinnedActions.value.filter((a) =>\n canPerformActionForRecord(record, a)\n )\n const unpinnedActionsForRecord = unpinnedActions.value.filter((a) =>\n canPerformActionForRecord(record, a)\n )\n if (pinnedActionsForRecord.length === 0 && unpinnedActionsForRecord.length === 0) return null\n const isActionProcessing = actionForRecordIsProcessing(record)\n return h(\n 'div',\n {\n class: ['__resourceful_index_actions_cell__actions', 'd-flex', 'align-center', 'mx-2'],\n },\n [\n ...pinnedActionsForRecord.map((action, index) => {\n const tooltipListItemOpts: VListItemPublicProps = {\n density: 'compact',\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n }\n const btnItemOpts: VBtnPublicProps = {\n // @ts-expect-error\n onContextmenu: (e: MouseEvent) => {\n if (e) {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n if (actionsForRecordAreDisabled(record)) return\n onPinnedActionContextMenuRequest(action, record, e)\n }\n },\n }\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function' ? action.url(toUnreactive(record)) : action.url\n btnItemOpts.href = href || undefined\n // @ts-expect-error\n btnItemOpts.target = action.target || undefined\n } else if (isResourcefulIndexFunctionAction(action)) {\n // @ts-expect-error\n btnItemOpts.onClick = () =>\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n // @ts-expect-error\n btnItemOpts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n }\n }\n }\n return h(\n VHover,\n { key: `pinned-action-${index}` },\n {\n default: ({ isHovering, props: hoverProvidedProps }: VHoverDefaultSlotProps[0]) =>\n h(\n VTooltip,\n {\n openDelay: 750,\n interactive: false,\n // @ts-expect-error\n stickToTarget: true,\n } satisfies VTooltipPublicProps,\n {\n activator: ({\n isActive,\n props: tooltipActivatorProps,\n }: VTooltipActivatorSlotProps[0]) =>\n h(VBtn, {\n ...hoverProvidedProps,\n ...tooltipActivatorProps,\n ...btnItemOpts,\n variant: 'text',\n icon: action.icon,\n size: 'small',\n style: { opacity: isHovering || isActive ? 1 : 0.5 },\n class: [\n {\n 'me-2':\n index < pinnedActionsForRecord.length - 1 ||\n unpinnedActionsForRecord.length > 0,\n },\n ],\n disabled: Boolean(toValue(disabled)),\n } satisfies VBtnPublicProps),\n default: () =>\n h(VListItem, {\n ...tooltipListItemOpts,\n }),\n }\n ),\n }\n )\n }),\n unpinnedActionsForRecord.length === 0\n ? isActionProcessing\n ? h(VBtn, {\n icon: true,\n size: 'small',\n loading: true,\n variant: 'text',\n } satisfies VBtnPublicProps)\n : null\n : h(\n VHover,\n {},\n {\n default: ({ isHovering, props: hoverProvidedProps }: VHoverDefaultSlotProps[0]) =>\n h(VMenu, { closeOnContentClick: true } satisfies VMenuPublicProps, {\n activator: ({\n isActive,\n props: menuActivatorProps,\n }: VMenuActivatorSlotProps[0]) =>\n h(VBtn, {\n ...hoverProvidedProps,\n ...menuActivatorProps,\n variant: 'text',\n icon: () => h(SvgIcon, { d: mdiDotsVertical }),\n size: 'small',\n style: { opacity: isHovering || isActive ? 1 : 0.5 },\n class: [],\n loading: isActionProcessing,\n } satisfies VBtnPublicProps),\n default: () =>\n h(VCard, { color: 'surface' }, () => [\n ...unpinnedActionsForRecord.map((action, index) => {\n const key = `resourceful-index-action-${index}`\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n disabled: Boolean(toValue(disabled)),\n }\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function'\n ? action.url(toUnreactive(record))\n : action.url\n opts.href = href || undefined\n // @ts-expect-error\n opts.target = action.target || undefined\n opts.link = typeof href === 'string' && href.trim().length > 0\n } else if (isResourcefulIndexFunctionAction(action)) {\n opts.onClick = () =>\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n // @ts-expect-error\n opts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n }\n }\n }\n return h(VListItem, { ...opts, key })\n }),\n ]),\n }),\n }\n ),\n ]\n )\n }\n const reactiveContextMenuRenderer = () => {\n const additionalStyles =\n null === contextMenuY.value || null === contextMenuX.value\n ? { width: 0, height: 0, overflow: 'hidden' }\n : {}\n return h(\n 'div',\n {\n ref: contextElement,\n style: {\n position: 'fixed',\n top: null === contextMenuY.value ? 0 : convertToUnit(contextMenuY.value),\n left: null === contextMenuX.value ? 0 : convertToUnit(contextMenuX.value),\n zIndex: 5,\n ...additionalStyles,\n },\n },\n h(\n VSlideYTransition,\n {\n mode: 'in-out',\n } satisfies VSlideYTransitionPublicProps,\n () => {\n const variant = contextMenuVariant.value\n if (variant === 'action') {\n return h(VCard, { color: 'surface', minHeight: 40, minWidth: 50 }, () => {\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n disabled: Boolean(toValue(disabled)),\n }\n const action: ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction | null =\n toValue(contextAction.value)\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function'\n ? action.url(toUnreactive(contextRecord.value!))\n : action.url\n opts.href = href || undefined\n return [\n h(VListItem, {\n ...opts,\n title: t('resourceful.action.openInApp'),\n prependIcon: () => openInAppIcon,\n onClick: () => {\n closeContextMenu()\n },\n }),\n h(VListItem, {\n ...opts,\n title: t('resourceful.action.openInNew'),\n prependIcon: () => openInNewIcon,\n target: '_blank',\n onClick: () => {\n closeContextMenu()\n },\n }),\n h(\n VListItem,\n stripUndefinedValuesFromObject({\n ...opts,\n title: t('resourceful.action.copyLink'),\n prependIcon: () => copyLinkIcon,\n href: undefined,\n onClick: () => {\n if ('string' === typeof href && href.trim().length > 0) {\n copyToClipboard(href)\n }\n closeContextMenu()\n },\n })\n ),\n ]\n } else if (isResourcefulIndexFunctionAction(action)) {\n return [\n h(VListItem, {\n ...opts,\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n onClick: () => {\n processResourcefulIndexFunctionAction(\n action,\n toUnreactive(contextRecord.value!)\n )\n closeContextMenu()\n },\n }),\n ]\n }\n return null\n })\n } else if (variant === 'record') {\n return h(VCard, { color: 'surface', minHeight: 40, minWidth: 50 }, () =>\n Array.from(actions.value).map((action, index) => {\n const key = `resourceful-index-context-menu-action-${index}`\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n disabled: Boolean(toValue(disabled)),\n }\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function'\n ? action.url(toUnreactive(contextRecord.value!))\n : action.url\n opts.href = href || undefined\n // @ts-expect-error\n opts.target = action.target || undefined\n opts.link = typeof href === 'string' && href.trim().length > 0\n opts.onClick = () => {\n closeContextMenu()\n }\n // @ts-expect-error\n opts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n closeContextMenu()\n }\n }\n } else if (isResourcefulIndexFunctionAction(action)) {\n opts.onClick = () => {\n processResourcefulIndexFunctionAction(\n action,\n toUnreactive(contextRecord.value!)\n )\n closeContextMenu()\n }\n // @ts-expect-error\n opts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n processResourcefulIndexFunctionAction(\n action,\n toUnreactive(contextRecord.value!)\n )\n closeContextMenu()\n }\n }\n }\n return h(VListItem, { ...opts, key })\n })\n )\n }\n return null\n }\n )\n )\n }\n const openContextMenuForRecord = async (e: MouseEvent | TouchEvent, record: ActionableRecord) => {\n if (actionsForRecordAreDisabled(record)) return\n if (contextMenuIsOpen.value) {\n closeContextMenu()\n await nextTick()\n }\n contextMenuX.value =\n 'clientX' in e\n ? e.clientX\n : 'touches' in e && e.touches.length > 0\n ? e.touches[0].clientX\n : null\n contextMenuY.value =\n 'clientY' in e\n ? e.clientY\n : 'touches' in e && e.touches.length > 0\n ? e.touches[0].clientY\n : null\n contextAction.value = null\n contextRecord.value = record\n }\n const windowClickListener = (e: MouseEvent) => {\n if (contextElement.value === null) return\n if (contextElement.value?.contains(e.target as Node)) return\n closeContextMenu()\n }\n const windowContextMenuListener = (e: MouseEvent) => {\n if (contextElement.value === null) return\n if (contextElement.value?.contains(e.target as Node)) return\n closeContextMenu()\n }\n const windowTouchListener = (e: TouchEvent) => {\n if (contextElement.value === null) return\n if (contextElement.value?.contains(e.target as Node)) return\n closeContextMenu()\n }\n onMounted(() => {\n window.addEventListener('click', windowClickListener)\n window.addEventListener('contextmenu', windowContextMenuListener)\n window.addEventListener('touchstart', windowTouchListener)\n window.addEventListener('scroll', closeContextMenu)\n window.addEventListener('resize', closeContextMenu)\n if (SUPPORTS_VISUAL_VIEWPORT) {\n window.visualViewport!.addEventListener('scroll', closeContextMenu)\n window.visualViewport!.addEventListener('resize', closeContextMenu)\n }\n })\n onBeforeUnmount(() => {\n closeContextMenu()\n window.removeEventListener('click', windowClickListener)\n window.removeEventListener('contextmenu', windowContextMenuListener)\n window.removeEventListener('touchstart', windowTouchListener)\n window.removeEventListener('scroll', closeContextMenu)\n window.removeEventListener('resize', closeContextMenu)\n if (SUPPORTS_VISUAL_VIEWPORT) {\n window.visualViewport!.removeEventListener('scroll', closeContextMenu)\n window.visualViewport!.removeEventListener('resize', closeContextMenu)\n }\n })\n return {\n renderActionsForRecord,\n reactiveContextMenuRenderer,\n openContextMenuForRecord,\n renderClipboardFeedback,\n contextMenuIsOpen,\n actionForRecordIsProcessing,\n isProcessing,\n }\n}\n"],"names":["makeVTooltipProps","propsFactory","omit","makeVOverlayProps","VTooltip","genericComponent","value","props","_ref","slots","isActive","useProxiedModel","scopeId","useScopeId","uid","useId","id","toRef","overlay","ref","location","computed","origin","transition","activatorProps","mergeProps","useRender","overlayProps","VOverlay","_createVNode","_mergeProps","$event","_len","args","_key","forwardRefs","openInAppIcon","h","SvgIcon","mdiOpenInApp","openInNewIcon","mdiOpenInNew","copyLinkIcon","mdiContentCopy","resourcefulIndexActionCommonSchema","joi","resourcefulIndexUrlActionSchema","resourcefulIndexFunctionActionSchema","resourcefulIndexActionSchema","resourcefulIndexActionsSchema","isResourcefulIndexUrlAction","val","error","isResourcefulIndexFunctionAction","isResourcefulIndexAction","areResourcefulIndexActions","makeResourcefulIndexActionsProps","canPerformActionForRecord","record","action","e","warn","canPerformBulkActionForRecords","records","fn","url","canPerformBulkActionForActionableCount","count","canDisplayInBulkActionsDropdown","useBulkActions","actions","allCount","actionableCount","onBulkActionInvoked","listItemOptions","bulkActionListItems","v","index","opts","toValue","VListItem","canShowBulkActionList","bulkActionListDisabled","a","useTableActions","disabled","copyToClipboard","renderClipboardFeedback","useClipboard","t","useI18n","contextMenuX","contextMenuY","contextRecord","contextAction","closeContextMenu","contextMenuIsOpen","contextMenuVariant","contextElement","recordsProcessingAction","processResourcefulIndexFunctionAction","recordId","result","callCallback","callback","rec","res","payload","idx","promises","actionForRecordIsProcessing","actionsForRecordAreDisabled","isProcessing","onPinnedActionContextMenuRequest","nextTick","pinnedActions","unpinnedActions","renderActionsForRecord","pinnedActionsForRecord","unpinnedActionsForRecord","isActionProcessing","tooltipListItemOpts","btnItemOpts","href","toUnreactive","VHover","isHovering","hoverProvidedProps","tooltipActivatorProps","VBtn","VMenu","menuActivatorProps","mdiDotsVertical","VCard","key","reactiveContextMenuRenderer","additionalStyles","convertToUnit","VSlideYTransition","variant","stripUndefinedValuesFromObject","openContextMenuForRecord","windowClickListener","windowContextMenuListener","windowTouchListener","onMounted","SUPPORTS_VISUAL_VIEWPORT","onBeforeUnmount"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"actions-ORUmfJR5.mjs","sources":["../node_modules/.pnpm/vuetify@3.10.9_typescript@5.9.3_vue@3.5.24_typescript@5.9.3_/node_modules/vuetify/lib/components/VTooltip/VTooltip.js","../src/private/resourceful-index/actions.ts"],"sourcesContent":["import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTooltip.css\";\n\n// Components\nimport { VOverlay } from \"../VOverlay/index.js\";\nimport { makeVOverlayProps } from \"../VOverlay/VOverlay.js\"; // Composables\nimport { forwardRefs } from \"../../composables/forwardRefs.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\";\nimport { useScopeId } from \"../../composables/scopeId.js\"; // Utilities\nimport { computed, mergeProps, ref, toRef, useId } from 'vue';\nimport { genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTooltipProps = propsFactory({\n id: String,\n interactive: Boolean,\n text: String,\n ...omit(makeVOverlayProps({\n closeOnBack: false,\n location: 'end',\n locationStrategy: 'connected',\n eager: true,\n minWidth: 0,\n offset: 10,\n openOnClick: false,\n openOnHover: true,\n origin: 'auto',\n scrim: false,\n scrollStrategy: 'reposition',\n transition: null\n }), ['absolute', 'persistent'])\n}, 'VTooltip');\nexport const VTooltip = genericComponent()({\n name: 'VTooltip',\n props: makeVTooltipProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const isActive = useProxiedModel(props, 'modelValue');\n const {\n scopeId\n } = useScopeId();\n const uid = useId();\n const id = toRef(() => props.id || `v-tooltip-${uid}`);\n const overlay = ref();\n const location = computed(() => {\n return props.location.split(' ').length > 1 ? props.location : props.location + ' center';\n });\n const origin = computed(() => {\n return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';\n });\n const transition = toRef(() => {\n if (props.transition != null) return props.transition;\n return isActive.value ? 'scale-transition' : 'fade-transition';\n });\n const activatorProps = computed(() => mergeProps({\n 'aria-describedby': id.value\n }, props.activatorProps));\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props);\n return _createVNode(VOverlay, _mergeProps({\n \"ref\": overlay,\n \"class\": ['v-tooltip', {\n 'v-tooltip--interactive': props.interactive\n }, props.class],\n \"style\": props.style,\n \"id\": id.value\n }, overlayProps, {\n \"modelValue\": isActive.value,\n \"onUpdate:modelValue\": $event => isActive.value = $event,\n \"transition\": transition.value,\n \"absolute\": true,\n \"location\": location.value,\n \"origin\": origin.value,\n \"persistent\": true,\n \"role\": \"tooltip\",\n \"activatorProps\": activatorProps.value,\n \"_disableGlobalStack\": true\n }, scopeId), {\n activator: slots.activator,\n default: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return slots.default?.(...args) ?? props.text;\n }\n });\n });\n return forwardRefs({}, overlay);\n }\n});\n//# sourceMappingURL=VTooltip.js.map","import { useI18n } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { VBtn } from 'vuetify/components/VBtn'\nimport { useClipboard } from '../ux/clipboard'\nimport { VMenu } from 'vuetify/components/VMenu'\nimport { VCard } from 'vuetify/components/VCard'\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport { VHover } from 'vuetify/components/VHover'\nimport { VListItem } from 'vuetify/components/VList'\nimport { VTooltip } from 'vuetify/components/VTooltip'\nimport { SUPPORTS_VISUAL_VIEWPORT } from '../ux/display'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { VSlideYTransition } from 'vuetify/components/transitions'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { stripUndefinedValuesFromObject, toUnreactive } from '../common/utils'\nimport { mdiDotsVertical, mdiOpenInApp, mdiOpenInNew, mdiContentCopy } from '@mdi/js'\nimport { warn, computed, h, toValue, ref, onMounted, onBeforeUnmount, nextTick } from 'vue'\nimport type { makeVBtnProps } from '@nhtio/vuetifiable/components/VBtn/VBtn'\nimport type { makeVMenuProps } from '@nhtio/vuetifiable/components/VMenu/VMenu'\nimport type { NamedSlotParameters, ExtractSlotDefinitions } from '../common/types'\nimport type { makeVListItemProps } from '@nhtio/vuetifiable/components/VList/VListItem'\nimport type { makeVTooltipProps } from '@nhtio/vuetifiable/components/VTooltip/VTooltip'\nimport type { PropType, Ref, MaybeRef, ExtractPublicPropTypes, VNode, ComputedRef } from 'vue'\nimport type { makeTransitionProps } from '@nhtio/vuetifiable/components/transitions/createTransition'\n\nconst openInAppIcon = h(SvgIcon, { d: mdiOpenInApp })\nconst openInNewIcon = h(SvgIcon, { d: mdiOpenInNew })\nconst copyLinkIcon = h(SvgIcon, { d: mdiContentCopy })\n\ntype VListItemPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVListItemProps>>\ntype VBtnPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnProps>>\ntype VMenuPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVMenuProps>>\ntype VTooltipPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeVTooltipProps>>\ntype VSlideYTransitionPublicProps = ExtractPublicPropTypes<ReturnType<typeof makeTransitionProps>>\ntype ExtractedVHoverSlots = ExtractSlotDefinitions<typeof VHover.slots>\ntype VHoverDefaultSlotProps = NamedSlotParameters<ExtractedVHoverSlots, 'default'>\ntype ExtractedVMenuSlots = ExtractSlotDefinitions<typeof VMenu.slots>\ntype VMenuActivatorSlotProps = NamedSlotParameters<ExtractedVMenuSlots, 'activator'>\ntype ExtractedVTooltipSlots = ExtractSlotDefinitions<typeof VTooltip.slots>\ntype VTooltipActivatorSlotProps = NamedSlotParameters<ExtractedVTooltipSlots, 'activator'>\n\nexport type ActionableRecord = {\n id: string | number\n [key: string]: any\n}\n\nexport type ActionIsActionableValidator = (record: ActionableRecord) => boolean\n\nexport type TernaryOperator = boolean | null\n\nexport type ActionCallback = (\n record: ActionableRecord\n) => TernaryOperator | Promise<TernaryOperator> | PromiseLike<TernaryOperator>\n\nexport type BulkActionResults = Map<ActionableRecord, TernaryOperator>\n\nexport type BulkActionCallback = (\n records: ActionableRecord[],\n updateProgress: (completed: number, total: number) => void\n) => BulkActionResults | Promise<BulkActionResults> | PromiseLike<BulkActionResults>\n\nexport type SuccessCallback = (results: BulkActionResults) => void\n\nexport type UndeterminedCallback = (results: BulkActionResults) => void\n\nexport type FailureCallback = (results: BulkActionResults) => void\n\nexport type CompleteCallback = (results: BulkActionResults) => void\n\ntype DispositionCallback = SuccessCallback | UndeterminedCallback | FailureCallback\n\nexport type ProgressCallback = (completed: number, total: number) => void\n\ninterface ResourcefulIndexAction {\n icon: IconValue\n title: string\n subtitle?: string | undefined\n pinned?: boolean | undefined\n actionable?: boolean | ActionIsActionableValidator | undefined\n maxSafeBulkActionRecords?: number | undefined\n maxBulkActionRecords?: number | undefined\n singleAsBulkActionMaxConcurrency?: number | undefined\n singleAsBulkActionStopOnError?: boolean | undefined\n}\n\nexport interface ResourcefulIndexUrlAction extends ResourcefulIndexAction {\n url: string | ((record: ActionableRecord) => string | null | undefined)\n target?: '_self' | '_blank' | '_parent' | '_top' | string | undefined\n}\n\nexport interface ResourcefulIndexFunctionAction extends ResourcefulIndexAction {\n action: ActionCallback\n bulkAction?: BulkActionCallback | undefined\n onSuccess?: SuccessCallback | undefined\n onUndetermined?: UndeterminedCallback | undefined\n onFailure?: FailureCallback | undefined\n onComplete?: CompleteCallback | undefined\n onProgress?: ProgressCallback | undefined\n}\n\nconst resourcefulIndexActionCommonSchema = {\n icon: joi\n .alternatives()\n .try(joi.string(), joi.object().unknown(true), joi.array(), joi.function())\n .required(),\n title: joi.string().required(),\n subtitle: joi.string().optional(),\n pinned: joi.boolean().optional(),\n actionable: joi.alternatives().try(joi.boolean(), joi.function()).optional(),\n maxSafeBulkActionRecords: joi.number().integer().min(1).optional(),\n maxBulkActionRecords: joi.number().integer().min(1).optional(),\n singleAsBulkActionMaxConcurrency: joi.number().integer().min(1).optional(),\n singleAsBulkActionStopOnError: joi.boolean().optional(),\n}\n\nconst resourcefulIndexUrlActionSchema = joi\n .object({\n ...resourcefulIndexActionCommonSchema,\n url: joi.alternatives().try(joi.string(), joi.function()).required(),\n target: joi.string().optional(),\n })\n .unknown(false)\n\nconst resourcefulIndexFunctionActionSchema = joi\n .object({\n ...resourcefulIndexActionCommonSchema,\n action: joi.function().required(),\n bulkAction: joi.function().optional(),\n onSuccess: joi.function().optional(),\n onUndetermined: joi.function().optional(),\n onFailure: joi.function().optional(),\n onComplete: joi.function().optional(),\n onProgress: joi.function().optional(),\n })\n .unknown(false)\n\nconst resourcefulIndexActionSchema = joi\n .alternatives()\n .try(resourcefulIndexUrlActionSchema, resourcefulIndexFunctionActionSchema)\n\nconst resourcefulIndexActionsSchema = joi.array().items(resourcefulIndexActionSchema)\n\nexport const isResourcefulIndexUrlAction = (val: unknown): val is ResourcefulIndexUrlAction => {\n const { error } = resourcefulIndexUrlActionSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nexport const isResourcefulIndexFunctionAction = (\n val: unknown\n): val is ResourcefulIndexFunctionAction => {\n const { error } = resourcefulIndexFunctionActionSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nconst isResourcefulIndexAction = (\n val: unknown\n): val is ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction => {\n const { error } = resourcefulIndexActionSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nconst areResourcefulIndexActions = (\n val: unknown\n): val is Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction> => {\n const { error } = resourcefulIndexActionsSchema.validate(val, { abortEarly: true })\n return Boolean(!error)\n}\n\nexport const makeResourcefulIndexActionsProps = propsFactory(\n {\n actions: {\n type: Array as PropType<Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction>>,\n validator: areResourcefulIndexActions,\n default: () => [],\n },\n },\n 'ResourcefulIndexActions'\n)\n\nconst canPerformActionForRecord = (record: ActionableRecord, action: unknown) => {\n if (!isResourcefulIndexAction(action)) {\n return false\n }\n if (typeof action.actionable === 'boolean') {\n return action.actionable\n } else if (typeof action.actionable === 'function') {\n try {\n return action.actionable(record)\n } catch (e) {\n warn('Error evaluating actionable function for action:', action, e)\n return false\n }\n }\n}\n\nexport const canPerformBulkActionForRecords = (records: ActionableRecord[], action: unknown) => {\n if (!isResourcefulIndexAction(action)) return false\n if (\n records.length < 2 ||\n (typeof action.maxBulkActionRecords === 'number' &&\n records.length > action.maxBulkActionRecords)\n )\n return false\n if (isResourcefulIndexUrlAction(action)) {\n if (typeof action.url === 'function') {\n const fn = action.url as (record: ActionableRecord) => string | null | undefined\n const urls = records.map((record) => fn(record))\n return urls.some((url) => 'string' === typeof url && url.trim().length > 0)\n } else if (typeof action.url === 'string') {\n return true\n }\n return false\n } else if (isResourcefulIndexFunctionAction(action)) {\n return true\n }\n return false\n}\n\nconst canPerformBulkActionForActionableCount = (action: unknown, count: number) => {\n if (!isResourcefulIndexAction(action)) return false\n if (\n count < 2 ||\n (typeof action.maxBulkActionRecords === 'number' && count > action.maxBulkActionRecords)\n )\n return false\n return isResourcefulIndexUrlAction(action) || isResourcefulIndexFunctionAction(action)\n}\n\nconst canDisplayInBulkActionsDropdown = (action: unknown) => {\n if (!isResourcefulIndexAction(action)) return false\n if (typeof action.maxBulkActionRecords === 'number' && action.maxBulkActionRecords <= 1)\n return false\n return isResourcefulIndexUrlAction(action) || isResourcefulIndexFunctionAction(action)\n}\n\ntype BulkActionListItemOptions = Omit<\n VListItemPublicProps,\n | 'title'\n | 'subtitle'\n | 'icon'\n | 'prependIcon'\n | 'appendIcon'\n | 'value'\n | 'active'\n | 'onClick'\n | 'href'\n | 'replace'\n | 'to'\n | 'exact'\n | 'onClickOnce'\n | 'activeClass'\n | 'activeColor'\n | 'appendAvatar'\n | 'prependAvatar'\n | 'link'\n | 'nav'\n | 'disabled'\n>\n\nexport const useBulkActions = (\n actions: Ref<Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction>>,\n allCount: Ref<number>,\n actionableCount: Ref<number>,\n onBulkActionInvoked: (\n action: ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction\n ) => void | Promise<void> | PromiseLike<void>,\n listItemOptions: MaybeRef<BulkActionListItemOptions> = {}\n) => {\n const bulkActionListItems: ComputedRef<Array<VNode>> = computed<Array<VNode>>(\n () =>\n Array.from(actions.value)\n .filter((v) => canDisplayInBulkActionsDropdown(v))\n .map((action, index) => {\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n disabled: !canPerformBulkActionForActionableCount(action, actionableCount.value),\n }\n return h(VListItem, {\n ...opts,\n key: `resourceful-index-bulk-action-${index}`,\n onClick: () => {\n if (onBulkActionInvoked) {\n onBulkActionInvoked(action)\n }\n },\n })\n }) as VNode[]\n )\n const canShowBulkActionList = computed(() => bulkActionListItems.value.length > 0)\n const bulkActionListDisabled = computed(\n () =>\n allCount.value === 0 ||\n Array.from(actions.value).every((a) => !canDisplayInBulkActionsDropdown(a))\n )\n\n return { bulkActionListItems, canShowBulkActionList, bulkActionListDisabled }\n}\n\nexport const useTableActions = (\n actions: Ref<Array<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction>>,\n disabled: MaybeRef<string | boolean | undefined>,\n listItemOptions: MaybeRef<BulkActionListItemOptions> = {}\n) => {\n const { copy: copyToClipboard, renderClipboardFeedback } = useClipboard()\n const t = useI18n()\n const contextMenuX = ref<number | null>(null)\n const contextMenuY = ref<number | null>(null)\n const contextRecord = ref<ActionableRecord | null>(null)\n const contextAction = ref<ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction | null>(null)\n const closeContextMenu = () => {\n contextMenuX.value = null\n contextMenuY.value = null\n contextRecord.value = null\n contextAction.value = null\n }\n const contextMenuIsOpen = computed(() => {\n return (\n contextMenuX.value !== null &&\n contextMenuY.value !== null &&\n (contextRecord.value !== null || contextAction.value !== null)\n )\n })\n const contextMenuVariant = computed<'none' | 'record' | 'action'>(() => {\n if (contextMenuX.value === null || contextMenuY.value === null) return 'none'\n if (contextAction.value !== null) return 'action'\n if (contextRecord.value !== null) return 'record'\n return 'none'\n })\n const contextElement = ref<HTMLElement | null>(null)\n\n const recordsProcessingAction = ref<string[]>([])\n\n const processResourcefulIndexFunctionAction = async (\n action: ResourcefulIndexFunctionAction,\n record: ActionableRecord\n ) => {\n const recordId = String(record.id)\n if (recordsProcessingAction.value.includes(recordId)) return\n recordsProcessingAction.value.push(recordId)\n let result: TernaryOperator = null\n const callCallback = async (\n callback: DispositionCallback,\n rec: ActionableRecord,\n res: TernaryOperator\n ) => {\n const payload = new Map<ActionableRecord, TernaryOperator>([[rec, res]])\n try {\n await callback(payload)\n } catch (e) {\n warn('Error executing callback for action:', action, e)\n }\n }\n if (action.onProgress) {\n try {\n action.onProgress(0, 1)\n } catch (e) {\n warn('Error executing onProgress callback for action:', action, e)\n }\n }\n try {\n result = await action.action(record)\n } catch (e) {\n result = false\n warn('Error executing action function for record:', record, e)\n }\n const idx = recordsProcessingAction.value.indexOf(recordId)\n if (idx > -1) {\n recordsProcessingAction.value.splice(idx, 1)\n }\n if (action.onProgress) {\n try {\n action.onProgress(1, 1)\n } catch (e) {\n warn('Error executing onProgress callback for action:', action, e)\n }\n }\n const promises: Array<Promise<void>> = []\n if (action.onSuccess && result === true) {\n promises.push(callCallback(action.onSuccess, record, result))\n }\n if (action.onUndetermined && result === null) {\n promises.push(callCallback(action.onUndetermined, record, result))\n }\n if (action.onFailure && result === false) {\n promises.push(callCallback(action.onFailure, record, result))\n }\n if (action.onComplete) {\n promises.push(callCallback(action.onComplete, record, result))\n }\n if (promises.length > 0) {\n await Promise.all(promises)\n }\n return result\n }\n\n const actionForRecordIsProcessing = (record: ActionableRecord) => {\n if (record && 'id' in record) {\n const recordId = String(record.id)\n return recordsProcessingAction.value.includes(recordId)\n }\n return false\n }\n\n const actionsForRecordAreDisabled = (record: ActionableRecord) => {\n if (true === toValue(disabled)) return true\n return actionForRecordIsProcessing(record)\n }\n\n const isProcessing = computed(() => recordsProcessingAction.value.length > 0)\n\n const onPinnedActionContextMenuRequest = async (\n action: ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction,\n record: ActionableRecord,\n e: MouseEvent\n ) => {\n if (actionsForRecordAreDisabled(record)) return\n if (contextMenuIsOpen.value) {\n closeContextMenu()\n await nextTick()\n }\n contextMenuX.value = 'clientX' in e ? e.clientX : null\n contextMenuY.value = 'clientY' in e ? e.clientY : null\n contextRecord.value = record\n contextAction.value = action\n }\n const pinnedActions = computed(() =>\n actions.value.filter((a) => a.pinned && isResourcefulIndexAction(a))\n )\n const unpinnedActions = computed(() =>\n actions.value.filter((a) => !a.pinned && isResourcefulIndexAction(a))\n )\n const renderActionsForRecord = (record: ActionableRecord) => {\n const pinnedActionsForRecord = pinnedActions.value.filter((a) =>\n canPerformActionForRecord(record, a)\n )\n const unpinnedActionsForRecord = unpinnedActions.value.filter((a) =>\n canPerformActionForRecord(record, a)\n )\n if (pinnedActionsForRecord.length === 0 && unpinnedActionsForRecord.length === 0) return null\n const isActionProcessing = actionForRecordIsProcessing(record)\n return h(\n 'div',\n {\n class: ['__resourceful_index_actions_cell__actions', 'd-flex', 'align-center', 'mx-2'],\n },\n [\n ...pinnedActionsForRecord.map((action, index) => {\n const tooltipListItemOpts: VListItemPublicProps = {\n density: 'compact',\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n }\n const btnItemOpts: VBtnPublicProps = {\n // @ts-expect-error\n onContextmenu: (e: MouseEvent) => {\n if (e) {\n e.preventDefault()\n e.stopPropagation()\n e.stopImmediatePropagation()\n if (actionsForRecordAreDisabled(record)) return\n onPinnedActionContextMenuRequest(action, record, e)\n }\n },\n }\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function' ? action.url(toUnreactive(record)) : action.url\n btnItemOpts.href = href || undefined\n // @ts-expect-error\n btnItemOpts.target = action.target || undefined\n } else if (isResourcefulIndexFunctionAction(action)) {\n // @ts-expect-error\n btnItemOpts.onClick = () =>\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n // @ts-expect-error\n btnItemOpts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n }\n }\n }\n return h(\n VHover,\n { key: `pinned-action-${index}` },\n {\n default: ({ isHovering, props: hoverProvidedProps }: VHoverDefaultSlotProps[0]) =>\n h(\n VTooltip,\n {\n openDelay: 750,\n interactive: false,\n // @ts-expect-error\n stickToTarget: true,\n } satisfies VTooltipPublicProps,\n {\n activator: ({\n isActive,\n props: tooltipActivatorProps,\n }: VTooltipActivatorSlotProps[0]) =>\n h(VBtn, {\n ...hoverProvidedProps,\n ...tooltipActivatorProps,\n ...btnItemOpts,\n variant: 'text',\n icon: action.icon,\n size: 'small',\n style: { opacity: isHovering || isActive ? 1 : 0.5 },\n class: [\n {\n 'me-2':\n index < pinnedActionsForRecord.length - 1 ||\n unpinnedActionsForRecord.length > 0,\n },\n ],\n disabled: Boolean(toValue(disabled)),\n } satisfies VBtnPublicProps),\n default: () =>\n h(VListItem, {\n ...tooltipListItemOpts,\n }),\n }\n ),\n }\n )\n }),\n unpinnedActionsForRecord.length === 0\n ? isActionProcessing\n ? h(VBtn, {\n icon: true,\n size: 'small',\n loading: true,\n variant: 'text',\n } satisfies VBtnPublicProps)\n : null\n : h(\n VHover,\n {},\n {\n default: ({ isHovering, props: hoverProvidedProps }: VHoverDefaultSlotProps[0]) =>\n h(VMenu, { closeOnContentClick: true } satisfies VMenuPublicProps, {\n activator: ({\n isActive,\n props: menuActivatorProps,\n }: VMenuActivatorSlotProps[0]) =>\n h(VBtn, {\n ...hoverProvidedProps,\n ...menuActivatorProps,\n variant: 'text',\n icon: () => h(SvgIcon, { d: mdiDotsVertical }),\n size: 'small',\n style: { opacity: isHovering || isActive ? 1 : 0.5 },\n class: [],\n loading: isActionProcessing,\n } satisfies VBtnPublicProps),\n default: () =>\n h(VCard, { color: 'surface' }, () => [\n ...unpinnedActionsForRecord.map((action, index) => {\n const key = `resourceful-index-action-${index}`\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n disabled: Boolean(toValue(disabled)),\n }\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function'\n ? action.url(toUnreactive(record))\n : action.url\n opts.href = href || undefined\n // @ts-expect-error\n opts.target = action.target || undefined\n opts.link = typeof href === 'string' && href.trim().length > 0\n } else if (isResourcefulIndexFunctionAction(action)) {\n opts.onClick = () =>\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n // @ts-expect-error\n opts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n processResourcefulIndexFunctionAction(action, toUnreactive(record))\n }\n }\n }\n return h(VListItem, { ...opts, key })\n }),\n ]),\n }),\n }\n ),\n ]\n )\n }\n const reactiveContextMenuRenderer = () => {\n const additionalStyles =\n null === contextMenuY.value || null === contextMenuX.value\n ? { width: 0, height: 0, overflow: 'hidden' }\n : {}\n return h(\n 'div',\n {\n ref: contextElement,\n style: {\n position: 'fixed',\n top: null === contextMenuY.value ? 0 : convertToUnit(contextMenuY.value),\n left: null === contextMenuX.value ? 0 : convertToUnit(contextMenuX.value),\n zIndex: 5,\n ...additionalStyles,\n },\n },\n h(\n VSlideYTransition,\n {\n mode: 'in-out',\n } satisfies VSlideYTransitionPublicProps,\n () => {\n const variant = contextMenuVariant.value\n if (variant === 'action') {\n return h(VCard, { color: 'surface', minHeight: 40, minWidth: 50 }, () => {\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n disabled: Boolean(toValue(disabled)),\n }\n const action: ResourcefulIndexUrlAction | ResourcefulIndexFunctionAction | null =\n toValue(contextAction.value)\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function'\n ? action.url(toUnreactive(contextRecord.value!))\n : action.url\n opts.href = href || undefined\n return [\n h(VListItem, {\n ...opts,\n title: t('resourceful.action.openInApp'),\n prependIcon: () => openInAppIcon,\n onClick: () => {\n closeContextMenu()\n },\n }),\n h(VListItem, {\n ...opts,\n title: t('resourceful.action.openInNew'),\n prependIcon: () => openInNewIcon,\n target: '_blank',\n onClick: () => {\n closeContextMenu()\n },\n }),\n h(\n VListItem,\n stripUndefinedValuesFromObject({\n ...opts,\n title: t('resourceful.action.copyLink'),\n prependIcon: () => copyLinkIcon,\n href: undefined,\n onClick: () => {\n if ('string' === typeof href && href.trim().length > 0) {\n copyToClipboard(href)\n }\n closeContextMenu()\n },\n })\n ),\n ]\n } else if (isResourcefulIndexFunctionAction(action)) {\n return [\n h(VListItem, {\n ...opts,\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n onClick: () => {\n processResourcefulIndexFunctionAction(\n action,\n toUnreactive(contextRecord.value!)\n )\n closeContextMenu()\n },\n }),\n ]\n }\n return null\n })\n } else if (variant === 'record') {\n return h(VCard, { color: 'surface', minHeight: 40, minWidth: 50 }, () =>\n Array.from(actions.value).map((action, index) => {\n const key = `resourceful-index-context-menu-action-${index}`\n const opts: VListItemPublicProps = {\n ...toValue(listItemOptions),\n title: action.title,\n subtitle: action.subtitle,\n prependIcon: action.icon,\n disabled: Boolean(toValue(disabled)),\n }\n if (isResourcefulIndexUrlAction(action)) {\n const href =\n typeof action.url === 'function'\n ? action.url(toUnreactive(contextRecord.value!))\n : action.url\n opts.href = href || undefined\n // @ts-expect-error\n opts.target = action.target || undefined\n opts.link = typeof href === 'string' && href.trim().length > 0\n opts.onClick = () => {\n closeContextMenu()\n }\n // @ts-expect-error\n opts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n closeContextMenu()\n }\n }\n } else if (isResourcefulIndexFunctionAction(action)) {\n opts.onClick = () => {\n processResourcefulIndexFunctionAction(\n action,\n toUnreactive(contextRecord.value!)\n )\n closeContextMenu()\n }\n // @ts-expect-error\n opts.onKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n processResourcefulIndexFunctionAction(\n action,\n toUnreactive(contextRecord.value!)\n )\n closeContextMenu()\n }\n }\n }\n return h(VListItem, { ...opts, key })\n })\n )\n }\n return null\n }\n )\n )\n }\n const openContextMenuForRecord = async (e: MouseEvent | TouchEvent, record: ActionableRecord) => {\n if (actionsForRecordAreDisabled(record)) return\n if (contextMenuIsOpen.value) {\n closeContextMenu()\n await nextTick()\n }\n contextMenuX.value =\n 'clientX' in e\n ? e.clientX\n : 'touches' in e && e.touches.length > 0\n ? e.touches[0].clientX\n : null\n contextMenuY.value =\n 'clientY' in e\n ? e.clientY\n : 'touches' in e && e.touches.length > 0\n ? e.touches[0].clientY\n : null\n contextAction.value = null\n contextRecord.value = record\n }\n const windowClickListener = (e: MouseEvent) => {\n if (contextElement.value === null) return\n if (contextElement.value?.contains(e.target as Node)) return\n closeContextMenu()\n }\n const windowContextMenuListener = (e: MouseEvent) => {\n if (contextElement.value === null) return\n if (contextElement.value?.contains(e.target as Node)) return\n closeContextMenu()\n }\n const windowTouchListener = (e: TouchEvent) => {\n if (contextElement.value === null) return\n if (contextElement.value?.contains(e.target as Node)) return\n closeContextMenu()\n }\n onMounted(() => {\n window.addEventListener('click', windowClickListener)\n window.addEventListener('contextmenu', windowContextMenuListener)\n window.addEventListener('touchstart', windowTouchListener)\n window.addEventListener('scroll', closeContextMenu)\n window.addEventListener('resize', closeContextMenu)\n if (SUPPORTS_VISUAL_VIEWPORT) {\n window.visualViewport!.addEventListener('scroll', closeContextMenu)\n window.visualViewport!.addEventListener('resize', closeContextMenu)\n }\n })\n onBeforeUnmount(() => {\n closeContextMenu()\n window.removeEventListener('click', windowClickListener)\n window.removeEventListener('contextmenu', windowContextMenuListener)\n window.removeEventListener('touchstart', windowTouchListener)\n window.removeEventListener('scroll', closeContextMenu)\n window.removeEventListener('resize', closeContextMenu)\n if (SUPPORTS_VISUAL_VIEWPORT) {\n window.visualViewport!.removeEventListener('scroll', closeContextMenu)\n window.visualViewport!.removeEventListener('resize', closeContextMenu)\n }\n })\n return {\n renderActionsForRecord,\n reactiveContextMenuRenderer,\n openContextMenuForRecord,\n renderClipboardFeedback,\n contextMenuIsOpen,\n actionForRecordIsProcessing,\n isProcessing,\n }\n}\n"],"names":["makeVTooltipProps","propsFactory","omit","makeVOverlayProps","VTooltip","genericComponent","value","props","_ref","slots","isActive","useProxiedModel","scopeId","useScopeId","uid","useId","id","toRef","overlay","ref","location","computed","origin","transition","activatorProps","mergeProps","useRender","overlayProps","VOverlay","_createVNode","_mergeProps","$event","_len","args","_key","forwardRefs","openInAppIcon","h","SvgIcon","mdiOpenInApp","openInNewIcon","mdiOpenInNew","copyLinkIcon","mdiContentCopy","resourcefulIndexActionCommonSchema","joi","resourcefulIndexUrlActionSchema","resourcefulIndexFunctionActionSchema","resourcefulIndexActionSchema","resourcefulIndexActionsSchema","isResourcefulIndexUrlAction","val","error","isResourcefulIndexFunctionAction","isResourcefulIndexAction","areResourcefulIndexActions","makeResourcefulIndexActionsProps","canPerformActionForRecord","record","action","e","warn","canPerformBulkActionForRecords","records","fn","url","canPerformBulkActionForActionableCount","count","canDisplayInBulkActionsDropdown","useBulkActions","actions","allCount","actionableCount","onBulkActionInvoked","listItemOptions","bulkActionListItems","v","index","opts","toValue","VListItem","canShowBulkActionList","bulkActionListDisabled","a","useTableActions","disabled","copyToClipboard","renderClipboardFeedback","useClipboard","t","useI18n","contextMenuX","contextMenuY","contextRecord","contextAction","closeContextMenu","contextMenuIsOpen","contextMenuVariant","contextElement","recordsProcessingAction","processResourcefulIndexFunctionAction","recordId","result","callCallback","callback","rec","res","payload","idx","promises","actionForRecordIsProcessing","actionsForRecordAreDisabled","isProcessing","onPinnedActionContextMenuRequest","nextTick","pinnedActions","unpinnedActions","renderActionsForRecord","pinnedActionsForRecord","unpinnedActionsForRecord","isActionProcessing","tooltipListItemOpts","btnItemOpts","href","toUnreactive","VHover","isHovering","hoverProvidedProps","tooltipActivatorProps","VBtn","VMenu","menuActivatorProps","mdiDotsVertical","VCard","key","reactiveContextMenuRenderer","additionalStyles","convertToUnit","VSlideYTransition","variant","stripUndefinedValuesFromObject","openContextMenuForRecord","windowClickListener","windowContextMenuListener","windowTouchListener","onMounted","SUPPORTS_VISUAL_VIEWPORT","onBeforeUnmount"],"mappings":"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","x_google_ignoreList":[0]}