@nhtio/lucid-resourceful-vue-components 0.1.0-master-e14740ea → 1.20251107.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{VBtn-DhfYEt9V.mjs → VBtn-C_58hP1L.mjs} +7 -7
- package/{VBtn-DhfYEt9V.mjs.map → VBtn-C_58hP1L.mjs.map} +1 -1
- package/{VDatePicker-D0OTAyvJ.mjs → VDatePicker-CKxKmuCC.mjs} +165 -165
- package/{VDatePicker-D0OTAyvJ.mjs.map → VDatePicker-CKxKmuCC.mjs.map} +1 -1
- package/{VEmptyState-BFrXSTJ-.mjs → VEmptyState-CjqRy_Xt.mjs} +40 -40
- package/{VEmptyState-BFrXSTJ-.mjs.map → VEmptyState-CjqRy_Xt.mjs.map} +1 -1
- package/{VHover-DLvOmsjv.mjs → VHover-D-sydp3P.mjs} +3 -3
- package/{VHover-DLvOmsjv.mjs.map → VHover-D-sydp3P.mjs.map} +1 -1
- package/{VListItem-LNaoM8S4.mjs → VListItem-DNNkp2dc.mjs} +55 -55
- package/{VListItem-LNaoM8S4.mjs.map → VListItem-DNNkp2dc.mjs.map} +1 -1
- package/{VMenu-9rTbTKtH.mjs → VMenu-oGwvgLV1.mjs} +28 -28
- package/{VMenu-9rTbTKtH.mjs.map → VMenu-oGwvgLV1.mjs.map} +1 -1
- package/{VPicker-BGuRD0KW.mjs → VPicker-EfRj-X6U.mjs} +4 -4
- package/{VPicker-BGuRD0KW.mjs.map → VPicker-EfRj-X6U.mjs.map} +1 -1
- package/{VRadioGroup-Dx_wEqzl.mjs → VRadioGroup-CDf6CGwX.mjs} +21 -21
- package/{VRadioGroup-Dx_wEqzl.mjs.map → VRadioGroup-CDf6CGwX.mjs.map} +1 -1
- package/{VRow-DaLdbIGw.mjs → VRow-Da2fdUPu.mjs} +17 -17
- package/{VRow-DaLdbIGw.mjs.map → VRow-Da2fdUPu.mjs.map} +1 -1
- package/{VSheet-DnIfs-1c.mjs → VSheet-DdygPJlo.mjs} +13 -13
- package/{VSheet-DnIfs-1c.mjs.map → VSheet-DdygPJlo.mjs.map} +1 -1
- package/{actions-8bWGsB-p.mjs → actions-5gxlWcWt.mjs} +14 -14
- package/{actions-8bWGsB-p.mjs.map → actions-5gxlWcWt.mjs.map} +1 -1
- package/{alert-IW1AIWZw.mjs → alert-C6Dxm9jn.mjs} +13 -13
- package/{alert-IW1AIWZw.mjs.map → alert-C6Dxm9jn.mjs.map} +1 -1
- package/{bigint-Jmfa2L4S.mjs → bigint-CqXe_geE.mjs} +6 -6
- package/{bigint-Jmfa2L4S.mjs.map → bigint-CqXe_geE.mjs.map} +1 -1
- package/{boolean-BEY7eBxf.mjs → boolean-BaevWx3k.mjs} +39 -39
- package/{boolean-BEY7eBxf.mjs.map → boolean-BaevWx3k.mjs.map} +1 -1
- package/{clipboard-BoKd7mFG.mjs → clipboard-CGd9vMCV.mjs} +51 -51
- package/{clipboard-BoKd7mFG.mjs.map → clipboard-CGd9vMCV.mjs.map} +1 -1
- package/{colorUtils-DmtKYNgW.mjs → colorUtils-BdpqbLZS.mjs} +3 -3
- package/{colorUtils-DmtKYNgW.mjs.map → colorUtils-BdpqbLZS.mjs.map} +1 -1
- package/{common-BeDAn4wu.mjs → common-DrsZRUoj.mjs} +8881 -8880
- package/common-DrsZRUoj.mjs.map +1 -0
- package/common.css +1 -1
- package/{component-CjPpW_A2.mjs → component-DhEJuSE6.mjs} +2 -2
- package/{component-CjPpW_A2.mjs.map → component-DhEJuSE6.mjs.map} +1 -1
- package/components/autorefresh_controller.mjs +1 -1
- package/components/control_button.mjs +1 -1
- package/components/control_button_bar.mjs +2 -2
- package/components/control_menu.mjs +1 -1
- package/components/custom_field.mjs +1 -1
- package/components/exporter.mjs +1 -1
- package/components/fields/bigint.mjs +1 -1
- package/components/fields/boolean.mjs +1 -1
- package/components/fields/date.mjs +1 -1
- package/components/fields/date_time.mjs +1 -1
- package/components/fields/enum.mjs +1 -1
- package/components/fields/integer.mjs +1 -1
- package/components/fields/number.mjs +1 -1
- package/components/fields/string.mjs +1 -1
- package/components/fields/unsigned_integer.mjs +1 -1
- package/components/fields.mjs +9 -9
- package/components/form_with_validation.mjs +1 -1
- package/components/resourceful_alerter.mjs +1 -1
- package/components/resourceful_index.mjs +1 -1
- package/components/resourceful_record.mjs +2 -2
- package/components/resourceful_record_default_form.mjs +1 -1
- package/components/resourceful_record_form.mjs +1 -1
- package/components/sortable.mjs +1 -1
- package/components/svg_icon.mjs +1 -1
- package/components/timezone_picker.mjs +1 -1
- package/components.mjs +23 -23
- package/composables.mjs +8 -8
- package/{console-CRXioSFP.mjs → console-Dgoi3FwV.mjs} +2 -2
- package/{console-CRXioSFP.mjs.map → console-Dgoi3FwV.mjs.map} +1 -1
- package/{custom-Y1WJVKP9.mjs → custom-CXFDPB_N.mjs} +17 -17
- package/{custom-Y1WJVKP9.mjs.map → custom-CXFDPB_N.mjs.map} +1 -1
- package/{date-BxEeCNWD.mjs → date-BXNqToRH.mjs} +21 -21
- package/{date-BxEeCNWD.mjs.map → date-BXNqToRH.mjs.map} +1 -1
- package/{date_time-6kpv7eDF.mjs → date_time-DuRO8DS4.mjs} +299 -299
- package/{date_time-6kpv7eDF.mjs.map → date_time-DuRO8DS4.mjs.map} +1 -1
- package/{display-CO0pTIEs.mjs → display-BL-pquAI.mjs} +41 -41
- package/{display-CO0pTIEs.mjs.map → display-BL-pquAI.mjs.map} +1 -1
- package/{display-kAyhIPBH.mjs → display-DCHGPqrW.mjs} +7 -7
- package/{display-kAyhIPBH.mjs.map → display-DCHGPqrW.mjs.map} +1 -1
- package/{display-DvzWa1QO.mjs → display-TF26EjNQ.mjs} +40 -40
- package/{display-DvzWa1QO.mjs.map → display-TF26EjNQ.mjs.map} +1 -1
- package/{elevation-CMzO50xm.mjs → elevation-j7bb-vGU.mjs} +81 -81
- package/{elevation-CMzO50xm.mjs.map → elevation-j7bb-vGU.mjs.map} +1 -1
- package/{enum-noYU2Cqh.mjs → enum-CRgh6TfR.mjs} +22 -22
- package/{enum-noYU2Cqh.mjs.map → enum-CRgh6TfR.mjs.map} +1 -1
- package/factories.mjs +1 -1
- package/{field_composer-DpJx0Oz1.mjs → field_composer-CjKCvP50.mjs} +7 -7
- package/{field_composer-DpJx0Oz1.mjs.map → field_composer-CjKCvP50.mjs.map} +1 -1
- package/{form-CDLcDPyU.mjs → form-CFjPqvRf.mjs} +45 -45
- package/{form-CDLcDPyU.mjs.map → form-CFjPqvRf.mjs.map} +1 -1
- package/{guards-B99p3BPj.mjs → guards-Cby4QwzY.mjs} +2 -2
- package/{guards-B99p3BPj.mjs.map → guards-Cby4QwzY.mjs.map} +1 -1
- package/guards.mjs +4 -4
- package/helpers.mjs +6 -6
- package/{index-bXmNb9jX.mjs → index-B8OnsqN1.mjs} +10 -10
- package/{index-bXmNb9jX.mjs.map → index-B8OnsqN1.mjs.map} +1 -1
- package/{index-BaWthszI.mjs → index-C-PCfO1S.mjs} +2 -2
- package/{index-BaWthszI.mjs.map → index-C-PCfO1S.mjs.map} +1 -1
- package/{index-C9UuBVyI.mjs → index-CZg-HOo9.mjs} +12 -12
- package/{index-C9UuBVyI.mjs.map → index-CZg-HOo9.mjs.map} +1 -1
- package/{index-B2rKM3mR.mjs → index-ChVCZ8iE.mjs} +21 -21
- package/{index-B2rKM3mR.mjs.map → index-ChVCZ8iE.mjs.map} +1 -1
- package/{index-CzI9mHIx.mjs → index-Cou5qTHe.mjs} +13 -13
- package/{index-CzI9mHIx.mjs.map → index-Cou5qTHe.mjs.map} +1 -1
- package/{index-Bi050X9r.mjs → index-DM8E6faO.mjs} +8 -8
- package/{index-Bi050X9r.mjs.map → index-DM8E6faO.mjs.map} +1 -1
- package/{index-CIvylvfa.mjs → index-DSLt7-cJ.mjs} +43 -43
- package/{index-CIvylvfa.mjs.map → index-DSLt7-cJ.mjs.map} +1 -1
- package/{index-slHxe6b-.mjs → index-VpcXNOpn.mjs} +2 -2
- package/{index-slHxe6b-.mjs.map → index-VpcXNOpn.mjs.map} +1 -1
- package/{index-BUpccfIz.mjs → index-fiZltUBs.mjs} +3 -3
- package/{index-BUpccfIz.mjs.map → index-fiZltUBs.mjs.map} +1 -1
- package/index.mjs +31 -31
- package/{integer-BIJ4_I8y.mjs → integer-Dy0xpFif.mjs} +5 -5
- package/{integer-BIJ4_I8y.mjs.map → integer-Dy0xpFif.mjs.map} +1 -1
- package/{mdi-CqMJqgQi.mjs → mdi-BQSh-ess.mjs} +54 -54
- package/{mdi-CqMJqgQi.mjs.map → mdi-BQSh-ess.mjs.map} +1 -1
- package/{number-z_LAINPM.mjs → number-DWCew87L.mjs} +101 -101
- package/{number-z_LAINPM.mjs.map → number-DWCew87L.mjs.map} +1 -1
- package/package.json +38 -38
- package/{position-Ai5XksAO.mjs → position-B9VPkbhU.mjs} +2 -2
- package/{position-Ai5XksAO.mjs.map → position-B9VPkbhU.mjs.map} +1 -1
- package/{props-p4f5Pa5h.mjs → props-Cjpc9pre.mjs} +4 -4
- package/{props-p4f5Pa5h.mjs.map → props-Cjpc9pre.mjs.map} +1 -1
- package/{props-BYX22zcE.mjs → props-DQlQ6VDP.mjs} +6 -6
- package/{props-BYX22zcE.mjs.map → props-DQlQ6VDP.mjs.map} +1 -1
- package/{renderers-BKUvrrVm.mjs → renderers-hznWrh2D.mjs} +13 -13
- package/{renderers-BKUvrrVm.mjs.map → renderers-hznWrh2D.mjs.map} +1 -1
- package/{string-Dmr8SRMf.mjs → string-BTd_Gwx-.mjs} +136 -136
- package/{string-Dmr8SRMf.mjs.map → string-BTd_Gwx-.mjs.map} +1 -1
- package/{unsigned_integer-BliPiCXO.mjs → unsigned_integer-CfxxFKrO.mjs} +4 -4
- package/{unsigned_integer-BliPiCXO.mjs.map → unsigned_integer-CfxxFKrO.mjs.map} +1 -1
- package/useRender-CfNJA_8a.mjs +9 -0
- package/{useRender-BD1xw5zG.mjs.map → useRender-CfNJA_8a.mjs.map} +1 -1
- package/{utils-DqXWb-4f.mjs → utils-D3ZGaTyv.mjs} +48 -48
- package/{utils-DqXWb-4f.mjs.map → utils-D3ZGaTyv.mjs.map} +1 -1
- package/{validation-DS3tTSk5.mjs → validation-BobMyGeq.mjs} +4 -4
- package/{validation-DS3tTSk5.mjs.map → validation-BobMyGeq.mjs.map} +1 -1
- package/common-BeDAn4wu.mjs.map +0 -1
- package/useRender-BD1xw5zG.mjs +0 -9
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useDisplay as k } from "vuetify";
|
|
2
|
-
import { S as P } from "./index-
|
|
2
|
+
import { S as P } from "./index-C-PCfO1S.mjs";
|
|
3
3
|
import { d } from "./index-DXdh_Con.mjs";
|
|
4
4
|
import { n as U } from "./numeral-zjPCiY2K.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import { C as D } from "./index-
|
|
7
|
-
import { u as F } from "./useRender-
|
|
5
|
+
import { i as x, e as y, V as A } from "./mdi-BQSh-ess.mjs";
|
|
6
|
+
import { C as D } from "./index-B8OnsqN1.mjs";
|
|
7
|
+
import { u as F } from "./useRender-CfNJA_8a.mjs";
|
|
8
8
|
import { defineComponent as H, toRefs as R, ref as m, computed as t, h as u } from "vue";
|
|
9
|
-
import { s as S } from "./utils-
|
|
10
|
-
import {
|
|
11
|
-
import { V as $ } from "./VMenu-
|
|
9
|
+
import { s as S } from "./utils-D3ZGaTyv.mjs";
|
|
10
|
+
import { m as W, d as j } from "./props-DQlQ6VDP.mjs";
|
|
11
|
+
import { V as $ } from "./VMenu-oGwvgLV1.mjs";
|
|
12
12
|
const Z = H({
|
|
13
13
|
name: "ControlMenu",
|
|
14
14
|
props: W(),
|
|
@@ -21,19 +21,19 @@ const Z = H({
|
|
|
21
21
|
activator: f,
|
|
22
22
|
color: C,
|
|
23
23
|
badgeColor: M,
|
|
24
|
-
inOverflowMenu:
|
|
24
|
+
inOverflowMenu: n,
|
|
25
25
|
disabled: g,
|
|
26
|
-
noPadding:
|
|
27
|
-
} = R(s), { height:
|
|
28
|
-
modelValue:
|
|
29
|
-
"onUpdate:modelValue": (o) =>
|
|
26
|
+
noPadding: h
|
|
27
|
+
} = R(s), { height: b } = k(), a = m(!1), r = m(null), V = t(() => ({
|
|
28
|
+
modelValue: a.value,
|
|
29
|
+
"onUpdate:modelValue": (o) => a.value = o,
|
|
30
30
|
closeOnBack: !1,
|
|
31
31
|
closeOnContentClick: !1,
|
|
32
32
|
contentClass: "resourceful-option-menu-content",
|
|
33
33
|
minWidth: 300,
|
|
34
34
|
location: "bottom start",
|
|
35
35
|
target: r.value ? r.value.$el : void 0,
|
|
36
|
-
submenu:
|
|
36
|
+
submenu: n.value
|
|
37
37
|
})), O = t(() => U(l.value).format(v.value)), w = t(() => {
|
|
38
38
|
const o = Number(l.value);
|
|
39
39
|
return !Number.isNaN(o) && Math.abs(o) > 0;
|
|
@@ -41,20 +41,20 @@ const Z = H({
|
|
|
41
41
|
color: C.value,
|
|
42
42
|
minWidth: 300,
|
|
43
43
|
minHeight: 20,
|
|
44
|
-
maxHeight: Math.min(
|
|
45
|
-
})), I = () =>
|
|
44
|
+
maxHeight: Math.min(b.value - 200, 400)
|
|
45
|
+
})), I = () => a.value = !0, i = () => a.value = !1, N = t(
|
|
46
46
|
() => d(j, f.value, {
|
|
47
47
|
ref: r,
|
|
48
48
|
prependIcon: c.value,
|
|
49
49
|
cta: p.value,
|
|
50
|
-
appendIcon: () => u(P, { d:
|
|
50
|
+
appendIcon: () => u(P, { d: a.value ? x : y }),
|
|
51
51
|
divideAppendIcon: !0,
|
|
52
52
|
badge: {
|
|
53
53
|
color: M.value,
|
|
54
54
|
content: w.value ? O.value : void 0
|
|
55
55
|
},
|
|
56
|
-
class:
|
|
57
|
-
inOverflowMenu:
|
|
56
|
+
class: n.value ? [] : h.value ? ["my-2", "me-2"] : ["ma-2"],
|
|
57
|
+
inOverflowMenu: n.value,
|
|
58
58
|
state: {
|
|
59
59
|
disabled: g.value
|
|
60
60
|
}
|
|
@@ -64,13 +64,13 @@ const Z = H({
|
|
|
64
64
|
() => u(
|
|
65
65
|
"div",
|
|
66
66
|
{
|
|
67
|
-
class: [{ "w-100":
|
|
67
|
+
class: [{ "w-100": n.value }]
|
|
68
68
|
},
|
|
69
69
|
u($, V.value, {
|
|
70
70
|
activator: ({ props: o }) => u(
|
|
71
71
|
D,
|
|
72
72
|
d(N.value, o, {
|
|
73
|
-
inOverflowMenu:
|
|
73
|
+
inOverflowMenu: n.value
|
|
74
74
|
}),
|
|
75
75
|
// eslint-disable-next-line @nht/require-function-slots-for-programmatic-components
|
|
76
76
|
S({
|
|
@@ -95,4 +95,4 @@ const Z = H({
|
|
|
95
95
|
export {
|
|
96
96
|
Z as C
|
|
97
97
|
};
|
|
98
|
-
//# sourceMappingURL=index-
|
|
98
|
+
//# sourceMappingURL=index-ChVCZ8iE.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-ChVCZ8iE.mjs","sources":["../src/private/control-menu/index.ts"],"sourcesContent":["import { useDisplay } from 'vuetify'\nimport { SvgIcon } from '../svg-icon'\nimport { deepmerge } from 'deepmerge-ts'\nimport { default as numeral } from 'numeral'\nimport { VMenu } from 'vuetify/components/VMenu'\nimport { VCard } from 'vuetify/components/VCard'\nimport { mdiMenuUp, mdiMenuDown } from '@mdi/js'\nimport { ControlButton } from '../control-button'\nimport { useRender } from '@nhtio/vuetifiable/util/useRender'\nimport { defineComponent, h, computed, toRefs, ref } from 'vue'\nimport { stripUndefinedValuesFromObject } from '../common/utils'\nimport { makeControlMenuProps, defaultActivatorValues } from './props'\nimport type { ControlButtonProps } from '../control-button/props'\n\nexport const ControlMenu = defineComponent({\n name: 'ControlMenu',\n props: makeControlMenuProps(),\n setup(props, { slots }) {\n const {\n icon,\n cta,\n count,\n countFormat,\n activator,\n color,\n badgeColor,\n inOverflowMenu,\n disabled,\n noPadding,\n } = toRefs(props)\n const { height } = useDisplay()\n const open = ref(false)\n const anchor = ref<ControlButton | null>(null)\n const vMenuBindings = computed(() => ({\n 'modelValue': open.value,\n 'onUpdate:modelValue': (value: boolean) => (open.value = value),\n 'closeOnBack': false,\n 'closeOnContentClick': false,\n 'contentClass': 'resourceful-option-menu-content',\n 'minWidth': 300,\n 'location': 'bottom start' as const,\n 'target': anchor.value ? anchor.value.$el : undefined,\n 'submenu': inOverflowMenu.value,\n }))\n const formattedCount = computed(() => numeral(count.value).format(countFormat.value))\n const showCount = computed(() => {\n const num = Number(count.value)\n return !Number.isNaN(num) && Math.abs(num) > 0\n })\n const menuPanelCardBindings = computed(() => ({\n color: color.value,\n minWidth: 300,\n minHeight: 20,\n maxHeight: Math.min(height.value - 200, 400),\n }))\n const doOpenMenu = () => (open.value = true)\n const close = () => (open.value = false)\n const controlButtonBindings = computed<ControlButtonProps>(() =>\n deepmerge(defaultActivatorValues, activator.value, {\n ref: anchor,\n prependIcon: icon.value,\n cta: cta.value,\n appendIcon: () => h(SvgIcon, { d: open.value ? mdiMenuUp : mdiMenuDown }),\n divideAppendIcon: true,\n badge: {\n color: badgeColor.value,\n content: showCount.value ? formattedCount.value : undefined,\n },\n class: inOverflowMenu.value ? [] : noPadding.value ? ['my-2', 'me-2'] : ['ma-2'],\n inOverflowMenu: inOverflowMenu.value,\n state: {\n disabled: disabled.value,\n },\n })\n )\n useRender(() =>\n h(\n 'div',\n {\n class: [{ 'w-100': inOverflowMenu.value }],\n },\n h(VMenu, vMenuBindings.value, {\n activator: ({ props: activatorProps }: { props: Record<string, any> }) =>\n h(\n ControlButton,\n deepmerge(controlButtonBindings.value, activatorProps, {\n inOverflowMenu: inOverflowMenu.value,\n }),\n // eslint-disable-next-line @nht/require-function-slots-for-programmatic-components\n stripUndefinedValuesFromObject({\n cta: slots.cta ? () => slots.cta!() : undefined,\n prepend: slots.prepend ? () => slots.prepend!() : undefined,\n append: slots.append ? () => slots.append!() : undefined,\n })\n ),\n default: () =>\n h(VCard, menuPanelCardBindings.value, () =>\n slots.default ? slots.default({ close }) : null\n ),\n })\n )\n )\n return {\n open: doOpenMenu,\n close,\n }\n },\n})\n\nexport type ControlMenu = InstanceType<typeof ControlMenu>\n"],"names":["ControlMenu","defineComponent","makeControlMenuProps","props","slots","icon","cta","count","countFormat","activator","color","badgeColor","inOverflowMenu","disabled","noPadding","toRefs","height","useDisplay","open","ref","anchor","vMenuBindings","computed","value","formattedCount","numeral","showCount","num","menuPanelCardBindings","doOpenMenu","close","controlButtonBindings","deepmerge","defaultActivatorValues","h","SvgIcon","mdiMenuUp","mdiMenuDown","useRender","VMenu","activatorProps","ControlButton","stripUndefinedValuesFromObject","VCard"],"mappings":"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"}
|
|
@@ -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-
|
|
5
|
-
import { u as I } from "./display-
|
|
6
|
-
import { s as m, r as re,
|
|
4
|
+
import { C as oe } from "./index-ChVCZ8iE.mjs";
|
|
5
|
+
import { u as I } from "./display-DCHGPqrW.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-
|
|
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-
|
|
10
|
+
import { c as se, m as ue } from "./props-Cjpc9pre.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-
|
|
12
|
+
import { V as de } from "./VListItem-DNNkp2dc.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:
|
|
44
|
-
style:
|
|
45
|
-
} = ve(h),
|
|
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:
|
|
69
|
-
style:
|
|
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, ...
|
|
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-
|
|
264
|
+
//# sourceMappingURL=index-Cou5qTHe.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-Cou5qTHe.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":";;;;;;;;;;;;AA0CA,MAAMA,KAA6BC,MAAc,sBAAsB,QAEjEC,KAAe,CAACC,MAAiB;AACrC,QAAMC,IAAeC,EAA+B;AAAA,IAClD,GAAGF,EAAM;AAAA,IACT,IAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,GAAGG;AAAA,MACD;AAAA,QACE,OAAOH,EAAM,OAAO,QAAQA,EAAM,MAAM,QAAQ;AAAA,MAAA;AAAA,MAElD;AAAA,QACE,OAAO,CAAC,MAAM;AAAA,MAAA;AAAA,IAChB;AAAA;AAAA;AAAA,IAIF,gBAAkB;AAAA,EAAA,CACnB;AACD,SAAOI,GAAWJ,GAAOC,CAAY;AACvC,GAwCaI,KAAmBC,GAAgB;AAAA,EAC9C,MAAM;AAAA,EACN,cAAc;AAAA,EACd,OAAOC,GAAA;AAAA,EACP,OAAOC;AAAA,EACP,OAAO;AAAA,EACP,MAAMC,GAAO,EAAE,OAAAC,GAAO,OAAAC,KAAS;AAC7B,UAAMC,IAAIC,EAAA,GACJ,EAAE,OAAAC,EAAA,IAAUC,GAAA,GACZ;AAAA,MACJ,SAAAC;AAAA,MACA,eAAAC;AAAA,MACA,KAAAC;AAAA,MACA,2BAAAC;AAAA,MACA,OAAOC;AAAA,MACP,OAAAC;AAAA,IAAA,IACEC,GAAOb,CAAK,GACVc,IAAsCC;AAAA,MAC1C,MACEC;AAAA,QACE;AAAA,UACE,KAAKb,EAAE,cAAc;AAAA,QAAA;AAAA,QAEvBV,EAA+B;AAAA,UAC7B,KAAKiB,EAA0B,MAAM;AAAA,QAAA,CACtC;AAAA,QACD;AAAA,UACE,WAAWjB,EAA+B;AAAA,YACxC,OAAOiB,EAA0B,MAAM;AAAA,YACvC,SAASA,EAA0B,MAAM;AAAA,YACzC,MAAMA,EAA0B,MAAM;AAAA,UAAA,CACvC;AAAA,QAAA;AAAA,MACH;AAAA,IACF,GAEEO,IAAeC,EAA2B,IAAI,GAC9CC,IAAaD,EAA2B,IAAI,GAC5CE,IAAyBF,EAAwB,IAAI,GACrDG,IAAwBH,EAAwB,IAAI,GACpD,EAAE,OAAOI,GAAgB,cAAAC,GAAc,IAAAC,EAAA,IAAOC,EAAiBR,CAAY,GAC3E,EAAE,OAAOS,MAAiBD,EAAiBN,CAAU,GACrD,EAAE,OAAOQ,GAA0B,QAAQC,EAAA,IAC/CH,EAAiBL,CAAsB,GACnCS,IAAiBd;AAAA,MAAS,MAC9BrB;AAAA,QACE;AAAA,UACE,OAAOO,EAAM,SAAS,CAAA;AAAA,UACtB,OAAOA,EAAM,SAAS,CAAA;AAAA,QAAC;AAAA,QAEzB;AAAA,UACE,OAAOU,EAAU;AAAA,UACjB,OAAOC,EAAM;AAAA,QAAA;AAAA,QAEf;AAAA,UACE,OAAO,CAAC,SAAS,qBAAqB,sBAAsB;AAAA,UAC5D,MAAM;AAAA,UACN,OAAO;AAAA,YACL,YAAY;AAAA,UAAA;AAAA,QACd;AAAA,MACF;AAAA,IACF,GAEIkB,IAA0BZ,EAAc,EAAE,GAC1Ca,IAA6Bb,EAAmB,IAAI,GACpDc,IAAmBjB;AAAA,MACvB,MAAMR,EAAQ,MAAM,SAAS,KAAKuB,EAAwB,MAAM,SAAS;AAAA,IAAA,GAErEG,IAAuBlB;AAAA,MAA2B,MACtDV,EAAM,QACFG,EAAc,UAAU,UACtB,SACA,UACFA,EAAc,UAAU,UACtB,UACA;AAAA,IAAA,GAEF0B,IAAiCC,GAAS,MAAM;AAIpD,UAFI,CAAClB,EAAa,SAAS,CAACE,EAAW,SAAS,CAACC,EAAuB,SAEpE,CAACG,EAAa,MAAO;AAEzB,UAAIhB,EAAQ,MAAM,SAAS,GAAG;AAC5B,QAAAuB,EAAwB,QAAQ,CAAA;AAChC;AAAA,MACF;AAMA,YAAMM,IAAYjB,EAAW,OACvBkB,IAAiB,MAAM,KAAKD,EAAU,QAAQ,GAC9CE,IAAsBhB,EAAe,OACrCiB,IAAiCjB,EAAe,QAAQK,EAAyB,OASjFa,IAP+BH,EAAe,IAAI,CAACI,GAASC,OAAW;AAAA,QAC3E,OAAAA;AAAA,QACA,MAAMD,EAAQ;AAAA,QACd,OAAOA,EAAQ,aAAaA,EAAQ;AAAA,MAAA,EACpC,EAG2E;AAAA,QAC3E,CAAC,EAAE,MAAAE,GAAM,OAAAC,EAAA,MACIX,EAAqB,UAAhC,SACIU,IAAOhB,EAAyB,QAChCiB,IAAQL;AAAA,MAAA;AAIhB,UAAIC,EAAwC,WAAW,GAAG;AACxD,QAAAV,EAAwB,QAAQ,CAAA,GAChCC,EAA2B,QAAQ;AACnC;AAAA,MACF;AAQA,UAAI,CALyBS,EAAwC;AAAA,QACnE,CAAC,EAAE,MAAAG,GAAM,OAAAC,EAAA,MACIX,EAAqB,UAAhC,SAAwCU,IAAO,IAAIC,IAAQN;AAAA,MAAA,GAGpC;AACzB,QAAAR,EAAwB,QAAQ,CAAA,GAChCC,EAA2B,QAAQ;AACnC;AAAA,MACF;AAGA,MAAAD,EAAwB,QAAQU,EAAwC;AAAA,QACtE,CAAC,EAAE,OAAAE,EAAA,MAAYA;AAAA,MAAA;AAajB,YAAMG,IARwBL,EAAwC,KAAK,CAACM,GAAGC,MAC9Dd,EAAqB,UAAhC,SACKc,EAAE,QAAQD,EAAE,QAEZA,EAAE,OAAOC,EAAE,IAErB,EAE+C,CAAC;AACjD,UAAI,CAACF,GAAmB;AACtB,QAAAd,EAA2B,QAAQ;AACnC;AAAA,MACF;AACA,MAAAA,EAA2B,QACdE,EAAqB,UAAhC,SAAwCY,EAAkB,QAAQA,EAAkB;AAAA,IACxF,GAAG,EAAE,GACCG,IAAiC,CAACC,MAA8B;AACpE,MAAIA,EAAQ,KAAK,CAACC,MAAMA,EAAE,SAAS,WAAW,KAC5C,eAAe,MAAMhB,GAAgC;AAAA,IAEzD,GACMiB,IAAkB,CAACC,GAA2BC,MAA2C;AAC7F,MAAIA,KAAOC,KACTA,EAAwB,WAAA,GAEtBF,KAAME,KACRA,EAAwB,QAAQF,GAAI;AAAA,QAClC,WAAW;AAAA,QACX,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,eAAe;AAAA,MAAA,CAChB;AAAA,IAEL,GACMG,IAAoB,MAAM;AAC9B,MAAIlC,EAAsB,SACxBA,EAAsB,MAAM,MAAA;AAAA,IAEhC,GACMmC,IAAezC,EAAS,OAAO;AAAA,MACnC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACE,iBAAiBP,EAAc,UAAU;AAAA,UACzC,eAAeA,EAAc,UAAU;AAAA,QAAA;AAAA,MACzC;AAAA,IACF,EACA,GACIiD,IAA6B1C,EAAS,MACtCgB,EAA2B,UAAU,QAAQP,EAAG,QAC3C/B,EAA+B;AAAA,MACpC,MAAiBwC,EAAqB,UAAhC,SAAwC,IAAI;AAAA,MAClD,OAAmBA,EAAqB,UAAjC,UAAyC,IAAI;AAAA,IAAA,CACrD,IAEMxC,EAA+B;AAAA,MACpC,MACawC,EAAqB,UAAhC;AAAA;AAAA,QAEIyB;AAAA,UACE3B,EAA2B,QAAQJ,EAAyB,QAAQ;AAAA,UACpE;AAAA,QAAA;AAAA;AAAA;AAAA,QAGF+B,EAAc3B,EAA2B,QAAQ,GAAG,IAAI;AAAA;AAAA,IAAA,CAC/D,CAEJ,GACK4B,IAA2B5C,EAAS,OAAO;AAAA,MAC/C,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACE,CAAC,MAAMN,EAAI,KAAK,EAAE,GAChBsB,EAA2B,UAAU,QACrC6B,EAASnD,EAAI,KAAK,IAAI,KACZD,EAAc,UAAxB;AAAA,UACF,CAAC,MAAMC,EAAI,KAAK,EAAE,GAChBsB,EAA2B,UAAU,QACrC6B,EAASnD,EAAI,KAAK,IAAI,KACZD,EAAc,UAAxB;AAAA,QAAwB;AAAA,MAC5B;AAAA,MAEF,OAAO;AAAA,QACL,GAAGiD,EAA2B;AAAA,QAC9B,GAAGhE,EAA+B;AAAA,UAChC,KAAK,cAAciE,EAAc9B,EAA0B,QAAQ,CAAC,CAAC;AAAA,UACrE,SAASI,EAAiB,QAAQ,IAAI;AAAA,UACtC,eAAeA,EAAiB,QAAQ,SAAY;AAAA,UACpD,QAAQA,EAAiB,QAAQ,IAAI;AAAA,QAAA,CACtC;AAAA,MAAA;AAAA,IACH,EACA,GACI6B,IAAsC,CAAA;AAC5C,QAAIP;AACJ,WAAAQ;AAAA,MAAU,MACRC;AAAA,QACE;AAAA,QACA;AAAA,UACE,KAAK9C;AAAA,UACL,GAAGY,EAAe;AAAA,QAAA;AAAA,QAEpB;AAAA,UACEkC;AAAA,YACE;AAAA,YACA;AAAA,cACE,KAAK5C;AAAA,cACL,GAAGqC,EAAa;AAAA,YAAA;AAAA,YAElB,MAAM,KAAKjD,EAAQ,KAAK,EAAE;AAAA,cAAI,CAACyD,GAAUC,MACvCF;AAAA,gBACE;AAAA,gBACA;AAAA,kBACE,KAAK,kBAAkBE,CAAQ;AAAA,kBAC/B,cAAcA;AAAA,kBACd,OAAO;AAAA,oBACL,CAAC,MAAMxD,EAAI,KAAK,EAAE,GAChBwD,IAAW1D,EAAQ,MAAM,SAAS,KAClCqD,EAASnD,EAAI,KAAK,IAAI,KACZD,EAAc,UAAxB;AAAA,oBACF,CAAC,MAAMC,EAAI,KAAK,EAAE,GAChBwD,IAAW1D,EAAQ,MAAM,SAAS,KAClCqD,EAASnD,EAAI,KAAK,IAAI,KACZD,EAAc,UAAxB;AAAA,kBAAwB;AAAA,kBAE5B,OAAOf,EAA+B;AAAA,oBACpC,SAASqC,EAAwB,MAAM,SAASmC,CAAQ,IAAI,IAAI;AAAA,oBAChE,eAAenC,EAAwB,MAAM,SAASmC,CAAQ,IAC1D,SACA;AAAA,kBAAA,CACL;AAAA,gBAAA;AAAA,gBAEHD;AAAA,cAAA;AAAA,YACF;AAAA,UACF;AAAA,UAEFD;AAAA,YACE;AAAA,YACA,EAAE,KAAK3C,GAAwB,GAAGuC,EAAyB,MAAA;AAAA,YAC3DI;AAAA,cACEG;AAAA,cACA,EAAE,KAAK7C,GAAuB,GAAGP,EAAoC,MAAA;AAAA,cACrE,MAAM;AAAA,gBACJZ,EAAM,cAAc,IAAIA,EAAM,cAAc,MAAM;AAAA,gBAClD,GAAG,MAAM,KAAK4B,EAAwB,KAAK,EAAE;AAAA,kBAAI,CAACmC,MAChDF;AAAA,oBAAEI;AAAA,oBAAW,EAAE,KAAK,qBAAqBF,CAAQ,GAAA;AAAA,oBAAM,MACrDF;AAAA,sBACE;AAAA,sBACA,EAAE,OAAO,CAAC,SAAS,UAAU,gBAAgB,EAAA;AAAA,sBAC7CzE,GAAaiB,EAAQ,MAAM0D,CAAQ,CAAC;AAAA,oBAAA;AAAA,kBACtC;AAAA,gBACF;AAAA,gBAEF/D,EAAM,aAAa,IAAIA,EAAM,aAAa,MAAM;AAAA,cAAA;AAAA,YAClD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAEFkE,GAAU,MAAM;AACd,MAAAP,EAAiB;AAAA,QACfQ,EAAM/C,GAAgBY,GAAgC,EAAE,WAAW,IAAM;AAAA,MAAA,GAE3E2B,EAAiB;AAAA,QACfQ,EAAM7D,GAAe0B,GAAgC,EAAE,WAAW,IAAM;AAAA,MAAA,GAE1E2B,EAAiB;AAAA,QACfQ,EAAM9C,GAAcW,GAAgC,EAAE,WAAW,IAAM;AAAA,MAAA,GAEzE2B,EAAiB;AAAA,QACfQ,EAAM3C,GAAcQ,GAAgC,EAAE,WAAW,IAAM;AAAA,MAAA,GAEzE2B,EAAiB;AAAA,QACfQ,EAAM1C,GAA0BO,GAAgC,EAAE,WAAW,IAAM;AAAA,MAAA,GAErF2B,EAAiB;AAAA,QACfQ,EAAMpC,GAAsBC,GAAgC,EAAE,WAAW,IAAM;AAAA,MAAA,GAE7E9C,OACFkE,IAA0B,IAAI,iBAAiBN,CAA8B,IAE/Ea,EAAiB,KAAKQ,EAAMlD,GAAYgC,GAAiB,EAAE,WAAW,GAAA,CAAM,CAAC,GAC7EjB,EAA+B,UAAA;AAAA,IACjC,CAAC,GACDoC,GAAY,MAAM;AAEhB,MAAAf,EAAA,GAEAM,EAAiB,QAAQ,CAACU,MAAeA,EAAA,CAAY,GACrDV,EAAiB,OAAO,GAAGA,EAAiB,MAAM,GAE9CP,MACFA,EAAwB,WAAA,GACxBA,IAA0B;AAAA,IAE9B,CAAC,GACMkB;AAAA,MACL;AAAA,QACE,sBAAAvC;AAAA,QACA,4BAAAF;AAAA,QACA,YAAYC;AAAA,QACZ,QAAQE;AAAA,QACR,OAAOqB;AAAA,MAAA;AAAA,MAETtC;AAAA,MACAE;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
|
|
@@ -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-
|
|
3
|
-
import {
|
|
4
|
-
import { C as R } from "./index-
|
|
2
|
+
import { S as C } from "./index-C-PCfO1S.mjs";
|
|
3
|
+
import { j as A } from "./mdi-BQSh-ess.mjs";
|
|
4
|
+
import { C as R } from "./index-ChVCZ8iE.mjs";
|
|
5
5
|
import { p as t } from "./http-Crw0XAYj.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { a as B } from "./props-DQlQ6VDP.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-
|
|
9
|
-
const
|
|
8
|
+
import { V as y } from "./VListItem-DNNkp2dc.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
|
-
|
|
68
|
+
T as A
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=index-
|
|
70
|
+
//# sourceMappingURL=index-DM8E6faO.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DM8E6faO.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,59 +1,59 @@
|
|
|
1
|
-
import { V as pn, q as So } from "./VEmptyState-
|
|
2
|
-
import { S as le, s as ri } from "./index-
|
|
3
|
-
import { u as $v } from "./alert-
|
|
1
|
+
import { V as pn, q as So } from "./VEmptyState-CjqRy_Xt.mjs";
|
|
2
|
+
import { S as le, s as ri } from "./index-C-PCfO1S.mjs";
|
|
3
|
+
import { u as $v } from "./alert-C6Dxm9jn.mjs";
|
|
4
4
|
import { d as Ce } from "./index-DXdh_Con.mjs";
|
|
5
5
|
import { a as Xt, D as Be, c as fc } from "./ioc-Du_Tgg-1.mjs";
|
|
6
6
|
import { n as Je } from "./numeral-zjPCiY2K.mjs";
|
|
7
7
|
import { p as er } from "./http-Crw0XAYj.mjs";
|
|
8
|
-
import { u as Uo } from "./display-
|
|
9
|
-
import { m as ai, C as kt } from "./index-
|
|
10
|
-
import { G as Ks, p as We,
|
|
11
|
-
import { o as Kv, u as qv, k as Zv, I as ji,
|
|
8
|
+
import { u as Uo } from "./display-DCHGPqrW.mjs";
|
|
9
|
+
import { m as ai, C as kt } from "./index-B8OnsqN1.mjs";
|
|
10
|
+
import { G as Ks, p as We, w as Ha, h as Tt, e as xa, r as tn, s as be, d as Ga, q as Vo, i as Jr, R as Wv, x as Pa, t as oe, j as Tl, k as Hv, M as fn, aG as Gv, W as dc, Q as xt, aF as il, C as Nt, E as we, L as Ar, aH as $u, P as Wu, V as ni, O as $o, Y as An, B as hc, H as qs, z as da, N as jv, aC as zv, ab as vc, ad as Zs, aI as Cl, aJ as ll, F as Ka, aE as Hu, aD as Js, T as Xv, aK as Yv, aL as sl, ae as mc, v as Gu } from "./utils-D3ZGaTyv.mjs";
|
|
11
|
+
import { o as Kv, u as qv, k as Zv, I as ji, d as sa, W as Wo, i as kl, e as xn, T as ju, X as Il, Y as pc, U as Jv, Z as Ho, V as qa, _ as Qv, $ as e1, a0 as t1, a1 as r1, H as xc, G as Go, a2 as gc, a3 as a1, a4 as n1, F as i1, a5 as bo, a6 as Eo, a7 as zu, a8 as l1, a9 as s1, aa as yc, ab as o1, ac as _c, ad as Pl, ae as Dl, af as wc, ag as Tc, ah as cs, ai as u1, aj as Sc, ak as c1, al as f1, am as d1, C as bc, an as h1, ao as v1, ap as m1, a as p1, b as x1, aq as g1, ar as y1, as as Ec, at as _1, au as w1, av as T1, aw as S1, ax as b1, ay as E1, az as A1, aA as F1, h as C1, aB as k1, aC as I1 } from "./mdi-BQSh-ess.mjs";
|
|
12
12
|
import { B as ze } from "./index-CHnHphQ4.mjs";
|
|
13
|
-
import { F as P1 } from "./validation-
|
|
13
|
+
import { F as P1 } from "./validation-BobMyGeq.mjs";
|
|
14
14
|
import { g as D1, l as rn } from "./index-CFtnmFDF.mjs";
|
|
15
15
|
import { v as _e, i as wt, V as Xu, h as O1, d as R1 } from "./encoding-C1W2Cp3X-DzgQRCVx.mjs";
|
|
16
|
-
import { u as Mr } from "./useRender-
|
|
16
|
+
import { u as Mr } from "./useRender-CfNJA_8a.mjs";
|
|
17
17
|
import { f as N1 } from "./big_number_formatter-BGfIwlog.mjs";
|
|
18
18
|
import { shallowRef as Zr, computed as O, onMounted as jo, watch as rt, onBeforeUnmount as fs, watchEffect as zo, onScopeDispose as B1, ref as Te, toRef as pt, nextTick as vt, readonly as L1, createElementVNode as $e, Fragment as Ua, createVNode as je, mergeProps as tr, Transition as M1, h as v, defineComponent as Ht, toRefs as Ot, toRaw as lt, warn as Tr, normalizeStyle as ds, normalizeClass as Za, withDirectives as U1, vShow as V1, triggerRef as Zn, onBeforeUpdate as $1, provide as an, inject as Fn, capitalize as W1, toValue as H1, createTextVNode as Yu, withModifiers as ol, toDisplayString as wi } from "vue";
|
|
19
|
-
import { S as Ac, o as Xo } from "./index-
|
|
19
|
+
import { S as Ac, o as Xo } from "./index-VpcXNOpn.mjs";
|
|
20
20
|
import { u as Sl, e as G1 } from "./http-BBfnr2c-.mjs";
|
|
21
|
-
import { b as j1, a as z1, j as X1 } from "./form-
|
|
22
|
-
import { r as Y1 } from "./renderers-
|
|
23
|
-
import { aZ as K1, bd as q1, av as zr, b7 as Z1,
|
|
24
|
-
import { a as Mc, m as Uc } from "./clipboard-
|
|
25
|
-
import { C as xm, J as gn,
|
|
26
|
-
import { V as Va, a as Or, b as Gt } from "./VRow-
|
|
27
|
-
import { V as mr } from "./VListItem-
|
|
28
|
-
import { V as El, R as Hc } from "./boolean-
|
|
29
|
-
import { V as Gc, I as jt, m as Qo, a as gs, g as ja, p as Nl, f as Am, u as Fm } from "./elevation-
|
|
21
|
+
import { b as j1, a as z1, j as X1 } from "./form-CFjPqvRf.mjs";
|
|
22
|
+
import { r as Y1 } from "./renderers-hznWrh2D.mjs";
|
|
23
|
+
import { aZ as K1, bd as q1, av as zr, b7 as Z1, T as bi, O as bl, g as oa, p as ir, A as Fc, f as Yo, i as J1, h as Ao, k as Q1, ae as zi, n as em, bb as tm, u as ka, be as rm, al as Ii, o as ga, c as Wn, E as Cc, q as Ko, r as qo, s as kc, w as Ic, aj as hs, y as vs, z as Pc, V as Ge, a as ma, b as Dc, d as Oc, ag as Rc, aw as Nc, aH as am, v as nm, F as im, as as lm, bf as sm, N as Xi, aE as ul, X as om, ap as um, a8 as Yi, M as Wr, aS as Ku, R as Bc, bg as cm, a1 as fm, a0 as cl, bh as dm, ak as Lc, bi as Ol, bj as fl, Y as hm, $ as vm, a$ as mm, a9 as Qs, ax as Fo, a4 as pm, bk as dl } from "./display-TF26EjNQ.mjs";
|
|
24
|
+
import { a as Mc, m as Uc } from "./clipboard-CGd9vMCV.mjs";
|
|
25
|
+
import { C as xm, J as gn, d as pa, V as ms, e as ia, a as Kt, z as Rl, p as Ei, S as ps, i as Co, h as Vc, T as xs, j as gm, D as qu, x as Zo, O as ym, G as _m, U as $c, W as wm, X as Jo, Y as Tm, Z as Sm, _ as Wc, K as bm, m as Em } from "./common-DrsZRUoj.mjs";
|
|
26
|
+
import { V as Va, a as Or, b as Gt } from "./VRow-Da2fdUPu.mjs";
|
|
27
|
+
import { V as mr } from "./VListItem-DNNkp2dc.mjs";
|
|
28
|
+
import { V as El, R as Hc } from "./boolean-BaevWx3k.mjs";
|
|
29
|
+
import { V as Gc, I as jt, m as Qo, a as gs, g as ja, p as Nl, f as Am, u as Fm } from "./elevation-j7bb-vGU.mjs";
|
|
30
30
|
import { ResourcefulIndexScopedDisplaySymbol as jc } from "./symbols.mjs";
|
|
31
|
-
import { A as Cm } from "./index-
|
|
32
|
-
import { m as ii } from "./component-
|
|
31
|
+
import { A as Cm } from "./index-DM8E6faO.mjs";
|
|
32
|
+
import { m as ii } from "./component-DhEJuSE6.mjs";
|
|
33
33
|
import { w as vn } from "./warning-D1tzZbaa.mjs";
|
|
34
|
-
import { V as yn } from "./VSheet-
|
|
35
|
-
import { V as Na, R as zc } from "./string-
|
|
36
|
-
import { a as eu } from "./VDatePicker-
|
|
37
|
-
import { V as Jn, h as Xc, m as ys, i as Yc, a as km, j as Kc, k as qc, J as _n, I as Ki, G as Im, p as Zc, d as _s, v as Pm, y as Dm, N as tu, A as Om, u as Rm, L as Nm, f as Zu, O as hl, g as Bm, b as Lm } from "./display-
|
|
34
|
+
import { V as yn } from "./VSheet-DdygPJlo.mjs";
|
|
35
|
+
import { V as Na, R as zc } from "./string-BTd_Gwx-.mjs";
|
|
36
|
+
import { a as eu } from "./VDatePicker-CKxKmuCC.mjs";
|
|
37
|
+
import { V as Jn, h as Xc, m as ys, i as Yc, a as km, j as Kc, k as qc, J as _n, I as Ki, G as Im, p as Zc, d as _s, v as Pm, y as Dm, N as tu, A as Om, u as Rm, L as Nm, f as Zu, O as hl, g as Bm, b as Lm } from "./display-BL-pquAI.mjs";
|
|
38
38
|
import { e as Jc } from "./question-BZ_Klr0o.mjs";
|
|
39
|
-
import { m as Mm, V as dn } from "./VBtn-
|
|
39
|
+
import { m as Mm, V as dn } from "./VBtn-C_58hP1L.mjs";
|
|
40
40
|
import { useLocale as ru, useDisplay as Um } from "vuetify";
|
|
41
|
-
import { R as Qc } from "./bigint-
|
|
42
|
-
import { R as ef } from "./date_time-
|
|
43
|
-
import { R as tf } from "./date-
|
|
44
|
-
import { R as rf } from "./integer-
|
|
45
|
-
import { R as af } from "./number-
|
|
46
|
-
import { R as nf } from "./unsigned_integer-
|
|
47
|
-
import "./enum-
|
|
48
|
-
import { V as Bl, m as Vm } from "./VMenu-
|
|
49
|
-
import { C as ws } from "./index-
|
|
50
|
-
import {
|
|
51
|
-
import { m as au, u as Wm, V as Hm, b as Gm, a as eo, c as Ju, i as jm } from "./actions-
|
|
52
|
-
import { a as zm } from "./console-
|
|
53
|
-
import { V as Qu } from "./VHover-
|
|
54
|
-
import { C as Xm } from "./index-
|
|
55
|
-
import { m as Ym, a as Km } from "./props-
|
|
56
|
-
import { m as qm } from "./position-
|
|
41
|
+
import { R as Qc } from "./bigint-CqXe_geE.mjs";
|
|
42
|
+
import { R as ef } from "./date_time-DuRO8DS4.mjs";
|
|
43
|
+
import { R as tf } from "./date-BXNqToRH.mjs";
|
|
44
|
+
import { R as rf } from "./integer-Dy0xpFif.mjs";
|
|
45
|
+
import { R as af } from "./number-DWCew87L.mjs";
|
|
46
|
+
import { R as nf } from "./unsigned_integer-CfxxFKrO.mjs";
|
|
47
|
+
import "./enum-CRgh6TfR.mjs";
|
|
48
|
+
import { V as Bl, m as Vm } from "./VMenu-oGwvgLV1.mjs";
|
|
49
|
+
import { C as ws } from "./index-ChVCZ8iE.mjs";
|
|
50
|
+
import { a as lf, m as $m } from "./props-DQlQ6VDP.mjs";
|
|
51
|
+
import { m as au, u as Wm, V as Hm, b as Gm, a as eo, c as Ju, i as jm } from "./actions-5gxlWcWt.mjs";
|
|
52
|
+
import { a as zm } from "./console-Dgoi3FwV.mjs";
|
|
53
|
+
import { V as Qu } from "./VHover-D-sydp3P.mjs";
|
|
54
|
+
import { C as Xm } from "./index-Cou5qTHe.mjs";
|
|
55
|
+
import { m as Ym, a as Km } from "./props-Cjpc9pre.mjs";
|
|
56
|
+
import { m as qm } from "./position-B9VPkbhU.mjs";
|
|
57
57
|
import './index.css';function e0(e, r, t) {
|
|
58
58
|
return Object.keys(e).filter((a) => K1(a) && a.endsWith(r)).reduce((a, n) => (a[n.slice(0, -r.length)] = (l) => q1(e[n], l, t(l)), a), {});
|
|
59
59
|
}
|
|
@@ -28687,4 +28687,4 @@ export {
|
|
|
28687
28687
|
Zm as b,
|
|
28688
28688
|
Pd as c
|
|
28689
28689
|
};
|
|
28690
|
-
//# sourceMappingURL=index-
|
|
28690
|
+
//# sourceMappingURL=index-DSLt7-cJ.mjs.map
|