@ollap/gantt-vue3 0.2.0 → 0.2.2

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.
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--color-orange-400:oklch(75% .183 55.934);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-\[6px\]{left:-6px}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mr-2{margin-right:calc(var(--spacing)*2)}.flex{display:flex}.h-0{height:calc(var(--spacing)*0)}.h-4{height:calc(var(--spacing)*4)}.h-full{height:100%}.w-0{width:calc(var(--spacing)*0)}.w-4{width:calc(var(--spacing)*4)}.w-64{width:calc(var(--spacing)*64)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-\[5px\]{border-right-style:var(--tw-border-style);border-right-width:5px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[5px\]{border-left-style:var(--tw-border-style);border-left-width:5px}.border-\[\#e8e8e8\]{border-color:#e8e8e8}.border-orange-400{border-color:var(--color-orange-400)}.border-slate-50{border-color:var(--color-slate-50)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-100\/50{border-color:#f1f5f980}@supports (color:color-mix(in lab,red,red)){.border-slate-100\/50{border-color:color-mix(in oklab,var(--color-slate-100)50%,transparent)}}.border-slate-200{border-color:var(--color-slate-200)}.border-t-orange-400{border-top-color:var(--color-orange-400)}.border-r-transparent{border-right-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-orange-400{background-color:var(--color-orange-400)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50)50%,transparent)}}.bg-slate-400{background-color:var(--color-slate-400)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pr-4{padding-right:calc(var(--spacing)*4)}.pl-12{padding-left:calc(var(--spacing)*12)}.font-sans{font-family:var(--font-sans)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-slate-400{color:var(--color-slate-400)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-white{color:var(--color-white)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-80{opacity:.8}.shadow-\[10px_0_15px_-3px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:10px 0 15px -3px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}@media(hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}.overflow-auto[data-v-a18bb0b0]::-webkit-scrollbar{width:6px;height:6px}.overflow-auto[data-v-a18bb0b0]::-webkit-scrollbar-track{background:transparent}.overflow-auto[data-v-a18bb0b0]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}.overflow-auto[data-v-a18bb0b0]::-webkit-scrollbar-thumb:hover{background:#94a3b8}
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--color-orange-400:oklch(75% .183 55.934);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-\[6px\]{left:-6px}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mr-2{margin-right:calc(var(--spacing)*2)}.flex{display:flex}.h-0{height:calc(var(--spacing)*0)}.h-4{height:calc(var(--spacing)*4)}.h-full{height:100%}.w-0{width:calc(var(--spacing)*0)}.w-4{width:calc(var(--spacing)*4)}.w-64{width:calc(var(--spacing)*64)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t-\[6px\]{border-top-style:var(--tw-border-style);border-top-width:6px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-\[5px\]{border-right-style:var(--tw-border-style);border-right-width:5px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[5px\]{border-left-style:var(--tw-border-style);border-left-width:5px}.border-\[\#e8e8e8\]{border-color:#e8e8e8}.border-orange-400{border-color:var(--color-orange-400)}.border-slate-50{border-color:var(--color-slate-50)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-100\/50{border-color:#f1f5f980}@supports (color:color-mix(in lab,red,red)){.border-slate-100\/50{border-color:color-mix(in oklab,var(--color-slate-100)50%,transparent)}}.border-slate-200{border-color:var(--color-slate-200)}.border-t-orange-400{border-top-color:var(--color-orange-400)}.border-r-transparent{border-right-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-orange-400{background-color:var(--color-orange-400)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-50\/50{background-color:#f8fafc80}@supports (color:color-mix(in lab,red,red)){.bg-slate-50\/50{background-color:color-mix(in oklab,var(--color-slate-50)50%,transparent)}}.bg-slate-400{background-color:var(--color-slate-400)}.bg-white{background-color:var(--color-white)}.p-2{padding:calc(var(--spacing)*2)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pr-4{padding-right:calc(var(--spacing)*4)}.pl-12{padding-left:calc(var(--spacing)*12)}.font-sans{font-family:var(--font-sans)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-slate-400{color:var(--color-slate-400)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-white{color:var(--color-white)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-80{opacity:.8}.shadow-\[10px_0_15px_-3px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:10px 0 15px -3px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}@media(hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}.overflow-auto[data-v-db66e357]::-webkit-scrollbar{width:6px;height:6px}.overflow-auto[data-v-db66e357]::-webkit-scrollbar-track{background:transparent}.overflow-auto[data-v-db66e357]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}.overflow-auto[data-v-db66e357]::-webkit-scrollbar-thumb:hover{background:#94a3b8}
@@ -69,7 +69,7 @@ declare type __VLS_WithTemplateSlots<T, S> = T & {
69
69
  };
70
70
  };
71
71
 
72
- export declare const GANTT_VERSION = "0.1.0";
72
+ export declare const GANTT_VERSION: string;
73
73
 
74
74
  export declare const GanttChart: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
75
75
 
@@ -1,5 +1,7 @@
1
- import { defineComponent as Z, ref as v, computed as u, onMounted as ee, onUnmounted as te, createElementBlock as o, openBlock as r, createElementVNode as a, createCommentVNode as N, renderSlot as m, createTextVNode as se, normalizeStyle as l, Fragment as w, renderList as O, toDisplayString as g, withDirectives as Y, normalizeClass as ae, vShow as J } from "vue";
2
- const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 flex flex-col" }, ne = { class: "flex border-b border-slate-200 bg-slate-50/50" }, oe = { class: "w-64 shrink-0 px-6 py-4 border-r border-slate-200 font-bold text-slate-700 relative z-20 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)]" }, re = { class: "text-[10px] tracking-wider text-slate-400" }, ie = { class: "text-xs font-semibold text-slate-400" }, de = { class: "flex flex-1 overflow-hidden" }, ce = ["onClick"], ue = { class: "mr-2 w-4 h-4" }, pe = { class: "min-w-0" }, fe = { class: "text-sm font-semibold text-slate-700 truncate" }, ve = { class: "text-xs truncate" }, he = { class: "truncate" }, i = 60, d = 52, xe = /* @__PURE__ */ Z({
1
+ import { defineComponent as Z, ref as f, computed as u, onMounted as ee, onUnmounted as te, createElementBlock as o, openBlock as r, createElementVNode as a, createCommentVNode as N, renderSlot as m, createTextVNode as se, normalizeStyle as l, Fragment as w, renderList as S, toDisplayString as g, withDirectives as Y, normalizeClass as ae, vShow as J } from "vue";
2
+ const le = "0.2.2", ne = {
3
+ version: le
4
+ }, oe = { class: "bg-white border border-slate-200 overflow-hidden flex-1 flex flex-col" }, re = { class: "flex border-b border-slate-200 bg-slate-50/50" }, ie = { class: "w-64 shrink-0 px-6 py-4 border-r border-slate-200 font-bold text-slate-700 relative z-20 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)]" }, de = { class: "text-[10px] tracking-wider text-slate-400" }, ce = { class: "text-xs font-semibold text-slate-400" }, ue = { class: "flex flex-1 overflow-hidden" }, pe = ["onClick"], ve = { class: "mr-2 w-4 h-4" }, fe = { class: "min-w-0" }, he = { class: "text-sm font-semibold text-slate-700 truncate" }, xe = { class: "text-xs truncate" }, ge = { class: "truncate" }, i = 60, d = 52, be = /* @__PURE__ */ Z({
3
5
  __name: "GanttChart",
4
6
  props: {
5
7
  list: {},
@@ -7,8 +9,8 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
7
9
  showToday: { type: Boolean }
8
10
  },
9
11
  emits: ["update:list", "toggle"],
10
- setup(b, { emit: R }) {
11
- const h = b, $ = R, n = v([]), T = v(JSON.parse(JSON.stringify(h.list))), x = u(() => n.value.length * i), A = u(() => ({
12
+ setup(b, { emit: O }) {
13
+ const h = b, R = O, n = f([]), $ = f(JSON.parse(JSON.stringify(h.list))), x = u(() => n.value.length * i), A = u(() => ({
12
14
  backgroundImage: `linear-gradient(to right, transparent ${i - 1}px, #e8e8e8 ${i - 1}px, #e8e8e8 ${i}px)`,
13
15
  // backgroundImage: `linear-gradient(to right, #e8e8e8 1px, transparent 1px)`,
14
16
  backgroundSize: `${i}px 100%`,
@@ -17,13 +19,13 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
17
19
  width: x.value + "px"
18
20
  })), F = u(() => {
19
21
  const s = {};
20
- return T.value.forEach((e) => {
22
+ return $.value.forEach((e) => {
21
23
  s[e.id] = {}, e.tasks.forEach((t) => {
22
24
  let c = new Date(t.startDate);
23
25
  const p = new Date(t.endDate);
24
26
  for (; c <= p; ) {
25
- const f = c.toISOString().split("T")[0];
26
- s[e.id][f] = (s[e.id][f] || 0) + 1, c.setDate(c.getDate() + 1);
27
+ const v = c.toISOString().split("T")[0];
28
+ s[e.id][v] = (s[e.id][v] || 0) + 1, c.setDate(c.getDate() + 1);
27
29
  }
28
30
  });
29
31
  }), s;
@@ -50,14 +52,14 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
50
52
  left: -4,
51
53
  width: x.value + 8
52
54
  };
53
- let f = n.value.indexOf(s.startDate), S = n.value.indexOf(s.endDate), j = 4, W = -8;
54
- return f === -1 && S === -1 ? null : (f === -1 && (f = 0, j = -4), S === -1 && (S = n.value.length - 1, W = 4), {
55
- left: f * i + j,
56
- width: (S - f + 1) * i + W
55
+ let v = n.value.indexOf(s.startDate), D = n.value.indexOf(s.endDate), j = 4, W = -8;
56
+ return v === -1 && D === -1 ? null : (v === -1 && (v = 0, j = -4), D === -1 && (D = n.value.length - 1, W = 4), {
57
+ left: v * i + j,
58
+ width: (D - v + 1) * i + W
57
59
  });
58
- }, C = v(), I = v(), z = v(), E = u(() => {
60
+ }, T = f(), C = f(), I = f(), z = u(() => {
59
61
  const s = [];
60
- return T.value.forEach((e) => {
62
+ return $.value.forEach((e) => {
61
63
  s.push({
62
64
  type: "group",
63
65
  data: e,
@@ -71,81 +73,81 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
71
73
  });
72
74
  });
73
75
  }), s;
74
- }), H = v(0), k = v(600), _ = u(() => E.value.length * d), L = u(() => {
75
- const s = Math.floor(H.value / d), e = Math.ceil(k.value / d), t = 5;
76
+ }), E = f(0), k = f(600), H = u(() => z.value.length * d), L = u(() => {
77
+ const s = Math.floor(E.value / d), e = Math.ceil(k.value / d), t = 5;
76
78
  return {
77
79
  start: Math.max(0, s - t),
78
- end: Math.min(E.value.length, s + e + t)
80
+ end: Math.min(z.value.length, s + e + t)
79
81
  };
80
82
  }), V = u(() => L.value.start * d), q = u(() => {
81
83
  const { start: s, end: e } = L.value;
82
- return E.value.slice(s, e);
84
+ return z.value.slice(s, e);
83
85
  }), B = () => {
84
- z.value && (k.value = z.value.clientHeight - 1);
86
+ I.value && (k.value = I.value.clientHeight - 1);
85
87
  }, Q = (s) => {
86
- const e = s.target, t = _.value - k.value;
87
- e.scrollTop > t && (e.scrollTop = t), H.value = e.scrollTop, C.value && (C.value.scrollTop = e.scrollTop), I.value && (I.value.scrollLeft = e.scrollLeft);
88
+ const e = s.target, t = H.value - k.value;
89
+ e.scrollTop > t && (e.scrollTop = t), E.value = e.scrollTop, T.value && (T.value.scrollTop = e.scrollTop), C.value && (C.value.scrollLeft = e.scrollLeft);
88
90
  }, X = (s) => {
89
- const e = T.value.find((t) => t.id === s);
90
- e && (e.expanded = !e.expanded), $("toggle", s);
91
+ const e = $.value.find((t) => t.id === s);
92
+ e && (e.expanded = !e.expanded), R("toggle", s);
91
93
  }, K = u(() => {
92
94
  const s = (/* @__PURE__ */ new Date()).toISOString().split("T")[0], e = n.value.indexOf(s);
93
95
  return e === -1 ? null : e * i;
94
- }), M = v();
95
- let D = null;
96
+ }), M = f();
97
+ let _ = null;
96
98
  return ee(() => {
97
- U(), B(), M.value && (D = new ResizeObserver(() => {
98
- console.log("resize"), B();
99
- }), D.observe(M.value));
99
+ U(), B(), M.value && (_ = new ResizeObserver(() => {
100
+ B();
101
+ }), _.observe(M.value));
100
102
  }), te(() => {
101
- D && D.disconnect();
103
+ _ && _.disconnect();
102
104
  }), (s, e) => (r(), o("div", {
103
105
  ref_key: "containerRef",
104
106
  ref: M,
105
107
  class: "flex flex-col h-full bg-slate-50 font-sans antialiased select-none"
106
108
  }, [
107
- a("div", le, [
108
- a("div", ne, [
109
- a("div", oe, [
109
+ a("div", oe, [
110
+ a("div", re, [
111
+ a("div", ie, [
110
112
  m(s.$slots, "leftPanelHeader", {}, () => [
111
113
  e[0] || (e[0] = se("项目成员 / 任务状态", -1))
112
114
  ], !0)
113
115
  ]),
114
116
  a("div", {
115
117
  ref_key: "headerRef",
116
- ref: I,
118
+ ref: C,
117
119
  class: "flex-1 overflow-hidden pointer-events-none"
118
120
  }, [
119
121
  a("div", {
120
122
  class: "flex h-full",
121
123
  style: l({ width: x.value + "px" })
122
124
  }, [
123
- (r(!0), o(w, null, O(n.value, (t) => (r(), o("div", {
125
+ (r(!0), o(w, null, S(n.value, (t) => (r(), o("div", {
124
126
  key: t,
125
127
  class: "shrink-0 flex flex-col items-center justify-center border-r border-slate-100 py-2 transition-colors",
126
128
  style: l({ width: i + "px" })
127
129
  }, [
128
130
  m(s.$slots, "headerCell", { date: t }, () => [
129
- a("span", re, g(P(t).weekday), 1),
130
- a("span", ie, g(P(t).monthDay), 1)
131
+ a("span", de, g(P(t).weekday), 1),
132
+ a("span", ce, g(P(t).monthDay), 1)
131
133
  ], !0)
132
134
  ], 4))), 128))
133
135
  ], 4)
134
136
  ], 512)
135
137
  ]),
136
- a("div", de, [
138
+ a("div", ue, [
137
139
  a("div", {
138
140
  ref_key: "leftPanelRef",
139
- ref: C,
141
+ ref: T,
140
142
  class: "w-64 shrink-0 border-r border-slate-200 overflow-y-hidden relative z-10 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)] bg-white"
141
143
  }, [
142
144
  a("div", {
143
- style: l({ height: _.value + "px", position: "relative" })
145
+ style: l({ height: H.value + "px", position: "relative" })
144
146
  }, [
145
147
  a("div", {
146
148
  style: l({ transform: `translateY(${V.value}px)` })
147
149
  }, [
148
- (r(!0), o(w, null, O(q.value, (t) => (r(), o("div", {
150
+ (r(!0), o(w, null, S(q.value, (t) => (r(), o("div", {
149
151
  key: t.uniqueKey
150
152
  }, [
151
153
  t.type === "group" ? (r(), o("div", {
@@ -173,22 +175,22 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
173
175
  ])], 2), [
174
176
  [J, t.data.tasks.length > 0]
175
177
  ]),
176
- Y(a("span", ue, null, 512), [
178
+ Y(a("span", ve, null, 512), [
177
179
  [J, !t.data.tasks.length]
178
180
  ]),
179
- a("div", pe, [
181
+ a("div", fe, [
180
182
  m(s.$slots, "leftPanelItem", {
181
183
  item: t.data
182
184
  }, () => [
183
- a("div", fe, g(t.data.name), 1)
185
+ a("div", he, g(t.data.name), 1)
184
186
  ], !0)
185
187
  ])
186
- ], 12, ce)) : (r(), o("div", {
188
+ ], 12, pe)) : (r(), o("div", {
187
189
  key: 1,
188
190
  class: "flex items-center pl-12 pr-4 border-b border-slate-100/50 text-slate-600 hover:bg-white transition-colors",
189
191
  style: l({ height: d + "px" })
190
192
  }, [
191
- a("div", ve, g(t.data.name), 1)
193
+ a("div", xe, g(t.data.name), 1)
192
194
  ], 4))
193
195
  ]))), 128))
194
196
  ], 4)
@@ -196,14 +198,14 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
196
198
  ], 512),
197
199
  a("div", {
198
200
  ref_key: "rightPanelRef",
199
- ref: z,
201
+ ref: I,
200
202
  onScroll: Q,
201
203
  class: "flex-1 overflow-auto relative select-none"
202
204
  }, [
203
205
  K.value !== null && b.showToday ? (r(), o("div", {
204
206
  key: 0,
205
207
  class: "absolute top-0 bottom-0 z-10 pointer-events-none border-l-2 border-orange-400",
206
- style: l({ left: K.value + "px", height: _.value + "px" })
208
+ style: l({ left: K.value + "px" })
207
209
  }, [...e[2] || (e[2] = [
208
210
  a("div", {
209
211
  class: "sticky top-0 z-20",
@@ -218,17 +220,17 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
218
220
  style: l({
219
221
  ...A.value,
220
222
  height: k.value + "px",
221
- top: H.value + "px",
223
+ top: E.value + "px",
222
224
  width: x.value + "px"
223
225
  })
224
226
  }, null, 4),
225
227
  a("div", {
226
- style: l({ height: _.value + "px", position: "relative" })
228
+ style: l({ height: H.value + "px", position: "relative" })
227
229
  }, [
228
230
  a("div", {
229
231
  style: l({ transform: `translateY(${V.value}px)` })
230
232
  }, [
231
- (r(!0), o(w, null, O(q.value, (t) => (r(), o(w, {
233
+ (r(!0), o(w, null, S(q.value, (t) => (r(), o(w, {
232
234
  key: t.uniqueKey
233
235
  }, [
234
236
  t.type === "group" ? (r(), o("div", {
@@ -236,7 +238,7 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
236
238
  class: "relative border-b border-[#e8e8e8]",
237
239
  style: l({ height: d + "px", width: x.value + "px" })
238
240
  }, [
239
- (r(!0), o(w, null, O(F.value[t.data.id], (c, p) => m(s.$slots, "count", {
241
+ (r(!0), o(w, null, S(F.value[t.data.id], (c, p) => m(s.$slots, "count", {
240
242
  key: p,
241
243
  item: t.data,
242
244
  date: p,
@@ -280,7 +282,7 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
280
282
  backgroundColor: t.data.color
281
283
  })
282
284
  }, [
283
- a("span", he, g(t.data.name), 1)
285
+ a("span", ge, g(t.data.name), 1)
284
286
  ], 4)
285
287
  ], !0) : N("", !0)
286
288
  ], 4))
@@ -293,16 +295,16 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
293
295
  N("", !0)
294
296
  ], 512));
295
297
  }
296
- }), ge = (b, R) => {
298
+ }), ye = (b, O) => {
297
299
  const h = b.__vccOpts || b;
298
- for (const [$, n] of R)
299
- h[$] = n;
300
+ for (const [R, n] of O)
301
+ h[R] = n;
300
302
  return h;
301
- }, ye = /* @__PURE__ */ ge(xe, [["__scopeId", "data-v-a18bb0b0"]]), me = "0.1.0", we = () => {
303
+ }, we = /* @__PURE__ */ ye(be, [["__scopeId", "data-v-db66e357"]]), ke = ne.version, _e = () => {
302
304
  console.log("Gantt Core Initialized");
303
305
  };
304
306
  export {
305
- me as GANTT_VERSION,
306
- ye as GanttChart,
307
- we as setupGantt
307
+ ke as GANTT_VERSION,
308
+ we as GanttChart,
309
+ _e as setupGantt
308
310
  };
@@ -1 +1 @@
1
- (function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.GanttVue3={},i.Vue))})(this,(function(i,e){"use strict";const L={class:"bg-white border border-slate-200 overflow-hidden flex-1 flex flex-col"},M={class:"flex border-b border-slate-200 bg-slate-50/50"},H={class:"w-64 shrink-0 px-6 py-4 border-r border-slate-200 font-bold text-slate-700 relative z-20 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)]"},P={class:"text-[10px] tracking-wider text-slate-400"},j={class:"text-xs font-semibold text-slate-400"},q={class:"flex flex-1 overflow-hidden"},F=["onClick"],K={class:"mr-2 w-4 h-4"},v={class:"min-w-0"},W={class:"text-sm font-semibold text-slate-700 truncate"},Y={class:"text-xs truncate"},A={class:"truncate"},o=60,r=52,J=((h,k)=>{const p=h.__vccOpts||h;for(const[u,a]of k)p[u]=a;return p})(e.defineComponent({__name:"GanttChart",props:{list:{},dateRange:{},showToday:{type:Boolean}},emits:["update:list","toggle"],setup(h,{emit:k}){const p=h,u=k,a=e.ref([]),E=e.ref(JSON.parse(JSON.stringify(p.list))),f=e.computed(()=>a.value.length*o),X=e.computed(()=>({backgroundImage:`linear-gradient(to right, transparent ${o-1}px, #e8e8e8 ${o-1}px, #e8e8e8 ${o}px)`,backgroundSize:`${o}px 100%`,width:f.value+"px"})),Z=e.computed(()=>{const n={};return E.value.forEach(t=>{n[t.id]={},t.tasks.forEach(l=>{let s=new Date(l.startDate);const d=new Date(l.endDate);for(;s<=d;){const c=s.toISOString().split("T")[0];n[t.id][c]=(n[t.id][c]||0)+1,s.setDate(s.getDate()+1)}})}),n}),ee=()=>{const n=[];let t=new Date(p.dateRange[0]);const l=new Date(p.dateRange[1]);for(;t<=l;)n.push(t.toISOString().split("T")[0]),t.setDate(t.getDate()+1);a.value=n},B=n=>{const t=new Date(n),l=["周日","周一","周二","周三","周四","周五","周六"];return{monthDay:`${String(t.getMonth()+1).padStart(2,"0")}/${t.getDate()}`,weekday:l[t.getDay()]}},z=n=>{const t=a.value.indexOf(n);return t>-1?t*o:-999},m=n=>{const t=new Date(n.startDate),l=new Date(n.endDate),s=new Date(a.value[0]),d=new Date(a.value[a.value.length-1]);if(t<s&&l>d)return{left:-4,width:f.value+8};let c=a.value.indexOf(n.startDate),b=a.value.indexOf(n.endDate),I=4,G=-8;return c===-1&&b===-1?null:(c===-1&&(c=0,I=-4),b===-1&&(b=a.value.length-1,G=4),{left:c*o+I,width:(b-c+1)*o+G})},S=e.ref(),w=e.ref(),_=e.ref(),D=e.computed(()=>{const n=[];return E.value.forEach(t=>{n.push({type:"group",data:t,uniqueKey:`g-${t.id}`}),t.expanded&&t.tasks.forEach(l=>{n.push({type:"task",data:l,uniqueKey:`t-${l.id}`,parentId:t.id})})}),n}),N=e.ref(0),x=e.ref(600),g=e.computed(()=>D.value.length*r),T=e.computed(()=>{const n=Math.floor(N.value/r),t=Math.ceil(x.value/r),l=5;return{start:Math.max(0,n-l),end:Math.min(D.value.length,n+t+l)}}),O=e.computed(()=>T.value.start*r),R=e.computed(()=>{const{start:n,end:t}=T.value;return D.value.slice(n,t)}),$=()=>{_.value&&(x.value=_.value.clientHeight-1)},te=n=>{const t=n.target,l=g.value-x.value;t.scrollTop>l&&(t.scrollTop=l),N.value=t.scrollTop,S.value&&(S.value.scrollTop=t.scrollTop),w.value&&(w.value.scrollLeft=t.scrollLeft)},le=n=>{const t=E.value.find(l=>l.id===n);t&&(t.expanded=!t.expanded),u("toggle",n)},C=e.computed(()=>{const n=new Date().toISOString().split("T")[0],t=a.value.indexOf(n);return t===-1?null:t*o}),V=e.ref();let y=null;return e.onMounted(()=>{ee(),$(),V.value&&(y=new ResizeObserver(()=>{console.log("resize"),$()}),y.observe(V.value))}),e.onUnmounted(()=>{y&&y.disconnect()}),(n,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:V,class:"flex flex-col h-full bg-slate-50 font-sans antialiased select-none"},[e.createElementVNode("div",L,[e.createElementVNode("div",M,[e.createElementVNode("div",H,[e.renderSlot(n.$slots,"leftPanelHeader",{},()=>[t[0]||(t[0]=e.createTextVNode("项目成员 / 任务状态",-1))],!0)]),e.createElementVNode("div",{ref_key:"headerRef",ref:w,class:"flex-1 overflow-hidden pointer-events-none"},[e.createElementVNode("div",{class:"flex h-full",style:e.normalizeStyle({width:f.value+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l,class:"shrink-0 flex flex-col items-center justify-center border-r border-slate-100 py-2 transition-colors",style:e.normalizeStyle({width:o+"px"})},[e.renderSlot(n.$slots,"headerCell",{date:l},()=>[e.createElementVNode("span",P,e.toDisplayString(B(l).weekday),1),e.createElementVNode("span",j,e.toDisplayString(B(l).monthDay),1)],!0)],4))),128))],4)],512)]),e.createElementVNode("div",q,[e.createElementVNode("div",{ref_key:"leftPanelRef",ref:S,class:"w-64 shrink-0 border-r border-slate-200 overflow-y-hidden relative z-10 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)] bg-white"},[e.createElementVNode("div",{style:e.normalizeStyle({height:g.value+"px",position:"relative"})},[e.createElementVNode("div",{style:e.normalizeStyle({transform:`translateY(${O.value}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.uniqueKey},[l.type==="group"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"flex items-center px-4 hover:bg-slate-50 cursor-pointer border-b border-slate-50 transition-colors",style:e.normalizeStyle({height:r+"px"}),onClick:s=>le(l.data.id)},[e.withDirectives(e.createElementVNode("span",{class:e.normalizeClass(["transform transition-transform duration-200 mr-2",l.data.expanded?"rotate-90":""])},[...t[1]||(t[1]=[e.createElementVNode("svg",{class:"w-4 h-4 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])],2),[[e.vShow,l.data.tasks.length>0]]),e.withDirectives(e.createElementVNode("span",K,null,512),[[e.vShow,!l.data.tasks.length]]),e.createElementVNode("div",v,[e.renderSlot(n.$slots,"leftPanelItem",{item:l.data},()=>[e.createElementVNode("div",W,e.toDisplayString(l.data.name),1)],!0)])],12,F)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"flex items-center pl-12 pr-4 border-b border-slate-100/50 text-slate-600 hover:bg-white transition-colors",style:e.normalizeStyle({height:r+"px"})},[e.createElementVNode("div",Y,e.toDisplayString(l.data.name),1)],4))]))),128))],4)],4)],512),e.createElementVNode("div",{ref_key:"rightPanelRef",ref:_,onScroll:te,class:"flex-1 overflow-auto relative select-none"},[C.value!==null&&h.showToday?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute top-0 bottom-0 z-10 pointer-events-none border-l-2 border-orange-400",style:e.normalizeStyle({left:C.value+"px",height:g.value+"px"})},[...t[2]||(t[2]=[e.createElementVNode("div",{class:"sticky top-0 z-20",style:{height:"0",overflow:"visible"}},[e.createElementVNode("div",{class:"absolute -top-1 -left-[6px] w-0 h-0 border-l-[5px] border-l-transparent border-r-[5px] border-r-transparent border-t-[6px] border-t-orange-400"}),e.createElementVNode("div",{class:"absolute top-2 left-2 px-1.5 py-0.5 bg-orange-400 text-[10px] text-white rounded shadow-sm opacity-80 whitespace-nowrap"}," 今天 ")],-1)])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"absolute left-0 pointer-events-none",style:e.normalizeStyle({...X.value,height:x.value+"px",top:N.value+"px",width:f.value+"px"})},null,4),e.createElementVNode("div",{style:e.normalizeStyle({height:g.value+"px",position:"relative"})},[e.createElementVNode("div",{style:e.normalizeStyle({transform:`translateY(${O.value}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,l=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.uniqueKey},[l.type==="group"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"relative border-b border-[#e8e8e8]",style:e.normalizeStyle({height:r+"px",width:f.value+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value[l.data.id],(s,d)=>e.renderSlot(n.$slots,"count",{key:d,item:l.data,date:d,count:s,style:e.normalizeStyle({left:z(d)+"px",width:o+"px",height:r+"px"})},()=>[e.createElementVNode("div",{class:"absolute top-0 flex items-center justify-center text-sm",style:e.normalizeStyle({left:z(d)+"px",width:o+"px",height:r+"px",contentVisibility:"auto",containIntrinsicSize:`${o}px ${r}px`})},e.toDisplayString(s),5)],!0)),128))],4)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"relative border-b border-[#e8e8e8] overflow-hidden",style:e.normalizeStyle({height:r+"px",width:f.value+"px"})},[m(l.data)?e.renderSlot(n.$slots,"task",{key:0,style:e.normalizeStyle({left:m(l.data).left+"px",width:m(l.data).width+"px",position:"absolute"}),task:l.data},()=>[e.createElementVNode("div",{class:"absolute bg-slate-400 top-2 bottom-2 rounded-md shadow-sm flex items-center px-3 text-[11px] text-white font-medium cursor-pointer hover:shadow-lg hover:-translate-y-0.5 transition-all duration-200",style:e.normalizeStyle({left:m(l.data).left+"px",width:m(l.data).width+"px",backgroundColor:l.data.color})},[e.createElementVNode("span",A,e.toDisplayString(l.data.name),1)],4)],!0):e.createCommentVNode("",!0)],4))],64))),128))],4)],4)],544)])]),e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-a18bb0b0"]]),U="0.1.0",Q=()=>{console.log("Gantt Core Initialized")};i.GANTT_VERSION=U,i.GanttChart=J,i.setupGantt=Q,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.GanttVue3={},i.Vue))})(this,(function(i,e){"use strict";const L={version:"0.2.2"},M={class:"bg-white border border-slate-200 overflow-hidden flex-1 flex flex-col"},H={class:"flex border-b border-slate-200 bg-slate-50/50"},P={class:"w-64 shrink-0 px-6 py-4 border-r border-slate-200 font-bold text-slate-700 relative z-20 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)]"},j={class:"text-[10px] tracking-wider text-slate-400"},q={class:"text-xs font-semibold text-slate-400"},v={class:"flex flex-1 overflow-hidden"},F=["onClick"],K={class:"mr-2 w-4 h-4"},W={class:"min-w-0"},Y={class:"text-sm font-semibold text-slate-700 truncate"},A={class:"text-xs truncate"},J={class:"truncate"},o=60,r=52,U=((m,b)=>{const p=m.__vccOpts||m;for(const[k,a]of b)p[k]=a;return p})(e.defineComponent({__name:"GanttChart",props:{list:{},dateRange:{},showToday:{type:Boolean}},emits:["update:list","toggle"],setup(m,{emit:b}){const p=m,k=b,a=e.ref([]),E=e.ref(JSON.parse(JSON.stringify(p.list))),f=e.computed(()=>a.value.length*o),Z=e.computed(()=>({backgroundImage:`linear-gradient(to right, transparent ${o-1}px, #e8e8e8 ${o-1}px, #e8e8e8 ${o}px)`,backgroundSize:`${o}px 100%`,width:f.value+"px"})),ee=e.computed(()=>{const n={};return E.value.forEach(t=>{n[t.id]={},t.tasks.forEach(l=>{let s=new Date(l.startDate);const d=new Date(l.endDate);for(;s<=d;){const c=s.toISOString().split("T")[0];n[t.id][c]=(n[t.id][c]||0)+1,s.setDate(s.getDate()+1)}})}),n}),te=()=>{const n=[];let t=new Date(p.dateRange[0]);const l=new Date(p.dateRange[1]);for(;t<=l;)n.push(t.toISOString().split("T")[0]),t.setDate(t.getDate()+1);a.value=n},B=n=>{const t=new Date(n),l=["周日","周一","周二","周三","周四","周五","周六"];return{monthDay:`${String(t.getMonth()+1).padStart(2,"0")}/${t.getDate()}`,weekday:l[t.getDay()]}},z=n=>{const t=a.value.indexOf(n);return t>-1?t*o:-999},h=n=>{const t=new Date(n.startDate),l=new Date(n.endDate),s=new Date(a.value[0]),d=new Date(a.value[a.value.length-1]);if(t<s&&l>d)return{left:-4,width:f.value+8};let c=a.value.indexOf(n.startDate),y=a.value.indexOf(n.endDate),I=4,G=-8;return c===-1&&y===-1?null:(c===-1&&(c=0,I=-4),y===-1&&(y=a.value.length-1,G=4),{left:c*o+I,width:(y-c+1)*o+G})},u=e.ref(),S=e.ref(),w=e.ref(),_=e.computed(()=>{const n=[];return E.value.forEach(t=>{n.push({type:"group",data:t,uniqueKey:`g-${t.id}`}),t.expanded&&t.tasks.forEach(l=>{n.push({type:"task",data:l,uniqueKey:`t-${l.id}`,parentId:t.id})})}),n}),D=e.ref(0),x=e.ref(600),N=e.computed(()=>_.value.length*r),T=e.computed(()=>{const n=Math.floor(D.value/r),t=Math.ceil(x.value/r),l=5;return{start:Math.max(0,n-l),end:Math.min(_.value.length,n+t+l)}}),O=e.computed(()=>T.value.start*r),R=e.computed(()=>{const{start:n,end:t}=T.value;return _.value.slice(n,t)}),$=()=>{w.value&&(x.value=w.value.clientHeight-1)},le=n=>{const t=n.target,l=N.value-x.value;t.scrollTop>l&&(t.scrollTop=l),D.value=t.scrollTop,u.value&&(u.value.scrollTop=t.scrollTop),S.value&&(S.value.scrollLeft=t.scrollLeft)},ne=n=>{const t=E.value.find(l=>l.id===n);t&&(t.expanded=!t.expanded),k("toggle",n)},C=e.computed(()=>{const n=new Date().toISOString().split("T")[0],t=a.value.indexOf(n);return t===-1?null:t*o}),V=e.ref();let g=null;return e.onMounted(()=>{te(),$(),V.value&&(g=new ResizeObserver(()=>{$()}),g.observe(V.value))}),e.onUnmounted(()=>{g&&g.disconnect()}),(n,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:V,class:"flex flex-col h-full bg-slate-50 font-sans antialiased select-none"},[e.createElementVNode("div",M,[e.createElementVNode("div",H,[e.createElementVNode("div",P,[e.renderSlot(n.$slots,"leftPanelHeader",{},()=>[t[0]||(t[0]=e.createTextVNode("项目成员 / 任务状态",-1))],!0)]),e.createElementVNode("div",{ref_key:"headerRef",ref:S,class:"flex-1 overflow-hidden pointer-events-none"},[e.createElementVNode("div",{class:"flex h-full",style:e.normalizeStyle({width:f.value+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l,class:"shrink-0 flex flex-col items-center justify-center border-r border-slate-100 py-2 transition-colors",style:e.normalizeStyle({width:o+"px"})},[e.renderSlot(n.$slots,"headerCell",{date:l},()=>[e.createElementVNode("span",j,e.toDisplayString(B(l).weekday),1),e.createElementVNode("span",q,e.toDisplayString(B(l).monthDay),1)],!0)],4))),128))],4)],512)]),e.createElementVNode("div",v,[e.createElementVNode("div",{ref_key:"leftPanelRef",ref:u,class:"w-64 shrink-0 border-r border-slate-200 overflow-y-hidden relative z-10 shadow-[10px_0_15px_-3px_rgba(0,0,0,0.1)] bg-white"},[e.createElementVNode("div",{style:e.normalizeStyle({height:N.value+"px",position:"relative"})},[e.createElementVNode("div",{style:e.normalizeStyle({transform:`translateY(${O.value}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.uniqueKey},[l.type==="group"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"flex items-center px-4 hover:bg-slate-50 cursor-pointer border-b border-slate-50 transition-colors",style:e.normalizeStyle({height:r+"px"}),onClick:s=>ne(l.data.id)},[e.withDirectives(e.createElementVNode("span",{class:e.normalizeClass(["transform transition-transform duration-200 mr-2",l.data.expanded?"rotate-90":""])},[...t[1]||(t[1]=[e.createElementVNode("svg",{class:"w-4 h-4 text-slate-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1)])],2),[[e.vShow,l.data.tasks.length>0]]),e.withDirectives(e.createElementVNode("span",K,null,512),[[e.vShow,!l.data.tasks.length]]),e.createElementVNode("div",W,[e.renderSlot(n.$slots,"leftPanelItem",{item:l.data},()=>[e.createElementVNode("div",Y,e.toDisplayString(l.data.name),1)],!0)])],12,F)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"flex items-center pl-12 pr-4 border-b border-slate-100/50 text-slate-600 hover:bg-white transition-colors",style:e.normalizeStyle({height:r+"px"})},[e.createElementVNode("div",A,e.toDisplayString(l.data.name),1)],4))]))),128))],4)],4)],512),e.createElementVNode("div",{ref_key:"rightPanelRef",ref:w,onScroll:le,class:"flex-1 overflow-auto relative select-none"},[C.value!==null&&m.showToday?(e.openBlock(),e.createElementBlock("div",{key:0,class:"absolute top-0 bottom-0 z-10 pointer-events-none border-l-2 border-orange-400",style:e.normalizeStyle({left:C.value+"px"})},[...t[2]||(t[2]=[e.createElementVNode("div",{class:"sticky top-0 z-20",style:{height:"0",overflow:"visible"}},[e.createElementVNode("div",{class:"absolute -top-1 -left-[6px] w-0 h-0 border-l-[5px] border-l-transparent border-r-[5px] border-r-transparent border-t-[6px] border-t-orange-400"}),e.createElementVNode("div",{class:"absolute top-2 left-2 px-1.5 py-0.5 bg-orange-400 text-[10px] text-white rounded shadow-sm opacity-80 whitespace-nowrap"}," 今天 ")],-1)])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"absolute left-0 pointer-events-none",style:e.normalizeStyle({...Z.value,height:x.value+"px",top:D.value+"px",width:f.value+"px"})},null,4),e.createElementVNode("div",{style:e.normalizeStyle({height:N.value+"px",position:"relative"})},[e.createElementVNode("div",{style:e.normalizeStyle({transform:`translateY(${O.value}px)`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,l=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.uniqueKey},[l.type==="group"?(e.openBlock(),e.createElementBlock("div",{key:0,class:"relative border-b border-[#e8e8e8]",style:e.normalizeStyle({height:r+"px",width:f.value+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ee.value[l.data.id],(s,d)=>e.renderSlot(n.$slots,"count",{key:d,item:l.data,date:d,count:s,style:e.normalizeStyle({left:z(d)+"px",width:o+"px",height:r+"px"})},()=>[e.createElementVNode("div",{class:"absolute top-0 flex items-center justify-center text-sm",style:e.normalizeStyle({left:z(d)+"px",width:o+"px",height:r+"px",contentVisibility:"auto",containIntrinsicSize:`${o}px ${r}px`})},e.toDisplayString(s),5)],!0)),128))],4)):(e.openBlock(),e.createElementBlock("div",{key:1,class:"relative border-b border-[#e8e8e8] overflow-hidden",style:e.normalizeStyle({height:r+"px",width:f.value+"px"})},[h(l.data)?e.renderSlot(n.$slots,"task",{key:0,style:e.normalizeStyle({left:h(l.data).left+"px",width:h(l.data).width+"px",position:"absolute"}),task:l.data},()=>[e.createElementVNode("div",{class:"absolute bg-slate-400 top-2 bottom-2 rounded-md shadow-sm flex items-center px-3 text-[11px] text-white font-medium cursor-pointer hover:shadow-lg hover:-translate-y-0.5 transition-all duration-200",style:e.normalizeStyle({left:h(l.data).left+"px",width:h(l.data).width+"px",backgroundColor:l.data.color})},[e.createElementVNode("span",J,e.toDisplayString(l.data.name),1)],4)],!0):e.createCommentVNode("",!0)],4))],64))),128))],4)],4)],544)])]),e.createCommentVNode("",!0)],512))}}),[["__scopeId","data-v-db66e357"]]),Q=L.version,X=()=>{console.log("Gantt Core Initialized")};i.GANTT_VERSION=Q,i.GanttChart=U,i.setupGantt=X,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ollap/gantt-vue3",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"