@ollap/gantt-vue3 0.2.0 → 0.2.1

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-7a87225e]::-webkit-scrollbar{width:6px;height:6px}.overflow-auto[data-v-7a87225e]::-webkit-scrollbar-track{background:transparent}.overflow-auto[data-v-7a87225e]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}.overflow-auto[data-v-7a87225e]::-webkit-scrollbar-thumb:hover{background:#94a3b8}
@@ -1,4 +1,4 @@
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";
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 S, toDisplayString as g, withDirectives as Y, normalizeClass as ae, vShow as J } from "vue";
2
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({
3
3
  __name: "GanttChart",
4
4
  props: {
@@ -7,8 +7,8 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
7
7
  showToday: { type: Boolean }
8
8
  },
9
9
  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(() => ({
10
+ setup(b, { emit: O }) {
11
+ const h = b, R = O, n = v([]), $ = v(JSON.parse(JSON.stringify(h.list))), x = u(() => n.value.length * i), A = u(() => ({
12
12
  backgroundImage: `linear-gradient(to right, transparent ${i - 1}px, #e8e8e8 ${i - 1}px, #e8e8e8 ${i}px)`,
13
13
  // backgroundImage: `linear-gradient(to right, #e8e8e8 1px, transparent 1px)`,
14
14
  backgroundSize: `${i}px 100%`,
@@ -17,7 +17,7 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
17
17
  width: x.value + "px"
18
18
  })), F = u(() => {
19
19
  const s = {};
20
- return T.value.forEach((e) => {
20
+ return $.value.forEach((e) => {
21
21
  s[e.id] = {}, e.tasks.forEach((t) => {
22
22
  let c = new Date(t.startDate);
23
23
  const p = new Date(t.endDate);
@@ -50,14 +50,14 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
50
50
  left: -4,
51
51
  width: x.value + 8
52
52
  };
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), {
53
+ let f = n.value.indexOf(s.startDate), D = n.value.indexOf(s.endDate), j = 4, W = -8;
54
+ return f === -1 && D === -1 ? null : (f === -1 && (f = 0, j = -4), D === -1 && (D = n.value.length - 1, W = 4), {
55
55
  left: f * i + j,
56
- width: (S - f + 1) * i + W
56
+ width: (D - f + 1) * i + W
57
57
  });
58
- }, C = v(), I = v(), z = v(), E = u(() => {
58
+ }, T = v(), C = v(), I = v(), z = u(() => {
59
59
  const s = [];
60
- return T.value.forEach((e) => {
60
+ return $.value.forEach((e) => {
61
61
  s.push({
62
62
  type: "group",
63
63
  data: e,
@@ -71,34 +71,34 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
71
71
  });
72
72
  });
73
73
  }), 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;
74
+ }), E = v(0), k = v(600), H = u(() => z.value.length * d), L = u(() => {
75
+ const s = Math.floor(E.value / d), e = Math.ceil(k.value / d), t = 5;
76
76
  return {
77
77
  start: Math.max(0, s - t),
78
- end: Math.min(E.value.length, s + e + t)
78
+ end: Math.min(z.value.length, s + e + t)
79
79
  };
80
80
  }), V = u(() => L.value.start * d), q = u(() => {
81
81
  const { start: s, end: e } = L.value;
82
- return E.value.slice(s, e);
82
+ return z.value.slice(s, e);
83
83
  }), B = () => {
84
- z.value && (k.value = z.value.clientHeight - 1);
84
+ I.value && (k.value = I.value.clientHeight - 1);
85
85
  }, 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);
86
+ const e = s.target, t = H.value - k.value;
87
+ 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
88
  }, X = (s) => {
89
- const e = T.value.find((t) => t.id === s);
90
- e && (e.expanded = !e.expanded), $("toggle", s);
89
+ const e = $.value.find((t) => t.id === s);
90
+ e && (e.expanded = !e.expanded), R("toggle", s);
91
91
  }, K = u(() => {
92
92
  const s = (/* @__PURE__ */ new Date()).toISOString().split("T")[0], e = n.value.indexOf(s);
93
93
  return e === -1 ? null : e * i;
94
94
  }), M = v();
95
- let D = null;
95
+ let _ = null;
96
96
  return ee(() => {
97
- U(), B(), M.value && (D = new ResizeObserver(() => {
97
+ U(), B(), M.value && (_ = new ResizeObserver(() => {
98
98
  console.log("resize"), B();
99
- }), D.observe(M.value));
99
+ }), _.observe(M.value));
100
100
  }), te(() => {
101
- D && D.disconnect();
101
+ _ && _.disconnect();
102
102
  }), (s, e) => (r(), o("div", {
103
103
  ref_key: "containerRef",
104
104
  ref: M,
@@ -113,14 +113,14 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
113
113
  ]),
114
114
  a("div", {
115
115
  ref_key: "headerRef",
116
- ref: I,
116
+ ref: C,
117
117
  class: "flex-1 overflow-hidden pointer-events-none"
118
118
  }, [
119
119
  a("div", {
120
120
  class: "flex h-full",
121
121
  style: l({ width: x.value + "px" })
122
122
  }, [
123
- (r(!0), o(w, null, O(n.value, (t) => (r(), o("div", {
123
+ (r(!0), o(w, null, S(n.value, (t) => (r(), o("div", {
124
124
  key: t,
125
125
  class: "shrink-0 flex flex-col items-center justify-center border-r border-slate-100 py-2 transition-colors",
126
126
  style: l({ width: i + "px" })
@@ -136,16 +136,16 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
136
136
  a("div", de, [
137
137
  a("div", {
138
138
  ref_key: "leftPanelRef",
139
- ref: C,
139
+ ref: T,
140
140
  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
141
  }, [
142
142
  a("div", {
143
- style: l({ height: _.value + "px", position: "relative" })
143
+ style: l({ height: H.value + "px", position: "relative" })
144
144
  }, [
145
145
  a("div", {
146
146
  style: l({ transform: `translateY(${V.value}px)` })
147
147
  }, [
148
- (r(!0), o(w, null, O(q.value, (t) => (r(), o("div", {
148
+ (r(!0), o(w, null, S(q.value, (t) => (r(), o("div", {
149
149
  key: t.uniqueKey
150
150
  }, [
151
151
  t.type === "group" ? (r(), o("div", {
@@ -196,14 +196,14 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
196
196
  ], 512),
197
197
  a("div", {
198
198
  ref_key: "rightPanelRef",
199
- ref: z,
199
+ ref: I,
200
200
  onScroll: Q,
201
201
  class: "flex-1 overflow-auto relative select-none"
202
202
  }, [
203
203
  K.value !== null && b.showToday ? (r(), o("div", {
204
204
  key: 0,
205
205
  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" })
206
+ style: l({ left: K.value + "px" })
207
207
  }, [...e[2] || (e[2] = [
208
208
  a("div", {
209
209
  class: "sticky top-0 z-20",
@@ -218,17 +218,17 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
218
218
  style: l({
219
219
  ...A.value,
220
220
  height: k.value + "px",
221
- top: H.value + "px",
221
+ top: E.value + "px",
222
222
  width: x.value + "px"
223
223
  })
224
224
  }, null, 4),
225
225
  a("div", {
226
- style: l({ height: _.value + "px", position: "relative" })
226
+ style: l({ height: H.value + "px", position: "relative" })
227
227
  }, [
228
228
  a("div", {
229
229
  style: l({ transform: `translateY(${V.value}px)` })
230
230
  }, [
231
- (r(!0), o(w, null, O(q.value, (t) => (r(), o(w, {
231
+ (r(!0), o(w, null, S(q.value, (t) => (r(), o(w, {
232
232
  key: t.uniqueKey
233
233
  }, [
234
234
  t.type === "group" ? (r(), o("div", {
@@ -236,7 +236,7 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
236
236
  class: "relative border-b border-[#e8e8e8]",
237
237
  style: l({ height: d + "px", width: x.value + "px" })
238
238
  }, [
239
- (r(!0), o(w, null, O(F.value[t.data.id], (c, p) => m(s.$slots, "count", {
239
+ (r(!0), o(w, null, S(F.value[t.data.id], (c, p) => m(s.$slots, "count", {
240
240
  key: p,
241
241
  item: t.data,
242
242
  date: p,
@@ -293,12 +293,12 @@ const le = { class: "bg-white border border-slate-200 overflow-hidden flex-1 fle
293
293
  N("", !0)
294
294
  ], 512));
295
295
  }
296
- }), ge = (b, R) => {
296
+ }), ge = (b, O) => {
297
297
  const h = b.__vccOpts || b;
298
- for (const [$, n] of R)
299
- h[$] = n;
298
+ for (const [R, n] of O)
299
+ h[R] = n;
300
300
  return h;
301
- }, ye = /* @__PURE__ */ ge(xe, [["__scopeId", "data-v-a18bb0b0"]]), me = "0.1.0", we = () => {
301
+ }, ye = /* @__PURE__ */ ge(xe, [["__scopeId", "data-v-7a87225e"]]), me = "0.1.0", we = () => {
302
302
  console.log("Gantt Core Initialized");
303
303
  };
304
304
  export {
@@ -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={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"},W={class:"min-w-0"},Y={class:"text-sm font-semibold text-slate-700 truncate"},v={class:"text-xs truncate"},A={class:"truncate"},o=60,r=52,J=((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),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},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)},te=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)},le=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(()=>{ee(),$(),V.value&&(g=new ResizeObserver(()=>{console.log("resize"),$()}),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",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: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",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: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=>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",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",v,e.toDisplayString(l.data.name),1)],4))]))),128))],4)],4)],512),e.createElementVNode("div",{ref_key:"rightPanelRef",ref:w,onScroll:te,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({...X.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(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"})},[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",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-7a87225e"]]),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"})}));
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.1",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"