@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,15 +1,15 @@
1
1
  import { a as Z } from "./ioc-Du_Tgg-1.mjs";
2
2
  import { useLocale as ee } from "vuetify";
3
3
  import { d as te } from "./index-DXdh_Con.mjs";
4
- import { C as oe } from "./index-B2rKM3mR.mjs";
5
- import { u as I } from "./display-kAyhIPBH.mjs";
6
- import { s as m, r as re, w as V, j as E } from "./utils-DqXWb-4f.mjs";
4
+ import { C as oe } from "./index-DWv9iKZs.mjs";
5
+ import { u as I } from "./display-B089h_sz.mjs";
6
+ import { s as m, r as re, z as V, j as E } from "./utils-D3ZGaTyv.mjs";
7
7
  import { I as le } from "./encoding-C1W2Cp3X-DzgQRCVx.mjs";
8
- import { u as ae } from "./useRender-BD1xw5zG.mjs";
8
+ import { u as ae } from "./useRender-CfNJA_8a.mjs";
9
9
  import { f as ne } from "./forwardRefs-Cf4c0t-9.mjs";
10
- import { c as se, m as ue } from "./props-p4f5Pa5h.mjs";
10
+ import { c as se, m as ue } from "./props-COvhL78L.mjs";
11
11
  import { defineComponent as ie, toRefs as ve, computed as p, ref as g, mergeProps as H, h as c, onMounted as fe, watch as d, onUnmounted as pe, cloneVNode as ce } from "vue";
12
- import { V as de } from "./VListItem-LNaoM8S4.mjs";
12
+ import { V as de } from "./VListItem-BT-NXJyi.mjs";
13
13
  const me = le && "MutationObserver" in window, he = (h) => {
14
14
  const b = m({
15
15
  ...h.props,
@@ -40,9 +40,9 @@ const me = le && "MutationObserver" in window, he = (h) => {
40
40
  justification: a,
41
41
  gap: u,
42
42
  overflowMenuButtonOptions: y,
43
- class: U,
44
- style: k
45
- } = ve(h), z = p(
43
+ class: z,
44
+ style: U
45
+ } = ve(h), k = p(
46
46
  () => te(
47
47
  {
48
48
  cta: L("general.more")
@@ -65,8 +65,8 @@ const me = le && "MutationObserver" in window, he = (h) => {
65
65
  style: b.style || {}
66
66
  },
67
67
  {
68
- class: U.value,
69
- style: k.value
68
+ class: z.value,
69
+ style: U.value
70
70
  },
71
71
  {
72
72
  class: ["w-100", "position-relative", "r-control-button-bar"],
@@ -208,7 +208,7 @@ const me = le && "MutationObserver" in window, he = (h) => {
208
208
  { ref: W, ...Q.value },
209
209
  c(
210
210
  oe,
211
- { ref: P, ...z.value },
211
+ { ref: P, ...k.value },
212
212
  () => [
213
213
  M["prepend-menu"] ? M["prepend-menu"]() : null,
214
214
  ...Array.from(i.value).map(
@@ -261,4 +261,4 @@ const me = le && "MutationObserver" in window, he = (h) => {
261
261
  export {
262
262
  Ie as C
263
263
  };
264
- //# sourceMappingURL=index-CzI9mHIx.mjs.map
264
+ //# sourceMappingURL=index-BCQmj6cf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CzI9mHIx.mjs","sources":["../src/private/control-button-bar/index.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Control Button Bar Component\n|--------------------------------------------------------------------------\n|\n| An intelligent, responsive toolbar component that automatically handles\n| button overflow with dropdown menus. Uses container-aware responsive\n| breakpoints to adapt to any layout constraint, providing seamless UX\n| across devices and contexts.\n|\n*/\n\nimport { useI18n } from '../ioc'\nimport { useLocale } from 'vuetify'\nimport { deepmerge } from 'deepmerge-ts'\nimport { ControlMenu } from '../control-menu'\nimport { useScopedDisplay } from '../ux/display'\nimport { VListItem } from 'vuetify/components/VList'\nimport { debounce } from '@nhtio/vuetifiable/util/helpers'\nimport { IN_BROWSER } from '@nhtio/vuetifiable/util/globals'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { forwardRefs } from '@nhtio/vuetifiable/composables/forwardRefs'\nimport { makeControlButtonBarProps, controlButtonBarEmits } from './props'\nimport { stripUndefinedValuesFromObject, asAbsInt } from '../common/utils'\nimport {\n computed,\n ref,\n h,\n defineComponent,\n onMounted,\n onUnmounted,\n toRefs,\n mergeProps,\n cloneVNode,\n watch,\n} from 'vue'\nimport type { WatchStopHandle, SlotsType, VNode } from 'vue'\nimport type { ControlButtonBarOverflowMenuButtonProps } from './props'\n\nexport type { ControlButtonBarProps } from './props'\n\nconst SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && 'MutationObserver' in window\n\nconst cloneForMenu = (vnode: VNode) => {\n const updatedProps = stripUndefinedValuesFromObject({\n ...vnode.props,\n 'id': undefined,\n 'aria-controls': undefined,\n ...mergeProps(\n {\n class: vnode.props?.class ? vnode.props.class : undefined,\n },\n {\n class: ['mx-0'],\n }\n ),\n // we are adding a custom prop to identify that this button is rendered in the menu\n // if the component supports it, it can use this prop to adjust its styling/behavior\n 'inOverflowMenu': true,\n })\n return cloneVNode(vnode, updatedProps)\n}\n\n/**\n * Slot types for the ControlButtonBar component.\n *\n * @public\n */\nexport type ControlButtonBarSlots = {\n /** Content to prepend to the overflow menu */\n 'prepend-menu'?: () => any\n /** Content to append to the overflow menu */\n 'append-menu'?: () => any\n}\n\n/**\n * A responsive toolbar component that automatically handles button overflow with dropdown menus.\n *\n * Features:\n * - Container-aware responsive behavior using useScopedDisplay\n * - Automatic overflow detection with visual jumping reduction\n * - RTL support with intelligent menu positioning\n * - MutationObserver for dynamic content changes\n * - Customizable gap spacing and justification\n * - Performance-optimized with debounced calculations\n *\n * @example\n * ```vue\n * <ControlButtonBar\n * :buttons=\"[\n * h(VBtn, { text: 'Columns' }),\n * h(VBtn, { text: 'Filters' }),\n * h(VBtn, { text: 'Sorting' })\n * ]\"\n * justification=\"center\"\n * :gap=\"2\"\n * />\n * ```\n *\n * @public\n */\nexport const ControlButtonBar = defineComponent({\n name: 'ControlButtonBar',\n inheritAttrs: false,\n props: makeControlButtonBarProps(),\n emits: controlButtonBarEmits,\n slots: Object as SlotsType<ControlButtonBarSlots>,\n setup(props, { attrs, slots }) {\n const t = useI18n()\n const { isRtl } = useLocale()\n const {\n buttons,\n justification,\n gap,\n overflowMenuButtonOptions,\n class: className,\n style,\n } = toRefs(props)\n const normalizedOverflowMenuButtonOptions = computed<ControlButtonBarOverflowMenuButtonProps>(\n () =>\n deepmerge(\n {\n cta: t('general.more'),\n },\n stripUndefinedValuesFromObject({\n cta: overflowMenuButtonOptions.value.cta,\n }),\n {\n activator: stripUndefinedValuesFromObject({\n color: overflowMenuButtonOptions.value.color,\n density: overflowMenuButtonOptions.value.density,\n size: overflowMenuButtonOptions.value.size,\n }),\n }\n )\n )\n const containerRef = ref<HTMLDivElement | null>(null)\n const wrapperRef = ref<HTMLDivElement | null>(null)\n const overflowMenuWrapperRef = ref<HTMLElement | null>(null)\n const overflowMenuButtonRef = ref<ControlMenu | null>(null)\n const { width: containerWidth, intersecting, xs } = useScopedDisplay(containerRef)\n const { width: wrapperWidth } = useScopedDisplay(wrapperRef)\n const { width: overflowMenuWrapperWidth, height: overflowMenuWrapperHeight } =\n useScopedDisplay(overflowMenuWrapperRef)\n const containerProps = computed(() =>\n mergeProps(\n {\n class: attrs.class || {},\n style: attrs.style || {},\n },\n {\n class: className.value,\n style: style.value,\n },\n {\n class: ['w-100', 'position-relative', 'r-control-button-bar'],\n role: 'toolbar',\n style: {\n transition: 'opacity 0.2s ease, transform 0.2s ease',\n },\n }\n )\n )\n const overflowedButtonIndexes = ref<number[]>([])\n const lastVisibleButtonEndOffset = ref<number | null>(null)\n const showOverflowMenu = computed(\n () => buttons.value.length > 1 && overflowedButtonIndexes.value.length > 0\n )\n const overflowMenuPosition = computed<'right' | 'left'>(() =>\n isRtl.value\n ? justification.value === 'start'\n ? 'left'\n : 'right'\n : justification.value === 'start'\n ? 'right'\n : 'left'\n )\n const computeOverflowedButtonIndexes = debounce(() => {\n // if there is no container, wrapper, or overflow menu wrapper, we cannot compute overflow\n if (!containerRef.value || !wrapperRef.value || !overflowMenuWrapperRef.value) return\n // if the container is not intersecting (visible), do not compute overflow\n if (!intersecting.value) return\n // if there are less than 2 buttons, then there cannot be any overflow\n if (buttons.value.length < 2) {\n overflowedButtonIndexes.value = []\n return\n }\n // we have 2 values to compare against\n // if none of the buttons extend beyond the wrapper's total width, then there is no overflow\n // otherwise anything that is beyond the wrapper's width minus the overflow button's width\n // is considered overflowed and will be set to 0 opacity + pointer-events: none and then\n // duplicated into the overflow menu\n const wrapperEl = wrapperRef.value\n const buttonWrappers = Array.from(wrapperEl.children) as HTMLDivElement[]\n const currentWrapperWidth = containerWidth.value\n const availableWidthWithOverflowMenu = containerWidth.value - overflowMenuWrapperWidth.value\n\n const buttonWrapperIndexAndOffsets = buttonWrappers.map((wrapper, index) => ({\n index,\n left: wrapper.offsetLeft,\n right: wrapper.offsetLeft + wrapper.offsetWidth,\n }))\n\n // Check if any buttons overflow the wrapper when the menu is visible\n const buttonsOverflowingWrapperIfMenuVisisble = buttonWrapperIndexAndOffsets.filter(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value\n ? left < overflowMenuWrapperWidth.value\n : right > availableWidthWithOverflowMenu\n )\n\n // if no buttons overflow the wrapper when the menu is visible, exit early\n if (buttonsOverflowingWrapperIfMenuVisisble.length === 0) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // check if any of the buttons overflow the wrapper if the menu is not visible\n const someOutsideContainer = buttonsOverflowingWrapperIfMenuVisisble.some(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value ? left < 0 : right > currentWrapperWidth\n )\n // if none of the buttons overflow the wrapper if the menu is not visible, exit early\n if (!someOutsideContainer) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // otherwise, the buttons that overflow the wrapper when the menu is visible are the ones that are overflowed\n overflowedButtonIndexes.value = buttonsOverflowingWrapperIfMenuVisisble.map(\n ({ index }) => index\n )\n\n // in order to make the overflow menu button flow more naturally,\n // we're going to reposition it based on the position of the first hidden button\n const computedHiddenButtons = buttonsOverflowingWrapperIfMenuVisisble.sort((a, b) => {\n if ('left' === overflowMenuPosition.value) {\n return b.right - a.right\n } else {\n return a.left - b.left\n }\n })\n\n const firstHiddenButton = computedHiddenButtons[0]\n if (!firstHiddenButton) {\n lastVisibleButtonEndOffset.value = null\n return\n }\n lastVisibleButtonEndOffset.value =\n 'left' === overflowMenuPosition.value ? firstHiddenButton.right : firstHiddenButton.left\n }, 50)\n const wrapperMutationObserverHandler = (entries: MutationRecord[]) => {\n if (entries.some((e) => e.type === 'childList')) {\n queueMicrotask(() => computeOverflowedButtonIndexes())\n }\n }\n const wrapperObserver = (is: HTMLDivElement | null, was: HTMLDivElement | null | undefined) => {\n if (was && wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n }\n if (is && wrapperMutationObserver) {\n wrapperMutationObserver.observe(is, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n })\n }\n }\n const closeOverflowMenu = () => {\n if (overflowMenuButtonRef.value) {\n overflowMenuButtonRef.value.close()\n }\n }\n const wrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'overflow-x-hidden',\n 'w-100',\n 'r-control-button-bar__wrapper',\n {\n 'justify-start': justification.value === 'start',\n 'justify-end': justification.value === 'end',\n },\n ],\n }))\n const overflowMenuWrapperOffsets = computed(() => {\n if (lastVisibleButtonEndOffset.value === null || xs.value) {\n return stripUndefinedValuesFromObject({\n left: 'left' === overflowMenuPosition.value ? 0 : undefined,\n right: 'right' === overflowMenuPosition.value ? 0 : undefined,\n })\n } else {\n return stripUndefinedValuesFromObject({\n left:\n 'left' === overflowMenuPosition.value\n ? // add 8px to account for the 8px gap on the left side of the button\n convertToUnit(\n lastVisibleButtonEndOffset.value - overflowMenuWrapperWidth.value + 8,\n 'px'\n )\n : // remove 8px to account for the 8px gap on the right side of the button\n convertToUnit(lastVisibleButtonEndOffset.value - 8, 'px'),\n })\n }\n })\n const overflowMenuWrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'align-center',\n 'r-control-button-bar__overflow-menu',\n 'position-absolute',\n {\n [`ps-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`pe-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n ],\n style: {\n ...overflowMenuWrapperOffsets.value,\n ...stripUndefinedValuesFromObject({\n top: `calc(50% - ${convertToUnit(overflowMenuWrapperHeight.value / 2)})`,\n opacity: showOverflowMenu.value ? 1 : 0,\n pointerEvents: showOverflowMenu.value ? undefined : 'none',\n zIndex: showOverflowMenu.value ? 1 : undefined,\n }),\n },\n }))\n const watchStopHandles: WatchStopHandle[] = []\n let wrapperMutationObserver: MutationObserver | undefined\n useRender(() =>\n h(\n 'div',\n {\n ref: containerRef,\n ...containerProps.value,\n },\n [\n h(\n 'div',\n {\n ref: wrapperRef,\n ...wrapperProps.value,\n },\n Array.from(buttons.value).map((btnVNode, btnIndex) =>\n h(\n 'div',\n {\n key: `button-wrapper-${btnIndex}`,\n dataBtnIndex: btnIndex,\n class: {\n [`me-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`ms-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n style: stripUndefinedValuesFromObject({\n opacity: overflowedButtonIndexes.value.includes(btnIndex) ? 0 : 1,\n pointerEvents: overflowedButtonIndexes.value.includes(btnIndex)\n ? 'none'\n : undefined,\n }),\n },\n btnVNode\n )\n )\n ),\n h(\n 'div',\n { ref: overflowMenuWrapperRef, ...overflowMenuWrapperProps.value },\n h(\n ControlMenu,\n { ref: overflowMenuButtonRef, ...normalizedOverflowMenuButtonOptions.value },\n () => [\n slots['prepend-menu'] ? slots['prepend-menu']() : null,\n ...Array.from(overflowedButtonIndexes.value).map((btnIndex) =>\n h(VListItem, { key: `overflowed-button-${btnIndex}` }, () =>\n h(\n 'div',\n { class: ['w-100', 'd-flex', 'justify-center'] },\n cloneForMenu(buttons.value[btnIndex])\n )\n )\n ),\n slots['append-menu'] ? slots['append-menu']() : null,\n ]\n )\n ),\n ]\n )\n )\n onMounted(() => {\n watchStopHandles.push(\n watch(containerWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(justification, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(intersecting, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(wrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuWrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuPosition, computeOverflowedButtonIndexes, { immediate: true })\n )\n if (SUPPORTS_MUTATION_OBSERVER) {\n wrapperMutationObserver = new MutationObserver(wrapperMutationObserverHandler)\n }\n watchStopHandles.push(watch(wrapperRef, wrapperObserver, { immediate: true }))\n computeOverflowedButtonIndexes.immediate()\n })\n onUnmounted(() => {\n // close the menu if it is open\n closeOverflowMenu()\n // clear all of the watch stop handles\n watchStopHandles.forEach((stopHandle) => stopHandle())\n watchStopHandles.splice(0, watchStopHandles.length)\n // disconnect & cleanup the mutation observer\n if (wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n wrapperMutationObserver = undefined\n }\n })\n return forwardRefs(\n {\n overflowMenuPosition,\n lastVisibleButtonEndOffset,\n overflowed: showOverflowMenu,\n reflow: computeOverflowedButtonIndexes,\n close: closeOverflowMenu,\n },\n containerRef,\n wrapperRef,\n overflowMenuWrapperRef\n )\n },\n})\n\n/**\n * Component instance type for ControlButtonBar.\n *\n * @public\n */\nexport type ControlButtonBar = InstanceType<typeof ControlButtonBar>\n"],"names":["SUPPORTS_MUTATION_OBSERVER","IN_BROWSER","cloneForMenu","vnode","updatedProps","stripUndefinedValuesFromObject","mergeProps","cloneVNode","ControlButtonBar","defineComponent","makeControlButtonBarProps","controlButtonBarEmits","props","attrs","slots","t","useI18n","isRtl","useLocale","buttons","justification","gap","overflowMenuButtonOptions","className","style","toRefs","normalizedOverflowMenuButtonOptions","computed","deepmerge","containerRef","ref","wrapperRef","overflowMenuWrapperRef","overflowMenuButtonRef","containerWidth","intersecting","xs","useScopedDisplay","wrapperWidth","overflowMenuWrapperWidth","overflowMenuWrapperHeight","containerProps","overflowedButtonIndexes","lastVisibleButtonEndOffset","showOverflowMenu","overflowMenuPosition","computeOverflowedButtonIndexes","debounce","wrapperEl","buttonWrappers","currentWrapperWidth","availableWidthWithOverflowMenu","buttonsOverflowingWrapperIfMenuVisisble","wrapper","index","left","right","firstHiddenButton","a","b","wrapperMutationObserverHandler","entries","e","wrapperObserver","is","was","wrapperMutationObserver","closeOverflowMenu","wrapperProps","overflowMenuWrapperOffsets","convertToUnit","overflowMenuWrapperProps","asAbsInt","watchStopHandles","useRender","h","btnVNode","btnIndex","ControlMenu","VListItem","onMounted","watch","onUnmounted","stopHandle","forwardRefs"],"mappings":"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"}
1
+ {"version":3,"file":"index-BCQmj6cf.mjs","sources":["../src/private/control-button-bar/index.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Control Button Bar Component\n|--------------------------------------------------------------------------\n|\n| An intelligent, responsive toolbar component that automatically handles\n| button overflow with dropdown menus. Uses container-aware responsive\n| breakpoints to adapt to any layout constraint, providing seamless UX\n| across devices and contexts.\n|\n*/\n\nimport { useI18n } from '../ioc'\nimport { useLocale } from 'vuetify'\nimport { deepmerge } from 'deepmerge-ts'\nimport { ControlMenu } from '../control-menu'\nimport { useScopedDisplay } from '../ux/display'\nimport { VListItem } from 'vuetify/components/VList'\nimport { debounce } from '@nhtio/vuetifiable/util/helpers'\nimport { IN_BROWSER } from '@nhtio/vuetifiable/util/globals'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { forwardRefs } from '@nhtio/vuetifiable/composables/forwardRefs'\nimport { makeControlButtonBarProps, controlButtonBarEmits } from './props'\nimport { stripUndefinedValuesFromObject, asAbsInt } from '../common/utils'\nimport {\n computed,\n ref,\n h,\n defineComponent,\n onMounted,\n onUnmounted,\n toRefs,\n mergeProps,\n cloneVNode,\n watch,\n} from 'vue'\nimport type { WatchStopHandle, SlotsType, VNode } from 'vue'\nimport type { ControlButtonBarOverflowMenuButtonProps } from './props'\n\nexport type { ControlButtonBarProps } from './props'\n\nconst SUPPORTS_MUTATION_OBSERVER = IN_BROWSER && 'MutationObserver' in window\n\nconst cloneForMenu = (vnode: VNode) => {\n const updatedProps = stripUndefinedValuesFromObject({\n ...vnode.props,\n 'id': undefined,\n 'aria-controls': undefined,\n ...mergeProps(\n {\n class: vnode.props?.class ? vnode.props.class : undefined,\n },\n {\n class: ['mx-0'],\n }\n ),\n // we are adding a custom prop to identify that this button is rendered in the menu\n // if the component supports it, it can use this prop to adjust its styling/behavior\n 'inOverflowMenu': true,\n })\n return cloneVNode(vnode, updatedProps)\n}\n\n/**\n * Slot types for the ControlButtonBar component.\n *\n * @public\n */\nexport type ControlButtonBarSlots = {\n /** Content to prepend to the overflow menu */\n 'prepend-menu'?: () => any\n /** Content to append to the overflow menu */\n 'append-menu'?: () => any\n}\n\n/**\n * A responsive toolbar component that automatically handles button overflow with dropdown menus.\n *\n * Features:\n * - Container-aware responsive behavior using useScopedDisplay\n * - Automatic overflow detection with visual jumping reduction\n * - RTL support with intelligent menu positioning\n * - MutationObserver for dynamic content changes\n * - Customizable gap spacing and justification\n * - Performance-optimized with debounced calculations\n *\n * @example\n * ```vue\n * <ControlButtonBar\n * :buttons=\"[\n * h(VBtn, { text: 'Columns' }),\n * h(VBtn, { text: 'Filters' }),\n * h(VBtn, { text: 'Sorting' })\n * ]\"\n * justification=\"center\"\n * :gap=\"2\"\n * />\n * ```\n *\n * @public\n */\nexport const ControlButtonBar = defineComponent({\n name: 'ControlButtonBar',\n inheritAttrs: false,\n props: makeControlButtonBarProps(),\n emits: controlButtonBarEmits,\n slots: Object as SlotsType<ControlButtonBarSlots>,\n setup(props, { attrs, slots }) {\n const t = useI18n()\n const { isRtl } = useLocale()\n const {\n buttons,\n justification,\n gap,\n overflowMenuButtonOptions,\n class: className,\n style,\n } = toRefs(props)\n const normalizedOverflowMenuButtonOptions = computed<ControlButtonBarOverflowMenuButtonProps>(\n () =>\n deepmerge(\n {\n cta: t('general.more'),\n },\n stripUndefinedValuesFromObject({\n cta: overflowMenuButtonOptions.value.cta,\n }),\n {\n activator: stripUndefinedValuesFromObject({\n color: overflowMenuButtonOptions.value.color,\n density: overflowMenuButtonOptions.value.density,\n size: overflowMenuButtonOptions.value.size,\n }),\n }\n )\n )\n const containerRef = ref<HTMLDivElement | null>(null)\n const wrapperRef = ref<HTMLDivElement | null>(null)\n const overflowMenuWrapperRef = ref<HTMLElement | null>(null)\n const overflowMenuButtonRef = ref<ControlMenu | null>(null)\n const { width: containerWidth, intersecting, xs } = useScopedDisplay(containerRef)\n const { width: wrapperWidth } = useScopedDisplay(wrapperRef)\n const { width: overflowMenuWrapperWidth, height: overflowMenuWrapperHeight } =\n useScopedDisplay(overflowMenuWrapperRef)\n const containerProps = computed(() =>\n mergeProps(\n {\n class: attrs.class || {},\n style: attrs.style || {},\n },\n {\n class: className.value,\n style: style.value,\n },\n {\n class: ['w-100', 'position-relative', 'r-control-button-bar'],\n role: 'toolbar',\n style: {\n transition: 'opacity 0.2s ease, transform 0.2s ease',\n },\n }\n )\n )\n const overflowedButtonIndexes = ref<number[]>([])\n const lastVisibleButtonEndOffset = ref<number | null>(null)\n const showOverflowMenu = computed(\n () => buttons.value.length > 1 && overflowedButtonIndexes.value.length > 0\n )\n const overflowMenuPosition = computed<'right' | 'left'>(() =>\n isRtl.value\n ? justification.value === 'start'\n ? 'left'\n : 'right'\n : justification.value === 'start'\n ? 'right'\n : 'left'\n )\n const computeOverflowedButtonIndexes = debounce(() => {\n // if there is no container, wrapper, or overflow menu wrapper, we cannot compute overflow\n if (!containerRef.value || !wrapperRef.value || !overflowMenuWrapperRef.value) return\n // if the container is not intersecting (visible), do not compute overflow\n if (!intersecting.value) return\n // if there are less than 2 buttons, then there cannot be any overflow\n if (buttons.value.length < 2) {\n overflowedButtonIndexes.value = []\n return\n }\n // we have 2 values to compare against\n // if none of the buttons extend beyond the wrapper's total width, then there is no overflow\n // otherwise anything that is beyond the wrapper's width minus the overflow button's width\n // is considered overflowed and will be set to 0 opacity + pointer-events: none and then\n // duplicated into the overflow menu\n const wrapperEl = wrapperRef.value\n const buttonWrappers = Array.from(wrapperEl.children) as HTMLDivElement[]\n const currentWrapperWidth = containerWidth.value\n const availableWidthWithOverflowMenu = containerWidth.value - overflowMenuWrapperWidth.value\n\n const buttonWrapperIndexAndOffsets = buttonWrappers.map((wrapper, index) => ({\n index,\n left: wrapper.offsetLeft,\n right: wrapper.offsetLeft + wrapper.offsetWidth,\n }))\n\n // Check if any buttons overflow the wrapper when the menu is visible\n const buttonsOverflowingWrapperIfMenuVisisble = buttonWrapperIndexAndOffsets.filter(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value\n ? left < overflowMenuWrapperWidth.value\n : right > availableWidthWithOverflowMenu\n )\n\n // if no buttons overflow the wrapper when the menu is visible, exit early\n if (buttonsOverflowingWrapperIfMenuVisisble.length === 0) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // check if any of the buttons overflow the wrapper if the menu is not visible\n const someOutsideContainer = buttonsOverflowingWrapperIfMenuVisisble.some(\n ({ left, right }) =>\n 'left' === overflowMenuPosition.value ? left < 0 : right > currentWrapperWidth\n )\n // if none of the buttons overflow the wrapper if the menu is not visible, exit early\n if (!someOutsideContainer) {\n overflowedButtonIndexes.value = []\n lastVisibleButtonEndOffset.value = null\n return\n }\n\n // otherwise, the buttons that overflow the wrapper when the menu is visible are the ones that are overflowed\n overflowedButtonIndexes.value = buttonsOverflowingWrapperIfMenuVisisble.map(\n ({ index }) => index\n )\n\n // in order to make the overflow menu button flow more naturally,\n // we're going to reposition it based on the position of the first hidden button\n const computedHiddenButtons = buttonsOverflowingWrapperIfMenuVisisble.sort((a, b) => {\n if ('left' === overflowMenuPosition.value) {\n return b.right - a.right\n } else {\n return a.left - b.left\n }\n })\n\n const firstHiddenButton = computedHiddenButtons[0]\n if (!firstHiddenButton) {\n lastVisibleButtonEndOffset.value = null\n return\n }\n lastVisibleButtonEndOffset.value =\n 'left' === overflowMenuPosition.value ? firstHiddenButton.right : firstHiddenButton.left\n }, 50)\n const wrapperMutationObserverHandler = (entries: MutationRecord[]) => {\n if (entries.some((e) => e.type === 'childList')) {\n queueMicrotask(() => computeOverflowedButtonIndexes())\n }\n }\n const wrapperObserver = (is: HTMLDivElement | null, was: HTMLDivElement | null | undefined) => {\n if (was && wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n }\n if (is && wrapperMutationObserver) {\n wrapperMutationObserver.observe(is, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n })\n }\n }\n const closeOverflowMenu = () => {\n if (overflowMenuButtonRef.value) {\n overflowMenuButtonRef.value.close()\n }\n }\n const wrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'overflow-x-hidden',\n 'w-100',\n 'r-control-button-bar__wrapper',\n {\n 'justify-start': justification.value === 'start',\n 'justify-end': justification.value === 'end',\n },\n ],\n }))\n const overflowMenuWrapperOffsets = computed(() => {\n if (lastVisibleButtonEndOffset.value === null || xs.value) {\n return stripUndefinedValuesFromObject({\n left: 'left' === overflowMenuPosition.value ? 0 : undefined,\n right: 'right' === overflowMenuPosition.value ? 0 : undefined,\n })\n } else {\n return stripUndefinedValuesFromObject({\n left:\n 'left' === overflowMenuPosition.value\n ? // add 8px to account for the 8px gap on the left side of the button\n convertToUnit(\n lastVisibleButtonEndOffset.value - overflowMenuWrapperWidth.value + 8,\n 'px'\n )\n : // remove 8px to account for the 8px gap on the right side of the button\n convertToUnit(lastVisibleButtonEndOffset.value - 8, 'px'),\n })\n }\n })\n const overflowMenuWrapperProps = computed(() => ({\n class: [\n 'd-flex',\n 'align-center',\n 'r-control-button-bar__overflow-menu',\n 'position-absolute',\n {\n [`ps-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`pe-${gap.value}`]:\n lastVisibleButtonEndOffset.value === null &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n ],\n style: {\n ...overflowMenuWrapperOffsets.value,\n ...stripUndefinedValuesFromObject({\n top: `calc(50% - ${convertToUnit(overflowMenuWrapperHeight.value / 2)})`,\n opacity: showOverflowMenu.value ? 1 : 0,\n pointerEvents: showOverflowMenu.value ? undefined : 'none',\n zIndex: showOverflowMenu.value ? 1 : undefined,\n }),\n },\n }))\n const watchStopHandles: WatchStopHandle[] = []\n let wrapperMutationObserver: MutationObserver | undefined\n useRender(() =>\n h(\n 'div',\n {\n ref: containerRef,\n ...containerProps.value,\n },\n [\n h(\n 'div',\n {\n ref: wrapperRef,\n ...wrapperProps.value,\n },\n Array.from(buttons.value).map((btnVNode, btnIndex) =>\n h(\n 'div',\n {\n key: `button-wrapper-${btnIndex}`,\n dataBtnIndex: btnIndex,\n class: {\n [`me-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' !== justification.value,\n [`ms-${gap.value}`]:\n btnIndex < buttons.value.length - 1 &&\n asAbsInt(gap.value) > 0 &&\n 'end' === justification.value,\n },\n style: stripUndefinedValuesFromObject({\n opacity: overflowedButtonIndexes.value.includes(btnIndex) ? 0 : 1,\n pointerEvents: overflowedButtonIndexes.value.includes(btnIndex)\n ? 'none'\n : undefined,\n }),\n },\n btnVNode\n )\n )\n ),\n h(\n 'div',\n { ref: overflowMenuWrapperRef, ...overflowMenuWrapperProps.value },\n h(\n ControlMenu,\n { ref: overflowMenuButtonRef, ...normalizedOverflowMenuButtonOptions.value },\n () => [\n slots['prepend-menu'] ? slots['prepend-menu']() : null,\n ...Array.from(overflowedButtonIndexes.value).map((btnIndex) =>\n h(VListItem, { key: `overflowed-button-${btnIndex}` }, () =>\n h(\n 'div',\n { class: ['w-100', 'd-flex', 'justify-center'] },\n cloneForMenu(buttons.value[btnIndex])\n )\n )\n ),\n slots['append-menu'] ? slots['append-menu']() : null,\n ]\n )\n ),\n ]\n )\n )\n onMounted(() => {\n watchStopHandles.push(\n watch(containerWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(justification, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(intersecting, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(wrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuWrapperWidth, computeOverflowedButtonIndexes, { immediate: true })\n )\n watchStopHandles.push(\n watch(overflowMenuPosition, computeOverflowedButtonIndexes, { immediate: true })\n )\n if (SUPPORTS_MUTATION_OBSERVER) {\n wrapperMutationObserver = new MutationObserver(wrapperMutationObserverHandler)\n }\n watchStopHandles.push(watch(wrapperRef, wrapperObserver, { immediate: true }))\n computeOverflowedButtonIndexes.immediate()\n })\n onUnmounted(() => {\n // close the menu if it is open\n closeOverflowMenu()\n // clear all of the watch stop handles\n watchStopHandles.forEach((stopHandle) => stopHandle())\n watchStopHandles.splice(0, watchStopHandles.length)\n // disconnect & cleanup the mutation observer\n if (wrapperMutationObserver) {\n wrapperMutationObserver.disconnect()\n wrapperMutationObserver = undefined\n }\n })\n return forwardRefs(\n {\n overflowMenuPosition,\n lastVisibleButtonEndOffset,\n overflowed: showOverflowMenu,\n reflow: computeOverflowedButtonIndexes,\n close: closeOverflowMenu,\n },\n containerRef,\n wrapperRef,\n overflowMenuWrapperRef\n )\n },\n})\n\n/**\n * Component instance type for ControlButtonBar.\n *\n * @public\n */\nexport type ControlButtonBar = InstanceType<typeof ControlButtonBar>\n"],"names":["SUPPORTS_MUTATION_OBSERVER","IN_BROWSER","cloneForMenu","vnode","updatedProps","stripUndefinedValuesFromObject","mergeProps","cloneVNode","ControlButtonBar","defineComponent","makeControlButtonBarProps","controlButtonBarEmits","props","attrs","slots","t","useI18n","isRtl","useLocale","buttons","justification","gap","overflowMenuButtonOptions","className","style","toRefs","normalizedOverflowMenuButtonOptions","computed","deepmerge","containerRef","ref","wrapperRef","overflowMenuWrapperRef","overflowMenuButtonRef","containerWidth","intersecting","xs","useScopedDisplay","wrapperWidth","overflowMenuWrapperWidth","overflowMenuWrapperHeight","containerProps","overflowedButtonIndexes","lastVisibleButtonEndOffset","showOverflowMenu","overflowMenuPosition","computeOverflowedButtonIndexes","debounce","wrapperEl","buttonWrappers","currentWrapperWidth","availableWidthWithOverflowMenu","buttonsOverflowingWrapperIfMenuVisisble","wrapper","index","left","right","firstHiddenButton","a","b","wrapperMutationObserverHandler","entries","e","wrapperObserver","is","was","wrapperMutationObserver","closeOverflowMenu","wrapperProps","overflowMenuWrapperOffsets","convertToUnit","overflowMenuWrapperProps","asAbsInt","watchStopHandles","useRender","h","btnVNode","btnIndex","ControlMenu","VListItem","onMounted","watch","onUnmounted","stopHandle","forwardRefs"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { p as I, h as P, x as D, w as A, s as M } from "./utils-DqXWb-4f.mjs";
2
- import { m as N, a as U, I as C, V as E } from "./elevation-CMzO50xm.mjs";
1
+ import { p as I, h as P, w as D, z as A, s as M } from "./utils-D3ZGaTyv.mjs";
2
+ import { m as N, a as U, I as C, V as E } from "./elevation-YNOj0hSa.mjs";
3
3
  import { defineComponent as R, toRefs as T, computed as d, h as u } from "vue";
4
- import { a as k, V as s, e as q } from "./display-DvzWa1QO.mjs";
4
+ import { a as k, V as s, e as q } from "./display-fXo4JeIS.mjs";
5
5
  const m = I(
6
6
  {
7
7
  cta: {
@@ -96,19 +96,19 @@ const m = I(
96
96
  size: i,
97
97
  height: b,
98
98
  density: S,
99
- elevation: x,
99
+ elevation: j,
100
100
  inOverflowMenu: h
101
- } = T(O), j = d(() => {
101
+ } = T(O), w = d(() => {
102
102
  if (b.value)
103
103
  return {
104
104
  height: A(b.value)
105
105
  };
106
- }), w = d(() => ({
106
+ }), x = d(() => ({
107
107
  divided: !0,
108
108
  color: V.value,
109
109
  density: S.value,
110
- style: j.value,
111
- elevation: x.value,
110
+ style: w.value,
111
+ elevation: j.value,
112
112
  ...M({
113
113
  class: h.value ? ["w-100"] : void 0
114
114
  })
@@ -219,7 +219,7 @@ const m = I(
219
219
  )
220
220
  ), e;
221
221
  });
222
- return () => u(q, w.value, () => G.value);
222
+ return () => u(q, x.value, () => G.value);
223
223
  }
224
224
  });
225
225
  export {
@@ -228,4 +228,4 @@ export {
228
228
  X as d,
229
229
  m
230
230
  };
231
- //# sourceMappingURL=index-bXmNb9jX.mjs.map
231
+ //# sourceMappingURL=index-BgevbZTt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-bXmNb9jX.mjs","sources":["../src/private/control-button/props.ts","../src/private/control-button/index.ts"],"sourcesContent":["import { pick } from '@nhtio/vuetifiable/util/helpers'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { makeDensityProps } from '@nhtio/vuetifiable/composables/density'\nimport { makeElevationProps } from '@nhtio/vuetifiable/composables/elevation'\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { PropType, ExtractPublicPropTypes } from 'vue'\nimport type { JSXComponent } from '@nhtio/vuetifiable/util/defineComponent'\nimport type { makeVBtnGroupProps } from '@nhtio/vuetifiable/components/VBtnGroup/VBtnGroup'\n\nexport interface ControlButtonState {\n disabled?: boolean | undefined\n loading?: boolean | undefined\n}\n\nexport interface ControlButtonBadgeProps {\n content?: string | undefined | null | JSXComponent\n color?: string | undefined\n}\n\nexport const makeControlButtonProps = propsFactory(\n {\n cta: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n color: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n prependIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n appendIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n dividePrependIcon: {\n type: Boolean,\n default: false,\n },\n divideAppendIcon: {\n type: Boolean,\n default: false,\n },\n state: {\n type: Object as PropType<ControlButtonState>,\n default: () => ({}),\n },\n badge: {\n type: Object as PropType<ControlButtonBadgeProps>,\n default: () => ({}),\n },\n type: {\n type: String,\n default: 'button',\n },\n to: {\n type: Object as PropType<RouteLocationRaw | null | undefined>,\n default: null,\n },\n target: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n size: {\n type: String as PropType<'x-small' | 'small' | 'medium' | 'large' | 'x-large'>,\n default: 'x-small',\n },\n height: {\n type: [String, Number] as PropType<string | number | null>,\n default: '24',\n },\n ...makeDensityProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n inOverflowMenu: {\n type: Boolean,\n default: false,\n },\n },\n 'ControlButton'\n)\n\nexport const defaultControlButtonProps = {\n ...getDefaultsForPropFactory(makeControlButtonProps),\n color: 'surface-light',\n}\n\nexport type ControlButtonProps = ExtractPublicPropTypes<ReturnType<typeof makeControlButtonProps>>\n\nexport type VBtnGroupProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnGroupProps>>\n\nexport const makeControlButtonOverrideProps = propsFactory(\n {\n ...pick(makeControlButtonProps(), ['cta', 'color', 'prependIcon', 'appendIcon', 'to']),\n },\n 'ControlButtonOverrideProps'\n)\n\nexport const defaultControlButtonOverrideProps = getDefaultsForPropFactory(\n makeControlButtonOverrideProps\n)\nexport type ControlButtonOverrideProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonOverrideProps>\n>\n","import { VBtn } from 'vuetify/components/VBtn'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VChip } from 'vuetify/components/VChip'\nimport { makeControlButtonProps } from './props'\nimport { VBtnGroup } from 'vuetify/components/VBtnGroup'\nimport { defineComponent, h, computed, toRefs } from 'vue'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport type { StyleValue } from 'vue'\nimport type { VBtnGroupProps } from './props'\n\nexport const ControlButton = defineComponent({\n name: 'ControlButton',\n props: makeControlButtonProps(),\n emits: ['click'],\n setup(props, { emit, slots }) {\n const {\n cta,\n color,\n prependIcon,\n dividePrependIcon,\n appendIcon,\n divideAppendIcon,\n state,\n badge,\n type,\n to,\n target,\n size,\n height,\n density,\n elevation,\n inOverflowMenu,\n } = toRefs(props)\n const vBtnGroupStyleBindings = computed<StyleValue | undefined>(() => {\n if (height.value) {\n return {\n height: convertToUnit(height.value),\n }\n }\n return undefined\n })\n const vBtnGroupBindings = computed<VBtnGroupProps>(() => ({\n divided: true,\n color: color.value,\n density: density.value,\n style: vBtnGroupStyleBindings.value,\n elevation: elevation.value,\n ...stripUndefinedValuesFromObject({\n class: inOverflowMenu.value ? ['w-100'] : undefined,\n }),\n }))\n const vBtnChildren = computed(() => {\n const ret: any[] = []\n if (prependIcon.value && !dividePrependIcon.value) {\n ret.push(\n h(VIcon, {\n icon: prependIcon.value,\n class: [\n {\n 'me-2': cta.value || slots.cta,\n },\n ],\n })\n )\n } else if (slots.prepend && !dividePrependIcon.value) {\n ret.push(slots.prepend(state.value))\n }\n if (slots.cta) {\n ret.push(slots.cta(state.value))\n } else if (cta.value) {\n ret.push(h('span', {}, cta.value))\n }\n if ('undefined' !== typeof badge.value.content && null !== badge.value.content) {\n ret.push(\n h(\n VChip,\n {\n size: size.value,\n color: badge.value.color,\n class: ['ms-2'],\n variant: 'elevated' as const,\n density: 'comfortable' as const,\n },\n () => badge.value.content\n )\n )\n }\n if (appendIcon.value && !divideAppendIcon.value) {\n ret.push(\n h(VIcon, {\n icon: appendIcon.value,\n class: ['ms-2'],\n })\n )\n } else if (slots.append && !divideAppendIcon.value) {\n ret.push(slots.append(state.value))\n }\n return ret\n })\n const isNavigable = computed(() => 'object' === typeof to.value && to.value !== null)\n const onOriginalClick = (e?: Event) => {\n if (e && !['submit', 'reset'].includes(type.value) && !isNavigable.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n if (\n !state.value.disabled &&\n !state.value.loading &&\n !['submit', 'reset'].includes(type.value) &&\n !isNavigable.value\n ) {\n emit('click', e)\n }\n }\n const vBtnGroupChildren = computed(() => {\n const ret = []\n if (prependIcon.value && dividePrependIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: prependIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.prepend && dividePrependIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.prepend!(state.value)\n )\n )\n }\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n class: [\n 'cta-main-btn',\n {\n 'flex-grow-1': inOverflowMenu.value,\n },\n ],\n },\n () => vBtnChildren.value\n )\n )\n if (appendIcon.value && divideAppendIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: appendIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.append && divideAppendIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.append!(state.value)\n )\n )\n }\n return ret\n })\n return () => h(VBtnGroup, vBtnGroupBindings.value, () => vBtnGroupChildren.value)\n },\n})\n\nexport type ControlButton = InstanceType<typeof ControlButton>\n"],"names":["makeControlButtonProps","propsFactory","IconValue","makeDensityProps","makeElevationProps","defaultControlButtonProps","getDefaultsForPropFactory","makeControlButtonOverrideProps","pick","defaultControlButtonOverrideProps","ControlButton","defineComponent","props","emit","slots","cta","color","prependIcon","dividePrependIcon","appendIcon","divideAppendIcon","state","badge","type","to","target","size","height","density","elevation","inOverflowMenu","toRefs","vBtnGroupStyleBindings","computed","convertToUnit","vBtnGroupBindings","stripUndefinedValuesFromObject","vBtnChildren","ret","h","VIcon","VChip","isNavigable","onOriginalClick","vBtnGroupChildren","VBtn","VBtnGroup"],"mappings":";;;;AAqBO,MAAMA,IAAyBC;AAAA,EACpC;AAAA,IACE,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,aAAa;AAAA,MACX,MAAMC;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,YAAY;AAAA,MACV,MAAMA;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA,IAAC;AAAA,IAEnB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA,IAAC;AAAA,IAEnB,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,IAAI;AAAA,MACF,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,IAEX,QAAQ;AAAA,MACN,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,IAEX,GAAGC,EAAA;AAAA,IACH,GAAGC,EAAmB;AAAA,MACpB,WAAW;AAAA,IAAA,CACZ;AAAA,IACD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF;AACF,GAEaC,IAA4B;AAAA,EACvC,GAAGC,EAA0BN,CAAsB;AAAA,EACnD,OAAO;AACT,GAMaO,IAAiCN;AAAA,EAC5C;AAAA,IACE,GAAGO,EAAKR,EAAA,GAA0B,CAAC,OAAO,SAAS,eAAe,cAAc,IAAI,CAAC;AAAA,EAAA;AAAA,EAEvF;AACF,GAEaS,IAAoCH;AAAA,EAC/CC;AACF,GC9FaG,IAAgBC,EAAgB;AAAA,EAC3C,MAAM;AAAA,EACN,OAAOX,EAAA;AAAA,EACP,OAAO,CAAC,OAAO;AAAA,EACf,MAAMY,GAAO,EAAE,MAAAC,GAAM,OAAAC,KAAS;AAC5B,UAAM;AAAA,MACJ,KAAAC;AAAA,MACA,OAAAC;AAAA,MACA,aAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,MAAAC;AAAA,MACA,IAAAC;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,MACA,QAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA,IACEC,EAAOnB,CAAK,GACVoB,IAAyBC,EAAiC,MAAM;AACpE,UAAIN,EAAO;AACT,eAAO;AAAA,UACL,QAAQO,EAAcP,EAAO,KAAK;AAAA,QAAA;AAAA,IAIxC,CAAC,GACKQ,IAAoBF,EAAyB,OAAO;AAAA,MACxD,SAAS;AAAA,MACT,OAAOjB,EAAM;AAAA,MACb,SAASY,EAAQ;AAAA,MACjB,OAAOI,EAAuB;AAAA,MAC9B,WAAWH,EAAU;AAAA,MACrB,GAAGO,EAA+B;AAAA,QAChC,OAAON,EAAe,QAAQ,CAAC,OAAO,IAAI;AAAA,MAAA,CAC3C;AAAA,IAAA,EACD,GACIO,IAAeJ,EAAS,MAAM;AAClC,YAAMK,IAAa,CAAA;AACnB,aAAIrB,EAAY,SAAS,CAACC,EAAkB,QAC1CoB,EAAI;AAAA,QACFC,EAAEC,GAAO;AAAA,UACP,MAAMvB,EAAY;AAAA,UAClB,OAAO;AAAA,YACL;AAAA,cACE,QAAQF,EAAI,SAASD,EAAM;AAAA,YAAA;AAAA,UAC7B;AAAA,QACF,CACD;AAAA,MAAA,IAEMA,EAAM,WAAW,CAACI,EAAkB,SAC7CoB,EAAI,KAAKxB,EAAM,QAAQO,EAAM,KAAK,CAAC,GAEjCP,EAAM,MACRwB,EAAI,KAAKxB,EAAM,IAAIO,EAAM,KAAK,CAAC,IACtBN,EAAI,SACbuB,EAAI,KAAKC,EAAE,QAAQ,CAAA,GAAIxB,EAAI,KAAK,CAAC,GAEf,OAAOO,EAAM,MAAM,UAAnC,OAAuDA,EAAM,MAAM,YAArB,QAChDgB,EAAI;AAAA,QACFC;AAAA,UACEE;AAAA,UACA;AAAA,YACE,MAAMf,EAAK;AAAA,YACX,OAAOJ,EAAM,MAAM;AAAA,YACnB,OAAO,CAAC,MAAM;AAAA,YACd,SAAS;AAAA,YACT,SAAS;AAAA,UAAA;AAAA,UAEX,MAAMA,EAAM,MAAM;AAAA,QAAA;AAAA,MACpB,GAGAH,EAAW,SAAS,CAACC,EAAiB,QACxCkB,EAAI;AAAA,QACFC,EAAEC,GAAO;AAAA,UACP,MAAMrB,EAAW;AAAA,UACjB,OAAO,CAAC,MAAM;AAAA,QAAA,CACf;AAAA,MAAA,IAEML,EAAM,UAAU,CAACM,EAAiB,SAC3CkB,EAAI,KAAKxB,EAAM,OAAOO,EAAM,KAAK,CAAC,GAE7BiB;AAAA,IACT,CAAC,GACKI,IAAcT,EAAS,MAAmB,OAAOT,EAAG,SAAvB,YAAgCA,EAAG,UAAU,IAAI,GAC9EmB,IAAkB,CAAC,MAAc;AACrC,MAAI,KAAK,CAAC,CAAC,UAAU,OAAO,EAAE,SAASpB,EAAK,KAAK,KAAK,CAACmB,EAAY,UACjE,EAAE,eAAA,GACF,EAAE,gBAAA,IAGF,CAACrB,EAAM,MAAM,YACb,CAACA,EAAM,MAAM,WACb,CAAC,CAAC,UAAU,OAAO,EAAE,SAASE,EAAK,KAAK,KACxC,CAACmB,EAAY,SAEb7B,EAAK,SAAS,CAAC;AAAA,IAEnB,GACM+B,IAAoBX,EAAS,MAAM;AACvC,YAAMK,IAAM,CAAA;AACZ,aAAIrB,EAAY,SAASC,EAAkB,QACzCoB,EAAI;AAAA,QACFC,EAAEM,GAAM;AAAA,UACN,MAAMnB,EAAK;AAAA,UACX,UAAUL,EAAM,MAAM,YAAY;AAAA,UAClC,UAAUA,EAAM,MAAM,WAAW;AAAA,UACjC,MAAMJ,EAAY;AAAA,UAClB,SAAS0B;AAAA,UACT,OAAO,CAAC,MAAM;AAAA,UACd,MAAMpB,EAAK;AAAA,UACX,IAAIC,EAAG,SAAS;AAAA,UAChB,QAAQA,EAAG,SAASC,EAAO,QAAQA,EAAO,QAAQ;AAAA,QAAA,CACnD;AAAA,MAAA,IAEMX,EAAM,WAAWI,EAAkB,SAC5CoB,EAAI;AAAA,QACFC;AAAA,UACEM;AAAA,UACA;AAAA,YACE,MAAMnB,EAAK;AAAA,YACX,UAAUL,EAAM,MAAM,YAAY;AAAA,YAClC,UAAUA,EAAM,MAAM,WAAW;AAAA,YACjC,SAASsB;AAAA,YACT,MAAMpB,EAAK;AAAA,YACX,IAAIC,EAAG,SAAS;AAAA,YAChB,QAAQA,EAAG,SAASC,EAAO,QAAQA,EAAO,QAAQ;AAAA,UAAA;AAAA,UAEpD,MAAMX,EAAM,QAASO,EAAM,KAAK;AAAA,QAAA;AAAA,MAClC,GAGJiB,EAAI;AAAA,QACFC;AAAA,UACEM;AAAA,UACA;AAAA,YACE,MAAMnB,EAAK;AAAA,YACX,UAAUL,EAAM,MAAM,YAAY;AAAA,YAClC,SAASA,EAAM,MAAM,WAAW;AAAA,YAChC,SAASsB;AAAA,YACT,MAAMpB,EAAK;AAAA,YACX,IAAIC,EAAG,SAAS;AAAA,YAChB,QAAQA,EAAG,SAASC,EAAO,QAAQA,EAAO,QAAQ;AAAA,YAClD,OAAO;AAAA,cACL;AAAA,cACA;AAAA,gBACE,eAAeK,EAAe;AAAA,cAAA;AAAA,YAChC;AAAA,UACF;AAAA,UAEF,MAAMO,EAAa;AAAA,QAAA;AAAA,MACrB,GAEElB,EAAW,SAASC,EAAiB,QACvCkB,EAAI;AAAA,QACFC,EAAEM,GAAM;AAAA,UACN,MAAMnB,EAAK;AAAA,UACX,UAAUL,EAAM,MAAM,YAAY;AAAA,UAClC,UAAUA,EAAM,MAAM,WAAW;AAAA,UACjC,MAAMF,EAAW;AAAA,UACjB,SAASwB;AAAA,UACT,OAAO,CAAC,MAAM;AAAA,UACd,MAAMpB,EAAK;AAAA,UACX,IAAIC,EAAG,SAAS;AAAA,UAChB,QAAQA,EAAG,SAASC,EAAO,QAAQA,EAAO,QAAQ;AAAA,QAAA,CACnD;AAAA,MAAA,IAEMX,EAAM,UAAUM,EAAiB,SAC1CkB,EAAI;AAAA,QACFC;AAAA,UACEM;AAAA,UACA;AAAA,YACE,MAAMnB,EAAK;AAAA,YACX,UAAUL,EAAM,MAAM,YAAY;AAAA,YAClC,SAASA,EAAM,MAAM,WAAW;AAAA,YAChC,SAASsB;AAAA,YACT,MAAMpB,EAAK;AAAA,YACX,IAAIC,EAAG,SAAS;AAAA,YAChB,QAAQA,EAAG,SAASC,EAAO,QAAQA,EAAO,QAAQ;AAAA,UAAA;AAAA,UAEpD,MAAMX,EAAM,OAAQO,EAAM,KAAK;AAAA,QAAA;AAAA,MACjC,GAGGiB;AAAA,IACT,CAAC;AACD,WAAO,MAAMC,EAAEO,GAAWX,EAAkB,OAAO,MAAMS,EAAkB,KAAK;AAAA,EAClF;AACF,CAAC;"}
1
+ {"version":3,"file":"index-BgevbZTt.mjs","sources":["../src/private/control-button/props.ts","../src/private/control-button/index.ts"],"sourcesContent":["import { pick } from '@nhtio/vuetifiable/util/helpers'\nimport { getDefaultsForPropFactory } from '../common/utils'\nimport { IconValue } from '@nhtio/vuetifiable/composables/icons'\nimport { propsFactory } from '@nhtio/vuetifiable/util/propsFactory'\nimport { makeDensityProps } from '@nhtio/vuetifiable/composables/density'\nimport { makeElevationProps } from '@nhtio/vuetifiable/composables/elevation'\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { PropType, ExtractPublicPropTypes } from 'vue'\nimport type { JSXComponent } from '@nhtio/vuetifiable/util/defineComponent'\nimport type { makeVBtnGroupProps } from '@nhtio/vuetifiable/components/VBtnGroup/VBtnGroup'\n\nexport interface ControlButtonState {\n disabled?: boolean | undefined\n loading?: boolean | undefined\n}\n\nexport interface ControlButtonBadgeProps {\n content?: string | undefined | null | JSXComponent\n color?: string | undefined\n}\n\nexport const makeControlButtonProps = propsFactory(\n {\n cta: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n color: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n prependIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n appendIcon: {\n type: IconValue as PropType<IconValue | undefined>,\n default: undefined,\n },\n dividePrependIcon: {\n type: Boolean,\n default: false,\n },\n divideAppendIcon: {\n type: Boolean,\n default: false,\n },\n state: {\n type: Object as PropType<ControlButtonState>,\n default: () => ({}),\n },\n badge: {\n type: Object as PropType<ControlButtonBadgeProps>,\n default: () => ({}),\n },\n type: {\n type: String,\n default: 'button',\n },\n to: {\n type: Object as PropType<RouteLocationRaw | null | undefined>,\n default: null,\n },\n target: {\n type: String as PropType<string | undefined>,\n default: undefined,\n },\n size: {\n type: String as PropType<'x-small' | 'small' | 'medium' | 'large' | 'x-large'>,\n default: 'x-small',\n },\n height: {\n type: [String, Number] as PropType<string | number | null>,\n default: '24',\n },\n ...makeDensityProps(),\n ...makeElevationProps({\n elevation: 2,\n }),\n inOverflowMenu: {\n type: Boolean,\n default: false,\n },\n },\n 'ControlButton'\n)\n\nexport const defaultControlButtonProps = {\n ...getDefaultsForPropFactory(makeControlButtonProps),\n color: 'surface-light',\n}\n\nexport type ControlButtonProps = ExtractPublicPropTypes<ReturnType<typeof makeControlButtonProps>>\n\nexport type VBtnGroupProps = ExtractPublicPropTypes<ReturnType<typeof makeVBtnGroupProps>>\n\nexport const makeControlButtonOverrideProps = propsFactory(\n {\n ...pick(makeControlButtonProps(), ['cta', 'color', 'prependIcon', 'appendIcon', 'to']),\n },\n 'ControlButtonOverrideProps'\n)\n\nexport const defaultControlButtonOverrideProps = getDefaultsForPropFactory(\n makeControlButtonOverrideProps\n)\nexport type ControlButtonOverrideProps = ExtractPublicPropTypes<\n ReturnType<typeof makeControlButtonOverrideProps>\n>\n","import { VBtn } from 'vuetify/components/VBtn'\nimport { VIcon } from 'vuetify/components/VIcon'\nimport { VChip } from 'vuetify/components/VChip'\nimport { makeControlButtonProps } from './props'\nimport { VBtnGroup } from 'vuetify/components/VBtnGroup'\nimport { defineComponent, h, computed, toRefs } from 'vue'\nimport { convertToUnit } from '@nhtio/vuetifiable/util/helpers'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport type { StyleValue } from 'vue'\nimport type { VBtnGroupProps } from './props'\n\nexport const ControlButton = defineComponent({\n name: 'ControlButton',\n props: makeControlButtonProps(),\n emits: ['click'],\n setup(props, { emit, slots }) {\n const {\n cta,\n color,\n prependIcon,\n dividePrependIcon,\n appendIcon,\n divideAppendIcon,\n state,\n badge,\n type,\n to,\n target,\n size,\n height,\n density,\n elevation,\n inOverflowMenu,\n } = toRefs(props)\n const vBtnGroupStyleBindings = computed<StyleValue | undefined>(() => {\n if (height.value) {\n return {\n height: convertToUnit(height.value),\n }\n }\n return undefined\n })\n const vBtnGroupBindings = computed<VBtnGroupProps>(() => ({\n divided: true,\n color: color.value,\n density: density.value,\n style: vBtnGroupStyleBindings.value,\n elevation: elevation.value,\n ...stripUndefinedValuesFromObject({\n class: inOverflowMenu.value ? ['w-100'] : undefined,\n }),\n }))\n const vBtnChildren = computed(() => {\n const ret: any[] = []\n if (prependIcon.value && !dividePrependIcon.value) {\n ret.push(\n h(VIcon, {\n icon: prependIcon.value,\n class: [\n {\n 'me-2': cta.value || slots.cta,\n },\n ],\n })\n )\n } else if (slots.prepend && !dividePrependIcon.value) {\n ret.push(slots.prepend(state.value))\n }\n if (slots.cta) {\n ret.push(slots.cta(state.value))\n } else if (cta.value) {\n ret.push(h('span', {}, cta.value))\n }\n if ('undefined' !== typeof badge.value.content && null !== badge.value.content) {\n ret.push(\n h(\n VChip,\n {\n size: size.value,\n color: badge.value.color,\n class: ['ms-2'],\n variant: 'elevated' as const,\n density: 'comfortable' as const,\n },\n () => badge.value.content\n )\n )\n }\n if (appendIcon.value && !divideAppendIcon.value) {\n ret.push(\n h(VIcon, {\n icon: appendIcon.value,\n class: ['ms-2'],\n })\n )\n } else if (slots.append && !divideAppendIcon.value) {\n ret.push(slots.append(state.value))\n }\n return ret\n })\n const isNavigable = computed(() => 'object' === typeof to.value && to.value !== null)\n const onOriginalClick = (e?: Event) => {\n if (e && !['submit', 'reset'].includes(type.value) && !isNavigable.value) {\n e.preventDefault()\n e.stopPropagation()\n }\n if (\n !state.value.disabled &&\n !state.value.loading &&\n !['submit', 'reset'].includes(type.value) &&\n !isNavigable.value\n ) {\n emit('click', e)\n }\n }\n const vBtnGroupChildren = computed(() => {\n const ret = []\n if (prependIcon.value && dividePrependIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: prependIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.prepend && dividePrependIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.prepend!(state.value)\n )\n )\n }\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n class: [\n 'cta-main-btn',\n {\n 'flex-grow-1': inOverflowMenu.value,\n },\n ],\n },\n () => vBtnChildren.value\n )\n )\n if (appendIcon.value && divideAppendIcon.value) {\n ret.push(\n h(VBtn, {\n size: size.value,\n disabled: state.value.disabled || false,\n readonly: state.value.loading || false,\n icon: appendIcon.value,\n onClick: onOriginalClick,\n class: ['px-3'],\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n })\n )\n } else if (slots.append && divideAppendIcon.value) {\n ret.push(\n h(\n VBtn,\n {\n size: size.value,\n disabled: state.value.disabled || false,\n loading: state.value.loading || false,\n onClick: onOriginalClick,\n type: type.value,\n to: to.value || undefined,\n target: to.value && target.value ? target.value : undefined,\n },\n () => slots.append!(state.value)\n )\n )\n }\n return ret\n })\n return () => h(VBtnGroup, vBtnGroupBindings.value, () => vBtnGroupChildren.value)\n },\n})\n\nexport type ControlButton = InstanceType<typeof ControlButton>\n"],"names":["makeControlButtonProps","propsFactory","IconValue","makeDensityProps","makeElevationProps","defaultControlButtonProps","getDefaultsForPropFactory","makeControlButtonOverrideProps","pick","defaultControlButtonOverrideProps","ControlButton","defineComponent","props","emit","slots","cta","color","prependIcon","dividePrependIcon","appendIcon","divideAppendIcon","state","badge","type","to","target","size","height","density","elevation","inOverflowMenu","toRefs","vBtnGroupStyleBindings","computed","convertToUnit","vBtnGroupBindings","stripUndefinedValuesFromObject","vBtnChildren","ret","h","VIcon","VChip","isNavigable","onOriginalClick","vBtnGroupChildren","VBtn","VBtnGroup"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { k as n } from "./ioc-Du_Tgg-1.mjs";
2
2
  import { defineComponent as a, toRefs as p, h as s } from "vue";
3
- import { s as d } from "./utils-DqXWb-4f.mjs";
3
+ import { s as d } from "./utils-D3ZGaTyv.mjs";
4
4
  const l = a({
5
5
  name: "SvgIcon",
6
6
  props: {
@@ -36,4 +36,4 @@ export {
36
36
  l as S,
37
37
  h as s
38
38
  };
39
- //# sourceMappingURL=index-BaWthszI.mjs.map
39
+ //# sourceMappingURL=index-C-PCfO1S.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BaWthszI.mjs","sources":["../src/private/svg-icon/index.ts"],"sourcesContent":["import { useBrowser } from '../ioc'\nimport { defineComponent, h, toRefs } from 'vue'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport type { PropType, ComponentPublicInstance } from 'vue'\nimport type { IconValue } from '@nhtio/vuetifiable/composables/icons'\n\nexport const SvgIcon = defineComponent({\n name: 'SvgIcon',\n props: {\n d: {\n type: String as PropType<string>,\n required: true,\n },\n width: {\n type: [Number, String] as PropType<number | string | undefined>,\n default: undefined,\n },\n height: {\n type: [Number, String] as PropType<number | string | undefined>,\n default: undefined,\n },\n },\n setup(props) {\n const { d, width, height } = toRefs(props)\n const browser = useBrowser()\n return () =>\n h(\n 'svg',\n stripUndefinedValuesFromObject({\n xmlns: 'http://www.w3.org/2000/svg',\n xmlnsXlink: 'http://www.w3.org/1999/xlink',\n viewBox: '0 0 24 24',\n width:\n (width.value ?? (browser.browsers.safari && browser.platforms.ios))\n ? '100%'\n : undefined,\n height:\n (height.value ?? (browser.browsers.safari && browser.platforms.ios))\n ? '100%'\n : undefined,\n }),\n [h('path', { fill: 'currentColor', d: d.value })]\n )\n },\n})\n\nexport type SvgIcon = typeof SvgIcon & ComponentPublicInstance\n\nexport const svgPathToIconValue = (\n d: string,\n width?: number | string,\n height?: number | string\n): IconValue => h(SvgIcon, { d, width, height }) as IconValue\n"],"names":["SvgIcon","defineComponent","props","d","width","height","toRefs","browser","useBrowser","h","stripUndefinedValuesFromObject","svgPathToIconValue"],"mappings":";;;AAMO,MAAMA,IAAUC,EAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,MACD,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,IAEZ,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,IAEX,QAAQ;AAAA,MACN,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,MAAMC,GAAO;AACX,UAAM,EAAE,GAAAC,GAAG,OAAAC,GAAO,QAAAC,EAAA,IAAWC,EAAOJ,CAAK,GACnCK,IAAUC,EAAA;AAChB,WAAO,MACLC;AAAA,MACE;AAAA,MACAC,EAA+B;AAAA,QAC7B,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OACGN,EAAM,UAAUG,EAAQ,SAAS,UAAUA,EAAQ,UAAU,OAC1D,SACA;AAAA,QACN,QACGF,EAAO,UAAUE,EAAQ,SAAS,UAAUA,EAAQ,UAAU,OAC3D,SACA;AAAA,MAAA,CACP;AAAA,MACD,CAACE,EAAE,QAAQ,EAAE,MAAM,gBAAgB,GAAGN,EAAE,OAAO,CAAC;AAAA,IAAA;AAAA,EAEtD;AACF,CAAC,GAIYQ,IAAqB,CAChCR,GACAC,GACAC,MACcI,EAAET,GAAS,EAAE,GAAAG,GAAG,OAAAC,GAAO,QAAAC,EAAA,CAAQ;"}
1
+ {"version":3,"file":"index-C-PCfO1S.mjs","sources":["../src/private/svg-icon/index.ts"],"sourcesContent":["import { useBrowser } from '../ioc'\nimport { defineComponent, h, toRefs } from 'vue'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport type { PropType, ComponentPublicInstance } from 'vue'\nimport type { IconValue } from '@nhtio/vuetifiable/composables/icons'\n\nexport const SvgIcon = defineComponent({\n name: 'SvgIcon',\n props: {\n d: {\n type: String as PropType<string>,\n required: true,\n },\n width: {\n type: [Number, String] as PropType<number | string | undefined>,\n default: undefined,\n },\n height: {\n type: [Number, String] as PropType<number | string | undefined>,\n default: undefined,\n },\n },\n setup(props) {\n const { d, width, height } = toRefs(props)\n const browser = useBrowser()\n return () =>\n h(\n 'svg',\n stripUndefinedValuesFromObject({\n xmlns: 'http://www.w3.org/2000/svg',\n xmlnsXlink: 'http://www.w3.org/1999/xlink',\n viewBox: '0 0 24 24',\n width:\n (width.value ?? (browser.browsers.safari && browser.platforms.ios))\n ? '100%'\n : undefined,\n height:\n (height.value ?? (browser.browsers.safari && browser.platforms.ios))\n ? '100%'\n : undefined,\n }),\n [h('path', { fill: 'currentColor', d: d.value })]\n )\n },\n})\n\nexport type SvgIcon = typeof SvgIcon & ComponentPublicInstance\n\nexport const svgPathToIconValue = (\n d: string,\n width?: number | string,\n height?: number | string\n): IconValue => h(SvgIcon, { d, width, height }) as IconValue\n"],"names":["SvgIcon","defineComponent","props","d","width","height","toRefs","browser","useBrowser","h","stripUndefinedValuesFromObject","svgPathToIconValue"],"mappings":";;;AAMO,MAAMA,IAAUC,EAAgB;AAAA,EACrC,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,MACD,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,IAEZ,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,IAEX,QAAQ;AAAA,MACN,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,MAAMC,GAAO;AACX,UAAM,EAAE,GAAAC,GAAG,OAAAC,GAAO,QAAAC,EAAA,IAAWC,EAAOJ,CAAK,GACnCK,IAAUC,EAAA;AAChB,WAAO,MACLC;AAAA,MACE;AAAA,MACAC,EAA+B;AAAA,QAC7B,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OACGN,EAAM,UAAUG,EAAQ,SAAS,UAAUA,EAAQ,UAAU,OAC1D,SACA;AAAA,QACN,QACGF,EAAO,UAAUE,EAAQ,SAAS,UAAUA,EAAQ,UAAU,OAC3D,SACA;AAAA,MAAA,CACP;AAAA,MACD,CAACE,EAAE,QAAQ,EAAE,MAAM,gBAAgB,GAAGN,EAAE,OAAO,CAAC;AAAA,IAAA;AAAA,EAEtD;AACF,CAAC,GAIYQ,IAAqB,CAChCR,GACAC,GACAC,MACcI,EAAET,GAAS,EAAE,GAAAG,GAAG,OAAAC,GAAO,QAAAC,EAAA,CAAQ;"}
@@ -1,12 +1,12 @@
1
1
  import { a as h, e as g } from "./ioc-Du_Tgg-1.mjs";
2
- import { S as C } from "./index-BaWthszI.mjs";
3
- import { m as A } from "./mdi-CqMJqgQi.mjs";
4
- import { C as R } from "./index-B2rKM3mR.mjs";
2
+ import { S as C } from "./index-C-PCfO1S.mjs";
3
+ import { j as A } from "./mdi-DC1jeTJJ.mjs";
4
+ import { C as R } from "./index-DWv9iKZs.mjs";
5
5
  import { p as t } from "./http-Crw0XAYj.mjs";
6
- import { m as B } from "./props-BYX22zcE.mjs";
6
+ import { a as B } from "./props-GYFmAF5-.mjs";
7
7
  import { defineComponent as I, toRefs as M, ref as $, computed as l, watch as k, onBeforeUnmount as x, h as s } from "vue";
8
- import { V as y } from "./VListItem-LNaoM8S4.mjs";
9
- const U = I({
8
+ import { V as y } from "./VListItem-BT-NXJyi.mjs";
9
+ const T = I({
10
10
  name: "AutoRefeshController",
11
11
  props: B(),
12
12
  emits: ["triggered"],
@@ -65,6 +65,6 @@ const U = I({
65
65
  }
66
66
  });
67
67
  export {
68
- U as A
68
+ T as A
69
69
  };
70
- //# sourceMappingURL=index-Bi050X9r.mjs.map
70
+ //# sourceMappingURL=index-CSyOYGEi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-Bi050X9r.mjs","sources":["../src/private/autorefresh-controller/index.ts"],"sourcesContent":["import { useI18n } from '../ioc'\nimport { useCron } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { mdiRefreshAuto } from '@mdi/js'\nimport { ControlMenu } from '../control-menu'\nimport { printf as format } from 'fast-printf'\nimport { VListItem } from 'vuetify/components/VList'\nimport { makeControlMenuControlButtonProps } from '../control-menu/props'\nimport { defineComponent, h, toRefs, ref, watch, computed, onBeforeUnmount } from 'vue'\nimport type { ControlMenuProps } from '../control-menu/props'\n\nexport const AutoRefeshController = defineComponent({\n name: 'AutoRefeshController',\n props: makeControlMenuControlButtonProps(),\n emits: ['triggered'],\n setup(props, { emit }) {\n const { color, density, size } = toRefs(props)\n const t = useI18n()\n const cron = useCron()\n const crontab = ref<string | null>(null)\n const options = [\n { crontab: null, label: t('general.off') },\n { crontab: '*/5 * * * * *', label: format('5%s', t('abbreviations.seconds')) },\n { crontab: '*/10 * * * * *', label: format('10%s', t('abbreviations.seconds')) },\n { crontab: '*/30 * * * * *', label: format('30%s', t('abbreviations.seconds')) },\n { crontab: '* * * * *', label: format('1%s', t('abbreviations.minutes')) },\n { crontab: '*/5 * * * *', label: format('5%s', t('abbreviations.minutes')) },\n { crontab: '*/15 * * * *', label: format('15%s', t('abbreviations.minutes')) },\n { crontab: '*/30 * * * *', label: format('30%s', t('abbreviations.minutes')) },\n { crontab: '0 * * * *', label: format('1%s', t('abbreviations.hours')) },\n { crontab: '0 */2 * * *', label: format('2%s', t('abbreviations.hours')) },\n { crontab: '0 */3 * * *', label: format('3%s', t('abbreviations.hours')) },\n { crontab: '0 */4 * * *', label: format('4%s', t('abbreviations.hours')) },\n { crontab: '0 */6 * * *', label: format('6%s', t('abbreviations.hours')) },\n { crontab: '0 */8 * * *', label: format('8%s', t('abbreviations.hours')) },\n { crontab: '0 */12 * * *', label: format('12%s', t('abbreviations.hours')) },\n ]\n const currentOption = computed(() => {\n return options.find((opt) => opt.crontab === crontab.value) || options[0]\n })\n const doTrigger = () => {\n emit('triggered')\n }\n watch(\n crontab,\n (is, was) => {\n if (cron) {\n if (was) {\n cron.$off(was, doTrigger)\n }\n if (is) {\n cron.$on(is, doTrigger)\n }\n }\n },\n { immediate: true }\n )\n onBeforeUnmount(() => {\n if (cron && crontab.value) {\n cron.$off(crontab.value, doTrigger)\n }\n })\n const controlMenuBindings = computed<ControlMenuProps>(() => ({\n icon: h(SvgIcon, { d: mdiRefreshAuto }),\n cta: currentOption.value.label,\n activator: {\n color: color.value,\n density: density.value,\n size: size.value,\n // dividePrependIcon: true,\n },\n }))\n return () =>\n h(ControlMenu, controlMenuBindings.value, () =>\n options.map((o) =>\n h(VListItem, {\n title: o.label,\n onClick: () => {\n crontab.value = o.crontab\n },\n active: o.crontab === crontab.value,\n })\n )\n )\n },\n})\n"],"names":["AutoRefeshController","defineComponent","makeControlMenuControlButtonProps","props","emit","color","density","size","toRefs","t","useI18n","cron","useCron","crontab","ref","options","format","currentOption","computed","opt","doTrigger","watch","is","was","onBeforeUnmount","controlMenuBindings","h","SvgIcon","mdiRefreshAuto","ControlMenu","o","VListItem"],"mappings":"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"}
1
+ {"version":3,"file":"index-CSyOYGEi.mjs","sources":["../src/private/autorefresh-controller/index.ts"],"sourcesContent":["import { useI18n } from '../ioc'\nimport { useCron } from '../ioc'\nimport { SvgIcon } from '../svg-icon'\nimport { mdiRefreshAuto } from '@mdi/js'\nimport { ControlMenu } from '../control-menu'\nimport { printf as format } from 'fast-printf'\nimport { VListItem } from 'vuetify/components/VList'\nimport { makeControlMenuControlButtonProps } from '../control-menu/props'\nimport { defineComponent, h, toRefs, ref, watch, computed, onBeforeUnmount } from 'vue'\nimport type { ControlMenuProps } from '../control-menu/props'\n\nexport const AutoRefeshController = defineComponent({\n name: 'AutoRefeshController',\n props: makeControlMenuControlButtonProps(),\n emits: ['triggered'],\n setup(props, { emit }) {\n const { color, density, size } = toRefs(props)\n const t = useI18n()\n const cron = useCron()\n const crontab = ref<string | null>(null)\n const options = [\n { crontab: null, label: t('general.off') },\n { crontab: '*/5 * * * * *', label: format('5%s', t('abbreviations.seconds')) },\n { crontab: '*/10 * * * * *', label: format('10%s', t('abbreviations.seconds')) },\n { crontab: '*/30 * * * * *', label: format('30%s', t('abbreviations.seconds')) },\n { crontab: '* * * * *', label: format('1%s', t('abbreviations.minutes')) },\n { crontab: '*/5 * * * *', label: format('5%s', t('abbreviations.minutes')) },\n { crontab: '*/15 * * * *', label: format('15%s', t('abbreviations.minutes')) },\n { crontab: '*/30 * * * *', label: format('30%s', t('abbreviations.minutes')) },\n { crontab: '0 * * * *', label: format('1%s', t('abbreviations.hours')) },\n { crontab: '0 */2 * * *', label: format('2%s', t('abbreviations.hours')) },\n { crontab: '0 */3 * * *', label: format('3%s', t('abbreviations.hours')) },\n { crontab: '0 */4 * * *', label: format('4%s', t('abbreviations.hours')) },\n { crontab: '0 */6 * * *', label: format('6%s', t('abbreviations.hours')) },\n { crontab: '0 */8 * * *', label: format('8%s', t('abbreviations.hours')) },\n { crontab: '0 */12 * * *', label: format('12%s', t('abbreviations.hours')) },\n ]\n const currentOption = computed(() => {\n return options.find((opt) => opt.crontab === crontab.value) || options[0]\n })\n const doTrigger = () => {\n emit('triggered')\n }\n watch(\n crontab,\n (is, was) => {\n if (cron) {\n if (was) {\n cron.$off(was, doTrigger)\n }\n if (is) {\n cron.$on(is, doTrigger)\n }\n }\n },\n { immediate: true }\n )\n onBeforeUnmount(() => {\n if (cron && crontab.value) {\n cron.$off(crontab.value, doTrigger)\n }\n })\n const controlMenuBindings = computed<ControlMenuProps>(() => ({\n icon: h(SvgIcon, { d: mdiRefreshAuto }),\n cta: currentOption.value.label,\n activator: {\n color: color.value,\n density: density.value,\n size: size.value,\n // dividePrependIcon: true,\n },\n }))\n return () =>\n h(ControlMenu, controlMenuBindings.value, () =>\n options.map((o) =>\n h(VListItem, {\n title: o.label,\n onClick: () => {\n crontab.value = o.crontab\n },\n active: o.crontab === crontab.value,\n })\n )\n )\n },\n})\n"],"names":["AutoRefeshController","defineComponent","makeControlMenuControlButtonProps","props","emit","color","density","size","toRefs","t","useI18n","cron","useCron","crontab","ref","options","format","currentOption","computed","opt","doTrigger","watch","is","was","onBeforeUnmount","controlMenuBindings","h","SvgIcon","mdiRefreshAuto","ControlMenu","o","VListItem"],"mappings":"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"}