@flux-ui/components 3.0.0-next.52 → 3.0.0-next.54
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/component/FluxBorderShine.vue.d.ts +1 -1
- package/dist/component/FluxKanban.vue.d.ts +25 -0
- package/dist/component/FluxKanbanCard.vue.d.ts +28 -0
- package/dist/component/FluxKanbanColumn.vue.d.ts +28 -0
- package/dist/component/index.d.ts +3 -0
- package/dist/component/primitive/FilterOptionBase.vue.d.ts +2 -2
- package/dist/component/primitive/SelectBase.vue.d.ts +2 -2
- package/dist/composable/private/useKanban.d.ts +7 -0
- package/dist/data/di.d.ts +20 -0
- package/dist/index.css +84 -0
- package/dist/index.js +247 -28
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
- package/src/component/FluxKanban.vue +25 -0
- package/src/component/FluxKanbanCard.vue +105 -0
- package/src/component/FluxKanbanColumn.vue +84 -0
- package/src/component/index.ts +3 -0
- package/src/composable/private/useKanban.ts +68 -0
- package/src/css/component/FluxKanban.module.scss +7 -0
- package/src/css/component/FluxKanbanCard.module.scss +35 -0
- package/src/css/component/FluxKanbanColumn.module.scss +49 -0
- package/src/data/di.ts +21 -0
|
@@ -44,10 +44,10 @@ declare const _default: DefineComponent<ExtractPropTypes<{
|
|
|
44
44
|
type: NumberConstructor;
|
|
45
45
|
};
|
|
46
46
|
}>> & Readonly<{}>, {
|
|
47
|
+
offset: number;
|
|
47
48
|
duration: number;
|
|
48
49
|
width: number;
|
|
49
50
|
colors: string[];
|
|
50
|
-
offset: number;
|
|
51
51
|
radius: string | number;
|
|
52
52
|
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
53
53
|
export default _default;
|
|
@@ -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';
|
|
@@ -11,10 +11,10 @@ type __VLS_PublicProps = {
|
|
|
11
11
|
'searchQuery'?: string;
|
|
12
12
|
} & __VLS_Props;
|
|
13
13
|
declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
14
|
-
select: (args_0:
|
|
14
|
+
select: (args_0: FluxFilterValueSingle) => any;
|
|
15
15
|
"update:searchQuery": (value: string) => any;
|
|
16
16
|
}, string, PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
17
|
-
onSelect?: (args_0:
|
|
17
|
+
onSelect?: (args_0: FluxFilterValueSingle) => any;
|
|
18
18
|
"onUpdate:searchQuery"?: (value: string) => any;
|
|
19
19
|
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
20
20
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FluxFormSelectOption, FluxFormSelectOptions, FluxDirection, FluxFormInputBaseProps, FluxAutoCompleteType, FluxIconName, FluxInputMask, FluxInputType,
|
|
1
|
+
import { FluxFormSelectOption, FluxFormSelectOptions, FluxDirection, FluxFormInputBaseProps, FluxAutoCompleteType, FluxIconName, FluxInputMask, FluxInputType, FluxPressableType, FluxTo, FluxButtonProps } from '@flux-ui/types';
|
|
2
2
|
import { ComponentPublicInstance, nextTick, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, ComponentInternalInstance, VNodeProps, AllowedComponentProps, ComponentCustomProps, Attrs, Slot, ComponentOptionsBase, GlobalComponents, GlobalDirectives, DebuggerEvent, WatchOptions, WatchStopHandle, ComponentCustomProperties, VNode, CreateComponentPublicInstanceWithMixins } from 'vue';
|
|
3
3
|
import { OnCleanup } from '@vue/reactivity';
|
|
4
4
|
type __VLS_Props = {
|
|
@@ -203,10 +203,10 @@ declare const _default: DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, Compo
|
|
|
203
203
|
$props: Partial<{}> & Omit<{
|
|
204
204
|
readonly label?: string;
|
|
205
205
|
readonly isLoading?: boolean;
|
|
206
|
+
readonly type?: FluxPressableType;
|
|
206
207
|
readonly disabled?: boolean;
|
|
207
208
|
readonly to?: FluxTo;
|
|
208
209
|
readonly tabindex?: string | number;
|
|
209
|
-
readonly type?: FluxPressableType;
|
|
210
210
|
readonly href?: string;
|
|
211
211
|
readonly rel?: string;
|
|
212
212
|
readonly target?: string;
|
|
@@ -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;
|