@flux-ui/components 3.0.0-next.57 → 3.0.0-next.58

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/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Comment, Fragment, Teleport, Transition, TransitionGroup, cloneVNode, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, customRef, defineComponent, getCurrentInstance, guardReactiveProps, h, inject, isRef, isVNode, markRaw, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, provide, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowReactive, toDisplayString, toHandlers, toRef, unref, useId, useModel, useSlots, useTemplateRef, vModelCheckbox, vModelText, watch, watchEffect, withCtx, withDirectives, withKeys, withModifiers } from "vue";
1
+ import { Comment, Fragment, Teleport, Text, Transition, TransitionGroup, cloneVNode, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, customRef, defineComponent, getCurrentInstance, guardReactiveProps, h, inject, isRef, isVNode, markRaw, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, provide, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowReactive, toDisplayString, toHandlers, toRef, unref, useId, useModel, useSlots, useTemplateRef, vModelCheckbox, vModelText, watch, watchEffect, withCtx, withDirectives, withKeys, withModifiers } from "vue";
2
2
  import { DateTime } from "luxon";
3
3
  //#region \0rolldown/runtime.js
4
4
  var __defProp = Object.defineProperty;
@@ -4525,17 +4525,17 @@ function he$1(e, t, n) {
4525
4525
  }
4526
4526
  //#endregion
4527
4527
  //#region src/composable/private/useAsyncFilterOptions.ts
4528
- function useAsyncFilterOptions_default({ currentValueIds, modelSearch, fetchOptions: fetchOptionsProp, fetchRelevant: fetchRelevantProp, fetchSearch: fetchSearchProp }) {
4528
+ function useAsyncFilterOptions_default(params) {
4529
4529
  const { isLoading, loaded } = Z$1();
4530
- const debouncedModelSearch = Y$1(modelSearch, 150);
4531
- const fetchOptions = computed(() => loaded(fetchOptionsProp));
4532
- const fetchRelevant = computed(() => loaded(fetchRelevantProp));
4533
- const fetchSearch = computed(() => loaded(fetchSearchProp));
4530
+ const debouncedModelSearch = Y$1(params.modelSearch, 150);
4531
+ const fetchOptions = computed(() => loaded(params.fetchOptions));
4532
+ const fetchRelevant = computed(() => loaded(params.fetchRelevant));
4533
+ const fetchSearch = computed(() => loaded(params.fetchSearch));
4534
4534
  const selectedOptions = ref([]);
4535
4535
  const visibleOptions = ref([]);
4536
4536
  const options = computed(() => {
4537
4537
  const options = [];
4538
- const search = unref(modelSearch);
4538
+ const search = unref(params.modelSearch);
4539
4539
  const selected = unref(selectedOptions);
4540
4540
  const visible = unref(visibleOptions);
4541
4541
  visible.forEach((vo) => options.push(vo));
@@ -4546,7 +4546,7 @@ function useAsyncFilterOptions_default({ currentValueIds, modelSearch, fetchOpti
4546
4546
  });
4547
4547
  return options;
4548
4548
  });
4549
- watch(currentValueIds, async (ids) => {
4549
+ watch(params.currentValueIds, async (ids) => {
4550
4550
  if (ids.length === 0) return;
4551
4551
  selectedOptions.value = await unref(fetchOptions)(ids);
4552
4552
  }, { immediate: true });
@@ -7984,13 +7984,13 @@ var Icon_module_default = {
7984
7984
  };
7985
7985
  //#endregion
7986
7986
  //#region src/component/FluxIcon.vue?vue&type=script&setup=true&lang.ts
7987
- var _hoisted_1$54 = [
7987
+ var _hoisted_1$57 = [
7988
7988
  "viewBox",
7989
7989
  "role",
7990
7990
  "aria-hidden",
7991
7991
  "aria-label"
7992
7992
  ];
7993
- var _hoisted_2$22 = ["d"];
7993
+ var _hoisted_2$23 = ["d"];
7994
7994
  //#endregion
7995
7995
  //#region src/component/FluxIcon.vue
7996
7996
  var FluxIcon_default = /* @__PURE__ */ defineComponent({
@@ -8036,8 +8036,8 @@ var FluxIcon_default = /* @__PURE__ */ defineComponent({
8036
8036
  return openBlock(), createElementBlock("path", {
8037
8037
  d: path,
8038
8038
  fill: "currentColor"
8039
- }, null, 8, _hoisted_2$22);
8040
- }), 256))], 14, _hoisted_1$54)) : (openBlock(), createElementBlock("i", {
8039
+ }, null, 8, _hoisted_2$23);
8040
+ }), 256))], 14, _hoisted_1$57)) : (openBlock(), createElementBlock("i", {
8041
8041
  key: 1,
8042
8042
  class: normalizeClass(unref(Icon_module_default).icon)
8043
8043
  }, null, 2));
@@ -8046,7 +8046,7 @@ var FluxIcon_default = /* @__PURE__ */ defineComponent({
8046
8046
  });
8047
8047
  //#endregion
8048
8048
  //#region src/component/FluxPressable.vue?vue&type=script&setup=true&lang.ts
8049
- var _hoisted_1$53 = [
8049
+ var _hoisted_1$56 = [
8050
8050
  "href",
8051
8051
  "rel",
8052
8052
  "target"
@@ -8097,7 +8097,7 @@ var FluxPressable_default = /* @__PURE__ */ defineComponent({
8097
8097
  rel: __props.rel,
8098
8098
  target: __props.target,
8099
8099
  onClick: _cache[1] || (_cache[1] = ($event) => onClick($event))
8100
- }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$53)) : __props.componentType === "button" ? (openBlock(), createElementBlock("button", mergeProps({ key: 2 }, $attrs, toHandlers(hoverListeners, true), { onClick: _cache[2] || (_cache[2] = ($event) => onClick($event)) }), [renderSlot(_ctx.$slots, "default")], 16)) : (openBlock(), createElementBlock("div", mergeProps({ key: 3 }, $attrs, toHandlers(hoverListeners, true), { onClick }), [renderSlot(_ctx.$slots, "default")], 16));
8100
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$56)) : __props.componentType === "button" ? (openBlock(), createElementBlock("button", mergeProps({ key: 2 }, $attrs, toHandlers(hoverListeners, true), { onClick: _cache[2] || (_cache[2] = ($event) => onClick($event)) }), [renderSlot(_ctx.$slots, "default")], 16)) : (openBlock(), createElementBlock("div", mergeProps({ key: 3 }, $attrs, toHandlers(hoverListeners, true), { onClick }), [renderSlot(_ctx.$slots, "default")], 16));
8101
8101
  };
8102
8102
  }
8103
8103
  });
@@ -8528,7 +8528,7 @@ var Flyout_module_default = {
8528
8528
  };
8529
8529
  //#endregion
8530
8530
  //#region src/component/FluxFlyout.vue?vue&type=script&setup=true&lang.ts
8531
- var _hoisted_1$52 = ["onKeydown"];
8531
+ var _hoisted_1$55 = ["onKeydown"];
8532
8532
  //#endregion
8533
8533
  //#region src/component/FluxFlyout.vue
8534
8534
  var FluxFlyout_default = /* @__PURE__ */ defineComponent({
@@ -8665,7 +8665,7 @@ var FluxFlyout_default = /* @__PURE__ */ defineComponent({
8665
8665
  openerHeight: openerHeight.value
8666
8666
  })))]),
8667
8667
  _: 3
8668
- }, 8, ["class", "style"])) : createCommentVNode("", true)], 42, _hoisted_1$52)], 6);
8668
+ }, 8, ["class", "style"])) : createCommentVNode("", true)], 42, _hoisted_1$55)], 6);
8669
8669
  };
8670
8670
  }
8671
8671
  });
@@ -9631,8 +9631,8 @@ var Avatar_module_default = {
9631
9631
  };
9632
9632
  //#endregion
9633
9633
  //#region src/component/FluxAvatar.vue?vue&type=script&setup=true&lang.ts
9634
- var _hoisted_1$51 = ["alt", "src"];
9635
- var _hoisted_2$21 = { key: 0 };
9634
+ var _hoisted_1$54 = ["alt", "src"];
9635
+ var _hoisted_2$22 = { key: 0 };
9636
9636
  //#endregion
9637
9637
  //#region src/component/FluxAvatar.vue
9638
9638
  var FluxAvatar_default = /* @__PURE__ */ defineComponent({
@@ -9718,10 +9718,10 @@ var FluxAvatar_default = /* @__PURE__ */ defineComponent({
9718
9718
  class: normalizeClass(unref(Avatar_module_default).avatarImage),
9719
9719
  alt: __props.alt,
9720
9720
  src: __props.src
9721
- }, null, 10, _hoisted_1$51)) : (openBlock(), createElementBlock("div", {
9721
+ }, null, 10, _hoisted_1$54)) : (openBlock(), createElementBlock("div", {
9722
9722
  key: 1,
9723
9723
  class: normalizeClass(__props.fallback === "colorized" ? unref(Avatar_module_default).avatarFallbackColorized : unref(Avatar_module_default).avatarFallbackNeutral)
9724
- }, [__props.fallbackInitials ? (openBlock(), createElementBlock("span", _hoisted_2$21, toDisplayString(__props.fallbackInitials), 1)) : __props.fallbackIcon ? (openBlock(), createBlock(FluxIcon_default, {
9724
+ }, [__props.fallbackInitials ? (openBlock(), createElementBlock("span", _hoisted_2$22, toDisplayString(__props.fallbackInitials), 1)) : __props.fallbackIcon ? (openBlock(), createBlock(FluxIcon_default, {
9725
9725
  key: 1,
9726
9726
  name: __props.fallbackIcon
9727
9727
  }, null, 8, ["name"])) : createCommentVNode("", true)], 2)),
@@ -9781,7 +9781,7 @@ var Badge_module_default = {
9781
9781
  };
9782
9782
  //#endregion
9783
9783
  //#region src/component/FluxBadge.vue?vue&type=script&setup=true&lang.ts
9784
- var _hoisted_1$50 = ["aria-label"];
9784
+ var _hoisted_1$53 = ["aria-label"];
9785
9785
  //#endregion
9786
9786
  //#region src/component/FluxBadge.vue
9787
9787
  var FluxBadge_default = /* @__PURE__ */ defineComponent({
@@ -9847,7 +9847,7 @@ var FluxBadge_default = /* @__PURE__ */ defineComponent({
9847
9847
  type: "button",
9848
9848
  "aria-label": unref(translate)("flux.delete"),
9849
9849
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => onDeleteClick(), ["stop"]))
9850
- }, [createVNode(FluxIcon_default, { name: "xmark" })], 10, _hoisted_1$50)) : createCommentVNode("", true)
9850
+ }, [createVNode(FluxIcon_default, { name: "xmark" })], 10, _hoisted_1$53)) : createCommentVNode("", true)
9851
9851
  ]),
9852
9852
  _: 1
9853
9853
  }, 8, [
@@ -10112,8 +10112,8 @@ var FluxPaneFooter_default = /* @__PURE__ */ defineComponent({
10112
10112
  });
10113
10113
  //#endregion
10114
10114
  //#region src/component/FluxPaneHeader.vue?vue&type=script&setup=true&lang.ts
10115
- var _hoisted_1$49 = { key: 0 };
10116
- var _hoisted_2$20 = { key: 1 };
10115
+ var _hoisted_1$52 = { key: 0 };
10116
+ var _hoisted_2$21 = { key: 1 };
10117
10117
  //#endregion
10118
10118
  //#region src/component/FluxPaneHeader.vue
10119
10119
  var FluxPaneHeader_default = /* @__PURE__ */ defineComponent({
@@ -10136,7 +10136,7 @@ var FluxPaneHeader_default = /* @__PURE__ */ defineComponent({
10136
10136
  __props.title || __props.subtitle ? (openBlock(), createElementBlock("div", {
10137
10137
  key: 1,
10138
10138
  class: normalizeClass(unref(Pane_module_default).paneHeaderCaption)
10139
- }, [__props.title ? (openBlock(), createElementBlock("strong", _hoisted_1$49, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.subtitle ? (openBlock(), createElementBlock("span", _hoisted_2$20, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true),
10139
+ }, [__props.title ? (openBlock(), createElementBlock("strong", _hoisted_1$52, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.subtitle ? (openBlock(), createElementBlock("span", _hoisted_2$21, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true),
10140
10140
  renderSlot(_ctx.$slots, "after")
10141
10141
  ], 2);
10142
10142
  };
@@ -10284,7 +10284,7 @@ var Menu_module_default = {
10284
10284
  };
10285
10285
  //#endregion
10286
10286
  //#region src/component/FluxMenuItem.vue?vue&type=script&setup=true&lang.ts
10287
- var _hoisted_1$48 = ["src", "alt"];
10287
+ var _hoisted_1$51 = ["src", "alt"];
10288
10288
  //#endregion
10289
10289
  //#region src/component/FluxMenuItem.vue
10290
10290
  var FluxMenuItem_default = /* @__PURE__ */ defineComponent({
@@ -10361,7 +10361,7 @@ var FluxMenuItem_default = /* @__PURE__ */ defineComponent({
10361
10361
  class: normalizeClass(unref(Menu_module_default).menuItemImage),
10362
10362
  src: __props.imageSrc,
10363
10363
  alt: __props.imageAlt ?? ""
10364
- }, null, 10, _hoisted_1$48)]),
10364
+ }, null, 10, _hoisted_1$51)]),
10365
10365
  key: "1"
10366
10366
  } : slots.before ? {
10367
10367
  name: "iconLeading",
@@ -10533,8 +10533,8 @@ var Form_module_default = {
10533
10533
  };
10534
10534
  //#endregion
10535
10535
  //#region src/component/FluxFormInput.vue?vue&type=script&setup=true&lang.ts
10536
- var _hoisted_1$47 = ["aria-disabled"];
10537
- var _hoisted_2$19 = [
10536
+ var _hoisted_1$50 = ["aria-disabled"];
10537
+ var _hoisted_2$20 = [
10538
10538
  "id",
10539
10539
  "name",
10540
10540
  "autocomplete",
@@ -10713,7 +10713,7 @@ var FluxFormInput_default = /* @__PURE__ */ defineComponent({
10713
10713
  onFocus: _cache[1] || (_cache[1] = ($event) => onFocus()),
10714
10714
  onInput,
10715
10715
  onKeydown: onKeyDown
10716
- }, null, 42, _hoisted_2$19),
10716
+ }, null, 42, _hoisted_2$20),
10717
10717
  __props.iconLeading ? (openBlock(), createBlock(FluxIcon_default, {
10718
10718
  key: 0,
10719
10719
  class: normalizeClass(unref(Form_module_default).formInputIconLeading),
@@ -10737,7 +10737,7 @@ var FluxFormInput_default = /* @__PURE__ */ defineComponent({
10737
10737
  class: normalizeClass(unref(Form_module_default).formInputIconTrailing),
10738
10738
  size: 18
10739
10739
  }, null, 8, ["class"])) : createCommentVNode("", true)
10740
- ], 10, _hoisted_1$47);
10740
+ ], 10, _hoisted_1$50);
10741
10741
  };
10742
10742
  }
10743
10743
  });
@@ -10863,7 +10863,7 @@ var FluxMenu_default = /* @__PURE__ */ defineComponent({
10863
10863
  });
10864
10864
  //#endregion
10865
10865
  //#region src/component/FluxTag.vue?vue&type=script&setup=true&lang.ts
10866
- var _hoisted_1$46 = ["aria-label"];
10866
+ var _hoisted_1$49 = ["aria-label"];
10867
10867
  //#endregion
10868
10868
  //#region src/component/FluxTag.vue
10869
10869
  var FluxTag_default = /* @__PURE__ */ defineComponent({
@@ -10931,7 +10931,7 @@ var FluxTag_default = /* @__PURE__ */ defineComponent({
10931
10931
  type: "button",
10932
10932
  "aria-label": unref(translate)("flux.delete"),
10933
10933
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => onDeleteClick(), ["stop"]))
10934
- }, [createVNode(FluxIcon_default, { name: "xmark" })], 10, _hoisted_1$46)) : createCommentVNode("", true)
10934
+ }, [createVNode(FluxIcon_default, { name: "xmark" })], 10, _hoisted_1$49)) : createCommentVNode("", true)
10935
10935
  ]),
10936
10936
  _: 1
10937
10937
  }, 8, [
@@ -11255,7 +11255,7 @@ var FluxTicks_default = /* @__PURE__ */ defineComponent({
11255
11255
  });
11256
11256
  //#endregion
11257
11257
  //#region src/component/primitive/SliderBase.vue?vue&type=script&setup=true&lang.ts
11258
- var _hoisted_1$45 = ["aria-disabled"];
11258
+ var _hoisted_1$48 = ["aria-disabled"];
11259
11259
  //#endregion
11260
11260
  //#region src/component/primitive/SliderBase.vue
11261
11261
  var SliderBase_default = /* @__PURE__ */ defineComponent({
@@ -11308,13 +11308,13 @@ var SliderBase_default = /* @__PURE__ */ defineComponent({
11308
11308
  key: 0,
11309
11309
  lower: __props.min,
11310
11310
  upper: __props.max
11311
- }, null, 8, ["lower", "upper"])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")], 42, _hoisted_1$45);
11311
+ }, null, 8, ["lower", "upper"])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")], 42, _hoisted_1$48);
11312
11312
  };
11313
11313
  }
11314
11314
  });
11315
11315
  //#endregion
11316
11316
  //#region src/component/primitive/SliderThumb.vue?vue&type=script&setup=true&lang.ts
11317
- var _hoisted_1$44 = [
11317
+ var _hoisted_1$47 = [
11318
11318
  "aria-disabled",
11319
11319
  "aria-label",
11320
11320
  "aria-valuemax",
@@ -11373,7 +11373,7 @@ var SliderThumb_default = /* @__PURE__ */ defineComponent({
11373
11373
  type: "button",
11374
11374
  onKeydown: onKeyDown,
11375
11375
  onPointerdown: _cache[0] || (_cache[0] = ($event) => $emit("grab", $event))
11376
- }, null, 46, _hoisted_1$44);
11376
+ }, null, 46, _hoisted_1$47);
11377
11377
  };
11378
11378
  }
11379
11379
  });
@@ -11478,7 +11478,7 @@ var Divider_module_default = {
11478
11478
  };
11479
11479
  //#endregion
11480
11480
  //#region src/component/FluxSeparator.vue?vue&type=script&setup=true&lang.ts
11481
- var _hoisted_1$43 = ["aria-orientation"];
11481
+ var _hoisted_1$46 = ["aria-orientation"];
11482
11482
  //#endregion
11483
11483
  //#region src/component/FluxSeparator.vue
11484
11484
  var FluxSeparator_default = /* @__PURE__ */ defineComponent({
@@ -11490,7 +11490,7 @@ var FluxSeparator_default = /* @__PURE__ */ defineComponent({
11490
11490
  class: normalizeClass(__props.direction === "horizontal" ? unref(Divider_module_default).separatorHorizontal : unref(Divider_module_default).separatorVertical),
11491
11491
  role: "separator",
11492
11492
  "aria-orientation": __props.direction
11493
- }, null, 10, _hoisted_1$43);
11493
+ }, null, 10, _hoisted_1$46);
11494
11494
  };
11495
11495
  }
11496
11496
  });
@@ -11581,8 +11581,8 @@ var DatePicker_module_default = {
11581
11581
  };
11582
11582
  //#endregion
11583
11583
  //#region src/component/FluxCalendar.vue?vue&type=script&setup=true&lang.ts
11584
- var _hoisted_1$42 = ["aria-label", "onClick"];
11585
- var _hoisted_2$18 = ["aria-label", "onClick"];
11584
+ var _hoisted_1$45 = ["aria-label", "onClick"];
11585
+ var _hoisted_2$19 = ["aria-label", "onClick"];
11586
11586
  //#endregion
11587
11587
  //#region src/component/FluxCalendar.vue
11588
11588
  var FluxCalendar_default = /* @__PURE__ */ defineComponent({
@@ -11648,7 +11648,7 @@ var FluxCalendar_default = /* @__PURE__ */ defineComponent({
11648
11648
  "aria-label": unref(translate)("flux.selectMonth"),
11649
11649
  type: "button",
11650
11650
  onClick: open
11651
- }, toDisplayString(unref(viewMonth)), 11, _hoisted_1$42)]),
11651
+ }, toDisplayString(unref(viewMonth)), 11, _hoisted_1$45)]),
11652
11652
  default: withCtx(({ close }) => [createElementVNode("div", { class: normalizeClass(unref(DatePicker_module_default).datePickerMonths) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(months), (month) => {
11653
11653
  return openBlock(), createBlock(FluxSecondaryButton_default, {
11654
11654
  key: month.label,
@@ -11664,7 +11664,7 @@ var FluxCalendar_default = /* @__PURE__ */ defineComponent({
11664
11664
  "aria-label": unref(translate)("flux.selectYear"),
11665
11665
  type: "button",
11666
11666
  onClick: open
11667
- }, toDisplayString(unref(viewYear)), 11, _hoisted_2$18)]),
11667
+ }, toDisplayString(unref(viewYear)), 11, _hoisted_2$19)]),
11668
11668
  default: withCtx(({ close }) => [createElementVNode("div", { class: normalizeClass(unref(DatePicker_module_default).datePickerYears) }, [
11669
11669
  createVNode(FluxSecondaryButton_default, {
11670
11670
  "aria-label": unref(translate)("flux.previousYears"),
@@ -11770,8 +11770,8 @@ var FluxCalendarEvent_default = /* @__PURE__ */ defineComponent({
11770
11770
  });
11771
11771
  //#endregion
11772
11772
  //#region src/component/FluxCheckbox.vue?vue&type=script&setup=true&lang.ts
11773
- var _hoisted_1$41 = ["for"];
11774
- var _hoisted_2$17 = [
11773
+ var _hoisted_1$44 = ["for"];
11774
+ var _hoisted_2$18 = [
11775
11775
  "id",
11776
11776
  "disabled",
11777
11777
  "aria-disabled",
@@ -11825,7 +11825,7 @@ var FluxCheckbox_default = /* @__PURE__ */ defineComponent({
11825
11825
  "aria-readonly": __props.isReadonly ? true : void 0,
11826
11826
  "aria-invalid": __props.error ? true : void 0,
11827
11827
  onClick
11828
- }, null, 10, _hoisted_2$17), [[vModelCheckbox, modelValue.value]]),
11828
+ }, null, 10, _hoisted_2$18), [[vModelCheckbox, modelValue.value]]),
11829
11829
  createElementVNode("button", {
11830
11830
  "aria-hidden": "true",
11831
11831
  class: normalizeClass(unref(Form_module_default).checkboxElement),
@@ -11843,7 +11843,7 @@ var FluxCheckbox_default = /* @__PURE__ */ defineComponent({
11843
11843
  key: 0,
11844
11844
  class: normalizeClass(unref(Form_module_default).checkboxLabel)
11845
11845
  }, toDisplayString(__props.label), 3)) : createCommentVNode("", true)
11846
- ], 10, _hoisted_1$41);
11846
+ ], 10, _hoisted_1$44);
11847
11847
  };
11848
11848
  }
11849
11849
  });
@@ -12047,8 +12047,8 @@ var FluxCommandPaletteItem_default = /* @__PURE__ */ defineComponent({
12047
12047
  });
12048
12048
  //#endregion
12049
12049
  //#region src/component/FluxCommandPalette.vue?vue&type=script&setup=true&lang.ts
12050
- var _hoisted_1$40 = ["placeholder", "value"];
12051
- var _hoisted_2$16 = ["onClick"];
12050
+ var _hoisted_1$43 = ["placeholder", "value"];
12051
+ var _hoisted_2$17 = ["onClick"];
12052
12052
  //#endregion
12053
12053
  //#region src/component/FluxCommandPalette.vue
12054
12054
  var FluxCommandPalette_default = /* @__PURE__ */ defineComponent({
@@ -12175,7 +12175,7 @@ var FluxCommandPalette_default = /* @__PURE__ */ defineComponent({
12175
12175
  value: unref(search),
12176
12176
  type: "text",
12177
12177
  onInput: _cache[2] || (_cache[2] = ($event) => unref(setSearch)($event.target.value))
12178
- }, null, 42, _hoisted_1$40),
12178
+ }, null, 42, _hoisted_1$43),
12179
12179
  createVNode(FluxTag_default, {
12180
12180
  "is-keyboard-shortcut": "",
12181
12181
  label: "Esc"
@@ -12202,7 +12202,7 @@ var FluxCommandPalette_default = /* @__PURE__ */ defineComponent({
12202
12202
  key: 0,
12203
12203
  class: normalizeClass(unref(CommandPalette_module_default).commandPaletteTabIcon),
12204
12204
  name: tab.icon
12205
- }, null, 8, ["class", "name"])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(tab.label), 1)], 42, _hoisted_2$16);
12205
+ }, null, 8, ["class", "name"])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(tab.label), 1)], 42, _hoisted_2$17);
12206
12206
  }), 128))], 2)) : createCommentVNode("", true),
12207
12207
  createVNode(FluxWindowTransition_default, { "is-back": unref(isTransitioningBack) }, {
12208
12208
  default: withCtx(() => [(openBlock(), createElementBlock("div", {
@@ -12279,8 +12279,8 @@ var Comment_module_default = {
12279
12279
  };
12280
12280
  //#endregion
12281
12281
  //#region src/component/FluxComment.vue?vue&type=script&setup=true&lang.ts
12282
- var _hoisted_1$39 = { key: 0 };
12283
- var _hoisted_2$15 = ["datetime"];
12282
+ var _hoisted_1$42 = { key: 0 };
12283
+ var _hoisted_2$16 = ["datetime"];
12284
12284
  //#endregion
12285
12285
  //#region src/component/FluxComment.vue
12286
12286
  var FluxComment_default = /* @__PURE__ */ defineComponent({
@@ -12324,10 +12324,10 @@ var FluxComment_default = /* @__PURE__ */ defineComponent({
12324
12324
  key: 0,
12325
12325
  class: normalizeClass(unref(Comment_module_default).commentTyping)
12326
12326
  }, null, 2)) : renderSlot(_ctx.$slots, "default", { key: 1 })], 2),
12327
- createElementVNode("div", { class: normalizeClass(unref(Comment_module_default).commentFooter) }, [__props.isReceived && __props.postedBy ? (openBlock(), createElementBlock("span", _hoisted_1$39, toDisplayString(__props.postedBy), 1)) : createCommentVNode("", true), iso.value && relative.value && !__props.isTyping ? (openBlock(), createElementBlock("time", {
12327
+ createElementVNode("div", { class: normalizeClass(unref(Comment_module_default).commentFooter) }, [__props.isReceived && __props.postedBy ? (openBlock(), createElementBlock("span", _hoisted_1$42, toDisplayString(__props.postedBy), 1)) : createCommentVNode("", true), iso.value && relative.value && !__props.isTyping ? (openBlock(), createElementBlock("time", {
12328
12328
  key: 1,
12329
12329
  datetime: iso.value
12330
- }, toDisplayString(isJustNowVisible.value ? unref(translate)("flux.justNow") : relative.value), 9, _hoisted_2$15)) : createCommentVNode("", true)], 2)
12330
+ }, toDisplayString(isJustNowVisible.value ? unref(translate)("flux.justNow") : relative.value), 9, _hoisted_2$16)) : createCommentVNode("", true)], 2)
12331
12331
  ], 2);
12332
12332
  };
12333
12333
  }
@@ -12343,7 +12343,7 @@ var CoordinatePicker_module_default = {
12343
12343
  };
12344
12344
  //#endregion
12345
12345
  //#region src/component/primitive/CoordinatePickerThumb.vue?vue&type=script&setup=true&lang.ts
12346
- var _hoisted_1$38 = [
12346
+ var _hoisted_1$41 = [
12347
12347
  "aria-disabled",
12348
12348
  "aria-valuetext",
12349
12349
  "tabindex"
@@ -12399,13 +12399,13 @@ var CoordinatePickerThumb_default = /* @__PURE__ */ defineComponent({
12399
12399
  type: "button",
12400
12400
  onKeydown: onKeyDown,
12401
12401
  onPointerdown: _cache[0] || (_cache[0] = ($event) => $emit("grab", $event))
12402
- }, null, 46, _hoisted_1$38);
12402
+ }, null, 46, _hoisted_1$41);
12403
12403
  };
12404
12404
  }
12405
12405
  });
12406
12406
  //#endregion
12407
12407
  //#region src/component/primitive/CoordinatePicker.vue?vue&type=script&setup=true&lang.ts
12408
- var _hoisted_1$37 = ["aria-disabled", "aria-label"];
12408
+ var _hoisted_1$40 = ["aria-disabled", "aria-label"];
12409
12409
  //#endregion
12410
12410
  //#region src/component/primitive/CoordinatePicker.vue
12411
12411
  var CoordinatePicker_default = /* @__PURE__ */ defineComponent({
@@ -12501,13 +12501,13 @@ var CoordinatePicker_default = /* @__PURE__ */ defineComponent({
12501
12501
  "disabled",
12502
12502
  "is-dragging",
12503
12503
  "position"
12504
- ])], 42, _hoisted_1$37);
12504
+ ])], 42, _hoisted_1$40);
12505
12505
  };
12506
12506
  }
12507
12507
  });
12508
12508
  //#endregion
12509
12509
  //#region src/component/FluxFormFieldAddition.vue?vue&type=script&setup=true&lang.ts
12510
- var _hoisted_1$36 = { key: 1 };
12510
+ var _hoisted_1$39 = { key: 1 };
12511
12511
  //#endregion
12512
12512
  //#region src/component/FluxFormFieldAddition.vue
12513
12513
  var FluxFormFieldAddition_default = /* @__PURE__ */ defineComponent({
@@ -12529,7 +12529,7 @@ var FluxFormFieldAddition_default = /* @__PURE__ */ defineComponent({
12529
12529
  name: __props.icon,
12530
12530
  size: 16
12531
12531
  }, null, 8, ["class", "name"])) : createCommentVNode("", true),
12532
- __props.message ? (openBlock(), createElementBlock("span", _hoisted_1$36, toDisplayString(__props.message), 1)) : createCommentVNode("", true),
12532
+ __props.message ? (openBlock(), createElementBlock("span", _hoisted_1$39, toDisplayString(__props.message), 1)) : createCommentVNode("", true),
12533
12533
  renderSlot(_ctx.$slots, "default")
12534
12534
  ], 2);
12535
12535
  };
@@ -12537,7 +12537,7 @@ var FluxFormFieldAddition_default = /* @__PURE__ */ defineComponent({
12537
12537
  });
12538
12538
  //#endregion
12539
12539
  //#region src/component/FluxFormField.vue?vue&type=script&setup=true&lang.ts
12540
- var _hoisted_1$35 = ["for"];
12540
+ var _hoisted_1$38 = ["for"];
12541
12541
  //#endregion
12542
12542
  //#region src/component/FluxFormField.vue
12543
12543
  var FluxFormField_default = /* @__PURE__ */ defineComponent({
@@ -12578,7 +12578,7 @@ var FluxFormField_default = /* @__PURE__ */ defineComponent({
12578
12578
  label: __props.label,
12579
12579
  maxLength: __props.maxLength
12580
12580
  })))], 2)) : createCommentVNode("", true)
12581
- ], 10, _hoisted_1$35),
12581
+ ], 10, _hoisted_1$38),
12582
12582
  renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({ id: unref(id) }))),
12583
12583
  __props.currentLength && __props.maxLength && __props.maxLength > 0 ? (openBlock(), createElementBlock("span", {
12584
12584
  key: 0,
@@ -13118,14 +13118,14 @@ var FluxPrimaryButton_default = /* @__PURE__ */ defineComponent({
13118
13118
  });
13119
13119
  //#endregion
13120
13120
  //#region src/component/FluxColorSelect.vue?vue&type=script&setup=true&lang.ts
13121
- var _hoisted_1$34 = [
13121
+ var _hoisted_1$37 = [
13122
13122
  "aria-checked",
13123
13123
  "aria-label",
13124
13124
  "disabled",
13125
13125
  "tabindex",
13126
13126
  "onClick"
13127
13127
  ];
13128
- var _hoisted_2$14 = [
13128
+ var _hoisted_2$15 = [
13129
13129
  "disabled",
13130
13130
  "tabindex",
13131
13131
  "aria-label",
@@ -13193,7 +13193,7 @@ var FluxColorSelect_default = /* @__PURE__ */ defineComponent({
13193
13193
  class: normalizeClass(unref(Color_module_default).colorSelectCheck),
13194
13194
  name: "check",
13195
13195
  size: 14
13196
- }, null, 8, ["class"])], 14, _hoisted_1$34);
13196
+ }, null, 8, ["class"])], 14, _hoisted_1$37);
13197
13197
  }), 128)), __props.isCustomAllowed ? (openBlock(), createBlock(FluxFlyout_default, { key: 0 }, {
13198
13198
  opener: withCtx(({ open }) => [createElementVNode("button", {
13199
13199
  class: normalizeClass(unref(Color_module_default).colorSelectCustom),
@@ -13205,7 +13205,7 @@ var FluxColorSelect_default = /* @__PURE__ */ defineComponent({
13205
13205
  }, [createVNode(FluxIcon_default, {
13206
13206
  name: "ellipsis-h",
13207
13207
  size: 16
13208
- })], 10, _hoisted_2$14)]),
13208
+ })], 10, _hoisted_2$15)]),
13209
13209
  default: withCtx(({ close }) => [createVNode(FluxColorPicker_default, {
13210
13210
  modelValue: customColor.value,
13211
13211
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => customColor.value = $event),
@@ -13321,15 +13321,15 @@ var FluxFormSelect_default = /* @__PURE__ */ defineComponent({
13321
13321
  });
13322
13322
  //#endregion
13323
13323
  //#region src/css/component/Pagination.module.scss
13324
- var { "secondaryButtonIcon": _0$9, "secondaryButton": _1$3, "secondaryButtonLabel": _2$1 } = Button_module_default;
13324
+ var { "secondaryButton": _0$9, "secondaryButtonIcon": _1$3, "secondaryButtonLabel": _2$1 } = Button_module_default;
13325
13325
  var Pagination_module_default = {
13326
13326
  pagination: `pagination`,
13327
- paginationButton: `pagination-button ${_1$3}`,
13327
+ paginationButton: `pagination-button ${_0$9}`,
13328
13328
  secondaryButton: `secondary-button`,
13329
13329
  paginationButtonArrow: `pagination-button-arrow`,
13330
13330
  paginationButtonCurrent: `pagination-button-current`,
13331
13331
  paginationButtonSpacer: `pagination-button-spacer`,
13332
- paginationButtonIcon: `pagination-button-icon ${_0$9}`,
13332
+ paginationButtonIcon: `pagination-button-icon ${_1$3}`,
13333
13333
  paginationButtonLabel: `pagination-button-label ${_2$1}`,
13334
13334
  paginationBar: `pagination-bar`,
13335
13335
  paginationBarLimit: `pagination-bar-limit`,
@@ -13410,7 +13410,7 @@ var FluxPaginationButton_default = /* @__PURE__ */ defineComponent({
13410
13410
  });
13411
13411
  //#endregion
13412
13412
  //#region src/component/FluxPagination.vue?vue&type=script&setup=true&lang.ts
13413
- var _hoisted_1$33 = ["aria-label"];
13413
+ var _hoisted_1$36 = ["aria-label"];
13414
13414
  //#endregion
13415
13415
  //#region src/component/FluxPagination.vue
13416
13416
  var FluxPagination_default = /* @__PURE__ */ defineComponent({
@@ -13525,7 +13525,7 @@ var FluxPagination_default = /* @__PURE__ */ defineComponent({
13525
13525
  "aria-label": unref(translate)("flux.next"),
13526
13526
  onClick: next
13527
13527
  }, null, 8, ["disabled", "aria-label"])) : createCommentVNode("", true)
13528
- ], 10, _hoisted_1$33);
13528
+ ], 10, _hoisted_1$36);
13529
13529
  };
13530
13530
  }
13531
13531
  });
@@ -13652,8 +13652,8 @@ var FluxTableRow_default = /* @__PURE__ */ defineComponent({
13652
13652
  });
13653
13653
  //#endregion
13654
13654
  //#region src/component/FluxTable.vue?vue&type=script&setup=true&lang.ts
13655
- var _hoisted_1$32 = { key: 0 };
13656
- var _hoisted_2$13 = { key: 1 };
13655
+ var _hoisted_1$35 = { key: 0 };
13656
+ var _hoisted_2$14 = { key: 1 };
13657
13657
  var _hoisted_3$6 = { key: 2 };
13658
13658
  //#endregion
13659
13659
  //#region src/component/FluxTable.vue
@@ -13695,8 +13695,8 @@ var FluxTable_default = /* @__PURE__ */ defineComponent({
13695
13695
  return openBlock(), createElementBlock("div", { class: normalizeClass(unref(Table_module_default).table) }, [
13696
13696
  createElementVNode("table", { class: normalizeClass(unref(Table_module_default).tableBase) }, [
13697
13697
  renderSlot(_ctx.$slots, "colgroups"),
13698
- slots.header ? (openBlock(), createElementBlock("thead", _hoisted_1$32, [renderSlot(_ctx.$slots, "header")])) : createCommentVNode("", true),
13699
- slots.default ? (openBlock(), createElementBlock("tbody", _hoisted_2$13, [renderSlot(_ctx.$slots, "default"), __props.fillColumns ? (openBlock(), createBlock(FluxTableRow_default, {
13698
+ slots.header ? (openBlock(), createElementBlock("thead", _hoisted_1$35, [renderSlot(_ctx.$slots, "header")])) : createCommentVNode("", true),
13699
+ slots.default ? (openBlock(), createElementBlock("tbody", _hoisted_2$14, [renderSlot(_ctx.$slots, "default"), __props.fillColumns ? (openBlock(), createBlock(FluxTableRow_default, {
13700
13700
  key: 0,
13701
13701
  class: normalizeClass(unref(Table_module_default).tableFill)
13702
13702
  }, {
@@ -13871,8 +13871,8 @@ var FluxDataTable_default = /* @__PURE__ */ defineComponent({
13871
13871
  });
13872
13872
  //#endregion
13873
13873
  //#region src/component/FluxDatePicker.vue?vue&type=script&setup=true&lang.ts
13874
- var _hoisted_1$31 = ["id"];
13875
- var _hoisted_2$12 = ["aria-labelledby"];
13874
+ var _hoisted_1$34 = ["id"];
13875
+ var _hoisted_2$13 = ["aria-labelledby"];
13876
13876
  var _hoisted_3$5 = ["onClick", "onMouseover"];
13877
13877
  //#endregion
13878
13878
  //#region src/component/FluxDatePicker.vue
@@ -14022,7 +14022,7 @@ var FluxDatePicker_default = /* @__PURE__ */ defineComponent({
14022
14022
  class: normalizeClass(unref(DatePicker_module_default).datePickerHeaderViewButton),
14023
14023
  type: "button",
14024
14024
  onClick: _cache[1] || (_cache[1] = ($event) => setView("year"))
14025
- }, toDisplayString(unref(viewYear)), 3)], 10, _hoisted_1$31),
14025
+ }, toDisplayString(unref(viewYear)), 3)], 10, _hoisted_1$34),
14026
14026
  createVNode(unref(FluxFadeTransition_default), null, {
14027
14027
  default: withCtx(() => [viewMode.value === "date" ? (openBlock(), createBlock(FluxSecondaryButton_default, {
14028
14028
  key: 0,
@@ -14062,7 +14062,7 @@ var FluxDatePicker_default = /* @__PURE__ */ defineComponent({
14062
14062
  }, toDisplayString(date.toLocaleString({ day: "numeric" })), 43, _hoisted_3$5);
14063
14063
  }), 256))], 2))]),
14064
14064
  _: 1
14065
- }, 8, ["is-back"])], 10, _hoisted_2$12)) : viewMode.value === "month" ? (openBlock(), createElementBlock("div", {
14065
+ }, 8, ["is-back"])], 10, _hoisted_2$13)) : viewMode.value === "month" ? (openBlock(), createElementBlock("div", {
14066
14066
  key: "month",
14067
14067
  class: normalizeClass(unref(DatePicker_module_default).datePickerMonths)
14068
14068
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(months), (month) => {
@@ -14123,7 +14123,7 @@ var FluxDisabled_default = /* @__PURE__ */ defineComponent({
14123
14123
  });
14124
14124
  //#endregion
14125
14125
  //#region src/component/FluxDivider.vue?vue&type=script&setup=true&lang.ts
14126
- var _hoisted_1$30 = ["aria-orientation"];
14126
+ var _hoisted_1$33 = ["aria-orientation"];
14127
14127
  //#endregion
14128
14128
  //#region src/component/FluxDivider.vue
14129
14129
  var FluxDivider_default = /* @__PURE__ */ defineComponent({
@@ -14145,18 +14145,18 @@ var FluxDivider_default = /* @__PURE__ */ defineComponent({
14145
14145
  }, [renderSlot(_ctx.$slots, "default")], 2)) : (openBlock(), createElementBlock("hr", {
14146
14146
  key: 1,
14147
14147
  class: normalizeClass(unref(Divider_module_default).dividerLine)
14148
- }, null, 2))], 10, _hoisted_1$30);
14148
+ }, null, 2))], 10, _hoisted_1$33);
14149
14149
  };
14150
14150
  }
14151
14151
  });
14152
14152
  //#endregion
14153
14153
  //#region src/component/FluxDotPattern.vue?vue&type=script&setup=true&lang.ts
14154
- var _hoisted_1$29 = [
14154
+ var _hoisted_1$32 = [
14155
14155
  "id",
14156
14156
  "width",
14157
14157
  "height"
14158
14158
  ];
14159
- var _hoisted_2$11 = [
14159
+ var _hoisted_2$12 = [
14160
14160
  "r",
14161
14161
  "cx",
14162
14162
  "cy"
@@ -14206,7 +14206,7 @@ var FluxDotPattern_default = /* @__PURE__ */ defineComponent({
14206
14206
  r: __props.cr,
14207
14207
  cx: __props.width / 2 - __props.cx,
14208
14208
  cy: __props.height / 2 - __props.cy
14209
- }, null, 8, _hoisted_2$11)], 8, _hoisted_1$29)]), createElementVNode("rect", {
14209
+ }, null, 8, _hoisted_2$12)], 8, _hoisted_1$32)]), createElementVNode("rect", {
14210
14210
  width: "100%",
14211
14211
  height: "100%",
14212
14212
  "stroke-width": "0",
@@ -14229,12 +14229,12 @@ var DropZone_module_default = {
14229
14229
  };
14230
14230
  //#endregion
14231
14231
  //#region src/component/FluxDropZone.vue?vue&type=script&setup=true&lang.ts
14232
- var _hoisted_1$28 = [
14232
+ var _hoisted_1$31 = [
14233
14233
  "aria-disabled",
14234
14234
  "aria-label",
14235
14235
  "tabindex"
14236
14236
  ];
14237
- var _hoisted_2$10 = ["pathLength"];
14237
+ var _hoisted_2$11 = ["pathLength"];
14238
14238
  //#endregion
14239
14239
  //#region src/component/FluxDropZone.vue
14240
14240
  var FluxDropZone_default = /* @__PURE__ */ defineComponent({
@@ -14348,7 +14348,7 @@ var FluxDropZone_default = /* @__PURE__ */ defineComponent({
14348
14348
  "stroke-linecap": "round",
14349
14349
  "stroke-linejoin": "round",
14350
14350
  pathLength: pathLength.value
14351
- }, null, 8, _hoisted_2$10)], 2)),
14351
+ }, null, 8, _hoisted_2$11)], 2)),
14352
14352
  renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({
14353
14353
  isDragging: isDragging.value,
14354
14354
  isDraggingOver: isDraggingOver.value,
@@ -14375,7 +14375,7 @@ var FluxDropZone_default = /* @__PURE__ */ defineComponent({
14375
14375
  isDraggingOver: isDraggingOver.value,
14376
14376
  showPicker
14377
14377
  })))
14378
- ], 42, _hoisted_1$28);
14378
+ ], 42, _hoisted_1$31);
14379
14379
  };
14380
14380
  }
14381
14381
  });
@@ -14405,12 +14405,12 @@ var Expandable_module_default = {
14405
14405
  };
14406
14406
  //#endregion
14407
14407
  //#region src/component/FluxExpandable.vue?vue&type=script&setup=true&lang.ts
14408
- var _hoisted_1$27 = [
14408
+ var _hoisted_1$30 = [
14409
14409
  "id",
14410
14410
  "aria-controls",
14411
14411
  "aria-expanded"
14412
14412
  ];
14413
- var _hoisted_2$9 = ["id", "aria-labelledby"];
14413
+ var _hoisted_2$10 = ["id", "aria-labelledby"];
14414
14414
  //#endregion
14415
14415
  //#region src/component/FluxExpandable.vue
14416
14416
  var FluxExpandable_default = /* @__PURE__ */ defineComponent({
@@ -14501,9 +14501,9 @@ var FluxExpandable_default = /* @__PURE__ */ defineComponent({
14501
14501
  })), () => [createElementVNode("div", { class: normalizeClass(unref(Expandable_module_default).expandableContent) }, [renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({
14502
14502
  label: __props.label,
14503
14503
  close
14504
- })))], 2)])], 10, _hoisted_2$9)) : createCommentVNode("", true)]),
14504
+ })))], 2)])], 10, _hoisted_2$10)) : createCommentVNode("", true)]),
14505
14505
  _: 3
14506
- })], 10, _hoisted_1$27);
14506
+ })], 10, _hoisted_1$30);
14507
14507
  };
14508
14508
  }
14509
14509
  });
@@ -15477,7 +15477,7 @@ var FocalPoint_module_default = {
15477
15477
  };
15478
15478
  //#endregion
15479
15479
  //#region src/component/FluxFocalPointEditor.vue?vue&type=script&setup=true&lang.ts
15480
- var _hoisted_1$26 = ["src"];
15480
+ var _hoisted_1$29 = ["src"];
15481
15481
  //#endregion
15482
15482
  //#region src/component/FluxFocalPointEditor.vue
15483
15483
  var FluxFocalPointEditor_default = /* @__PURE__ */ defineComponent({
@@ -15546,7 +15546,7 @@ var FluxFocalPointEditor_default = /* @__PURE__ */ defineComponent({
15546
15546
  src: __props.src,
15547
15547
  alt: "",
15548
15548
  onLoad: onImageLoaded
15549
- }, null, 42, _hoisted_1$26), createElementVNode("div", {
15549
+ }, null, 42, _hoisted_1$29), createElementVNode("div", {
15550
15550
  class: normalizeClass(unref(FocalPoint_module_default).focalPointEditorArea),
15551
15551
  style: normalizeStyle({
15552
15552
  top: `${focalPointY.value}%`,
@@ -15575,7 +15575,7 @@ var FluxFocalPointEditor_default = /* @__PURE__ */ defineComponent({
15575
15575
  });
15576
15576
  //#endregion
15577
15577
  //#region src/component/FluxFocalPointImage.vue?vue&type=script&setup=true&lang.ts
15578
- var _hoisted_1$25 = ["src", "alt"];
15578
+ var _hoisted_1$28 = ["src", "alt"];
15579
15579
  //#endregion
15580
15580
  //#region src/component/FluxFocalPointImage.vue
15581
15581
  var FluxFocalPointImage_default = /* @__PURE__ */ defineComponent({
@@ -15594,13 +15594,13 @@ var FluxFocalPointImage_default = /* @__PURE__ */ defineComponent({
15594
15594
  style: normalizeStyle({ objectPosition: `${x.value}% ${y.value}%` }),
15595
15595
  src: __props.src,
15596
15596
  alt: __props.alt
15597
- }, null, 14, _hoisted_1$25);
15597
+ }, null, 14, _hoisted_1$28);
15598
15598
  };
15599
15599
  }
15600
15600
  });
15601
15601
  //#endregion
15602
15602
  //#region src/component/FluxForm.vue?vue&type=script&setup=true&lang.ts
15603
- var _hoisted_1$24 = ["aria-disabled"];
15603
+ var _hoisted_1$27 = ["aria-disabled"];
15604
15604
  //#endregion
15605
15605
  //#region src/component/FluxForm.vue
15606
15606
  var FluxForm_default = /* @__PURE__ */ defineComponent({
@@ -15623,7 +15623,7 @@ var FluxForm_default = /* @__PURE__ */ defineComponent({
15623
15623
  }, [createVNode(FluxDisabled_default, { disabled: __props.disabled }, {
15624
15624
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
15625
15625
  _: 3
15626
- }, 8, ["disabled"])], 42, _hoisted_1$24);
15626
+ }, 8, ["disabled"])], 42, _hoisted_1$27);
15627
15627
  };
15628
15628
  }
15629
15629
  });
@@ -15735,7 +15735,7 @@ var FluxFormDateInput_default = /* @__PURE__ */ defineComponent({
15735
15735
  });
15736
15736
  //#endregion
15737
15737
  //#region src/component/FluxFormDateRangeInput.vue?vue&type=script&setup=true&lang.ts
15738
- var _hoisted_1$23 = { key: 0 };
15738
+ var _hoisted_1$26 = { key: 0 };
15739
15739
  //#endregion
15740
15740
  //#region src/component/FluxFormDateRangeInput.vue
15741
15741
  var FluxFormDateRangeInput_default = /* @__PURE__ */ defineComponent({
@@ -15781,7 +15781,7 @@ var FluxFormDateRangeInput_default = /* @__PURE__ */ defineComponent({
15781
15781
  default: withCtx(() => [createElementVNode("div", {
15782
15782
  class: normalizeClass(unref(clsx)(unref(Form_module_default).formDateRangeInput, unref(disabled) && unref(Form_module_default).isDisabled, __props.isCondensed && unref(Form_module_default).isCondensed, __props.isSecondary && unref(Form_module_default).isSecondary, __props.error && unref(Form_module_default).isInvalid)),
15783
15783
  role: "presentation"
15784
- }, [label.value ? (openBlock(), createElementBlock("span", _hoisted_1$23, toDisplayString(label.value), 1)) : __props.placeholder ? (openBlock(), createElementBlock("span", {
15784
+ }, [label.value ? (openBlock(), createElementBlock("span", _hoisted_1$26, toDisplayString(label.value), 1)) : __props.placeholder ? (openBlock(), createElementBlock("span", {
15785
15785
  key: 1,
15786
15786
  class: normalizeClass(unref(Form_module_default).formSelectPlaceholder)
15787
15787
  }, toDisplayString(__props.placeholder), 3)) : createCommentVNode("", true)], 2), createVNode(FluxSecondaryButton_default, {
@@ -15954,7 +15954,7 @@ var FluxFormGrid_default = /* @__PURE__ */ defineComponent({
15954
15954
  });
15955
15955
  //#endregion
15956
15956
  //#region src/component/FluxFormInputAddition.vue?vue&type=script&setup=true&lang.ts
15957
- var _hoisted_1$22 = { key: 1 };
15957
+ var _hoisted_1$25 = { key: 1 };
15958
15958
  //#endregion
15959
15959
  //#region src/component/FluxFormInputAddition.vue
15960
15960
  var FluxFormInputAddition_default = /* @__PURE__ */ defineComponent({
@@ -15971,7 +15971,7 @@ var FluxFormInputAddition_default = /* @__PURE__ */ defineComponent({
15971
15971
  name: __props.icon,
15972
15972
  size: 18
15973
15973
  }, null, 8, ["name"])) : createCommentVNode("", true),
15974
- __props.label ? (openBlock(), createElementBlock("span", _hoisted_1$22, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
15974
+ __props.label ? (openBlock(), createElementBlock("span", _hoisted_1$25, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
15975
15975
  renderSlot(_ctx.$slots, "default")
15976
15976
  ], 2);
15977
15977
  };
@@ -15979,14 +15979,14 @@ var FluxFormInputAddition_default = /* @__PURE__ */ defineComponent({
15979
15979
  });
15980
15980
  //#endregion
15981
15981
  //#region src/component/FluxFormPinInput.vue?vue&type=script&setup=true&lang.ts
15982
- var _hoisted_1$21 = [
15982
+ var _hoisted_1$24 = [
15983
15983
  "id",
15984
15984
  "name",
15985
15985
  "autofocus",
15986
15986
  "aria-disabled",
15987
15987
  "aria-invalid"
15988
15988
  ];
15989
- var _hoisted_2$8 = [
15989
+ var _hoisted_2$9 = [
15990
15990
  "aria-label",
15991
15991
  "autocomplete",
15992
15992
  "autofocus",
@@ -16102,8 +16102,8 @@ var FluxFormPinInput_default = /* @__PURE__ */ defineComponent({
16102
16102
  onInput,
16103
16103
  onKeydown: onKeyDown,
16104
16104
  onPaste
16105
- }, null, 42, _hoisted_2$8);
16106
- }), 128))], 14, _hoisted_1$21);
16105
+ }, null, 42, _hoisted_2$9);
16106
+ }), 128))], 14, _hoisted_1$24);
16107
16107
  };
16108
16108
  }
16109
16109
  });
@@ -16399,7 +16399,7 @@ var FluxFormSelectAsync_default = /* @__PURE__ */ defineComponent({
16399
16399
  });
16400
16400
  //#endregion
16401
16401
  //#region src/component/FluxFormTextArea.vue?vue&type=script&setup=true&lang.ts
16402
- var _hoisted_1$20 = [
16402
+ var _hoisted_1$23 = [
16403
16403
  "id",
16404
16404
  "name",
16405
16405
  "autocomplete",
@@ -16461,7 +16461,7 @@ var FluxFormTextArea_default = /* @__PURE__ */ defineComponent({
16461
16461
  "aria-invalid": __props.error ? true : void 0,
16462
16462
  onBlur: _cache[1] || (_cache[1] = ($event) => emit("blur")),
16463
16463
  onFocus: _cache[2] || (_cache[2] = ($event) => emit("focus"))
16464
- }, null, 46, _hoisted_1$20)), [[vModelText, modelValue.value]]);
16464
+ }, null, 46, _hoisted_1$23)), [[vModelText, modelValue.value]]);
16465
16465
  };
16466
16466
  }
16467
16467
  });
@@ -17188,7 +17188,7 @@ var TreeViewSelect_module_default = {
17188
17188
  };
17189
17189
  //#endregion
17190
17190
  //#region src/component/FluxFormTreeViewSelect.vue?vue&type=script&setup=true&lang.ts
17191
- var _hoisted_1$19 = [
17191
+ var _hoisted_1$22 = [
17192
17192
  "role",
17193
17193
  "tabindex",
17194
17194
  "aria-selected",
@@ -17429,7 +17429,7 @@ var FluxFormTreeViewSelect_default = /* @__PURE__ */ defineComponent({
17429
17429
  "expanded",
17430
17430
  "level-colors",
17431
17431
  "onExpandClick"
17432
- ])], 42, _hoisted_1$19);
17432
+ ])], 42, _hoisted_1$22);
17433
17433
  }), 128))], 2)]),
17434
17434
  _: 1
17435
17435
  }, 8, ["class", "anchor"])) : createCommentVNode("", true)]),
@@ -17444,7 +17444,7 @@ var Remove_module_default = {
17444
17444
  };
17445
17445
  //#endregion
17446
17446
  //#region src/component/FluxRemove.vue?vue&type=script&setup=true&lang.ts
17447
- var _hoisted_1$18 = ["aria-label"];
17447
+ var _hoisted_1$21 = ["aria-label"];
17448
17448
  //#endregion
17449
17449
  //#region src/component/FluxRemove.vue
17450
17450
  var FluxRemove_default = /* @__PURE__ */ defineComponent({
@@ -17467,7 +17467,7 @@ var FluxRemove_default = /* @__PURE__ */ defineComponent({
17467
17467
  key: 0,
17468
17468
  name: __props.icon,
17469
17469
  size: 16
17470
- }, null, 8, ["name"])) : createCommentVNode("", true)], 10, _hoisted_1$18);
17470
+ }, null, 8, ["name"])) : createCommentVNode("", true)], 10, _hoisted_1$21);
17471
17471
  };
17472
17472
  }
17473
17473
  });
@@ -17540,7 +17540,7 @@ var FluxGalleryItem_default = /* @__PURE__ */ defineComponent({
17540
17540
  });
17541
17541
  //#endregion
17542
17542
  //#region src/component/FluxGallery.vue?vue&type=script&setup=true&lang.ts
17543
- var _hoisted_1$17 = ["onClick"];
17543
+ var _hoisted_1$20 = ["onClick"];
17544
17544
  //#endregion
17545
17545
  //#region src/component/FluxGallery.vue
17546
17546
  var FluxGallery_default = /* @__PURE__ */ defineComponent({
@@ -17618,7 +17618,7 @@ var FluxGallery_default = /* @__PURE__ */ defineComponent({
17618
17618
  class: normalizeClass(unref(Gallery_module_default).galleryAdd),
17619
17619
  type: "button",
17620
17620
  onClick: ($event) => showPicker()
17621
- }, [createVNode(FluxIcon_default, { name: "plus" })], 10, _hoisted_1$17)) : createCommentVNode("", true)
17621
+ }, [createVNode(FluxIcon_default, { name: "plus" })], 10, _hoisted_1$20)) : createCommentVNode("", true)
17622
17622
  ]),
17623
17623
  _: 2
17624
17624
  }, 1032, ["class", "move-class"])]),
@@ -17685,12 +17685,12 @@ var FluxGridColumn_default = /* @__PURE__ */ defineComponent({
17685
17685
  });
17686
17686
  //#endregion
17687
17687
  //#region src/component/FluxGridPattern.vue?vue&type=script&setup=true&lang.ts
17688
- var _hoisted_1$16 = [
17688
+ var _hoisted_1$19 = [
17689
17689
  "id",
17690
17690
  "width",
17691
17691
  "height"
17692
17692
  ];
17693
- var _hoisted_2$7 = ["d", "stroke-dasharray"];
17693
+ var _hoisted_2$8 = ["d", "stroke-dasharray"];
17694
17694
  var _hoisted_3$3 = ["fill"];
17695
17695
  var _hoisted_4 = {
17696
17696
  key: 0,
@@ -17730,7 +17730,7 @@ var FluxGridPattern_default = /* @__PURE__ */ defineComponent({
17730
17730
  d: `M.5 ${__props.height}V.5H${__props.width}`,
17731
17731
  fill: "none",
17732
17732
  "stroke-dasharray": __props.strokeDasharray
17733
- }, null, 8, _hoisted_2$7)], 8, _hoisted_1$16)]),
17733
+ }, null, 8, _hoisted_2$8)], 8, _hoisted_1$19)]),
17734
17734
  createElementVNode("rect", {
17735
17735
  width: "100%",
17736
17736
  height: "100%",
@@ -17773,24 +17773,114 @@ var FluxInfo_default = /* @__PURE__ */ defineComponent({
17773
17773
  });
17774
17774
  //#endregion
17775
17775
  //#region src/composable/private/useKanban.ts
17776
+ var AUTOSCROLL_ZONE = 40;
17777
+ var AUTOSCROLL_MAX_SPEED = 12;
17778
+ var DRAG_LEAVE_GRACE_MS = 50;
17776
17779
  /**
17777
17780
  * Internal composable for managing kanban drag-and-drop state.
17778
- * Provides card registration, drag tracking, and drop target management.
17781
+ * Provides card registration, drag tracking, drop target management,
17782
+ * keyboard drag-and-drop, column reordering, drop validation and auto-scroll.
17779
17783
  */
17780
- function useKanban(onMove) {
17784
+ function useKanban(options) {
17781
17785
  const dragState = ref(null);
17786
+ const columnDragState = ref(null);
17782
17787
  const cardRegistry = /* @__PURE__ */ new WeakMap();
17788
+ const cardElementsById = /* @__PURE__ */ new Map();
17789
+ const columnRegistry = /* @__PURE__ */ new WeakMap();
17790
+ const columnElementsById = /* @__PURE__ */ new Map();
17791
+ const columnBodyById = /* @__PURE__ */ new Map();
17792
+ let boardElement = null;
17793
+ let clearTimer = null;
17794
+ let autoScrollFrame = null;
17795
+ let autoScrollX = 0;
17796
+ let autoScrollY = 0;
17797
+ let autoScrollVerticalTarget = null;
17798
+ const isDropAllowed = computed(() => {
17799
+ const state = unref(dragState);
17800
+ if (!state || state.dropColumnId === null) return true;
17801
+ const validate = unref(options.canMove);
17802
+ if (!validate) return true;
17803
+ return validate(buildMoveEvent(state));
17804
+ });
17805
+ function buildMoveEvent(state) {
17806
+ return {
17807
+ cardId: state.cardId,
17808
+ fromColumnId: state.fromColumnId,
17809
+ toColumnId: state.dropColumnId,
17810
+ beforeCardId: state.beforeCardId ?? void 0
17811
+ };
17812
+ }
17813
+ function clearTimerIfAny() {
17814
+ if (clearTimer !== null) {
17815
+ clearTimeout(clearTimer);
17816
+ clearTimer = null;
17817
+ }
17818
+ }
17819
+ function isSelfDrop(state) {
17820
+ if (state.dropColumnId !== state.fromColumnId) return false;
17821
+ if (state.beforeCardId === state.cardId) return true;
17822
+ const fromBody = columnBodyById.get(state.fromColumnId);
17823
+ if (!fromBody) return false;
17824
+ const cards = Array.from(fromBody.children).filter((child) => cardRegistry.has(child));
17825
+ const draggedIndex = cards.findIndex((elm) => cardRegistry.get(elm)?.cardId === state.cardId);
17826
+ if (draggedIndex === -1) return false;
17827
+ if (state.beforeCardId === null) return draggedIndex === cards.length - 1;
17828
+ const beforeIndex = cards.findIndex((elm) => cardRegistry.get(elm)?.cardId === state.beforeCardId);
17829
+ return beforeIndex !== -1 && beforeIndex === draggedIndex + 1;
17830
+ }
17831
+ function getColumnIndex(columnId) {
17832
+ if (!boardElement) return -1;
17833
+ return Array.from(boardElement.children).filter((child) => columnRegistry.has(child)).findIndex((elm) => columnRegistry.get(elm)?.columnId === columnId);
17834
+ }
17835
+ function getColumnByIndex(index) {
17836
+ if (!boardElement) return null;
17837
+ const elm = Array.from(boardElement.children).filter((child) => columnRegistry.has(child))[index];
17838
+ return elm ? columnRegistry.get(elm) : null;
17839
+ }
17840
+ function getCardsInColumn(columnId) {
17841
+ const body = columnBodyById.get(columnId);
17842
+ if (!body) return [];
17843
+ return Array.from(body.children).map((child) => cardRegistry.get(child)?.cardId).filter((id) => id !== void 0);
17844
+ }
17783
17845
  function registerCard(element, cardId) {
17784
17846
  cardRegistry.set(element, { cardId });
17847
+ cardElementsById.set(cardId, element);
17785
17848
  }
17786
17849
  function unregisterCard(element) {
17850
+ const info = cardRegistry.get(element);
17851
+ if (info) cardElementsById.delete(info.cardId);
17787
17852
  cardRegistry.delete(element);
17788
17853
  }
17789
17854
  function getCardInfo(element) {
17790
17855
  return cardRegistry.get(element);
17791
17856
  }
17857
+ function registerColumn(element, columnId) {
17858
+ columnRegistry.set(element, { columnId });
17859
+ columnElementsById.set(columnId, element);
17860
+ }
17861
+ function unregisterColumn(element) {
17862
+ const info = columnRegistry.get(element);
17863
+ if (info) {
17864
+ columnElementsById.delete(info.columnId);
17865
+ columnBodyById.delete(info.columnId);
17866
+ }
17867
+ columnRegistry.delete(element);
17868
+ }
17869
+ function getColumnInfo(element) {
17870
+ return columnRegistry.get(element);
17871
+ }
17872
+ function setBoardElement(element) {
17873
+ boardElement = element;
17874
+ }
17875
+ function setColumnBodyElement(columnId, element) {
17876
+ if (element) columnBodyById.set(columnId, element);
17877
+ else columnBodyById.delete(columnId);
17878
+ }
17792
17879
  function startDrag(cardId, fromColumnId) {
17880
+ if (unref(options.disabled)) return;
17881
+ clearTimerIfAny();
17793
17882
  dragState.value = {
17883
+ mode: "pointer",
17794
17884
  cardId,
17795
17885
  fromColumnId,
17796
17886
  dropColumnId: null,
@@ -17798,10 +17888,13 @@ function useKanban(onMove) {
17798
17888
  };
17799
17889
  }
17800
17890
  function endDrag() {
17891
+ clearTimerIfAny();
17892
+ stopAutoScroll();
17801
17893
  dragState.value = null;
17802
17894
  }
17803
17895
  function updateDropTarget(columnId, beforeCardId) {
17804
17896
  if (!dragState.value) return;
17897
+ clearTimerIfAny();
17805
17898
  dragState.value = {
17806
17899
  ...dragState.value,
17807
17900
  dropColumnId: columnId,
@@ -17810,69 +17903,413 @@ function useKanban(onMove) {
17810
17903
  }
17811
17904
  function clearDropTarget() {
17812
17905
  if (!dragState.value) return;
17813
- dragState.value = {
17814
- ...dragState.value,
17815
- dropColumnId: null,
17816
- beforeCardId: null
17817
- };
17906
+ clearTimerIfAny();
17907
+ clearTimer = setTimeout(() => {
17908
+ clearTimer = null;
17909
+ if (!dragState.value) return;
17910
+ dragState.value = {
17911
+ ...dragState.value,
17912
+ dropColumnId: null,
17913
+ beforeCardId: null
17914
+ };
17915
+ }, DRAG_LEAVE_GRACE_MS);
17818
17916
  }
17819
17917
  function commitDrop() {
17820
17918
  const state = dragState.value;
17919
+ clearTimerIfAny();
17920
+ stopAutoScroll();
17821
17921
  if (!state || state.dropColumnId === null) {
17822
17922
  dragState.value = null;
17823
17923
  return;
17824
17924
  }
17825
- onMove({
17826
- cardId: state.cardId,
17827
- fromColumnId: state.fromColumnId,
17828
- toColumnId: state.dropColumnId,
17829
- beforeCardId: state.beforeCardId ?? void 0
17925
+ if (isSelfDrop(state)) {
17926
+ dragState.value = null;
17927
+ return;
17928
+ }
17929
+ const event = buildMoveEvent(state);
17930
+ const validate = unref(options.canMove);
17931
+ if (validate && !validate(event)) {
17932
+ options.onAnnounce("Drop not allowed.");
17933
+ dragState.value = null;
17934
+ return;
17935
+ }
17936
+ options.onMove(event);
17937
+ options.onAnnounce(`Card moved to ${String(state.dropColumnId)}.`);
17938
+ dragState.value = null;
17939
+ }
17940
+ function findCurrentColumnId(cardId) {
17941
+ for (const columnId of columnElementsById.keys()) if (getCardsInColumn(columnId).includes(cardId)) return columnId;
17942
+ return null;
17943
+ }
17944
+ function findCurrentBeforeCardId(cardId, columnId) {
17945
+ const cards = getCardsInColumn(columnId);
17946
+ const idx = cards.indexOf(cardId);
17947
+ if (idx === -1) return null;
17948
+ return cards[idx + 1] ?? null;
17949
+ }
17950
+ function grabCard(cardId, fromColumnId) {
17951
+ if (unref(options.disabled)) return;
17952
+ clearTimerIfAny();
17953
+ dragState.value = {
17954
+ mode: "keyboard",
17955
+ cardId,
17956
+ fromColumnId,
17957
+ dropColumnId: null,
17958
+ beforeCardId: null,
17959
+ originBeforeCardId: findCurrentBeforeCardId(cardId, fromColumnId)
17960
+ };
17961
+ options.onAnnounce("Card grabbed. Use arrow keys to move, Enter to drop, Escape to cancel.");
17962
+ }
17963
+ function moveKeyboard(direction) {
17964
+ const state = dragState.value;
17965
+ if (!state || state.mode !== "keyboard") return;
17966
+ const cardId = state.cardId;
17967
+ const currentColumnId = findCurrentColumnId(cardId);
17968
+ if (currentColumnId === null) return;
17969
+ const target = direction === "up" || direction === "down" ? computeWithinColumnTarget(cardId, currentColumnId, direction) : computeAcrossColumnTarget(currentColumnId, direction);
17970
+ if (!target) return;
17971
+ const event = {
17972
+ cardId,
17973
+ fromColumnId: currentColumnId,
17974
+ toColumnId: target.columnId,
17975
+ beforeCardId: target.beforeCardId ?? void 0
17976
+ };
17977
+ const validate = unref(options.canMove);
17978
+ if (validate && !validate(event)) {
17979
+ options.onAnnounce("Move not allowed.");
17980
+ return;
17981
+ }
17982
+ options.onMove(event);
17983
+ options.onAnnounce(target.announcement);
17984
+ restoreCardFocus(cardId);
17985
+ }
17986
+ function restoreCardFocus(cardId) {
17987
+ requestAnimationFrame(() => {
17988
+ const elm = cardElementsById.get(cardId);
17989
+ if (elm instanceof HTMLElement) elm.focus();
17990
+ });
17991
+ }
17992
+ function computeWithinColumnTarget(cardId, columnId, direction) {
17993
+ const cards = getCardsInColumn(columnId);
17994
+ const idx = cards.indexOf(cardId);
17995
+ if (idx === -1) return null;
17996
+ if (direction === "up") {
17997
+ if (idx === 0) return null;
17998
+ return {
17999
+ columnId,
18000
+ beforeCardId: cards[idx - 1],
18001
+ announcement: `Position ${idx} of ${cards.length}.`
18002
+ };
18003
+ }
18004
+ if (idx === cards.length - 1) return null;
18005
+ return {
18006
+ columnId,
18007
+ beforeCardId: cards[idx + 2] ?? null,
18008
+ announcement: `Position ${idx + 2} of ${cards.length}.`
18009
+ };
18010
+ }
18011
+ function computeAcrossColumnTarget(currentColumnId, direction) {
18012
+ const currentIdx = getColumnIndex(currentColumnId);
18013
+ if (currentIdx === -1) return null;
18014
+ const nextColumn = getColumnByIndex(direction === "left" ? currentIdx - 1 : currentIdx + 1);
18015
+ if (!nextColumn) return null;
18016
+ const targetCards = getCardsInColumn(nextColumn.columnId);
18017
+ return {
18018
+ columnId: nextColumn.columnId,
18019
+ beforeCardId: targetCards[0] ?? null,
18020
+ announcement: `Moved to column ${String(nextColumn.columnId)}.`
18021
+ };
18022
+ }
18023
+ function commitKeyboardDrop() {
18024
+ const state = dragState.value;
18025
+ if (!state || state.mode !== "keyboard") return;
18026
+ const currentColumnId = findCurrentColumnId(state.cardId);
18027
+ dragState.value = null;
18028
+ if (currentColumnId !== null) options.onAnnounce(`Card dropped in ${String(currentColumnId)}.`);
18029
+ }
18030
+ function cancelKeyboardDrop() {
18031
+ const state = dragState.value;
18032
+ if (!state || state.mode !== "keyboard") return;
18033
+ const cardId = state.cardId;
18034
+ const currentColumnId = findCurrentColumnId(cardId);
18035
+ const currentBeforeCardId = currentColumnId !== null ? findCurrentBeforeCardId(cardId, currentColumnId) : null;
18036
+ if (!(currentColumnId === state.fromColumnId && currentBeforeCardId === (state.originBeforeCardId ?? null)) && currentColumnId !== null) options.onMove({
18037
+ cardId,
18038
+ fromColumnId: currentColumnId,
18039
+ toColumnId: state.fromColumnId,
18040
+ beforeCardId: state.originBeforeCardId ?? void 0
17830
18041
  });
17831
18042
  dragState.value = null;
18043
+ options.onAnnounce("Drop cancelled.");
18044
+ }
18045
+ function isCardGrabbed(cardId) {
18046
+ const state = unref(dragState);
18047
+ return state !== null && state.mode === "keyboard" && state.cardId === cardId;
18048
+ }
18049
+ function startColumnDrag(columnId) {
18050
+ if (!unref(options.reorderableColumns) || unref(options.disabled)) return;
18051
+ columnDragState.value = {
18052
+ columnId,
18053
+ dropBeforeColumnId: null
18054
+ };
18055
+ }
18056
+ function endColumnDrag() {
18057
+ stopAutoScroll();
18058
+ columnDragState.value = null;
18059
+ }
18060
+ function updateColumnDropTarget(beforeColumnId) {
18061
+ if (!columnDragState.value) return;
18062
+ columnDragState.value = {
18063
+ ...columnDragState.value,
18064
+ dropBeforeColumnId: beforeColumnId
18065
+ };
18066
+ }
18067
+ function commitColumnDrop() {
18068
+ const state = columnDragState.value;
18069
+ stopAutoScroll();
18070
+ if (!state) return;
18071
+ if (state.dropBeforeColumnId === state.columnId) {
18072
+ columnDragState.value = null;
18073
+ return;
18074
+ }
18075
+ const fromIdx = getColumnIndex(state.columnId);
18076
+ const beforeIdx = state.dropBeforeColumnId === null ? -1 : getColumnIndex(state.dropBeforeColumnId);
18077
+ if (fromIdx !== -1 && beforeIdx === fromIdx + 1) {
18078
+ columnDragState.value = null;
18079
+ return;
18080
+ }
18081
+ options.onMoveColumn({
18082
+ columnId: state.columnId,
18083
+ beforeColumnId: state.dropBeforeColumnId ?? void 0
18084
+ });
18085
+ columnDragState.value = null;
18086
+ }
18087
+ function onPointerMove(clientX, clientY) {
18088
+ if (!unref(dragState) && !unref(columnDragState)) return;
18089
+ autoScrollX = computeHorizontalScrollDelta(clientX);
18090
+ autoScrollY = 0;
18091
+ autoScrollVerticalTarget = null;
18092
+ const state = unref(dragState);
18093
+ if (state && state.dropColumnId !== null) {
18094
+ const body = columnBodyById.get(state.dropColumnId);
18095
+ if (body) {
18096
+ autoScrollY = computeVerticalScrollDelta(body, clientY);
18097
+ autoScrollVerticalTarget = body;
18098
+ }
18099
+ }
18100
+ if (autoScrollX !== 0 || autoScrollY !== 0) startAutoScroll();
18101
+ else stopAutoScroll();
18102
+ }
18103
+ function computeHorizontalScrollDelta(clientX) {
18104
+ if (!boardElement) return 0;
18105
+ const rect = boardElement.getBoundingClientRect();
18106
+ if (clientX < rect.left + AUTOSCROLL_ZONE) {
18107
+ const distance = Math.max(0, clientX - rect.left);
18108
+ return -Math.round((AUTOSCROLL_ZONE - distance) / AUTOSCROLL_ZONE * AUTOSCROLL_MAX_SPEED);
18109
+ }
18110
+ if (clientX > rect.right - AUTOSCROLL_ZONE) {
18111
+ const distance = Math.max(0, rect.right - clientX);
18112
+ return Math.round((AUTOSCROLL_ZONE - distance) / AUTOSCROLL_ZONE * AUTOSCROLL_MAX_SPEED);
18113
+ }
18114
+ return 0;
18115
+ }
18116
+ function computeVerticalScrollDelta(target, clientY) {
18117
+ const rect = target.getBoundingClientRect();
18118
+ if (clientY < rect.top + AUTOSCROLL_ZONE) {
18119
+ const distance = Math.max(0, clientY - rect.top);
18120
+ return -Math.round((AUTOSCROLL_ZONE - distance) / AUTOSCROLL_ZONE * AUTOSCROLL_MAX_SPEED);
18121
+ }
18122
+ if (clientY > rect.bottom - AUTOSCROLL_ZONE) {
18123
+ const distance = Math.max(0, rect.bottom - clientY);
18124
+ return Math.round((AUTOSCROLL_ZONE - distance) / AUTOSCROLL_ZONE * AUTOSCROLL_MAX_SPEED);
18125
+ }
18126
+ return 0;
18127
+ }
18128
+ function startAutoScroll() {
18129
+ if (autoScrollFrame !== null) return;
18130
+ const tick = () => {
18131
+ if (autoScrollX !== 0 && boardElement) boardElement.scrollLeft += autoScrollX;
18132
+ if (autoScrollY !== 0 && autoScrollVerticalTarget) autoScrollVerticalTarget.scrollTop += autoScrollY;
18133
+ if (autoScrollX === 0 && autoScrollY === 0) {
18134
+ autoScrollFrame = null;
18135
+ return;
18136
+ }
18137
+ autoScrollFrame = requestAnimationFrame(tick);
18138
+ };
18139
+ autoScrollFrame = requestAnimationFrame(tick);
18140
+ }
18141
+ function stopAutoScroll() {
18142
+ if (autoScrollFrame !== null) {
18143
+ cancelAnimationFrame(autoScrollFrame);
18144
+ autoScrollFrame = null;
18145
+ }
18146
+ autoScrollX = 0;
18147
+ autoScrollY = 0;
18148
+ autoScrollVerticalTarget = null;
17832
18149
  }
17833
18150
  return {
18151
+ disabled: options.disabled,
18152
+ reorderableColumns: options.reorderableColumns,
17834
18153
  dragState,
18154
+ columnDragState,
18155
+ isDropAllowed,
17835
18156
  registerCard,
17836
18157
  unregisterCard,
17837
18158
  getCardInfo,
18159
+ registerColumn,
18160
+ unregisterColumn,
18161
+ getColumnInfo,
18162
+ setBoardElement,
18163
+ setColumnBodyElement,
17838
18164
  startDrag,
17839
18165
  endDrag,
17840
18166
  updateDropTarget,
17841
18167
  clearDropTarget,
17842
- commitDrop
18168
+ commitDrop,
18169
+ grabCard,
18170
+ moveKeyboard,
18171
+ commitKeyboardDrop,
18172
+ cancelKeyboardDrop,
18173
+ isCardGrabbed,
18174
+ startColumnDrag,
18175
+ endColumnDrag,
18176
+ updateColumnDropTarget,
18177
+ commitColumnDrop,
18178
+ onPointerMove
17843
18179
  };
17844
18180
  }
17845
- var FluxKanban_module_default = { kanban: `kanban` };
18181
+ var FluxKanban_module_default = {
18182
+ kanban: `kanban`,
18183
+ kanbanLiveRegion: `kanban-live-region`,
18184
+ kanbanColumn: `kanban-column`,
18185
+ isColumnDragging: `is-column-dragging`,
18186
+ isColumnDropBefore: `is-column-drop-before`,
18187
+ kanbanColumnHeader: `kanban-column-header`,
18188
+ isReorderable: `is-reorderable`,
18189
+ kanbanColumnLabel: `kanban-column-label`,
18190
+ kanbanColumnBody: `kanban-column-body`,
18191
+ isOver: `is-over`,
18192
+ isDropDisallowed: `is-drop-disallowed`,
18193
+ isBoardDragging: `is-board-dragging`,
18194
+ isDisabled: `is-disabled`,
18195
+ kanbanColumnEmpty: `kanban-column-empty`,
18196
+ kanbanColumnFooter: `kanban-column-footer`,
18197
+ kanbanDropIndicator: `kanban-drop-indicator`,
18198
+ isDropEndActive: `is-drop-end-active`,
18199
+ isDropEndDisallowed: `is-drop-end-disallowed`,
18200
+ kanbanCard: `kanban-card`,
18201
+ isDragging: `is-dragging`,
18202
+ isGrabbed: `is-grabbed`,
18203
+ isDropBefore: `is-drop-before`,
18204
+ isDropBeforeDisallowed: `is-drop-before-disallowed`
18205
+ };
18206
+ //#endregion
18207
+ //#region src/component/FluxKanban.vue?vue&type=script&setup=true&lang.ts
18208
+ var _hoisted_1$18 = ["aria-label"];
17846
18209
  //#endregion
17847
18210
  //#region src/component/FluxKanban.vue
17848
18211
  var FluxKanban_default = /* @__PURE__ */ defineComponent({
17849
18212
  __name: "FluxKanban",
17850
- emits: ["move"],
18213
+ props: {
18214
+ ariaLabel: {},
18215
+ canMove: { type: Function },
18216
+ disabled: {
18217
+ type: Boolean,
18218
+ default: false
18219
+ },
18220
+ reorderableColumns: {
18221
+ type: Boolean,
18222
+ default: false
18223
+ }
18224
+ },
18225
+ emits: ["move", "moveColumn"],
17851
18226
  setup(__props, { emit: __emit }) {
17852
18227
  const emit = __emit;
17853
- provide(FluxKanbanInjectionKey, useKanban((event) => emit("move", event)));
18228
+ const root = useTemplateRef("root");
18229
+ const liveMessage = ref("");
18230
+ const disabledRef = toRef(() => __props.disabled);
18231
+ const kanban = useKanban({
18232
+ disabled: disabledRef,
18233
+ reorderableColumns: toRef(() => __props.reorderableColumns),
18234
+ canMove: toRef(() => __props.canMove),
18235
+ onMove: (event) => emit("move", event),
18236
+ onMoveColumn: (event) => emit("moveColumn", event),
18237
+ onAnnounce: (message) => {
18238
+ liveMessage.value = "";
18239
+ requestAnimationFrame(() => {
18240
+ liveMessage.value = message;
18241
+ });
18242
+ }
18243
+ });
18244
+ const isDragging = computed(() => kanban.dragState.value !== null || kanban.columnDragState.value !== null);
18245
+ function onPointerMove(evt) {
18246
+ kanban.onPointerMove(evt.clientX, evt.clientY);
18247
+ }
18248
+ function onWindowDrop() {
18249
+ kanban.endDrag();
18250
+ kanban.endColumnDrag();
18251
+ }
18252
+ onMounted(() => {
18253
+ kanban.setBoardElement(root.value);
18254
+ window.addEventListener("drag", onPointerMove);
18255
+ window.addEventListener("dragend", onWindowDrop);
18256
+ });
18257
+ onBeforeUnmount(() => {
18258
+ kanban.setBoardElement(null);
18259
+ window.removeEventListener("drag", onPointerMove);
18260
+ window.removeEventListener("dragend", onWindowDrop);
18261
+ });
18262
+ watch(() => __props.disabled, (value) => {
18263
+ if (value) {
18264
+ kanban.endDrag();
18265
+ kanban.endColumnDrag();
18266
+ kanban.cancelKeyboardDrop();
18267
+ }
18268
+ });
18269
+ provide(FluxKanbanInjectionKey, kanban);
18270
+ provide(FluxDisabledInjectionKey, disabledRef);
17854
18271
  return (_ctx, _cache) => {
17855
- return openBlock(), createElementBlock("div", { class: normalizeClass(unref(FluxKanban_module_default).kanban) }, [renderSlot(_ctx.$slots, "default")], 2);
18272
+ return openBlock(), createElementBlock("div", {
18273
+ ref_key: "root",
18274
+ ref: root,
18275
+ role: "application",
18276
+ "aria-roledescription": "Kanban board",
18277
+ "aria-label": __props.ariaLabel,
18278
+ class: normalizeClass([unref(FluxKanban_module_default).kanban, isDragging.value && unref(FluxKanban_module_default).isBoardDragging])
18279
+ }, [renderSlot(_ctx.$slots, "default"), createElementVNode("div", {
18280
+ "aria-live": "polite",
18281
+ "aria-atomic": "true",
18282
+ class: normalizeClass(unref(FluxKanban_module_default).kanbanLiveRegion)
18283
+ }, toDisplayString(liveMessage.value), 3)], 10, _hoisted_1$18);
17856
18284
  };
17857
18285
  }
17858
18286
  });
17859
- var FluxKanbanCard_module_default = {
17860
- kanbanCard: `kanban-card`,
17861
- isDragging: `is-dragging`,
17862
- isDropBefore: `is-drop-before`
17863
- };
18287
+ //#endregion
18288
+ //#region src/component/FluxKanbanCard.vue?vue&type=script&setup=true&lang.ts
18289
+ var _hoisted_1$17 = [
18290
+ "aria-disabled",
18291
+ "aria-grabbed",
18292
+ "draggable",
18293
+ "tabindex"
18294
+ ];
17864
18295
  //#endregion
17865
18296
  //#region src/component/FluxKanbanCard.vue
17866
18297
  var FluxKanbanCard_default = /* @__PURE__ */ defineComponent({
17867
18298
  __name: "FluxKanbanCard",
17868
18299
  props: {
17869
18300
  cardId: {},
17870
- columnId: {}
18301
+ columnId: {},
18302
+ disabled: {
18303
+ type: Boolean,
18304
+ default: false
18305
+ }
17871
18306
  },
17872
18307
  setup(__props) {
17873
18308
  const kanban = inject(FluxKanbanInjectionKey);
17874
18309
  const root = useTemplateRef("root");
17875
- const isDragging = computed(() => unref(kanban.dragState)?.cardId === __props.cardId);
18310
+ const disabledState = useDisabled_default(toRef(() => __props.disabled));
18311
+ const isDragging = computed(() => unref(kanban.dragState)?.cardId === __props.cardId && unref(kanban.dragState)?.mode === "pointer");
18312
+ const isGrabbed = computed(() => kanban.isCardGrabbed(__props.cardId));
17876
18313
  const isDropBefore = computed(() => {
17877
18314
  const state = unref(kanban.dragState);
17878
18315
  if (!state || state.dropColumnId === null || state.beforeCardId === null) return false;
@@ -17880,19 +18317,46 @@ var FluxKanbanCard_default = /* @__PURE__ */ defineComponent({
17880
18317
  });
17881
18318
  onMounted(() => {
17882
18319
  if (root.value) kanban.registerCard(root.value, __props.cardId);
18320
+ if (kanban.isCardGrabbed(__props.cardId)) root.value?.focus();
17883
18321
  });
17884
- onUnmounted(() => {
18322
+ onBeforeUnmount(() => {
17885
18323
  if (root.value) kanban.unregisterCard(root.value);
17886
18324
  });
18325
+ watch(() => __props.cardId, (newId, oldId) => {
18326
+ if (root.value && oldId !== void 0) {
18327
+ kanban.unregisterCard(root.value);
18328
+ kanban.registerCard(root.value, newId);
18329
+ }
18330
+ });
17887
18331
  function onDragStart(evt) {
18332
+ if (unref(disabledState)) {
18333
+ evt.preventDefault();
18334
+ return;
18335
+ }
17888
18336
  kanban.startDrag(__props.cardId, __props.columnId);
17889
- if (evt.dataTransfer) evt.dataTransfer.effectAllowed = "move";
18337
+ if (evt.dataTransfer) {
18338
+ evt.dataTransfer.effectAllowed = "move";
18339
+ evt.dataTransfer.setData("text/plain", `card:${String(__props.cardId)}`);
18340
+ if (root.value) {
18341
+ const offsetX = evt.offsetX || root.value.getBoundingClientRect().width / 2;
18342
+ const offsetY = evt.offsetY || 12;
18343
+ evt.dataTransfer.setDragImage(root.value, offsetX, offsetY);
18344
+ }
18345
+ }
17890
18346
  }
17891
18347
  function onDragEnd() {
17892
18348
  kanban.endDrag();
17893
18349
  }
18350
+ function onFocus() {
18351
+ root.value?.scrollIntoView({
18352
+ block: "nearest",
18353
+ inline: "nearest",
18354
+ behavior: "smooth"
18355
+ });
18356
+ }
17894
18357
  function onDragOver(evt) {
17895
- if (!unref(kanban.dragState)) return;
18358
+ if (!unref(kanban.dragState) || unref(disabledState)) return;
18359
+ evt.preventDefault();
17896
18360
  const cardEl = evt.currentTarget;
17897
18361
  const rect = cardEl.getBoundingClientRect();
17898
18362
  if (evt.clientY < rect.top + rect.height / 2) kanban.updateDropTarget(__props.columnId, __props.cardId);
@@ -17909,49 +18373,117 @@ var FluxKanbanCard_default = /* @__PURE__ */ defineComponent({
17909
18373
  kanban.updateDropTarget(__props.columnId, null);
17910
18374
  }
17911
18375
  }
18376
+ function onKeyDown(evt) {
18377
+ if (unref(disabledState)) return;
18378
+ const state = unref(kanban.dragState);
18379
+ if (!(state !== null && state.mode === "keyboard" && state.cardId === __props.cardId)) {
18380
+ if (evt.key === " " || evt.key === "Enter") {
18381
+ evt.preventDefault();
18382
+ kanban.grabCard(__props.cardId, __props.columnId);
18383
+ }
18384
+ return;
18385
+ }
18386
+ switch (evt.key) {
18387
+ case "ArrowUp":
18388
+ evt.preventDefault();
18389
+ kanban.moveKeyboard("up");
18390
+ break;
18391
+ case "ArrowDown":
18392
+ evt.preventDefault();
18393
+ kanban.moveKeyboard("down");
18394
+ break;
18395
+ case "ArrowLeft":
18396
+ evt.preventDefault();
18397
+ kanban.moveKeyboard("left");
18398
+ break;
18399
+ case "ArrowRight":
18400
+ evt.preventDefault();
18401
+ kanban.moveKeyboard("right");
18402
+ break;
18403
+ case " ":
18404
+ case "Enter":
18405
+ evt.preventDefault();
18406
+ kanban.commitKeyboardDrop();
18407
+ break;
18408
+ case "Escape":
18409
+ evt.preventDefault();
18410
+ kanban.cancelKeyboardDrop();
18411
+ break;
18412
+ }
18413
+ }
17912
18414
  return (_ctx, _cache) => {
17913
18415
  return openBlock(), createElementBlock("div", {
17914
18416
  ref_key: "root",
17915
18417
  ref: root,
17916
18418
  "data-kanban-card": "",
18419
+ role: "listitem",
18420
+ "aria-roledescription": "Kanban card",
18421
+ "aria-disabled": unref(disabledState) ? true : void 0,
18422
+ "aria-grabbed": isGrabbed.value ? true : void 0,
17917
18423
  class: normalizeClass([
17918
- unref(FluxKanbanCard_module_default).kanbanCard,
17919
- isDragging.value && unref(FluxKanbanCard_module_default).isDragging,
17920
- isDropBefore.value && unref(FluxKanbanCard_module_default).isDropBefore
18424
+ unref(FluxKanban_module_default).kanbanCard,
18425
+ isDragging.value && unref(FluxKanban_module_default).isDragging,
18426
+ isGrabbed.value && unref(FluxKanban_module_default).isGrabbed,
18427
+ isDropBefore.value && unref(FluxKanban_module_default).isDropBefore,
18428
+ isDropBefore.value && !unref(kanban).isDropAllowed.value && unref(FluxKanban_module_default).isDropBeforeDisallowed,
18429
+ unref(disabledState) && unref(FluxKanban_module_default).isDisabled
17921
18430
  ]),
17922
- draggable: "true",
18431
+ draggable: !unref(disabledState),
18432
+ tabindex: unref(disabledState) ? -1 : 0,
17923
18433
  onDragstart: onDragStart,
17924
18434
  onDragend: onDragEnd,
17925
- onDragover: withModifiers(onDragOver, ["prevent", "stop"])
17926
- }, [renderSlot(_ctx.$slots, "default")], 34);
18435
+ onDragover: withModifiers(onDragOver, ["stop"]),
18436
+ onFocus,
18437
+ onKeydown: onKeyDown
18438
+ }, [renderSlot(_ctx.$slots, "default")], 42, _hoisted_1$17);
17927
18439
  };
17928
18440
  }
17929
18441
  });
17930
- var FluxKanbanColumn_module_default = {
17931
- kanbanColumn: `kanban-column`,
17932
- kanbanColumnHeader: `kanban-column-header`,
17933
- kanbanColumnLabel: `kanban-column-label`,
17934
- kanbanColumnBody: `kanban-column-body`,
17935
- isOver: `is-over`,
17936
- kanbanDropIndicator: `kanban-drop-indicator`
17937
- };
18442
+ //#endregion
18443
+ //#region src/component/FluxKanbanColumn.vue?vue&type=script&setup=true&lang.ts
18444
+ var _hoisted_1$16 = ["aria-label", "aria-disabled"];
18445
+ var _hoisted_2$7 = ["draggable", "tabindex"];
17938
18446
  //#endregion
17939
18447
  //#region src/component/FluxKanbanColumn.vue
17940
18448
  var FluxKanbanColumn_default = /* @__PURE__ */ defineComponent({
17941
18449
  __name: "FluxKanbanColumn",
17942
18450
  props: {
17943
18451
  columnId: {},
18452
+ disabled: {
18453
+ type: Boolean,
18454
+ default: false
18455
+ },
17944
18456
  label: {}
17945
18457
  },
17946
18458
  setup(__props) {
17947
18459
  const kanban = inject(FluxKanbanInjectionKey);
18460
+ const root = useTemplateRef("root");
18461
+ const body = useTemplateRef("body");
18462
+ const slots = useSlots();
18463
+ const disabledState = useDisabled_default(toRef(() => __props.disabled));
18464
+ provide(FluxDisabledInjectionKey, disabledState);
17948
18465
  let dragEnterCount = 0;
17949
18466
  const isOver = ref(false);
18467
+ const isReorderable = computed(() => unref(kanban.reorderableColumns) && !unref(disabledState));
17950
18468
  const isDropEnd = computed(() => {
17951
18469
  const state = unref(kanban.dragState);
17952
18470
  return state !== null && state.dropColumnId === __props.columnId && state.beforeCardId === null;
17953
18471
  });
18472
+ const isColumnDragging = computed(() => unref(kanban.columnDragState)?.columnId === __props.columnId);
18473
+ const isColumnDropBefore = computed(() => {
18474
+ const state = unref(kanban.columnDragState);
18475
+ if (!state || state.dropBeforeColumnId !== __props.columnId || state.columnId === __props.columnId) return false;
18476
+ return true;
18477
+ });
18478
+ const isEmpty = computed(() => {
18479
+ if (!slots.empty) return false;
18480
+ const defaultSlot = slots.default?.();
18481
+ if (!defaultSlot || defaultSlot.length === 0) return true;
18482
+ return !a$2(defaultSlot).some((vnode) => vnode.type !== Comment && vnode.type !== Text);
18483
+ });
18484
+ const hasFooter = computed(() => !!slots.footer);
17954
18485
  function onDragEnter() {
18486
+ if (unref(disabledState)) return;
17955
18487
  dragEnterCount++;
17956
18488
  isOver.value = true;
17957
18489
  }
@@ -17963,27 +18495,120 @@ var FluxKanbanColumn_default = /* @__PURE__ */ defineComponent({
17963
18495
  }
17964
18496
  }
17965
18497
  function onDragOver(evt) {
18498
+ if (unref(disabledState) || !unref(kanban.dragState)) return;
18499
+ evt.preventDefault();
17966
18500
  if (!!!evt.target.closest("[data-kanban-card]")) kanban.updateDropTarget(__props.columnId, null);
17967
18501
  }
17968
- function onDrop() {
18502
+ function onDrop(evt) {
17969
18503
  dragEnterCount = 0;
17970
18504
  isOver.value = false;
18505
+ if (unref(disabledState) || !unref(kanban.dragState)) return;
18506
+ evt.preventDefault();
17971
18507
  kanban.commitDrop();
17972
18508
  }
18509
+ function onColumnDragStart(evt) {
18510
+ if (!unref(isReorderable)) return;
18511
+ if (evt.dataTransfer) {
18512
+ evt.dataTransfer.effectAllowed = "move";
18513
+ evt.dataTransfer.setData("text/plain", `column:${String(__props.columnId)}`);
18514
+ }
18515
+ kanban.startColumnDrag(__props.columnId);
18516
+ }
18517
+ function onColumnDragEnd() {
18518
+ kanban.endColumnDrag();
18519
+ }
18520
+ function onColumnDragOver(evt) {
18521
+ const state = unref(kanban.columnDragState);
18522
+ if (!state || state.columnId === __props.columnId) return;
18523
+ evt.preventDefault();
18524
+ const rect = evt.currentTarget.getBoundingClientRect();
18525
+ if (evt.clientX < rect.left + rect.width / 2) kanban.updateColumnDropTarget(__props.columnId);
18526
+ else {
18527
+ let next = root.value?.nextElementSibling ?? null;
18528
+ while (next) {
18529
+ const info = kanban.getColumnInfo(next);
18530
+ if (info) {
18531
+ kanban.updateColumnDropTarget(info.columnId);
18532
+ return;
18533
+ }
18534
+ next = next.nextElementSibling;
18535
+ }
18536
+ kanban.updateColumnDropTarget(null);
18537
+ }
18538
+ }
18539
+ function onColumnDrop(evt) {
18540
+ if (!unref(kanban.columnDragState)) return;
18541
+ evt.preventDefault();
18542
+ kanban.commitColumnDrop();
18543
+ }
18544
+ onMounted(() => {
18545
+ if (root.value) kanban.registerColumn(root.value, __props.columnId);
18546
+ if (body.value) kanban.setColumnBodyElement(__props.columnId, body.value);
18547
+ });
18548
+ onBeforeUnmount(() => {
18549
+ if (root.value) kanban.unregisterColumn(root.value);
18550
+ kanban.setColumnBodyElement(__props.columnId, null);
18551
+ });
18552
+ watch(() => __props.columnId, (newId, oldId) => {
18553
+ if (oldId !== void 0) kanban.setColumnBodyElement(oldId, null);
18554
+ if (root.value) {
18555
+ kanban.unregisterColumn(root.value);
18556
+ kanban.registerColumn(root.value, newId);
18557
+ }
18558
+ if (body.value) kanban.setColumnBodyElement(newId, body.value);
18559
+ });
17973
18560
  return (_ctx, _cache) => {
17974
18561
  return openBlock(), createElementBlock("div", {
17975
- "data-kanban-column": "",
17976
- class: normalizeClass([unref(FluxKanbanColumn_module_default).kanbanColumn, isOver.value && unref(FluxKanbanColumn_module_default).isOver])
17977
- }, [createElementVNode("div", { class: normalizeClass(unref(FluxKanbanColumn_module_default).kanbanColumnHeader) }, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("span", { class: normalizeClass(unref(FluxKanbanColumn_module_default).kanbanColumnLabel) }, toDisplayString(__props.label), 3)]), renderSlot(_ctx.$slots, "actions")], 2), createElementVNode("div", {
17978
- class: normalizeClass(unref(FluxKanbanColumn_module_default).kanbanColumnBody),
17979
- onDragenter: onDragEnter,
17980
- onDragleave: onDragLeave,
17981
- onDragover: withModifiers(onDragOver, ["prevent"]),
17982
- onDrop: withModifiers(onDrop, ["prevent"])
17983
- }, [renderSlot(_ctx.$slots, "default"), isDropEnd.value ? (openBlock(), createElementBlock("div", {
17984
- key: 0,
17985
- class: normalizeClass(unref(FluxKanbanColumn_module_default).kanbanDropIndicator)
17986
- }, null, 2)) : createCommentVNode("", true)], 34)], 2);
18562
+ ref_key: "root",
18563
+ ref: root,
18564
+ role: "list",
18565
+ "aria-roledescription": "Kanban column",
18566
+ "aria-label": __props.label,
18567
+ "aria-disabled": unref(disabledState) ? true : void 0,
18568
+ class: normalizeClass([
18569
+ unref(FluxKanban_module_default).kanbanColumn,
18570
+ isOver.value && unref(FluxKanban_module_default).isOver,
18571
+ isOver.value && !unref(kanban).isDropAllowed.value && unref(FluxKanban_module_default).isDropDisallowed,
18572
+ isReorderable.value && unref(FluxKanban_module_default).isReorderable,
18573
+ isColumnDragging.value && unref(FluxKanban_module_default).isColumnDragging,
18574
+ isColumnDropBefore.value && unref(FluxKanban_module_default).isColumnDropBefore,
18575
+ unref(disabledState) && unref(FluxKanban_module_default).isDisabled
18576
+ ])
18577
+ }, [
18578
+ createElementVNode("div", {
18579
+ class: normalizeClass(unref(FluxKanban_module_default).kanbanColumnHeader),
18580
+ draggable: isReorderable.value && !unref(disabledState),
18581
+ tabindex: isReorderable.value && !unref(disabledState) ? 0 : void 0,
18582
+ onDragstart: onColumnDragStart,
18583
+ onDragend: onColumnDragEnd,
18584
+ onDragover: onColumnDragOver,
18585
+ onDrop: onColumnDrop
18586
+ }, [renderSlot(_ctx.$slots, "header", {}, () => [createElementVNode("span", { class: normalizeClass(unref(FluxKanban_module_default).kanbanColumnLabel) }, toDisplayString(__props.label), 3)]), renderSlot(_ctx.$slots, "actions")], 42, _hoisted_2$7),
18587
+ createElementVNode("div", {
18588
+ ref_key: "body",
18589
+ ref: body,
18590
+ class: normalizeClass(unref(FluxKanban_module_default).kanbanColumnBody),
18591
+ onDragenter: onDragEnter,
18592
+ onDragleave: onDragLeave,
18593
+ onDragover: onDragOver,
18594
+ onDrop
18595
+ }, [
18596
+ renderSlot(_ctx.$slots, "default"),
18597
+ isEmpty.value ? (openBlock(), createElementBlock("div", {
18598
+ key: 0,
18599
+ class: normalizeClass(unref(FluxKanban_module_default).kanbanColumnEmpty)
18600
+ }, [renderSlot(_ctx.$slots, "empty")], 2)) : createCommentVNode("", true),
18601
+ createElementVNode("div", { class: normalizeClass([
18602
+ unref(FluxKanban_module_default).kanbanDropIndicator,
18603
+ isDropEnd.value && unref(FluxKanban_module_default).isDropEndActive,
18604
+ isDropEnd.value && !unref(kanban).isDropAllowed.value && unref(FluxKanban_module_default).isDropEndDisallowed
18605
+ ]) }, null, 2)
18606
+ ], 34),
18607
+ hasFooter.value ? (openBlock(), createElementBlock("div", {
18608
+ key: 0,
18609
+ class: normalizeClass(unref(FluxKanban_module_default).kanbanColumnFooter)
18610
+ }, [renderSlot(_ctx.$slots, "footer")], 2)) : createCommentVNode("", true)
18611
+ ], 10, _hoisted_1$16);
17987
18612
  };
17988
18613
  }
17989
18614
  });
@@ -19884,7 +20509,7 @@ var FluxStatistic_default = /* @__PURE__ */ defineComponent({
19884
20509
  });
19885
20510
  //#endregion
19886
20511
  //#region src/css/component/Stepper.module.scss
19887
- var { "sparklesContainerActive": _0$2, "sparklesContainer": _1, "sparklesParticles": _2 } = {
20512
+ var { "sparklesContainer": _0$2, "sparklesContainerActive": _1, "sparklesParticles": _2 } = {
19888
20513
  sparklesContainer: `sparkles-container`,
19889
20514
  sparklesParticles: `sparkles-particles`,
19890
20515
  sparklesContainerActive: `sparkles-container-active`,
@@ -19895,11 +20520,11 @@ var { "sparklesContainerActive": _0$2, "sparklesContainer": _1, "sparklesParticl
19895
20520
  var Stepper_module_default = {
19896
20521
  stepperStep: `stepper-step`,
19897
20522
  stepperSteps: `stepper-steps`,
19898
- stepperStepsItem: `stepper-steps-item ${_1}`,
20523
+ stepperStepsItem: `stepper-steps-item ${_0$2}`,
19899
20524
  icon: `icon`,
19900
- stepperStepsItemComplete: `stepper-steps-item-complete ${_0$2} stepper-steps-item ${_1}`,
19901
- stepperStepsItemCurrent: `stepper-steps-item-current stepper-steps-item ${_1}`,
19902
- stepperStepsItemIdle: `stepper-steps-item-idle stepper-steps-item ${_1}`,
20525
+ stepperStepsItemComplete: `stepper-steps-item-complete ${_1} stepper-steps-item ${_0$2}`,
20526
+ stepperStepsItemCurrent: `stepper-steps-item-current stepper-steps-item ${_0$2}`,
20527
+ stepperStepsItemIdle: `stepper-steps-item-idle stepper-steps-item ${_0$2}`,
19903
20528
  stepperStepsItemParticles: `stepper-steps-item-particles ${_2}`
19904
20529
  };
19905
20530
  //#endregion