@flux-ui/components 3.0.0-next.51 → 3.0.0-next.53

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.
@@ -0,0 +1,25 @@
1
+ import { FluxKanbanMoveEvent } from '@flux-ui/types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function __VLS_template(): {
4
+ attrs: Partial<{}>;
5
+ slots: Readonly<{
6
+ default?(): any;
7
+ }> & {
8
+ default?(): any;
9
+ };
10
+ refs: {};
11
+ rootEl: HTMLDivElement;
12
+ };
13
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
+ declare const __VLS_component: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
15
+ move: (args_0: FluxKanbanMoveEvent) => any;
16
+ }, string, PublicProps, Readonly<{}> & Readonly<{
17
+ onMove?: (args_0: FluxKanbanMoveEvent) => any;
18
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>;
19
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
20
+ export default _default;
21
+ type __VLS_WithTemplateSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -0,0 +1,28 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ type __VLS_Props = {
3
+ readonly cardId: string | number;
4
+ readonly columnId: string | number;
5
+ };
6
+ declare function __VLS_template(): {
7
+ attrs: Partial<{}>;
8
+ slots: Readonly<{
9
+ default?(): any;
10
+ }> & {
11
+ default?(): any;
12
+ };
13
+ refs: {
14
+ root: HTMLDivElement;
15
+ };
16
+ rootEl: HTMLDivElement;
17
+ };
18
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
19
+ declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
20
+ root: HTMLDivElement;
21
+ }, HTMLDivElement>;
22
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
23
+ export default _default;
24
+ type __VLS_WithTemplateSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -0,0 +1,28 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ type __VLS_Props = {
3
+ readonly columnId: string | number;
4
+ readonly label: string;
5
+ };
6
+ declare function __VLS_template(): {
7
+ attrs: Partial<{}>;
8
+ slots: Readonly<{
9
+ default?(): any;
10
+ header?(): any;
11
+ actions?(): any;
12
+ }> & {
13
+ default?(): any;
14
+ header?(): any;
15
+ actions?(): any;
16
+ };
17
+ refs: {};
18
+ rootEl: HTMLDivElement;
19
+ };
20
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
21
+ declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
22
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
23
+ export default _default;
24
+ type __VLS_WithTemplateSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };
@@ -80,6 +80,9 @@ export { default as FluxGridColumn } from './FluxGridColumn.vue';
80
80
  export { default as FluxGridPattern } from './FluxGridPattern.vue';
81
81
  export { default as FluxIcon } from './FluxIcon.vue';
82
82
  export { default as FluxInfo } from './FluxInfo.vue';
83
+ export { default as FluxKanban } from './FluxKanban.vue';
84
+ export { default as FluxKanbanCard } from './FluxKanbanCard.vue';
85
+ export { default as FluxKanbanColumn } from './FluxKanbanColumn.vue';
83
86
  export { default as FluxInfoStack } from './FluxInfoStack.vue';
84
87
  export { default as FluxItem } from './FluxItem.vue';
85
88
  export { default as FluxItemActions } from './FluxItemActions.vue';
@@ -0,0 +1,7 @@
1
+ import { FluxKanbanMoveEvent } from '@flux-ui/types';
2
+ import { FluxKanbanInjection } from '../../data/di';
3
+ /**
4
+ * Internal composable for managing kanban drag-and-drop state.
5
+ * Provides card registration, drag tracking, and drop target management.
6
+ */
7
+ export declare function useKanban(onMove: (event: FluxKanbanMoveEvent) => void): FluxKanbanInjection;
package/dist/data/di.d.ts CHANGED
@@ -2,12 +2,32 @@ import { FluxFilterState, FluxFilterValue } from '@flux-ui/types';
2
2
  import { ComponentInternalInstance, InjectionKey, Ref } from 'vue';
3
3
  export declare const FluxAdaptiveGroupInjectionKey: InjectionKey<FluxAdaptiveGroupInjection>;
4
4
  export declare const FluxDisabledInjectionKey: InjectionKey<Ref<boolean>>;
5
+ export declare const FluxKanbanInjectionKey: InjectionKey<FluxKanbanInjection>;
5
6
  export declare const FluxExpandableGroupInjectionKey: InjectionKey<FluxExpandableGroupInjection>;
6
7
  export declare const FluxFlyoutInjectionKey: InjectionKey<FluxFlyoutInjection>;
7
8
  export declare const FluxFilterInjectionKey: InjectionKey<FluxFilterInjection>;
8
9
  export declare const FluxFormFieldInjectionKey: InjectionKey<FluxFormFieldInjection>;
9
10
  export declare const FluxTableInjectionKey: InjectionKey<FluxTableInjection>;
10
11
  export declare const FluxTooltipInjectionKey: InjectionKey<FluxTooltipInjection>;
12
+ export type FluxKanbanDragState = {
13
+ readonly cardId: string | number;
14
+ readonly fromColumnId: string | number;
15
+ readonly dropColumnId: string | number | null;
16
+ readonly beforeCardId: string | number | null;
17
+ };
18
+ export type FluxKanbanInjection = {
19
+ readonly dragState: Ref<FluxKanbanDragState | null>;
20
+ registerCard(element: Element, cardId: string | number): void;
21
+ unregisterCard(element: Element): void;
22
+ getCardInfo(element: Element): {
23
+ readonly cardId: string | number;
24
+ } | undefined;
25
+ startDrag(cardId: string | number, fromColumnId: string | number): void;
26
+ endDrag(): void;
27
+ updateDropTarget(columnId: string | number, beforeCardId: string | number | null): void;
28
+ clearDropTarget(): void;
29
+ commitDrop(): void;
30
+ };
11
31
  export type FluxAdaptiveGroupChild = {
12
32
  readonly priority: Ref<number>;
13
33
  readonly desiredDefaultWidth: Ref<number>;
package/dist/index.css CHANGED
@@ -5242,6 +5242,90 @@ tfoot .table-cell {
5242
5242
 
5243
5243
  .info-body {
5244
5244
  align-items: center;
5245
+ }.kanban {
5246
+ display: flex;
5247
+ flex-flow: row;
5248
+ gap: 15px;
5249
+ overflow-x: auto;
5250
+ padding-bottom: 6px;
5251
+ }.kanban-card {
5252
+ position: relative;
5253
+ padding: 12px;
5254
+ background: var(--gray-25);
5255
+ border: 1px solid var(--gray-200);
5256
+ border-radius: var(--radius);
5257
+ cursor: grab;
5258
+ transition: opacity 180ms var(--swift-out), box-shadow 180ms var(--swift-out);
5259
+ user-select: none;
5260
+ }
5261
+ .kanban-card:active {
5262
+ cursor: grabbing;
5263
+ }
5264
+ .kanban-card:hover {
5265
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
5266
+ }
5267
+
5268
+ .is-dragging {
5269
+ opacity: 0.4;
5270
+ cursor: grabbing;
5271
+ }
5272
+
5273
+ .is-drop-before::before {
5274
+ content: "";
5275
+ position: absolute;
5276
+ inset-inline: 0;
5277
+ top: -6px;
5278
+ height: 2px;
5279
+ border-radius: 999px;
5280
+ background: var(--primary-500);
5281
+ }.kanban-column {
5282
+ display: flex;
5283
+ flex-flow: column;
5284
+ flex-shrink: 0;
5285
+ width: 280px;
5286
+ background: var(--gray-100);
5287
+ border: 1px solid var(--gray-200);
5288
+ border-radius: var(--radius);
5289
+ overflow: hidden;
5290
+ }
5291
+
5292
+ .kanban-column-header {
5293
+ display: flex;
5294
+ align-items: center;
5295
+ gap: 9px;
5296
+ padding: 12px 15px;
5297
+ border-bottom: 1px solid var(--gray-200);
5298
+ }
5299
+
5300
+ .kanban-column-label {
5301
+ flex: 1;
5302
+ font-size: 0.8125rem;
5303
+ font-weight: 600;
5304
+ color: var(--foreground);
5305
+ letter-spacing: 0.01em;
5306
+ text-transform: uppercase;
5307
+ }
5308
+
5309
+ .kanban-column-body {
5310
+ display: flex;
5311
+ flex-flow: column;
5312
+ gap: 9px;
5313
+ padding: 9px;
5314
+ min-height: 60px;
5315
+ flex: 1;
5316
+ overflow-y: auto;
5317
+ transition: background 180ms var(--swift-out);
5318
+ }
5319
+
5320
+ .is-over .kanban-column-body {
5321
+ background: rgb(from var(--primary-500) r g b/0.06);
5322
+ }
5323
+
5324
+ .kanban-drop-indicator {
5325
+ height: 2px;
5326
+ border-radius: 999px;
5327
+ background: var(--primary-500);
5328
+ flex-shrink: 0;
5245
5329
  }.item {
5246
5330
  display: flex;
5247
5331
  flex-flow: row nowrap;
package/dist/index.js CHANGED
@@ -64,6 +64,7 @@ function useBreakpoints_default() {
64
64
  //#region src/data/di.ts
65
65
  var FluxAdaptiveGroupInjectionKey = Symbol();
66
66
  var FluxDisabledInjectionKey = Symbol();
67
+ var FluxKanbanInjectionKey = Symbol();
67
68
  var FluxExpandableGroupInjectionKey = Symbol();
68
69
  var FluxFlyoutInjectionKey = Symbol();
69
70
  var FluxFilterInjectionKey = Symbol();
@@ -8348,32 +8349,32 @@ var FluxAction_default = /* @__PURE__ */ defineComponent({
8348
8349
  });
8349
8350
  //#endregion
8350
8351
  //#region src/css/component/Button.module.scss
8351
- var { "button": _0$15, "buttonIcon": _1$7, "buttonLabel": _2$4 } = Button_module_default$1;
8352
+ var { "button": _0$15, "buttonLabel": _1$7, "buttonIcon": _2$4 } = Button_module_default$1;
8352
8353
  var Button_module_default = {
8353
8354
  primaryButton: `primary-button ${_0$15}`,
8354
8355
  spinner: `spinner`,
8355
- primaryButtonIcon: `primary-button-icon ${_1$7}`,
8356
- primaryButtonLabel: `primary-button-label ${_2$4}`,
8356
+ primaryButtonIcon: `primary-button-icon ${_2$4}`,
8357
+ primaryButtonLabel: `primary-button-label ${_1$7}`,
8357
8358
  secondaryButton: `secondary-button ${_0$15}`,
8358
- secondaryButtonIcon: `secondary-button-icon ${_1$7}`,
8359
- secondaryButtonLabel: `secondary-button-label ${_2$4}`,
8359
+ secondaryButtonIcon: `secondary-button-icon ${_2$4}`,
8360
+ secondaryButtonLabel: `secondary-button-label ${_1$7}`,
8360
8361
  destructiveButton: `destructive-button ${_0$15}`,
8361
- destructiveButtonIcon: `destructive-button-icon ${_1$7}`,
8362
- destructiveButtonLabel: `destructive-button-label ${_2$4}`,
8362
+ destructiveButtonIcon: `destructive-button-icon ${_2$4}`,
8363
+ destructiveButtonLabel: `destructive-button-label ${_1$7}`,
8363
8364
  baseLinkButton: `base-link-button ${_0$15}`,
8364
8365
  primaryLinkButton: `primary-link-button base-link-button ${_0$15}`,
8365
- primaryLinkButtonIcon: `primary-link-button-icon ${_1$7}`,
8366
- primaryLinkButtonLabel: `primary-link-button-label ${_2$4}`,
8366
+ primaryLinkButtonIcon: `primary-link-button-icon ${_2$4}`,
8367
+ primaryLinkButtonLabel: `primary-link-button-label ${_1$7}`,
8367
8368
  secondaryLinkButton: `secondary-link-button base-link-button ${_0$15}`,
8368
- secondaryLinkButtonIcon: `secondary-link-button-icon ${_1$7}`,
8369
- secondaryLinkButtonLabel: `secondary-link-button-label ${_2$4}`,
8369
+ secondaryLinkButtonIcon: `secondary-link-button-icon ${_2$4}`,
8370
+ secondaryLinkButtonLabel: `secondary-link-button-label ${_1$7}`,
8370
8371
  linkButton: `link-button ${_0$15}`,
8371
- linkButtonIcon: `link-button-icon ${_1$7}`,
8372
+ linkButtonIcon: `link-button-icon ${_2$4}`,
8372
8373
  icon: `icon`,
8373
- linkButtonLabel: `link-button-label ${_2$4}`,
8374
+ linkButtonLabel: `link-button-label ${_1$7}`,
8374
8375
  publishButton: `publish-button primary-button ${_0$15}`,
8375
- publishButtonIcon: `publish-button-icon primary-button-icon ${_1$7}`,
8376
- publishButtonLabel: `publish-button-label primary-button-label ${_2$4}`,
8376
+ publishButtonIcon: `publish-button-icon primary-button-icon ${_2$4}`,
8377
+ publishButtonLabel: `publish-button-label primary-button-label ${_1$7}`,
8377
8378
  publishButtonAnimation: `publish-button-animation`,
8378
8379
  isDone: `is-done`,
8379
8380
  publishButtonAnimationArrow: `publish-button-animation-arrow`,
@@ -10244,7 +10245,7 @@ var FilterBadge_default = /* @__PURE__ */ defineComponent({
10244
10245
  });
10245
10246
  //#endregion
10246
10247
  //#region src/css/component/Menu.module.scss
10247
- var { "button": _0$13, "buttonIcon": _1$5, "buttonLabel": _2$2 } = Button_module_default$1;
10248
+ var { "buttonLabel": _0$13, "button": _1$5, "buttonIcon": _2$2 } = Button_module_default$1;
10248
10249
  var Menu_module_default = {
10249
10250
  menu: `menu`,
10250
10251
  menuNormal: `menu-normal menu`,
@@ -10252,10 +10253,10 @@ var Menu_module_default = {
10252
10253
  menuGroup: `menu-group`,
10253
10254
  menuGroupHorizontal: `menu-group-horizontal menu-group`,
10254
10255
  menuGroupVertical: `menu-group-vertical menu-group`,
10255
- menuItem: `menu-item ${_0$13}`,
10256
+ menuItem: `menu-item ${_1$5}`,
10256
10257
  badge: `badge`,
10257
- menuItemIcon: `menu-item-icon ${_1$5}`,
10258
- menuItemLabel: `menu-item-label ${_2$2}`,
10258
+ menuItemIcon: `menu-item-icon ${_2$2}`,
10259
+ menuItemLabel: `menu-item-label ${_0$13}`,
10259
10260
  menuItemActive: `menu-item-active`,
10260
10261
  menuItemDestructive: `menu-item-destructive`,
10261
10262
  menuItemHighlighted: `menu-item-highlighted`,
@@ -10264,7 +10265,7 @@ var Menu_module_default = {
10264
10265
  menuCollapsibleOpened: `menu-collapsible-opened menu-collapsible`,
10265
10266
  menuCollapsibleBody: `menu-collapsible-body`,
10266
10267
  menuCollapsibleContent: `menu-collapsible-content`,
10267
- menuItemSelectableIcon: `menu-item-selectable-icon ${_1$5}`,
10268
+ menuItemSelectableIcon: `menu-item-selectable-icon ${_2$2}`,
10268
10269
  menuItemSelected: `menu-item-selected`,
10269
10270
  menuItemCommand: `menu-item-command`,
10270
10271
  menuItemCommandIcon: `menu-item-command-icon`,
@@ -17769,6 +17770,222 @@ var FluxInfo_default = /* @__PURE__ */ defineComponent({
17769
17770
  }
17770
17771
  });
17771
17772
  //#endregion
17773
+ //#region src/composable/private/useKanban.ts
17774
+ /**
17775
+ * Internal composable for managing kanban drag-and-drop state.
17776
+ * Provides card registration, drag tracking, and drop target management.
17777
+ */
17778
+ function useKanban(onMove) {
17779
+ const dragState = ref(null);
17780
+ const cardRegistry = /* @__PURE__ */ new WeakMap();
17781
+ function registerCard(element, cardId) {
17782
+ cardRegistry.set(element, { cardId });
17783
+ }
17784
+ function unregisterCard(element) {
17785
+ cardRegistry.delete(element);
17786
+ }
17787
+ function getCardInfo(element) {
17788
+ return cardRegistry.get(element);
17789
+ }
17790
+ function startDrag(cardId, fromColumnId) {
17791
+ dragState.value = {
17792
+ cardId,
17793
+ fromColumnId,
17794
+ dropColumnId: null,
17795
+ beforeCardId: null
17796
+ };
17797
+ }
17798
+ function endDrag() {
17799
+ dragState.value = null;
17800
+ }
17801
+ function updateDropTarget(columnId, beforeCardId) {
17802
+ if (!dragState.value) return;
17803
+ dragState.value = {
17804
+ ...dragState.value,
17805
+ dropColumnId: columnId,
17806
+ beforeCardId
17807
+ };
17808
+ }
17809
+ function clearDropTarget() {
17810
+ if (!dragState.value) return;
17811
+ dragState.value = {
17812
+ ...dragState.value,
17813
+ dropColumnId: null,
17814
+ beforeCardId: null
17815
+ };
17816
+ }
17817
+ function commitDrop() {
17818
+ const state = dragState.value;
17819
+ if (!state || state.dropColumnId === null) {
17820
+ dragState.value = null;
17821
+ return;
17822
+ }
17823
+ onMove({
17824
+ cardId: state.cardId,
17825
+ fromColumnId: state.fromColumnId,
17826
+ toColumnId: state.dropColumnId,
17827
+ beforeCardId: state.beforeCardId ?? void 0
17828
+ });
17829
+ dragState.value = null;
17830
+ }
17831
+ return {
17832
+ dragState,
17833
+ registerCard,
17834
+ unregisterCard,
17835
+ getCardInfo,
17836
+ startDrag,
17837
+ endDrag,
17838
+ updateDropTarget,
17839
+ clearDropTarget,
17840
+ commitDrop
17841
+ };
17842
+ }
17843
+ var FluxKanban_module_default = { kanban: `kanban` };
17844
+ //#endregion
17845
+ //#region src/component/FluxKanban.vue
17846
+ var FluxKanban_default = /* @__PURE__ */ defineComponent({
17847
+ __name: "FluxKanban",
17848
+ emits: ["move"],
17849
+ setup(__props, { emit: __emit }) {
17850
+ const emit = __emit;
17851
+ provide(FluxKanbanInjectionKey, useKanban((event) => emit("move", event)));
17852
+ return (_ctx, _cache) => {
17853
+ return openBlock(), createElementBlock("div", { class: normalizeClass(unref(FluxKanban_module_default).kanban) }, [renderSlot(_ctx.$slots, "default")], 2);
17854
+ };
17855
+ }
17856
+ });
17857
+ var FluxKanbanCard_module_default = {
17858
+ kanbanCard: `kanban-card`,
17859
+ isDragging: `is-dragging`,
17860
+ isDropBefore: `is-drop-before`
17861
+ };
17862
+ //#endregion
17863
+ //#region src/component/FluxKanbanCard.vue
17864
+ var FluxKanbanCard_default = /* @__PURE__ */ defineComponent({
17865
+ __name: "FluxKanbanCard",
17866
+ props: {
17867
+ cardId: {},
17868
+ columnId: {}
17869
+ },
17870
+ setup(__props) {
17871
+ const kanban = inject(FluxKanbanInjectionKey);
17872
+ const root = useTemplateRef("root");
17873
+ const isDragging = computed(() => unref(kanban.dragState)?.cardId === __props.cardId);
17874
+ const isDropBefore = computed(() => {
17875
+ const state = unref(kanban.dragState);
17876
+ if (!state || state.dropColumnId === null || state.beforeCardId === null) return false;
17877
+ return state.beforeCardId === __props.cardId && state.cardId !== __props.cardId;
17878
+ });
17879
+ onMounted(() => {
17880
+ if (root.value) kanban.registerCard(root.value, __props.cardId);
17881
+ });
17882
+ onUnmounted(() => {
17883
+ if (root.value) kanban.unregisterCard(root.value);
17884
+ });
17885
+ function onDragStart(evt) {
17886
+ kanban.startDrag(__props.cardId, __props.columnId);
17887
+ if (evt.dataTransfer) evt.dataTransfer.effectAllowed = "move";
17888
+ }
17889
+ function onDragEnd() {
17890
+ kanban.endDrag();
17891
+ }
17892
+ function onDragOver(evt) {
17893
+ if (!unref(kanban.dragState)) return;
17894
+ const cardEl = evt.currentTarget;
17895
+ const rect = cardEl.getBoundingClientRect();
17896
+ if (evt.clientY < rect.top + rect.height / 2) kanban.updateDropTarget(__props.columnId, __props.cardId);
17897
+ else {
17898
+ let next = cardEl.nextElementSibling;
17899
+ while (next) {
17900
+ const info = kanban.getCardInfo(next);
17901
+ if (info) {
17902
+ kanban.updateDropTarget(__props.columnId, info.cardId);
17903
+ return;
17904
+ }
17905
+ next = next.nextElementSibling;
17906
+ }
17907
+ kanban.updateDropTarget(__props.columnId, null);
17908
+ }
17909
+ }
17910
+ return (_ctx, _cache) => {
17911
+ return openBlock(), createElementBlock("div", {
17912
+ ref_key: "root",
17913
+ ref: root,
17914
+ "data-kanban-card": "",
17915
+ class: normalizeClass([
17916
+ unref(FluxKanbanCard_module_default).kanbanCard,
17917
+ isDragging.value && unref(FluxKanbanCard_module_default).isDragging,
17918
+ isDropBefore.value && unref(FluxKanbanCard_module_default).isDropBefore
17919
+ ]),
17920
+ draggable: "true",
17921
+ onDragstart: onDragStart,
17922
+ onDragend: onDragEnd,
17923
+ onDragover: withModifiers(onDragOver, ["prevent", "stop"])
17924
+ }, [renderSlot(_ctx.$slots, "default")], 34);
17925
+ };
17926
+ }
17927
+ });
17928
+ var FluxKanbanColumn_module_default = {
17929
+ kanbanColumn: `kanban-column`,
17930
+ kanbanColumnHeader: `kanban-column-header`,
17931
+ kanbanColumnLabel: `kanban-column-label`,
17932
+ kanbanColumnBody: `kanban-column-body`,
17933
+ isOver: `is-over`,
17934
+ kanbanDropIndicator: `kanban-drop-indicator`
17935
+ };
17936
+ //#endregion
17937
+ //#region src/component/FluxKanbanColumn.vue
17938
+ var FluxKanbanColumn_default = /* @__PURE__ */ defineComponent({
17939
+ __name: "FluxKanbanColumn",
17940
+ props: {
17941
+ columnId: {},
17942
+ label: {}
17943
+ },
17944
+ setup(__props) {
17945
+ const kanban = inject(FluxKanbanInjectionKey);
17946
+ let dragEnterCount = 0;
17947
+ const isOver = ref(false);
17948
+ const isDropEnd = computed(() => {
17949
+ const state = unref(kanban.dragState);
17950
+ return state !== null && state.dropColumnId === __props.columnId && state.beforeCardId === null;
17951
+ });
17952
+ function onDragEnter() {
17953
+ dragEnterCount++;
17954
+ isOver.value = true;
17955
+ }
17956
+ function onDragLeave() {
17957
+ if (--dragEnterCount <= 0) {
17958
+ dragEnterCount = 0;
17959
+ isOver.value = false;
17960
+ kanban.clearDropTarget();
17961
+ }
17962
+ }
17963
+ function onDragOver(evt) {
17964
+ if (!!!evt.target.closest("[data-kanban-card]")) kanban.updateDropTarget(__props.columnId, null);
17965
+ }
17966
+ function onDrop() {
17967
+ dragEnterCount = 0;
17968
+ isOver.value = false;
17969
+ kanban.commitDrop();
17970
+ }
17971
+ return (_ctx, _cache) => {
17972
+ return openBlock(), createElementBlock("div", {
17973
+ "data-kanban-column": "",
17974
+ class: normalizeClass([unref(FluxKanbanColumn_module_default).kanbanColumn, isOver.value && unref(FluxKanbanColumn_module_default).isOver])
17975
+ }, [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", {
17976
+ class: normalizeClass(unref(FluxKanbanColumn_module_default).kanbanColumnBody),
17977
+ onDragenter: onDragEnter,
17978
+ onDragleave: onDragLeave,
17979
+ onDragover: withModifiers(onDragOver, ["prevent"]),
17980
+ onDrop: withModifiers(onDrop, ["prevent"])
17981
+ }, [renderSlot(_ctx.$slots, "default"), isDropEnd.value ? (openBlock(), createElementBlock("div", {
17982
+ key: 0,
17983
+ class: normalizeClass(unref(FluxKanbanColumn_module_default).kanbanDropIndicator)
17984
+ }, null, 2)) : createCommentVNode("", true)], 34)], 2);
17985
+ };
17986
+ }
17987
+ });
17988
+ //#endregion
17772
17989
  //#region src/component/FluxInfoStack.vue
17773
17990
  var FluxInfoStack_default = /* @__PURE__ */ defineComponent({
17774
17991
  __name: "FluxInfoStack",
@@ -20462,6 +20679,6 @@ var FluxTreeView_default = /* @__PURE__ */ defineComponent({
20462
20679
  }
20463
20680
  });
20464
20681
  //#endregion
20465
- export { FluxAction_default as FluxAction, FluxActionBar_default as FluxActionBar, FluxActionPane_default as FluxActionPane, FluxActionStack_default as FluxActionStack, FluxAdaptiveGroup_default as FluxAdaptiveGroup, FluxAdaptiveSlot_default as FluxAdaptiveSlot, FluxAnimatedColors_default as FluxAnimatedColors, FluxAspectRatio_default as FluxAspectRatio, FluxAutoHeightTransition_default as FluxAutoHeightTransition, FluxAutoWidthTransition_default as FluxAutoWidthTransition, FluxAvatar_default as FluxAvatar, FluxBadge_default as FluxBadge, FluxBadgeStack_default as FluxBadgeStack, FluxBorderShine_default as FluxBorderShine, FluxBoxedIcon_default as FluxBoxedIcon, FluxBreakthroughTransition_default as FluxBreakthroughTransition, FluxButton_default as FluxButton, FluxButtonGroup_default as FluxButtonGroup, FluxButtonStack_default as FluxButtonStack, FluxCalendar_default as FluxCalendar, FluxCalendarEvent_default as FluxCalendarEvent, FluxCheckbox_default as FluxCheckbox, FluxChip_default as FluxChip, FluxClickablePane_default as FluxClickablePane, FluxColorPicker_default as FluxColorPicker, FluxColorSelect_default as FluxColorSelect, FluxColumn_default as FluxColumn, FluxCommandPalette_default as FluxCommandPalette, FluxCommandPaletteGroup_default as FluxCommandPaletteGroup, FluxCommandPaletteItem_default as FluxCommandPaletteItem, FluxComment_default as FluxComment, FluxContainer_default as FluxContainer, FluxDataTable_default as FluxDataTable, FluxDatePicker_default as FluxDatePicker, FluxDestructiveButton_default as FluxDestructiveButton, FluxDisabled_default as FluxDisabled, FluxDivider_default as FluxDivider, FluxDotPattern_default as FluxDotPattern, FluxDropZone_default as FluxDropZone, FluxDynamicView_default as FluxDynamicView, FluxExpandable_default as FluxExpandable, FluxExpandableGroup_default as FluxExpandableGroup, FluxFadeTransition_default as FluxFadeTransition, FluxFader_default as FluxFader, FluxFaderItem_default as FluxFaderItem, FluxFilter_default as FluxFilter, FluxFilterBar_default as FluxFilterBar, FluxFilterDate_default as FluxFilterDate, FluxFilterDateRange_default as FluxFilterDateRange, FluxFilterOption_default as FluxFilterOption, FluxFilterOptionAsync_default as FluxFilterOptionAsync, FluxFilterOptions_default as FluxFilterOptions, FluxFilterOptionsAsync_default as FluxFilterOptionsAsync, FluxFilterRange_default as FluxFilterRange, FluxFlickeringGrid_default as FluxFlickeringGrid, FluxFlyout_default as FluxFlyout, FluxFocalPointEditor_default as FluxFocalPointEditor, FluxFocalPointImage_default as FluxFocalPointImage, FluxForm_default as FluxForm, FluxFormColumn_default as FluxFormColumn, FluxFormDateInput_default as FluxFormDateInput, FluxFormDateRangeInput_default as FluxFormDateRangeInput, FluxFormDateTimeInput_default as FluxFormDateTimeInput, FluxFormField_default as FluxFormField, FluxFormFieldAddition_default as FluxFormFieldAddition, FluxFormGrid_default as FluxFormGrid, FluxFormInput_default as FluxFormInput, FluxFormInputAddition_default as FluxFormInputAddition, FluxFormInputGroup_default as FluxFormInputGroup, FluxFormPinInput_default as FluxFormPinInput, FluxFormRangeSlider_default as FluxFormRangeSlider, FluxFormRow_default as FluxFormRow, FluxFormSection_default as FluxFormSection, FluxFormSelect_default as FluxFormSelect, FluxFormSelectAsync_default as FluxFormSelectAsync, FluxFormSlider_default as FluxFormSlider, FluxFormTextArea_default as FluxFormTextArea, FluxFormTimeZonePicker_default as FluxFormTimeZonePicker, FluxFormTreeViewSelect_default as FluxFormTreeViewSelect, FluxGallery_default as FluxGallery, FluxGalleryItem_default as FluxGalleryItem, FluxGrid_default as FluxGrid, FluxGridColumn_default as FluxGridColumn, FluxGridPattern_default as FluxGridPattern, FluxIcon_default as FluxIcon, FluxInfo_default as FluxInfo, FluxInfoStack_default as FluxInfoStack, FluxItem_default as FluxItem, FluxItemActions_default as FluxItemActions, FluxItemContent_default as FluxItemContent, FluxItemMedia_default as FluxItemMedia, FluxItemStack_default as FluxItemStack, FluxLayerPane_default as FluxLayerPane, FluxLayerPaneSecondary_default as FluxLayerPaneSecondary, FluxLegend_default as FluxLegend, FluxLink_default as FluxLink, FluxMenu_default as FluxMenu, FluxMenuCollapsible_default as FluxMenuCollapsible, FluxMenuGroup_default as FluxMenuGroup, FluxMenuItem_default as FluxMenuItem, FluxMenuOptions_default as FluxMenuOptions, FluxMenuSubHeader_default as FluxMenuSubHeader, FluxMenuTitle_default as FluxMenuTitle, FluxNotice_default as FluxNotice, FluxNoticeStack_default as FluxNoticeStack, FluxOverflowBar_default as FluxOverflowBar, FluxOverlay_default as FluxOverlay, FluxOverlayProvider_default as FluxOverlayProvider, FluxOverlayTransition_default as FluxOverlayTransition, FluxPagination_default as FluxPagination, FluxPaginationBar_default as FluxPaginationBar, FluxPane_default as FluxPane, FluxPaneBody_default as FluxPaneBody, FluxPaneFooter_default as FluxPaneFooter, FluxPaneGroup_default as FluxPaneGroup, FluxPaneHeader_default as FluxPaneHeader, FluxPaneIllustration_default as FluxPaneIllustration, FluxPaneMedia_default as FluxPaneMedia, FluxPercentageBar_default as FluxPercentageBar, FluxPersona_default as FluxPersona, FluxPlaceholder_default as FluxPlaceholder, FluxPressable_default as FluxPressable, FluxPrimaryButton_default as FluxPrimaryButton, FluxPrimaryLinkButton_default as FluxPrimaryLinkButton, FluxProgressBar_default as FluxProgressBar, FluxPublishButton_default as FluxPublishButton, FluxQuantitySelector_default as FluxQuantitySelector, FluxRemove_default as FluxRemove, FluxRoot_default as FluxRoot, FluxRouteTransition_default as FluxRouteTransition, FluxRow_default as FluxRow, FluxSecondaryButton_default as FluxSecondaryButton, FluxSecondaryLinkButton_default as FluxSecondaryLinkButton, FluxSegmentedControl_default as FluxSegmentedControl, FluxSegmentedView_default as FluxSegmentedView, FluxSeparator_default as FluxSeparator, FluxSlideOver_default as FluxSlideOver, FluxSlideOverTransition_default as FluxSlideOverTransition, FluxSnackbar_default as FluxSnackbar, FluxSnackbarProvider_default as FluxSnackbarProvider, FluxSpacer_default as FluxSpacer, FluxSpacing_default as FluxSpacing, FluxSpinner_default as FluxSpinner, FluxSplitButton_default as FluxSplitButton, FluxStack_default as FluxStack, FluxStatistic_default as FluxStatistic, FluxStepper_default as FluxStepper, FluxStepperStep_default as FluxStepperStep, FluxStepperSteps_default as FluxStepperSteps, FluxTab_default as FluxTab, FluxTabBar_default as FluxTabBar, FluxTabBarItem_default as FluxTabBarItem, FluxTable_default as FluxTable, FluxTableActions_default as FluxTableActions, FluxTableBar_default as FluxTableBar, FluxTableCell_default as FluxTableCell, FluxTableHeader_default as FluxTableHeader, FluxTableRow_default as FluxTableRow, FluxTabs_default as FluxTabs, FluxTag_default as FluxTag, FluxTagStack_default as FluxTagStack, FluxTicks_default as FluxTicks, FluxTimeline_default as FluxTimeline, FluxTimelineItem_default as FluxTimelineItem, FluxToggle_default as FluxToggle, FluxToolbar_default as FluxToolbar, FluxToolbarGroup_default as FluxToolbarGroup, FluxTooltip_default as FluxTooltip, FluxTooltipProvider_default as FluxTooltipProvider, FluxTooltipTransition_default as FluxTooltipTransition, FluxTreeView_default as FluxTreeView, FluxVerticalWindowTransition_default as FluxVerticalWindowTransition, FluxWindow_default as FluxWindow, FluxWindowTransition_default as FluxWindowTransition, fluxRegisterIcons, isFluxFormSelectGroup, isFluxFormSelectOption, showAlert, showConfirm, showPrompt, showSnackbar, useAdaptiveGroupInjection_default as useAdaptiveGroupInjection, useBreakpoints_default as useBreakpoints, useDisabled_default as useDisabled, useDisabledInjection_default as useDisabledInjection, useExpandableGroupInjection_default as useExpandableGroupInjection, useFilterInjection_default as useFilterInjection, useFluxStore, useFlyoutInjection_default as useFlyoutInjection, useFormFieldInjection_default as useFormFieldInjection, useTableInjection_default as useTableInjection, useTooltipInjection_default as useTooltipInjection };
20682
+ export { FluxAction_default as FluxAction, FluxActionBar_default as FluxActionBar, FluxActionPane_default as FluxActionPane, FluxActionStack_default as FluxActionStack, FluxAdaptiveGroup_default as FluxAdaptiveGroup, FluxAdaptiveSlot_default as FluxAdaptiveSlot, FluxAnimatedColors_default as FluxAnimatedColors, FluxAspectRatio_default as FluxAspectRatio, FluxAutoHeightTransition_default as FluxAutoHeightTransition, FluxAutoWidthTransition_default as FluxAutoWidthTransition, FluxAvatar_default as FluxAvatar, FluxBadge_default as FluxBadge, FluxBadgeStack_default as FluxBadgeStack, FluxBorderShine_default as FluxBorderShine, FluxBoxedIcon_default as FluxBoxedIcon, FluxBreakthroughTransition_default as FluxBreakthroughTransition, FluxButton_default as FluxButton, FluxButtonGroup_default as FluxButtonGroup, FluxButtonStack_default as FluxButtonStack, FluxCalendar_default as FluxCalendar, FluxCalendarEvent_default as FluxCalendarEvent, FluxCheckbox_default as FluxCheckbox, FluxChip_default as FluxChip, FluxClickablePane_default as FluxClickablePane, FluxColorPicker_default as FluxColorPicker, FluxColorSelect_default as FluxColorSelect, FluxColumn_default as FluxColumn, FluxCommandPalette_default as FluxCommandPalette, FluxCommandPaletteGroup_default as FluxCommandPaletteGroup, FluxCommandPaletteItem_default as FluxCommandPaletteItem, FluxComment_default as FluxComment, FluxContainer_default as FluxContainer, FluxDataTable_default as FluxDataTable, FluxDatePicker_default as FluxDatePicker, FluxDestructiveButton_default as FluxDestructiveButton, FluxDisabled_default as FluxDisabled, FluxDivider_default as FluxDivider, FluxDotPattern_default as FluxDotPattern, FluxDropZone_default as FluxDropZone, FluxDynamicView_default as FluxDynamicView, FluxExpandable_default as FluxExpandable, FluxExpandableGroup_default as FluxExpandableGroup, FluxFadeTransition_default as FluxFadeTransition, FluxFader_default as FluxFader, FluxFaderItem_default as FluxFaderItem, FluxFilter_default as FluxFilter, FluxFilterBar_default as FluxFilterBar, FluxFilterDate_default as FluxFilterDate, FluxFilterDateRange_default as FluxFilterDateRange, FluxFilterOption_default as FluxFilterOption, FluxFilterOptionAsync_default as FluxFilterOptionAsync, FluxFilterOptions_default as FluxFilterOptions, FluxFilterOptionsAsync_default as FluxFilterOptionsAsync, FluxFilterRange_default as FluxFilterRange, FluxFlickeringGrid_default as FluxFlickeringGrid, FluxFlyout_default as FluxFlyout, FluxFocalPointEditor_default as FluxFocalPointEditor, FluxFocalPointImage_default as FluxFocalPointImage, FluxForm_default as FluxForm, FluxFormColumn_default as FluxFormColumn, FluxFormDateInput_default as FluxFormDateInput, FluxFormDateRangeInput_default as FluxFormDateRangeInput, FluxFormDateTimeInput_default as FluxFormDateTimeInput, FluxFormField_default as FluxFormField, FluxFormFieldAddition_default as FluxFormFieldAddition, FluxFormGrid_default as FluxFormGrid, FluxFormInput_default as FluxFormInput, FluxFormInputAddition_default as FluxFormInputAddition, FluxFormInputGroup_default as FluxFormInputGroup, FluxFormPinInput_default as FluxFormPinInput, FluxFormRangeSlider_default as FluxFormRangeSlider, FluxFormRow_default as FluxFormRow, FluxFormSection_default as FluxFormSection, FluxFormSelect_default as FluxFormSelect, FluxFormSelectAsync_default as FluxFormSelectAsync, FluxFormSlider_default as FluxFormSlider, FluxFormTextArea_default as FluxFormTextArea, FluxFormTimeZonePicker_default as FluxFormTimeZonePicker, FluxFormTreeViewSelect_default as FluxFormTreeViewSelect, FluxGallery_default as FluxGallery, FluxGalleryItem_default as FluxGalleryItem, FluxGrid_default as FluxGrid, FluxGridColumn_default as FluxGridColumn, FluxGridPattern_default as FluxGridPattern, FluxIcon_default as FluxIcon, FluxInfo_default as FluxInfo, FluxInfoStack_default as FluxInfoStack, FluxItem_default as FluxItem, FluxItemActions_default as FluxItemActions, FluxItemContent_default as FluxItemContent, FluxItemMedia_default as FluxItemMedia, FluxItemStack_default as FluxItemStack, FluxKanban_default as FluxKanban, FluxKanbanCard_default as FluxKanbanCard, FluxKanbanColumn_default as FluxKanbanColumn, FluxLayerPane_default as FluxLayerPane, FluxLayerPaneSecondary_default as FluxLayerPaneSecondary, FluxLegend_default as FluxLegend, FluxLink_default as FluxLink, FluxMenu_default as FluxMenu, FluxMenuCollapsible_default as FluxMenuCollapsible, FluxMenuGroup_default as FluxMenuGroup, FluxMenuItem_default as FluxMenuItem, FluxMenuOptions_default as FluxMenuOptions, FluxMenuSubHeader_default as FluxMenuSubHeader, FluxMenuTitle_default as FluxMenuTitle, FluxNotice_default as FluxNotice, FluxNoticeStack_default as FluxNoticeStack, FluxOverflowBar_default as FluxOverflowBar, FluxOverlay_default as FluxOverlay, FluxOverlayProvider_default as FluxOverlayProvider, FluxOverlayTransition_default as FluxOverlayTransition, FluxPagination_default as FluxPagination, FluxPaginationBar_default as FluxPaginationBar, FluxPane_default as FluxPane, FluxPaneBody_default as FluxPaneBody, FluxPaneFooter_default as FluxPaneFooter, FluxPaneGroup_default as FluxPaneGroup, FluxPaneHeader_default as FluxPaneHeader, FluxPaneIllustration_default as FluxPaneIllustration, FluxPaneMedia_default as FluxPaneMedia, FluxPercentageBar_default as FluxPercentageBar, FluxPersona_default as FluxPersona, FluxPlaceholder_default as FluxPlaceholder, FluxPressable_default as FluxPressable, FluxPrimaryButton_default as FluxPrimaryButton, FluxPrimaryLinkButton_default as FluxPrimaryLinkButton, FluxProgressBar_default as FluxProgressBar, FluxPublishButton_default as FluxPublishButton, FluxQuantitySelector_default as FluxQuantitySelector, FluxRemove_default as FluxRemove, FluxRoot_default as FluxRoot, FluxRouteTransition_default as FluxRouteTransition, FluxRow_default as FluxRow, FluxSecondaryButton_default as FluxSecondaryButton, FluxSecondaryLinkButton_default as FluxSecondaryLinkButton, FluxSegmentedControl_default as FluxSegmentedControl, FluxSegmentedView_default as FluxSegmentedView, FluxSeparator_default as FluxSeparator, FluxSlideOver_default as FluxSlideOver, FluxSlideOverTransition_default as FluxSlideOverTransition, FluxSnackbar_default as FluxSnackbar, FluxSnackbarProvider_default as FluxSnackbarProvider, FluxSpacer_default as FluxSpacer, FluxSpacing_default as FluxSpacing, FluxSpinner_default as FluxSpinner, FluxSplitButton_default as FluxSplitButton, FluxStack_default as FluxStack, FluxStatistic_default as FluxStatistic, FluxStepper_default as FluxStepper, FluxStepperStep_default as FluxStepperStep, FluxStepperSteps_default as FluxStepperSteps, FluxTab_default as FluxTab, FluxTabBar_default as FluxTabBar, FluxTabBarItem_default as FluxTabBarItem, FluxTable_default as FluxTable, FluxTableActions_default as FluxTableActions, FluxTableBar_default as FluxTableBar, FluxTableCell_default as FluxTableCell, FluxTableHeader_default as FluxTableHeader, FluxTableRow_default as FluxTableRow, FluxTabs_default as FluxTabs, FluxTag_default as FluxTag, FluxTagStack_default as FluxTagStack, FluxTicks_default as FluxTicks, FluxTimeline_default as FluxTimeline, FluxTimelineItem_default as FluxTimelineItem, FluxToggle_default as FluxToggle, FluxToolbar_default as FluxToolbar, FluxToolbarGroup_default as FluxToolbarGroup, FluxTooltip_default as FluxTooltip, FluxTooltipProvider_default as FluxTooltipProvider, FluxTooltipTransition_default as FluxTooltipTransition, FluxTreeView_default as FluxTreeView, FluxVerticalWindowTransition_default as FluxVerticalWindowTransition, FluxWindow_default as FluxWindow, FluxWindowTransition_default as FluxWindowTransition, fluxRegisterIcons, isFluxFormSelectGroup, isFluxFormSelectOption, showAlert, showConfirm, showPrompt, showSnackbar, useAdaptiveGroupInjection_default as useAdaptiveGroupInjection, useBreakpoints_default as useBreakpoints, useDisabled_default as useDisabled, useDisabledInjection_default as useDisabledInjection, useExpandableGroupInjection_default as useExpandableGroupInjection, useFilterInjection_default as useFilterInjection, useFluxStore, useFlyoutInjection_default as useFlyoutInjection, useFormFieldInjection_default as useFormFieldInjection, useTableInjection_default as useTableInjection, useTooltipInjection_default as useTooltipInjection };
20466
20683
 
20467
20684
  //# sourceMappingURL=index.js.map