@nhtio/lucid-resourceful-vue-components 0.1.0-master-dc6af70b → 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.
- package/{VBtn-CEYzcx0y.mjs → VBtn-C4WCntKg.mjs} +7 -7
- package/{VBtn-CEYzcx0y.mjs.map → VBtn-C4WCntKg.mjs.map} +1 -1
- package/{VDatePicker-BHcvHHhM.mjs → VDatePicker-DOCNk-HL.mjs} +61 -61
- package/{VDatePicker-BHcvHHhM.mjs.map → VDatePicker-DOCNk-HL.mjs.map} +1 -1
- package/{VEmptyState-CkYtN0q5.mjs → VEmptyState-CfouFZTg.mjs} +51 -51
- package/{VEmptyState-CkYtN0q5.mjs.map → VEmptyState-CfouFZTg.mjs.map} +1 -1
- package/{VHover-Bj6QrQff.mjs → VHover-DvUhdfsL.mjs} +3 -3
- package/{VHover-Bj6QrQff.mjs.map → VHover-DvUhdfsL.mjs.map} +1 -1
- package/{VListItem-BnxAmKd_.mjs → VListItem-BT-NXJyi.mjs} +36 -36
- package/{VListItem-BnxAmKd_.mjs.map → VListItem-BT-NXJyi.mjs.map} +1 -1
- package/{VMenu-BSB7YSpb.mjs → VMenu-Bk2NN8qb.mjs} +3 -3
- package/{VMenu-BSB7YSpb.mjs.map → VMenu-Bk2NN8qb.mjs.map} +1 -1
- package/{VPicker-DMOVvCIE.mjs → VPicker-DmY6CdER.mjs} +4 -4
- package/{VPicker-DMOVvCIE.mjs.map → VPicker-DmY6CdER.mjs.map} +1 -1
- package/{VRadioGroup-ByydeX8x.mjs → VRadioGroup-BO7XdtLS.mjs} +15 -15
- package/{VRadioGroup-ByydeX8x.mjs.map → VRadioGroup-BO7XdtLS.mjs.map} +1 -1
- package/{VRow-Dmn82Xaa.mjs → VRow-BhNJcY5-.mjs} +7 -7
- package/{VRow-Dmn82Xaa.mjs.map → VRow-BhNJcY5-.mjs.map} +1 -1
- package/{VSheet-B9ALb0PQ.mjs → VSheet-Bkr-m6FE.mjs} +2 -2
- package/{VSheet-B9ALb0PQ.mjs.map → VSheet-Bkr-m6FE.mjs.map} +1 -1
- package/{actions-BEmdy8bu.mjs → actions-ORUmfJR5.mjs} +14 -14
- package/{actions-BEmdy8bu.mjs.map → actions-ORUmfJR5.mjs.map} +1 -1
- package/{alert-DftADRGk.mjs → alert-pFT7pWTZ.mjs} +97 -94
- package/alert-pFT7pWTZ.mjs.map +1 -0
- package/{bigint-DiC37zMo.mjs → bigint-CCM0aPaS.mjs} +6 -6
- package/{bigint-DiC37zMo.mjs.map → bigint-CCM0aPaS.mjs.map} +1 -1
- package/{boolean-DZDryWHA.mjs → boolean-1-MOJPSu.mjs} +43 -43
- package/{boolean-DZDryWHA.mjs.map → boolean-1-MOJPSu.mjs.map} +1 -1
- package/{clipboard--JAZokR3.mjs → clipboard-CdGABqm1.mjs} +49 -49
- package/{clipboard--JAZokR3.mjs.map → clipboard-CdGABqm1.mjs.map} +1 -1
- package/{colorUtils-I1lKouL3.mjs → colorUtils-BdpqbLZS.mjs} +3 -3
- package/{colorUtils-I1lKouL3.mjs.map → colorUtils-BdpqbLZS.mjs.map} +1 -1
- package/{common-BDwb9uGU.mjs → common-Bi5RUD-n.mjs} +13 -13
- package/{common-BDwb9uGU.mjs.map → common-Bi5RUD-n.mjs.map} +1 -1
- package/{component-C-qp70Rp.mjs → component-DhEJuSE6.mjs} +2 -2
- package/{component-C-qp70Rp.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 +11 -11
- package/{console-CAez8ceh.mjs → console-Dgoi3FwV.mjs} +2 -2
- package/{console-CAez8ceh.mjs.map → console-Dgoi3FwV.mjs.map} +1 -1
- package/{custom-Tm6_792A.mjs → custom-DQmbYYPh.mjs} +21 -21
- package/{custom-Tm6_792A.mjs.map → custom-DQmbYYPh.mjs.map} +1 -1
- package/{date-CxaBVvlO.mjs → date-E_8RP3gK.mjs} +21 -21
- package/{date-CxaBVvlO.mjs.map → date-E_8RP3gK.mjs.map} +1 -1
- package/{date_time-DhABUkGT.mjs → date_time-BmYl2TFi.mjs} +348 -348
- package/{date_time-DhABUkGT.mjs.map → date_time-BmYl2TFi.mjs.map} +1 -1
- package/{display-DazBkrbZ.mjs → display-B089h_sz.mjs} +27 -25
- package/display-B089h_sz.mjs.map +1 -0
- package/{display-DPktlWOz.mjs → display-dv4cOwRN.mjs} +9 -9
- package/{display-DPktlWOz.mjs.map → display-dv4cOwRN.mjs.map} +1 -1
- package/{display-BdjbLG1_.mjs → display-fXo4JeIS.mjs} +15 -15
- package/{display-BdjbLG1_.mjs.map → display-fXo4JeIS.mjs.map} +1 -1
- package/{elevation-DFBVIqom.mjs → elevation-YNOj0hSa.mjs} +38 -38
- package/{elevation-DFBVIqom.mjs.map → elevation-YNOj0hSa.mjs.map} +1 -1
- package/{enum-KB4xPkOL.mjs → enum-8itqseZa.mjs} +22 -22
- package/{enum-KB4xPkOL.mjs.map → enum-8itqseZa.mjs.map} +1 -1
- package/factories.mjs +1 -1
- package/{field_composer-CLJuJevf.mjs → field_composer-ugYyDQNY.mjs} +3 -3
- package/{field_composer-CLJuJevf.mjs.map → field_composer-ugYyDQNY.mjs.map} +1 -1
- package/{form-9YRVcrxM.mjs → form-BtDnRXYm.mjs} +45 -45
- package/{form-9YRVcrxM.mjs.map → form-BtDnRXYm.mjs.map} +1 -1
- package/{guards-BrpRx6ly.mjs → guards-Cby4QwzY.mjs} +2 -2
- package/{guards-BrpRx6ly.mjs.map → guards-Cby4QwzY.mjs.map} +1 -1
- package/guards.mjs +4 -4
- package/helpers.mjs +6 -6
- package/{index-BkjiQEyJ.mjs → index-3XRUa28C.mjs} +12 -12
- package/{index-BkjiQEyJ.mjs.map → index-3XRUa28C.mjs.map} +1 -1
- package/{index-DDobJ49b.mjs → index-BCQmj6cf.mjs} +13 -13
- package/{index-DDobJ49b.mjs.map → index-BCQmj6cf.mjs.map} +1 -1
- package/{index-UxsEIZVi.mjs → index-BgevbZTt.mjs} +10 -10
- package/{index-UxsEIZVi.mjs.map → index-BgevbZTt.mjs.map} +1 -1
- package/{index-CWwCXXNl.mjs → index-C-PCfO1S.mjs} +2 -2
- package/{index-CWwCXXNl.mjs.map → index-C-PCfO1S.mjs.map} +1 -1
- package/{index-DBXOwXpe.mjs → index-CSyOYGEi.mjs} +8 -8
- package/{index-DBXOwXpe.mjs.map → index-CSyOYGEi.mjs.map} +1 -1
- package/{index-DwOjHbRP.mjs → index-D9i1PRci.mjs} +5700 -5697
- package/{index-DwOjHbRP.mjs.map → index-D9i1PRci.mjs.map} +1 -1
- package/{index-BaOM0Cyz.mjs → index-DWv9iKZs.mjs} +21 -21
- package/{index-BaOM0Cyz.mjs.map → index-DWv9iKZs.mjs.map} +1 -1
- package/{index-Bs4A8qUO.mjs → index-VpcXNOpn.mjs} +2 -2
- package/{index-Bs4A8qUO.mjs.map → index-VpcXNOpn.mjs.map} +1 -1
- package/{index-BsazeUn6.mjs → index-fiZltUBs.mjs} +3 -3
- package/{index-BsazeUn6.mjs.map → index-fiZltUBs.mjs.map} +1 -1
- package/index.mjs +47 -47
- package/{integer-uzh0nwpb.mjs → integer-W2_SlKV1.mjs} +5 -5
- package/{integer-uzh0nwpb.mjs.map → integer-W2_SlKV1.mjs.map} +1 -1
- package/{mdi-C9DbASEx.mjs → mdi-DC1jeTJJ.mjs} +18 -18
- package/{mdi-C9DbASEx.mjs.map → mdi-DC1jeTJJ.mjs.map} +1 -1
- package/{number-CfHLDQFY.mjs → number-DgwZBxOw.mjs} +85 -85
- package/{number-CfHLDQFY.mjs.map → number-DgwZBxOw.mjs.map} +1 -1
- package/package.json +32 -32
- package/{position-CPuNp03H.mjs → position-B9VPkbhU.mjs} +2 -2
- package/{position-CPuNp03H.mjs.map → position-B9VPkbhU.mjs.map} +1 -1
- package/private/control-button-bar/props.d.ts +10 -10
- package/private/fields/bigint.d.ts +128 -128
- package/private/fields/boolean.d.ts +68 -68
- package/private/fields/common.d.ts +16 -16
- package/private/fields/custom.d.ts +2 -2
- package/private/fields/date.d.ts +24 -24
- package/private/fields/date_time.d.ts +24 -24
- package/private/fields/enum.d.ts +68 -68
- package/private/fields/integer.d.ts +107 -107
- package/private/fields/multiple.d.ts +17 -17
- package/private/fields/number.d.ts +46 -46
- package/private/fields/read_mode_renderer.d.ts +17 -17
- package/private/fields/string.d.ts +24 -24
- package/private/fields/unsigned_integer.d.ts +107 -107
- package/private/filtration/filter_group_condition_element.d.ts +36 -36
- package/private/resourceful-index/index.d.ts +17 -17
- package/private/resourceful-index/partials/_controls.d.ts +1 -1
- package/private/resourceful-index/partials/_per_page_selector.d.ts +1 -1
- package/private/resourceful-index/props.d.ts +34 -34
- package/private/resourceful-record/form.d.ts +12 -12
- package/private/resourceful-record/index.d.ts +13 -13
- package/private/resourceful-record/props.d.ts +20 -20
- package/private/sortable/index.d.ts +1 -1
- package/{props-KPFuptNy.mjs → props-COvhL78L.mjs} +8 -8
- package/{props-KPFuptNy.mjs.map → props-COvhL78L.mjs.map} +1 -1
- package/{props-Cq9daNwa.mjs → props-GYFmAF5-.mjs} +6 -6
- package/{props-Cq9daNwa.mjs.map → props-GYFmAF5-.mjs.map} +1 -1
- package/{renderers-COT3aAu3.mjs → renderers-BP4li2WT.mjs} +13 -13
- package/{renderers-COT3aAu3.mjs.map → renderers-BP4li2WT.mjs.map} +1 -1
- package/{string-DvwPf_Ob.mjs → string-RfpfCwEn.mjs} +180 -180
- package/{string-DvwPf_Ob.mjs.map → string-RfpfCwEn.mjs.map} +1 -1
- package/{unsigned_integer-C9nrNAn_.mjs → unsigned_integer-Cg6tbRJj.mjs} +4 -4
- package/{unsigned_integer-C9nrNAn_.mjs.map → unsigned_integer-Cg6tbRJj.mjs.map} +1 -1
- package/useRender-CfNJA_8a.mjs +9 -0
- package/{useRender-Dpj9Jrbr.mjs.map → useRender-CfNJA_8a.mjs.map} +1 -1
- package/{utils-DxV2ZNaE.mjs → utils-D3ZGaTyv.mjs} +50 -50
- package/{utils-DxV2ZNaE.mjs.map → utils-D3ZGaTyv.mjs.map} +1 -1
- package/{validation-CZ6xx4aX.mjs → validation-BF_JkNWB.mjs} +4 -4
- package/{validation-CZ6xx4aX.mjs.map → validation-BF_JkNWB.mjs.map} +1 -1
- package/alert-DftADRGk.mjs.map +0 -1
- package/display-DazBkrbZ.mjs.map +0 -1
- package/useRender-Dpj9Jrbr.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-
|
|
5
|
-
import { u as I } from "./display-
|
|
6
|
-
import { s as m, r as re,
|
|
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-
|
|
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-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-
|
|
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:
|
|
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-BCQmj6cf.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-DDobJ49b.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,
|
|
2
|
-
import { m as N, a as U, I as C, V as E } from "./elevation-
|
|
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-
|
|
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:
|
|
99
|
+
elevation: j,
|
|
100
100
|
inOverflowMenu: h
|
|
101
|
-
} = T(O),
|
|
101
|
+
} = T(O), w = d(() => {
|
|
102
102
|
if (b.value)
|
|
103
103
|
return {
|
|
104
104
|
height: A(b.value)
|
|
105
105
|
};
|
|
106
|
-
}),
|
|
106
|
+
}), x = d(() => ({
|
|
107
107
|
divided: !0,
|
|
108
108
|
color: V.value,
|
|
109
109
|
density: S.value,
|
|
110
|
-
style:
|
|
111
|
-
elevation:
|
|
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,
|
|
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-
|
|
231
|
+
//# sourceMappingURL=index-BgevbZTt.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-UxsEIZVi.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
|
+
{"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-
|
|
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-
|
|
39
|
+
//# sourceMappingURL=index-C-PCfO1S.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
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-
|
|
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-DC1jeTJJ.mjs";
|
|
4
|
+
import { C as R } from "./index-DWv9iKZs.mjs";
|
|
5
5
|
import { p as t } from "./http-Crw0XAYj.mjs";
|
|
6
|
-
import {
|
|
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-
|
|
9
|
-
const
|
|
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
|
-
|
|
68
|
+
T as A
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=index-
|
|
70
|
+
//# sourceMappingURL=index-CSyOYGEi.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
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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"}
|